diff --git a/app/assets/icons/ic-notes-remove.svg b/app/assets/icons/ic-notes-remove.svg new file mode 100644 index 000000000..729ada141 --- /dev/null +++ b/app/assets/icons/ic-notes-remove.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/assets/icons/ic-text.svg b/app/assets/icons/ic-text.svg new file mode 100644 index 000000000..fcb0be29b --- /dev/null +++ b/app/assets/icons/ic-text.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/assets/javascripts/components/AccountMenu/AdvancedOptions.tsx b/app/assets/javascripts/components/AccountMenu/AdvancedOptions.tsx index cdae6ca3c..eb16d545c 100644 --- a/app/assets/javascripts/components/AccountMenu/AdvancedOptions.tsx +++ b/app/assets/javascripts/components/AccountMenu/AdvancedOptions.tsx @@ -3,7 +3,7 @@ import { AppState } from '@/ui_models/app_state'; import { isDev } from '@/utils'; import { observer } from 'mobx-react-lite'; import { FunctionComponent } from 'preact'; -import { useState } from 'preact/hooks'; +import { useEffect, useState } from 'preact/hooks'; import { Checkbox } from '../Checkbox'; import { Icon } from '../Icon'; import { InputWithIcon } from '../InputWithIcon'; @@ -20,12 +20,6 @@ export const AdvancedOptions: FunctionComponent = observer( appState.accountMenu; const [showAdvanced, setShowAdvanced] = useState(false); - if (isDev && window._devAccountServer) { - setEnableServerOption(true); - setServer(window._devAccountServer); - application.setCustomHost(window._devAccountServer); - } - const handleServerOptionChange = (e: Event) => { if (e.target instanceof HTMLInputElement) { setEnableServerOption(e.target.checked); diff --git a/app/assets/javascripts/components/AccountMenu/SignIn.tsx b/app/assets/javascripts/components/AccountMenu/SignIn.tsx index 82da576f3..6c0469840 100644 --- a/app/assets/javascripts/components/AccountMenu/SignIn.tsx +++ b/app/assets/javascripts/components/AccountMenu/SignIn.tsx @@ -33,15 +33,14 @@ export const SignInPane: FunctionComponent = observer( const emailInputRef = useRef(null); const passwordInputRef = useRef(null); - if (isDev && window._devAccountEmail) { - setEmail(window._devAccountEmail); - setPassword(window._devAccountPassword as string); - } - useEffect(() => { if (emailInputRef?.current) { emailInputRef.current?.focus(); } + if (isDev && window._devAccountEmail) { + setEmail(window._devAccountEmail); + setPassword(window._devAccountPassword as string); + } }, []); const resetInvalid = () => { diff --git a/app/assets/javascripts/components/Dropdown.tsx b/app/assets/javascripts/components/Dropdown.tsx index 17739b175..b43a63804 100644 --- a/app/assets/javascripts/components/Dropdown.tsx +++ b/app/assets/javascripts/components/Dropdown.tsx @@ -9,21 +9,22 @@ import { import VisuallyHidden from '@reach/visually-hidden'; import { FunctionComponent } from 'preact'; import { IconType, Icon } from './Icon'; -import { useEffect, useState } from 'preact/hooks'; export type DropdownItem = { icon?: IconType; iconClassName?: string; label: string; value: string; + disabled?: boolean; }; type DropdownProps = { id: string; label: string; items: DropdownItem[]; - defaultValue: string; - onChange: (value: string) => void; + value: string; + onChange: (value: string, item: DropdownItem) => void; + disabled?: boolean; }; type ListboxButtonProps = DropdownItem & { @@ -59,20 +60,18 @@ export const Dropdown: FunctionComponent = ({ id, label, items, - defaultValue, + value, onChange, + disabled, }) => { - const [value, setValue] = useState(defaultValue); - - useEffect(() => { - setValue(defaultValue); - }, [defaultValue]); - const labelId = `${id}-label`; const handleChange = (value: string) => { - setValue(value); - onChange(value); + const selectedItem = items.find( + (item) => item.value === value + ) as DropdownItem; + + onChange(value, selectedItem); }; return ( @@ -82,6 +81,7 @@ export const Dropdown: FunctionComponent = ({ value={value} onChange={handleChange} aria-labelledby={labelId} + disabled={disabled} > = ({ className="sn-dropdown-item" value={item.value} label={item.label} + disabled={item.disabled} > {item.icon ? (
diff --git a/app/assets/javascripts/components/Icon.tsx b/app/assets/javascripts/components/Icon.tsx index 6d5b6d3bc..ef347b6b4 100644 --- a/app/assets/javascripts/components/Icon.tsx +++ b/app/assets/javascripts/components/Icon.tsx @@ -113,6 +113,7 @@ const ICONS = { add: AddIcon, help: HelpIcon, keyboard: KeyboardIcon, + spellcheck: NotesIcon, 'list-bulleted': ListBulleted, 'link-off': LinkOffIcon, listed: ListedIcon, diff --git a/app/assets/javascripts/components/NotesOptions.tsx b/app/assets/javascripts/components/NotesOptions.tsx index 48273e1b3..0525d75c8 100644 --- a/app/assets/javascripts/components/NotesOptions.tsx +++ b/app/assets/javascripts/components/NotesOptions.tsx @@ -35,6 +35,8 @@ const DeletePermanentlyButton = ({ ); +const iconClass = 'color-neutral mr-2'; + const getWordCount = (text: string) => { if (text.trim().length === 0) { return 0; @@ -133,6 +135,39 @@ const NoteAttributes: FunctionComponent<{ application: SNApplication, note: SNNo ); }; +const SpellcheckOptions: FunctionComponent<{ + appState: AppState, note: SNNote +}> = ({ appState, note }) => { + + const editor = appState.application.componentManager.editorForNote(note); + const spellcheckControllable = Boolean( + !editor || + appState.application.getFeature(editor.identifier)?.spellcheckControl + ); + const noteSpellcheck = !spellcheckControllable ? true : note ? appState.notes.getSpellcheckStateForNote(note) : undefined; + + return ( +
+ { + appState.notes.toggleGlobalSpellcheckForNote(note); + }} + > + + + Spellcheck + + + {!spellcheckControllable && ( +

Spellcheck cannot be controlled for this editor.

+ )} +
+ ); +}; + export const NotesOptions = observer( ({ application, appState, closeOnBlur, onSubmenuChange }: Props) => { const [tagsMenuOpen, setTagsMenuOpen] = useState(false); @@ -171,8 +206,6 @@ export const NotesOptions = observer( const tagsButtonRef = useRef(null); - const iconClass = 'color-neutral mr-2'; - useEffect(() => { if (onSubmenuChange) { onSubmenuChange(tagsMenuOpen); @@ -350,10 +383,9 @@ export const NotesOptions = observer( > {tag.title} @@ -484,9 +516,16 @@ export const NotesOptions = observer( )} + + {notes.length === 1 ? ( <>
+ + + +
+ ) : null} diff --git a/app/assets/javascripts/components/QuickSettingsMenu/QuickSettingsMenu.tsx b/app/assets/javascripts/components/QuickSettingsMenu/QuickSettingsMenu.tsx index c24a67d1f..ff55a364a 100644 --- a/app/assets/javascripts/components/QuickSettingsMenu/QuickSettingsMenu.tsx +++ b/app/assets/javascripts/components/QuickSettingsMenu/QuickSettingsMenu.tsx @@ -49,6 +49,19 @@ const toggleFocusMode = (enabled: boolean) => { } }; +export const sortThemes = (a: SNTheme, b: SNTheme) => { + const aIsLayerable = a.isLayerable(); + const bIsLayerable = b.isLayerable(); + + if (aIsLayerable && !bIsLayerable) { + return 1; + } else if (!aIsLayerable && bIsLayerable) { + return -1; + } else { + return a.name.toLowerCase() < b.name.toLowerCase() ? -1 : 1; + } +}; + const QuickSettingsMenu: FunctionComponent = observer( ({ application, appState }) => { const { @@ -79,23 +92,7 @@ const QuickSettingsMenu: FunctionComponent = observer( const themes = application.getDisplayableItems( ContentType.Theme ) as SNTheme[]; - setThemes( - themes.sort((a, b) => { - const aIsLayerable = a.isLayerable(); - const bIsLayerable = b.isLayerable(); - - if (aIsLayerable && !bIsLayerable) { - return 1; - } else if (!aIsLayerable && bIsLayerable) { - return -1; - } else { - return a.name.toLowerCase() < - b.name.toLowerCase() - ? -1 - : 1; - } - }) - ); + setThemes(themes.sort(sortThemes)); setDefaultThemeOn( !themes.find((theme) => theme.active && !theme.isLayerable()) ); diff --git a/app/assets/javascripts/components/Switch.tsx b/app/assets/javascripts/components/Switch.tsx index 61a35db61..b199dc762 100644 --- a/app/assets/javascripts/components/Switch.tsx +++ b/app/assets/javascripts/components/Switch.tsx @@ -29,7 +29,7 @@ export const Switch: FunctionalComponent = ( return ( diff --git a/app/assets/javascripts/preferences/PreferencesMenu.ts b/app/assets/javascripts/preferences/PreferencesMenu.ts index e52e81f0f..47e29f05a 100644 --- a/app/assets/javascripts/preferences/PreferencesMenu.ts +++ b/app/assets/javascripts/preferences/PreferencesMenu.ts @@ -52,6 +52,7 @@ const PREFERENCES_MENU_ITEMS: PreferencesMenuItem[] = [ const READY_PREFERENCES_MENU_ITEMS: PreferencesMenuItem[] = [ { id: 'account', label: 'Account', icon: 'user' }, { id: 'general', label: 'General', icon: 'settings' }, + { id: 'appearance', label: 'Appearance', icon: 'themes' }, { id: 'security', label: 'Security', icon: 'security' }, { id: 'backups', label: 'Backups', icon: 'restore' }, { id: 'listed', label: 'Listed', icon: 'listed' }, diff --git a/app/assets/javascripts/preferences/PreferencesView.tsx b/app/assets/javascripts/preferences/PreferencesView.tsx index dd8173135..b53bc975e 100644 --- a/app/assets/javascripts/preferences/PreferencesView.tsx +++ b/app/assets/javascripts/preferences/PreferencesView.tsx @@ -18,6 +18,7 @@ import { AppState } from '@/ui_models/app_state'; import { useEffect, useMemo } from 'preact/hooks'; import { ExtensionPane } from './panes/ExtensionPane'; import { Backups } from '@/preferences/panes/Backups'; +import { Appearance } from './panes/Appearance'; interface PreferencesProps extends MfaProps { application: WebApplication; @@ -42,7 +43,7 @@ const PaneSelector: FunctionComponent< ); case 'appearance': - return null; + return ; case 'security': return ( = observer(({ application }) => { + const premiumModal = usePremiumModal(); + const isEntitledToMidnightTheme = + application.getFeatureStatus(FeatureIdentifier.MidnightTheme) === + FeatureStatus.Entitled; + + const [themeItems, setThemeItems] = useState([]); + const [autoLightTheme, setAutoLightTheme] = useState( + () => + application.getPreference( + PrefKey.AutoLightThemeIdentifier, + 'Default' + ) as string + ); + const [autoDarkTheme, setAutoDarkTheme] = useState( + () => + application.getPreference( + PrefKey.AutoDarkThemeIdentifier, + isEntitledToMidnightTheme ? FeatureIdentifier.MidnightTheme : 'Default' + ) as string + ); + const [useDeviceSettings, setUseDeviceSettings] = useState( + () => + application.getPreference(PrefKey.UseSystemColorScheme, false) as boolean + ); + + useEffect(() => { + const themesAsItems: DropdownItem[] = ( + application.getDisplayableItems(ContentType.Theme) as SNTheme[] + ) + .filter((theme) => !theme.isLayerable()) + .sort(sortThemes) + .map((theme) => { + return { + label: theme.name, + value: theme.identifier as string, + }; + }); + + Features.filter( + (feature) => + feature.content_type === ContentType.Theme && !feature.layerable + ).forEach((theme) => { + if ( + themesAsItems.findIndex((item) => item.value === theme.identifier) === + -1 + ) { + themesAsItems.push({ + label: theme.name as string, + value: theme.identifier, + icon: 'premium-feature', + }); + } + }); + + themesAsItems.unshift({ + label: 'Default', + value: 'Default', + }); + + setThemeItems(themesAsItems); + }, [application]); + + const toggleUseDeviceSettings = () => { + application.setPreference(PrefKey.UseSystemColorScheme, !useDeviceSettings); + if (!application.getPreference(PrefKey.AutoLightThemeIdentifier)) { + application.setPreference( + PrefKey.AutoLightThemeIdentifier, + autoLightTheme as FeatureIdentifier + ); + } + if (!application.getPreference(PrefKey.AutoDarkThemeIdentifier)) { + application.setPreference( + PrefKey.AutoDarkThemeIdentifier, + autoDarkTheme as FeatureIdentifier + ); + } + setUseDeviceSettings(!useDeviceSettings); + }; + + const changeAutoLightTheme = (value: string, item: DropdownItem) => { + if (item.icon === 'premium-feature') { + premiumModal.activate(`${item.label} theme`); + } else { + application.setPreference( + PrefKey.AutoLightThemeIdentifier, + value as FeatureIdentifier + ); + setAutoLightTheme(value); + } + }; + + const changeAutoDarkTheme = (value: string, item: DropdownItem) => { + if (item.icon === 'premium-feature') { + premiumModal.activate(`${item.label} theme`); + } else { + application.setPreference( + PrefKey.AutoDarkThemeIdentifier, + value as FeatureIdentifier + ); + setAutoDarkTheme(value); + } + }; + + return ( + + + + Themes +
+
+
+ Use system color scheme + + Automatically change active theme based on your system settings. + +
+ +
+ +
+ Automatic Light Theme + Theme to be used for system light mode: +
+ +
+
+ +
+ Automatic Dark Theme + Theme to be used for system dark mode: +
+ +
+
+
+
+
+
+ ); +}); + +export const Appearance: FunctionComponent = observer( + ({ application }) => ( + + + + ) +); diff --git a/app/assets/javascripts/preferences/panes/backups-segments/EmailBackups.tsx b/app/assets/javascripts/preferences/panes/backups-segments/EmailBackups.tsx index e9e6ffb48..2dd4a6cb3 100644 --- a/app/assets/javascripts/preferences/panes/backups-segments/EmailBackups.tsx +++ b/app/assets/javascripts/preferences/panes/backups-segments/EmailBackups.tsx @@ -157,7 +157,7 @@ export const EmailBackups = observer(({ application }: Props) => { id="def-editor-dropdown" label="Select email frequency" items={emailFrequencyOptions} - defaultValue={emailFrequency} + value={emailFrequency} onChange={(item) => { updateEmailFrequency(item as EmailBackupFrequency); }} diff --git a/app/assets/javascripts/preferences/panes/general-segments/Defaults.tsx b/app/assets/javascripts/preferences/panes/general-segments/Defaults.tsx index 8c83be5d9..5e550f969 100644 --- a/app/assets/javascripts/preferences/panes/general-segments/Defaults.tsx +++ b/app/assets/javascripts/preferences/panes/general-segments/Defaults.tsx @@ -1,6 +1,6 @@ import { Dropdown, DropdownItem } from '@/components/Dropdown'; import { IconType } from '@/components/Icon'; -import { FeatureIdentifier } from '@standardnotes/snjs'; +import { FeatureIdentifier, PrefKey } from '@standardnotes/snjs'; import { PreferencesGroup, PreferencesSegment, @@ -16,6 +16,8 @@ import { } from '@standardnotes/snjs'; import { FunctionComponent } from 'preact'; import { useEffect, useState } from 'preact/hooks'; +import { HorizontalSeparator } from '@/components/shared/HorizontalSeparator'; +import { Switch } from '@/components/Switch'; type Props = { application: WebApplication; @@ -82,11 +84,20 @@ const getDefaultEditor = (application: WebApplication) => { export const Defaults: FunctionComponent = ({ application }) => { const [editorItems, setEditorItems] = useState([]); - const [defaultEditorValue] = useState( + const [defaultEditorValue, setDefaultEditorValue] = useState( () => getDefaultEditor(application)?.package_info?.identifier || 'plain-editor' ); + const [spellcheck, setSpellcheck] = useState(() => + application.getPreference(PrefKey.EditorSpellcheck, true) + ); + + const toggleSpellcheck = () => { + setSpellcheck(!spellcheck); + application.getAppState().toggleGlobalSpellcheck(); + }; + useEffect(() => { const editors = application.componentManager .componentsForArea(ComponentArea.Editor) @@ -117,6 +128,7 @@ export const Defaults: FunctionComponent = ({ application }) => { }, [application]); const setDefaultEditor = (value: string) => { + setDefaultEditorValue(value as FeatureIdentifier); const editors = application.componentManager.componentsForArea( ComponentArea.Editor ); @@ -144,11 +156,22 @@ export const Defaults: FunctionComponent = ({ application }) => { id="def-editor-dropdown" label="Select the default editor" items={editorItems} - defaultValue={defaultEditorValue} + value={defaultEditorValue} onChange={setDefaultEditor} />
+ +
+
+ Spellcheck + + The default spellcheck value for new notes. Spellcheck can be configured per note from the note context menu. + Spellcheck may degrade overall typing performance with long notes. + +
+ +
); diff --git a/app/assets/javascripts/preferences/panes/general-segments/Tools.tsx b/app/assets/javascripts/preferences/panes/general-segments/Tools.tsx index b0e21a623..79435d632 100644 --- a/app/assets/javascripts/preferences/panes/general-segments/Tools.tsx +++ b/app/assets/javascripts/preferences/panes/general-segments/Tools.tsx @@ -25,9 +25,6 @@ export const Tools: FunctionalComponent = observer( const [marginResizers, setMarginResizers] = useState(() => application.getPreference(PrefKey.EditorResizersEnabled, true) ); - const [spellcheck, setSpellcheck] = useState(() => - application.getPreference(PrefKey.EditorSpellcheck, true) - ); const toggleMonospaceFont = () => { setMonospaceFont(!monospaceFont); @@ -39,11 +36,6 @@ export const Tools: FunctionalComponent = observer( application.setPreference(PrefKey.EditorResizersEnabled, !marginResizers); }; - const toggleSpellcheck = () => { - setSpellcheck(!spellcheck); - application.setPreference(PrefKey.EditorSpellcheck, !spellcheck); - }; - return ( @@ -67,17 +59,6 @@ export const Tools: FunctionalComponent = observer( checked={marginResizers} /> - -
-
- Spellcheck - - May degrade performance, especially with long notes. This option only controls - spellcheck in the Plain Editor. - -
- -
diff --git a/app/assets/javascripts/services/themeManager.ts b/app/assets/javascripts/services/themeManager.ts index 281627b86..2648397a0 100644 --- a/app/assets/javascripts/services/themeManager.ts +++ b/app/assets/javascripts/services/themeManager.ts @@ -10,6 +10,7 @@ import { UuidString, FeatureStatus, PayloadSource, + PrefKey, } from '@standardnotes/snjs'; const CACHED_THEMES_KEY = 'cachedThemes'; @@ -19,6 +20,53 @@ export class ThemeManager extends ApplicationService { private unregisterDesktop!: () => void; private unregisterStream!: () => void; + constructor(application: WebApplication) { + super(application); + this.colorSchemeEventHandler = this.colorSchemeEventHandler.bind(this); + } + + private colorSchemeEventHandler(event: MediaQueryListEvent) { + this.setThemeAsPerColorScheme(event.matches); + } + + private setThemeAsPerColorScheme(prefersDarkColorScheme: boolean) { + const useDeviceThemeSettings = this.application.getPreference( + PrefKey.UseSystemColorScheme, + false + ); + + if (useDeviceThemeSettings) { + const preference = prefersDarkColorScheme + ? PrefKey.AutoDarkThemeIdentifier + : PrefKey.AutoLightThemeIdentifier; + const themes = this.application.getDisplayableItems( + ContentType.Theme + ) as SNTheme[]; + + const enableDefaultTheme = () => { + const activeTheme = themes.find( + (theme) => theme.active && !theme.isLayerable() + ); + if (activeTheme) this.application.toggleTheme(activeTheme); + }; + + const themeIdentifier = this.application.getPreference( + preference, + 'Default' + ) as string; + if (themeIdentifier === 'Default') { + enableDefaultTheme(); + } else { + const theme = themes.find( + (theme) => theme.package_info.identifier === themeIdentifier + ); + if (theme && !theme.active) { + this.application.toggleTheme(theme); + } + } + } + } + async onAppEvent(event: ApplicationEvent) { super.onAppEvent(event); if (event === ApplicationEvent.SignedOut) { @@ -32,6 +80,15 @@ export class ThemeManager extends ApplicationService { await this.activateCachedThemes(); } else if (event === ApplicationEvent.FeaturesUpdated) { this.reloadThemeStatus(); + } else if (event === ApplicationEvent.Launched) { + window + .matchMedia('(prefers-color-scheme: dark)') + .addEventListener('change', this.colorSchemeEventHandler); + } else if (event === ApplicationEvent.PreferencesChanged) { + const prefersDarkColorScheme = window.matchMedia( + '(prefers-color-scheme: dark)' + ); + this.setThemeAsPerColorScheme(prefersDarkColorScheme.matches); } } @@ -46,6 +103,9 @@ export class ThemeManager extends ApplicationService { this.unregisterStream(); (this.unregisterDesktop as unknown) = undefined; (this.unregisterStream as unknown) = undefined; + window + .matchMedia('(prefers-color-scheme: dark)') + .removeEventListener('change', this.colorSchemeEventHandler); super.deinit(); } diff --git a/app/assets/javascripts/ui_models/app_state/account_menu_state.ts b/app/assets/javascripts/ui_models/app_state/account_menu_state.ts index 7b8ede15b..fe8677eca 100644 --- a/app/assets/javascripts/ui_models/app_state/account_menu_state.ts +++ b/app/assets/javascripts/ui_models/app_state/account_menu_state.ts @@ -1,3 +1,4 @@ +import { isDev } from '@/utils'; import { action, computed, @@ -74,7 +75,11 @@ export class AccountMenuState { this.appEventListeners.push( this.application.addEventObserver(async () => { runInAction(() => { - this.setServer(this.application.getHost()); + if (isDev && window._devAccountServer) { + this.setServer(window._devAccountServer); + } else { + this.setServer(this.application.getHost()); + } }); }, ApplicationEvent.Launched) ); diff --git a/app/assets/javascripts/ui_models/app_state/app_state.ts b/app/assets/javascripts/ui_models/app_state/app_state.ts index 712e515ab..41dd8d3dc 100644 --- a/app/assets/javascripts/ui_models/app_state/app_state.ts +++ b/app/assets/javascripts/ui_models/app_state/app_state.ts @@ -17,6 +17,7 @@ import { ComponentViewer, SNTag, NoteViewController, + SNTheme, } from '@standardnotes/snjs'; import pull from 'lodash/pull'; import { @@ -281,6 +282,18 @@ export class AppState { } } + isGlobalSpellcheckEnabled(): boolean { + return this.application.getPreference(PrefKey.EditorSpellcheck, true); + } + + async toggleGlobalSpellcheck() { + const currentValue = this.isGlobalSpellcheckEnabled(); + return this.application.setPreference( + PrefKey.EditorSpellcheck, + !currentValue + ); + } + private tagChangedNotifier(): IReactionDisposer { return reaction( () => this.tags.selectedUuid, diff --git a/app/assets/javascripts/ui_models/app_state/notes_state.ts b/app/assets/javascripts/ui_models/app_state/notes_state.ts index 496cedaf0..6f141ad30 100644 --- a/app/assets/javascripts/ui_models/app_state/notes_state.ts +++ b/app/assets/javascripts/ui_models/app_state/notes_state.ts @@ -378,6 +378,23 @@ export class NotesState { this.selectedNotes = {}; } + getSpellcheckStateForNote(note: SNNote) { + return note.spellcheck != undefined + ? note.spellcheck + : this.appState.isGlobalSpellcheckEnabled(); + } + + async toggleGlobalSpellcheckForNote(note: SNNote) { + await this.application.changeItem( + note.uuid, + (mutator) => { + mutator.toggleSpellcheck(); + }, + false + ); + this.application.sync(); + } + async addTagToSelectedNotes(tag: SNTag): Promise { const selectedNotes = Object.values(this.selectedNotes); const parentChainTags = this.application.getTagParentChain(tag); diff --git a/app/assets/javascripts/ui_models/app_state/tags_state.ts b/app/assets/javascripts/ui_models/app_state/tags_state.ts index ba9325c78..70b654f32 100644 --- a/app/assets/javascripts/ui_models/app_state/tags_state.ts +++ b/app/assets/javascripts/ui_models/app_state/tags_state.ts @@ -1,7 +1,6 @@ import { confirmDialog } from '@/services/alertService'; -import { STRING_DELETE_TAG, STRING_MISSING_SYSTEM_TAG } from '@/strings'; +import { STRING_DELETE_TAG } from '@/strings'; import { - ApplicationEvent, ComponentAction, ContentType, MessageData, @@ -9,7 +8,7 @@ import { SNSmartTag, SNTag, TagMutator, - UuidString, + UuidString } from '@standardnotes/snjs'; import { action, @@ -17,7 +16,7 @@ import { makeAutoObservable, makeObservable, observable, - runInAction, + runInAction } from 'mobx'; import { WebApplication } from '../application'; import { FeaturesState, SMART_TAGS_FEATURE_NAME } from './features_state'; @@ -126,9 +125,6 @@ export class TagsState { ) as SNTag[]; this.smartTags = this.application.getSmartTags(); - this.tagsCountsState.update(this.tags); - this.allNotesCount_ = this.countAllNotes(); - const selectedTag = this.selected_; if (selectedTag) { const matchingTag = items.find( @@ -150,13 +146,13 @@ export class TagsState { ); appEventListeners.push( - this.application.addEventObserver(async (eventName) => { - switch (eventName) { - case ApplicationEvent.CompletedIncrementalSync: - runInAction(() => { - this.allNotesCount_ = this.countAllNotes(); - }); - break; + this.application.addNoteCountChangeObserver((tagUuid) => { + if (!tagUuid) { + this.allNotesCount_ = this.application.allCountableNotesCount(); + } else { + this.tagsCountsState.update([ + this.application.findItem(tagUuid) as SNTag, + ]); } }) ); @@ -199,32 +195,33 @@ export class TagsState { public async assignParent( tagUuid: string, - parentUuid: string | undefined + futureParentUuid: string | undefined ): Promise { const tag = this.application.findItem(tagUuid) as SNTag; const currentParent = this.application.getTagParent(tag); - const currentParentUuid = currentParent?.parentId; + const currentParentUuid = currentParent?.uuid; - if (currentParentUuid === parentUuid) { + if (currentParentUuid === futureParentUuid) { return; } - const parent = - parentUuid && (this.application.findItem(parentUuid) as SNTag); + const futureParent = + futureParentUuid && + (this.application.findItem(futureParentUuid) as SNTag); - if (!parent) { + if (!futureParent) { const futureSiblings = rootTags(this.application); if (!isValidFutureSiblings(this.application, futureSiblings, tag)) { return; } await this.application.unsetTagParent(tag); } else { - const futureSiblings = this.application.getTagChildren(parent); + const futureSiblings = this.application.getTagChildren(futureParent); if (!isValidFutureSiblings(this.application, futureSiblings, tag)) { return; } - await this.application.setTagParent(parent, tag); + await this.application.setTagParent(futureParent, tag); } await this.application.sync(); @@ -390,23 +387,6 @@ export class TagsState { } } - private countAllNotes(): number { - const allTag = this.application.getSmartTags().find((tag) => tag.isAllTag); - - if (!allTag) { - console.error(STRING_MISSING_SYSTEM_TAG); - return -1; - } - - const notes = this.application - .notesMatchingSmartTag(allTag) - .filter((note) => { - return !note.archived && !note.trashed; - }); - - return notes.length; - } - public onFoldersComponentMessage( action: ComponentAction, data: MessageData @@ -439,9 +419,6 @@ export class TagsState { } } -/** - * Bug fix for issue 1201550111577311, - */ class TagsCountsState { public counts: { [uuid: string]: number } = {}; @@ -453,13 +430,13 @@ class TagsCountsState { } public update(tags: SNTag[]) { - const newCounts: { [uuid: string]: number } = {}; + const newCounts: { [uuid: string]: number } = Object.assign( + {}, + this.counts + ); tags.forEach((tag) => { - newCounts[tag.uuid] = this.application.referencesForItem( - tag, - ContentType.Note - ).length; + newCounts[tag.uuid] = this.application.countableNotesForTag(tag); }); this.counts = newCounts; diff --git a/app/assets/javascripts/views/note_view/note_view.ts b/app/assets/javascripts/views/note_view/note_view.ts index e1a2a22f6..ad3bdfdf1 100644 --- a/app/assets/javascripts/views/note_view/note_view.ts +++ b/app/assets/javascripts/views/note_view/note_view.ts @@ -201,6 +201,8 @@ export class NoteView extends PureViewCtrl { this.editorValues.text = note.text; } + this.reloadSpellcheck(); + const isTemplateNoteInsertedToBeInteractableWithEditor = source === PayloadSource.Constructor && note.dirty; if (isTemplateNoteInsertedToBeInteractableWithEditor) { @@ -694,29 +696,35 @@ export class NoteView extends PureViewCtrl { this.application.sync(); } - async reloadPreferences() { - const monospaceFont = this.application.getPreference( - PrefKey.EditorMonospaceEnabled, - true - ); - const spellcheck = this.application.getPreference( - PrefKey.EditorSpellcheck, - true - ); - const marginResizersEnabled = this.application.getPreference( - PrefKey.EditorResizersEnabled, - true - ); + async reloadSpellcheck() { + const spellcheck = this.appState.notes.getSpellcheckStateForNote(this.note); if (spellcheck !== this.state.spellcheck) { await this.setState({ textareaUnloading: true }); await this.setState({ textareaUnloading: false }); this.reloadFont(); + + await this.setState({ + spellcheck, + }); } + } + + async reloadPreferences() { + const monospaceFont = this.application.getPreference( + PrefKey.EditorMonospaceEnabled, + true + ); + + const marginResizersEnabled = this.application.getPreference( + PrefKey.EditorResizersEnabled, + true + ); + + await this.reloadSpellcheck(); await this.setState({ monospaceFont, - spellcheck, marginResizersEnabled, }); diff --git a/package.json b/package.json index 365a684bc..28343a799 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "standard-notes-web", - "version": "3.9.14", + "version": "3.9.20", "license": "AGPL-3.0-or-later", "repository": { "type": "git", @@ -27,7 +27,6 @@ "@babel/preset-typescript": "^7.15.0", "@reach/disclosure": "^0.16.2", "@reach/visually-hidden": "^0.16.0", - "@standardnotes/components": "1.2.8", "@svgr/webpack": "^5.5.0", "@types/angular": "^1.8.3", "@types/jest": "^27.0.3", @@ -86,10 +85,11 @@ "@reach/dialog": "^0.16.2", "@reach/listbox": "^0.16.2", "@reach/tooltip": "^0.16.2", - "@standardnotes/features": "1.20.7", - "@standardnotes/settings": "^1.9.0", - "@standardnotes/sncrypto-web": "1.5.3", - "@standardnotes/snjs": "2.35.5", + "@standardnotes/components": "1.4.3", + "@standardnotes/features": "1.25.0", + "@standardnotes/snjs": "2.41.0", + "@standardnotes/settings": "^1.10.0", + "@standardnotes/sncrypto-web": "1.6.0", "mobx": "^6.3.5", "mobx-react-lite": "^3.2.2", "preact": "^10.5.15", diff --git a/public/components/checksums.json b/public/components/checksums.json index 893ea41f7..b8d3e68ed 100644 --- a/public/components/checksums.json +++ b/public/components/checksums.json @@ -35,54 +35,54 @@ "binary": "42d28f3598669b801821879f0b7e26389300f151bfbc566b11c214e6091719ed" }, "org.standardnotes.code-editor": { - "version": "1.3.8", - "base64": "9969f2997d06deb41af4b40edcda19b4eed72fda6ea2ff116b96616a0d3dba67", - "binary": "8c6fbc89151e11b0ba39475f3180f08ed38f75098f600befa5875eb993435404" + "version": "1.3.9", + "base64": "f9f327b77d1e9084505ae66ae9f91aa116db52fe86de99addc64ebaca9e7dc64", + "binary": "3049e8e87e9bd5928654c9aeea16c8955e180aaae26932cbebfd9092c24346d5" }, "org.standardnotes.bold-editor": { - "version": "1.2.10", - "base64": "0de1df66cc3ae7774a3c0cedb2454e3465cadabf41ba5060ab9e543a2bea5dea", - "binary": "bac85952fbe8af1eac49701da69b811de531fd15b1cfd6bbc90d61d9c785f5d1" + "version": "1.3.2", + "base64": "7a4fec03c556d17aa2f14a9157a20754c429a54843504211017fc21ca6d8b10e", + "binary": "80ff2f747607b6668c5e9b439203d89740de21b822d01b6b4d2051bf232a80f3" }, "org.standardnotes.plus-editor": { - "version": "1.5.0", - "base64": "f8923ab4a464ee113d47fa164ee7efbc6337e9e538105ae473b00492fb4ec46e", - "binary": "d4645ee7a38eeb1046239ea337333dcb64dc01c81f05e20307696099364b485b" + "version": "1.6.1", + "base64": "741c77ab437b17e9e76755485b828a8530bfc0c713258e72374a6fced61a3aef", + "binary": "02da20d1969bc2cc9bc9e164bcd6f993183747c8d6c3edae814fa12789950544" }, "org.standardnotes.simple-markdown-editor": { - "version": "1.4.0", - "base64": "853cfcaf6c1e13796869b4c6655dab82f9d75a25d9e1e9f2e5e3137c7dae03d2", - "binary": "3ac9e1133a109d91dcefbdc344855f82bbbd5f0409c60d9c1f040ee811bd14ae" + "version": "1.4.1", + "base64": "5ba494941267a51961d73c8cc58ab608cde50f8d5772401a947482472d3f8b2f", + "binary": "65cbacc96b5271c0e846e7a2d3bd243f87091055311ca30a2c4a7d2ec228462d" }, "org.standardnotes.advanced-markdown-editor": { - "version": "1.3.14", - "base64": "2e2db371fb028bb1c1785102a01d39673d56f72d50ed8ea3c558cce690f23060", - "binary": "657eb02b34978b9d2412a0fc9525ec0b3bd6080d01069a11659b289d2c9eafa0" + "version": "1.4.1", + "base64": "8772f107ae2913bf653e749c28d8ed2eae055ae5aa694d39f43db3ec7d787d86", + "binary": "2989c33b1997e054622bafcf50a9b966fc2d6acee640aa9a52d7efc19e15c123" }, "org.standardnotes.minimal-markdown-editor": { - "version": "1.3.7", - "base64": "b785ff85d8803ed0323163221e36048b43086e85c7cc5f1c12abb5c5b270a6ed", - "binary": "3a8cfaa512f8734faf75ae9ee8ece3a55409d50dbeebfe9cbeca7ff4b40a8426" + "version": "1.3.8", + "base64": "a48584b5e0601a43403ec7ca10e6cc7958072f2dce9c29bd883bcabde8a2288a", + "binary": "8d08f2ffe85a4ad234aa16772266554bc7849778a470d8e6b9293e313890c53a" }, "org.standardnotes.fancy-markdown-editor": { - "version": "1.3.4", - "base64": "fbee0c66041d942b4f62d9bf4bbc9df99c64b3d2aad4a00be66d0516dd86a922", - "binary": "f2f36a306abd5a878ec6d204325e001db8cbaebe50629687d6f14c35bb1f78b1" + "version": "1.3.5", + "base64": "db05eaff4380af3f89c30559b2da6a1ab7075591718306e8ecfc8fa3864a1891", + "binary": "7adf87b091dd45c4a9d3adaf9f0e12f18acd7fb74078a7be909f5de075eab8e0" }, "org.standardnotes.simple-task-editor": { - "version": "1.3.7", - "base64": "76211fea01d5ad5d44c70a27e90493ffde010621abb3996408c1b5da2e141d3c", - "binary": "6a9236dda72e41408005993d37685cfa98cc2d82d4f2085aea8c88b3a0951501" + "version": "1.3.8", + "base64": "012523870d7c8b7024ea2da31c1c216a0ccfa5cf05183913f0486f1b845a366d", + "binary": "17f3bfdd55ab517a7e47c70b0ebc8c933b1eb5fdeabbc88e8064408421e2e4f8" }, "org.standardnotes.token-vault": { - "version": "2.0.7", - "base64": "56f8ac6a46a60c9e949e5409696f1afe93296563c6940b7df1770a1dec41d7ab", - "binary": "525da86875fb7238ae92eb4bd60a829add4a79623a15ca3182aa221cd44b32f4" + "version": "2.0.9", + "base64": "a40b7df5ac564c763fb1b8f588dcf584576cb4c2ee6d88e456cfa2dc49fec91c", + "binary": "04d6c4765de4e2cdd4e28f3f8c30e79a49e980fa1cdd9df812e844f8486795f3" }, "org.standardnotes.standard-sheets": { - "version": "1.4.2", - "base64": "d32d7f8cc8141d9c8983849d8bcb25bfb1000710b6380ee7287a8c22c6366a90", - "binary": "1cf178db81042c7afe779cd53114a4d0d5004259d6fbba315eb0a78e7caabece" + "version": "1.4.3", + "base64": "e38ed30e821bd7a4dc13026898215c892911c91217e5dcdf9d9ebdc25e05b711", + "binary": "c51b4bfbb11ca60d4f81c7c28fba7d24da56b6dcdb799d12e34e1882d9873db3" }, "org.standardnotes.file-safe": { "version": "2.0.10", diff --git a/public/components/org.standardnotes.advanced-markdown-editor/dist/app.js.map b/public/components/org.standardnotes.advanced-markdown-editor/dist/app.js.map new file mode 100644 index 000000000..2a4a0dc15 --- /dev/null +++ b/public/components/org.standardnotes.advanced-markdown-editor/dist/app.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["app.js"],"names":["document","addEventListener","event","workingNote","componentManager","ComponentManager","body","classList","add","platform","environment","ignoreTextChange","initialLoad","lastValue","lastUUID","clientData","streamContextItem","note","uuid","isMetadataUpdate","window","easymde","content","text","value","codemirror","getDoc","clearHistory","mode","isPreviewActive","togglePreview","isSideBySideActive","toggleSideBySide","EasyMDE","element","getElementById","autoDownloadFontAwesome","spellChecker","status","shortcuts","toolbar","className","default","name","noDisable","title","action","saveMetadata","noMobile","getEditorMode","editor","saveItemWithPresave","toggleFullScreen","e","setOption","on","strip","html","tmp","implementation","createHTMLDocument","innerHTML","textContent","innerText","truncateString","string","limit","length","substring","options","previewRender","strippedHtml","preview_plain","preview_html"],"mappings":"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","file":"app.js","sourcesContent":["document.addEventListener(\"DOMContentLoaded\", function(event) {\n\n var workingNote;\n\n var componentManager = new ComponentManager(null, () => {\n // on ready\n document.body.classList.add(componentManager.platform);\n document.body.classList.add(componentManager.environment);\n });\n\n var ignoreTextChange = false;\n var initialLoad = true;\n var lastValue, lastUUID, clientData;\n\n componentManager.streamContextItem((note) => {\n\n if(note.uuid !== lastUUID) {\n // Note changed, reset last values\n lastValue = null;\n initialLoad = true;\n lastUUID = note.uuid;\n clientData = note.clientData;\n }\n\n workingNote = note;\n\n // Only update UI on non-metadata updates.\n if(note.isMetadataUpdate || !window.easymde) {\n return;\n }\n\n if(note.content.text !== lastValue) {\n ignoreTextChange = true;\n window.easymde.value(note.content.text);\n ignoreTextChange = false;\n }\n\n if(initialLoad) {\n initialLoad = false;\n window.easymde.codemirror.getDoc().clearHistory();\n var mode = clientData && clientData.mode;\n\n // Set initial editor mode\n if(mode === 'preview') {\n if(!window.easymde.isPreviewActive()) {\n window.easymde.togglePreview();\n }\n } else if(mode === 'split') {\n if(!window.easymde.isSideBySideActive()) {\n window.easymde.toggleSideBySide();\n }\n // falback config\n } else if(window.easymde.isPreviewActive()) {\n window.easymde.togglePreview();\n }\n }\n });\n\n window.easymde = new EasyMDE({\n element: document.getElementById(\"editor\"),\n autoDownloadFontAwesome: false,\n spellChecker: false,\n status: false,\n shortcuts: {\n toggleSideBySide: \"Cmd-Alt-P\"\n },\n // Syntax highlighting is disabled until we figure out performance issue: https://github.com/sn-extensions/advanced-markdown-editor/pull/20#issuecomment-513811633\n // renderingConfig: {\n // codeSyntaxHighlighting: true\n // },\n toolbar:[\n {\n className: \"fa fa-eye\",\n default: true,\n name: \"preview\",\n noDisable: true,\n title: \"Toggle Preview\",\n action: function() {\n window.easymde.togglePreview();\n saveMetadata();\n }\n },\n {\n className: \"fa fa-columns\",\n default: true,\n name: \"side-by-side\",\n noDisable: true,\n noMobile: true,\n title: \"Toggle Side by Side\",\n action: function() {\n window.easymde.toggleSideBySide();\n saveMetadata();\n }\n },\n \"|\",\n \"heading\", \"bold\", \"italic\", \"strikethrough\",\n \"|\", \"quote\", \"code\",\n \"|\", \"unordered-list\", \"ordered-list\",\n \"|\", \"clean-block\",\n \"|\", \"link\", \"image\",\n \"|\", \"table\"\n ]\n });\n\n function saveMetadata() {\n function getEditorMode() {\n var editor = window.easymde;\n\n if(editor) {\n if (editor.isPreviewActive()) return 'preview';\n if (editor.isSideBySideActive()) return 'split';\n }\n return 'edit';\n }\n\n var note = workingNote;\n\n componentManager.saveItemWithPresave(note, () => {\n note.clientData = { mode: getEditorMode() };\n });\n }\n\n // Some sort of issue on Mobile RN where this causes an exception (\".className is not defined\")\n try {\n window.easymde.toggleFullScreen();\n } catch (e) {}\n\n /*\n Can be set to Infinity to make sure the whole document is always rendered, and thus the browser's text search works on it. This will have bad effects on performance of big documents.\n Really bad performance on Safari. Unusable.\n */\n window.easymde.codemirror.setOption(\"viewportMargin\", 100);\n\n window.easymde.codemirror.on(\"change\", function() {\n\n function strip(html) {\n var tmp = document.implementation.createHTMLDocument(\"New\").body;\n tmp.innerHTML = html;\n return tmp.textContent || tmp.innerText || \"\";\n }\n\n function truncateString(string, limit = 90) {\n if(string.length <= limit) {\n return string;\n } else {\n return string.substring(0, limit) + \"...\";\n }\n }\n\n if(!ignoreTextChange) {\n if(workingNote) {\n // Be sure to capture this object as a variable, as this.note may be reassigned in `streamContextItem`, so by the time\n // you modify it in the presave block, it may not be the same object anymore, so the presave values will not be applied to\n // the right object, and it will save incorrectly.\n let note = workingNote;\n\n componentManager.saveItemWithPresave(note, () => {\n lastValue = window.easymde.value();\n\n var html = window.easymde.options.previewRender(window.easymde.value());\n var strippedHtml = truncateString(strip(html));\n\n note.content.preview_plain = strippedHtml;\n note.content.preview_html = null;\n note.content.text = lastValue;\n });\n\n }\n }\n });\n});\n"]} \ No newline at end of file diff --git a/public/components/org.standardnotes.advanced-markdown-editor/dist/dist.js b/public/components/org.standardnotes.advanced-markdown-editor/dist/dist.js index 2f6cd997f..264d54370 100644 --- a/public/components/org.standardnotes.advanced-markdown-editor/dist/dist.js +++ b/public/components/org.standardnotes.advanced-markdown-editor/dist/dist.js @@ -1,3 +1,3 @@ /*! For license information please see dist.js.LICENSE.txt */ -(()=>{var e={856:function(e){e.exports=function(){"use strict";var e=Object.hasOwnProperty,t=Object.setPrototypeOf,n=Object.isFrozen,u=Object.getPrototypeOf,r=Object.getOwnPropertyDescriptor,i=Object.freeze,a=Object.seal,o=Object.create,s="undefined"!=typeof Reflect&&Reflect,l=s.apply,c=s.construct;l||(l=function(e,t,n){return e.apply(t,n)}),i||(i=function(e){return e}),a||(a=function(e){return e}),c||(c=function(e,t){return new(Function.prototype.bind.apply(e,[null].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t1?n-1:0),r=1;r/gm),N=a(/^data-[\-\w.\u00B7-\uFFFF]/),P=a(/^aria-[\-\w]+$/),U=a(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),j=a(/^(?:\w+script|data):/i),q=a(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),H="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function Z(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:W(),n=function(t){return e(t)};if(n.version="2.2.9",n.removed=[],!t||!t.document||9!==t.document.nodeType)return n.isSupported=!1,n;var u=t.document,r=t.document,a=t.DocumentFragment,o=t.HTMLTemplateElement,s=t.Node,l=t.Element,c=t.NodeFilter,D=t.NamedNodeMap,C=void 0===D?t.NamedNodeMap||t.MozNamedAttrMap:D,K=t.Text,V=t.Comment,X=t.DOMParser,Y=t.trustedTypes,J=l.prototype,Q=y(J,"cloneNode"),ee=y(J,"nextSibling"),te=y(J,"childNodes"),ne=y(J,"parentNode");if("function"==typeof o){var ue=r.createElement("template");ue.content&&ue.content.ownerDocument&&(r=ue.content.ownerDocument)}var re=G(Y,u),ie=re&&Ie?re.createHTML(""):"",ae=r,oe=ae.implementation,se=ae.createNodeIterator,le=ae.createDocumentFragment,ce=u.importNode,De={};try{De=v(r).documentMode?r.documentMode:{}}catch(e){}var pe={};n.isSupported="function"==typeof ne&&oe&&void 0!==oe.createHTMLDocument&&9!==De;var he=L,de=M,fe=N,ge=P,me=j,Ae=q,Fe=U,ke=null,be=E({},[].concat(Z(x),Z(w),Z(B),Z(S),Z(z))),Ce=null,Ee=E({},[].concat(Z(R),Z($),Z(O),Z(I))),ve=null,ye=null,xe=!0,we=!0,Be=!1,_e=!1,Se=!1,Te=!1,ze=!1,Re=!1,$e=!1,Oe=!0,Ie=!1,Le=!0,Me=!0,Ne=!1,Pe={},Ue=E({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),je=null,qe=E({},["audio","video","img","source","image","track"]),He=null,Ze=E({},["alt","class","for","id","label","name","pattern","placeholder","summary","title","value","style","xmlns"]),We="http://www.w3.org/1998/Math/MathML",Ge="http://www.w3.org/2000/svg",Ke="http://www.w3.org/1999/xhtml",Ve=Ke,Xe=!1,Ye=null,Je=r.createElement("form"),Qe=function(e){Ye&&Ye===e||(e&&"object"===(void 0===e?"undefined":H(e))||(e={}),e=v(e),ke="ALLOWED_TAGS"in e?E({},e.ALLOWED_TAGS):be,Ce="ALLOWED_ATTR"in e?E({},e.ALLOWED_ATTR):Ee,He="ADD_URI_SAFE_ATTR"in e?E(v(Ze),e.ADD_URI_SAFE_ATTR):Ze,je="ADD_DATA_URI_TAGS"in e?E(v(qe),e.ADD_DATA_URI_TAGS):qe,ve="FORBID_TAGS"in e?E({},e.FORBID_TAGS):{},ye="FORBID_ATTR"in e?E({},e.FORBID_ATTR):{},Pe="USE_PROFILES"in e&&e.USE_PROFILES,xe=!1!==e.ALLOW_ARIA_ATTR,we=!1!==e.ALLOW_DATA_ATTR,Be=e.ALLOW_UNKNOWN_PROTOCOLS||!1,_e=e.SAFE_FOR_TEMPLATES||!1,Se=e.WHOLE_DOCUMENT||!1,Re=e.RETURN_DOM||!1,$e=e.RETURN_DOM_FRAGMENT||!1,Oe=!1!==e.RETURN_DOM_IMPORT,Ie=e.RETURN_TRUSTED_TYPE||!1,ze=e.FORCE_BODY||!1,Le=!1!==e.SANITIZE_DOM,Me=!1!==e.KEEP_CONTENT,Ne=e.IN_PLACE||!1,Fe=e.ALLOWED_URI_REGEXP||Fe,Ve=e.NAMESPACE||Ke,_e&&(we=!1),$e&&(Re=!0),Pe&&(ke=E({},[].concat(Z(z))),Ce=[],!0===Pe.html&&(E(ke,x),E(Ce,R)),!0===Pe.svg&&(E(ke,w),E(Ce,$),E(Ce,I)),!0===Pe.svgFilters&&(E(ke,B),E(Ce,$),E(Ce,I)),!0===Pe.mathMl&&(E(ke,S),E(Ce,O),E(Ce,I))),e.ADD_TAGS&&(ke===be&&(ke=v(ke)),E(ke,e.ADD_TAGS)),e.ADD_ATTR&&(Ce===Ee&&(Ce=v(Ce)),E(Ce,e.ADD_ATTR)),e.ADD_URI_SAFE_ATTR&&E(He,e.ADD_URI_SAFE_ATTR),Me&&(ke["#text"]=!0),Se&&E(ke,["html","head","body"]),ke.table&&(E(ke,["tbody"]),delete ve.tbody),i&&i(e),Ye=e)},et=E({},["mi","mo","mn","ms","mtext"]),tt=E({},["foreignobject","desc","title","annotation-xml"]),nt=E({},w);E(nt,B),E(nt,_);var ut=E({},S);E(ut,T);var rt=function(e){var t=ne(e);t&&t.tagName||(t={namespaceURI:Ke,tagName:"template"});var n=f(e.tagName),u=f(t.tagName);if(e.namespaceURI===Ge)return t.namespaceURI===Ke?"svg"===n:t.namespaceURI===We?"svg"===n&&("annotation-xml"===u||et[u]):Boolean(nt[n]);if(e.namespaceURI===We)return t.namespaceURI===Ke?"math"===n:t.namespaceURI===Ge?"math"===n&&tt[u]:Boolean(ut[n]);if(e.namespaceURI===Ke){if(t.namespaceURI===Ge&&!tt[u])return!1;if(t.namespaceURI===We&&!et[u])return!1;var r=E({},["title","style","font","a","script"]);return!ut[n]&&(r[n]||!nt[n])}return!1},it=function(e){d(n.removed,{element:e});try{e.parentNode.removeChild(e)}catch(t){try{e.outerHTML=ie}catch(t){e.remove()}}},at=function(e,t){try{d(n.removed,{attribute:t.getAttributeNode(e),from:t})}catch(e){d(n.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e&&!Ce[e])if(Re||$e)try{it(t)}catch(e){}else try{t.setAttribute(e,"")}catch(e){}},ot=function(e){var t=void 0,n=void 0;if(ze)e=""+e;else{var u=g(e,/^[\r\n\t ]+/);n=u&&u[0]}var i=re?re.createHTML(e):e;if(Ve===Ke)try{t=(new X).parseFromString(i,"text/html")}catch(e){}if(!t||!t.documentElement){t=oe.createDocument(Ve,"template",null);try{t.documentElement.innerHTML=Xe?"":i}catch(e){}}var a=t.body||t.documentElement;return e&&n&&a.insertBefore(r.createTextNode(n),a.childNodes[0]||null),Se?t.documentElement:a},st=function(e){return se.call(e.ownerDocument||e,e,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT,null,!1)},lt=function(e){return!(e instanceof K||e instanceof V||"string"==typeof e.nodeName&&"string"==typeof e.textContent&&"function"==typeof e.removeChild&&e.attributes instanceof C&&"function"==typeof e.removeAttribute&&"function"==typeof e.setAttribute&&"string"==typeof e.namespaceURI&&"function"==typeof e.insertBefore)},ct=function(e){return"object"===(void 0===s?"undefined":H(s))?e instanceof s:e&&"object"===(void 0===e?"undefined":H(e))&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName},Dt=function(e,t,u){pe[e]&&p(pe[e],(function(e){e.call(n,t,u,Ye)}))},pt=function(e){var t=void 0;if(Dt("beforeSanitizeElements",e,null),lt(e))return it(e),!0;if(g(e.nodeName,/[\u0080-\uFFFF]/))return it(e),!0;var u=f(e.nodeName);if(Dt("uponSanitizeElement",e,{tagName:u,allowedTags:ke}),!ct(e.firstElementChild)&&(!ct(e.content)||!ct(e.content.firstElementChild))&&k(/<[/\w]/g,e.innerHTML)&&k(/<[/\w]/g,e.textContent))return it(e),!0;if(!ke[u]||ve[u]){if(Me&&!Ue[u]){var r=ne(e)||e.parentNode,i=te(e)||e.childNodes;if(i&&r)for(var a=i.length-1;a>=0;--a)r.insertBefore(Q(i[a],!0),ee(e))}return it(e),!0}return e instanceof l&&!rt(e)?(it(e),!0):"noscript"!==u&&"noembed"!==u||!k(/<\/no(script|embed)/i,e.innerHTML)?(_e&&3===e.nodeType&&(t=e.textContent,t=m(t,he," "),t=m(t,de," "),e.textContent!==t&&(d(n.removed,{element:e.cloneNode()}),e.textContent=t)),Dt("afterSanitizeElements",e,null),!1):(it(e),!0)},ht=function(e,t,n){if(Le&&("id"===t||"name"===t)&&(n in r||n in Je))return!1;if(we&&k(fe,t));else if(xe&&k(ge,t));else{if(!Ce[t]||ye[t])return!1;if(He[t]);else if(k(Fe,m(n,Ae,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==A(n,"data:")||!je[e])if(Be&&!k(me,m(n,Ae,"")));else if(n)return!1}return!0},dt=function(e){var t=void 0,u=void 0,r=void 0,i=void 0;Dt("beforeSanitizeAttributes",e,null);var a=e.attributes;if(a){var o={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Ce};for(i=a.length;i--;){var s=t=a[i],l=s.name,c=s.namespaceURI;if(u=F(t.value),r=f(l),o.attrName=r,o.attrValue=u,o.keepAttr=!0,o.forceKeepAttr=void 0,Dt("uponSanitizeAttribute",e,o),u=o.attrValue,!o.forceKeepAttr&&(at(l,e),o.keepAttr))if(k(/\/>/i,u))at(l,e);else{_e&&(u=m(u,he," "),u=m(u,de," "));var D=e.nodeName.toLowerCase();if(ht(D,r,u))try{c?e.setAttributeNS(c,l,u):e.setAttribute(l,u),h(n.removed)}catch(e){}}}Dt("afterSanitizeAttributes",e,null)}},ft=function e(t){var n=void 0,u=st(t);for(Dt("beforeSanitizeShadowDOM",t,null);n=u.nextNode();)Dt("uponSanitizeShadowNode",n,null),pt(n)||(n.content instanceof a&&e(n.content),dt(n));Dt("afterSanitizeShadowDOM",t,null)};return n.sanitize=function(e,r){var i=void 0,o=void 0,l=void 0,c=void 0,D=void 0;if((Xe=!e)&&(e="\x3c!--\x3e"),"string"!=typeof e&&!ct(e)){if("function"!=typeof e.toString)throw b("toString is not a function");if("string"!=typeof(e=e.toString()))throw b("dirty is not a string, aborting")}if(!n.isSupported){if("object"===H(t.toStaticHTML)||"function"==typeof t.toStaticHTML){if("string"==typeof e)return t.toStaticHTML(e);if(ct(e))return t.toStaticHTML(e.outerHTML)}return e}if(Te||Qe(r),n.removed=[],"string"==typeof e&&(Ne=!1),Ne);else if(e instanceof s)1===(o=(i=ot("\x3c!----\x3e")).ownerDocument.importNode(e,!0)).nodeType&&"BODY"===o.nodeName||"HTML"===o.nodeName?i=o:i.appendChild(o);else{if(!Re&&!_e&&!Se&&-1===e.indexOf("<"))return re&&Ie?re.createHTML(e):e;if(!(i=ot(e)))return Re?null:ie}i&&ze&&it(i.firstChild);for(var p=st(Ne?e:i);l=p.nextNode();)3===l.nodeType&&l===c||pt(l)||(l.content instanceof a&&ft(l.content),dt(l),c=l);if(c=null,Ne)return e;if(Re){if($e)for(D=le.call(i.ownerDocument);i.firstChild;)D.appendChild(i.firstChild);else D=i;return Oe&&(D=ce.call(u,D,!0)),D}var h=Se?i.outerHTML:i.innerHTML;return _e&&(h=m(h,he," "),h=m(h,de," ")),re&&Ie?re.createHTML(h):h},n.setConfig=function(e){Qe(e),Te=!0},n.clearConfig=function(){Ye=null,Te=!1},n.isValidAttribute=function(e,t,n){Ye||Qe({});var u=f(e),r=f(t);return ht(u,r,n)},n.addHook=function(e,t){"function"==typeof t&&(pe[e]=pe[e]||[],d(pe[e],t))},n.removeHook=function(e){pe[e]&&h(pe[e])},n.removeHooks=function(e){pe[e]&&(pe[e]=[])},n.removeAllHooks=function(){pe={}},n}()}()},84:function(e){e.exports=function(){"use strict";function e(e,t){for(var n=0;ne.length)&&(t=e.length);for(var n=0,u=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var u={exports:{}};function r(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}u.exports={defaults:{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1},getDefaults:r,changeDefaults:function(e){u.exports.defaults=e}};var i=/[&<>"']/,a=/[&<>"']/g,o=/[<>"']|&(?!#?\w+;)/,s=/[<>"']|&(?!#?\w+;)/g,l={"&":"&","<":"<",">":">",'"':""","'":"'"},c=function(e){return l[e]};var D=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function p(e){return e.replace(D,(function(e,t){return"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""}))}var h=/(^|[^\[])\^/g;var d=/[^\w:]/g,f=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;var g={},m=/^[^:]+:\/*[^/]*$/,A=/^([^:]+:)[\s\S]*$/,F=/^([^:]+:\/*[^/]*)[\s\S]*$/;function k(e,t){g[" "+e]||(m.test(e)?g[" "+e]=e+"/":g[" "+e]=b(e,"/",!0));var n=-1===(e=g[" "+e]).indexOf(":");return"//"===t.substring(0,2)?n?t:e.replace(A,"$1")+t:"/"===t.charAt(0)?n?t:e.replace(F,"$1")+t:e+t}function b(e,t,n){var u=e.length;if(0===u)return"";for(var r=0;r=0&&"\\"===n[r];)u=!u;return u?"|":" |"})).split(/ \|/),u=0;if(n.length>t)n.splice(t);else for(;n.length1;)1&t&&(n+=e),t>>=1,e+=e;return n+e},R=u.exports.defaults,$=_,O=B,I=C,L=S;function M(e,t,n){var u=t.href,r=t.title?I(t.title):null,i=e[1].replace(/\\([\[\]])/g,"$1");return"!"!==e[0].charAt(0)?{type:"link",raw:n,href:u,title:r,text:i}:{type:"image",raw:n,href:u,title:r,text:I(i)}}var N=function(){function e(e){this.options=e||R}var t=e.prototype;return t.space=function(e){var t=this.rules.block.newline.exec(e);if(t)return t[0].length>1?{type:"space",raw:t[0]}:{raw:"\n"}},t.code=function(e){var t=this.rules.block.code.exec(e);if(t){var n=t[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?n:$(n,"\n")}}},t.fences=function(e){var t=this.rules.block.fences.exec(e);if(t){var n=t[0],u=function(e,t){var n=e.match(/^(\s+)(?:```)/);if(null===n)return t;var u=n[1];return t.split("\n").map((function(e){var t=e.match(/^\s+/);return null===t?e:t[0].length>=u.length?e.slice(u.length):e})).join("\n")}(n,t[3]||"");return{type:"code",raw:n,lang:t[2]?t[2].trim():t[2],text:u}}},t.heading=function(e){var t=this.rules.block.heading.exec(e);if(t){var n=t[2].trim();if(/#$/.test(n)){var u=$(n,"#");this.options.pedantic?n=u.trim():u&&!/ $/.test(u)||(n=u.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:n}}},t.nptable=function(e){var t=this.rules.block.nptable.exec(e);if(t){var n={type:"table",header:O(t[1].replace(/^ *| *\| *$/g,"")),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:t[3]?t[3].replace(/\n$/,"").split("\n"):[],raw:t[0]};if(n.header.length===n.align.length){var u,r=n.align.length;for(u=0;u ?/gm,"");return{type:"blockquote",raw:t[0],text:n}}},t.list=function(e){var t=this.rules.block.list.exec(e);if(t){var n,u,r,i,a,o,s,l,c,D=t[0],p=t[2],h=p.length>1,d={type:"list",raw:D,ordered:h,start:h?+p.slice(0,-1):"",loose:!1,items:[]},f=t[0].match(this.rules.block.item),g=!1,m=f.length;r=this.rules.block.listItemStart.exec(f[0]);for(var A=0;Ar[1].length:i[1].length>=r[0].length||i[1].length>3){f.splice(A,2,f[A]+(!this.options.pedantic&&i[1].length/i.test(u[0])&&(t=!1),!n&&/^<(pre|code|kbd|script)(\s|>)/i.test(u[0])?n=!0:n&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(u[0])&&(n=!1),{type:this.options.sanitize?"text":"html",raw:u[0],inLink:t,inRawBlock:n,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(u[0]):I(u[0]):u[0]}},t.link=function(e){var t=this.rules.inline.link.exec(e);if(t){var n=t[2].trim();if(!this.options.pedantic&&/^$/.test(n))return;var u=$(n.slice(0,-1),"\\");if((n.length-u.length)%2==0)return}else{var r=L(t[2],"()");if(r>-1){var i=(0===t[0].indexOf("!")?5:4)+t[1].length+r;t[2]=t[2].substring(0,r),t[0]=t[0].substring(0,i).trim(),t[3]=""}}var a=t[2],o="";if(this.options.pedantic){var s=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(a);s&&(a=s[1],o=s[3])}else o=t[3]?t[3].slice(1,-1):"";return a=a.trim(),/^$/.test(n)?a.slice(1):a.slice(1,-1)),M(t,{href:a?a.replace(this.rules.inline._escapes,"$1"):a,title:o?o.replace(this.rules.inline._escapes,"$1"):o},t[0])}},t.reflink=function(e,t){var n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){var u=(n[2]||n[1]).replace(/\s+/g," ");if(!(u=t[u.toLowerCase()])||!u.href){var r=n[0].charAt(0);return{type:"text",raw:r,text:r}}return M(n,u,n[0])}},t.emStrong=function(e,t,n){void 0===n&&(n="");var u=this.rules.inline.emStrong.lDelim.exec(e);if(u&&(!u[3]||!n.match(/(?:[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08C7\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\u9FFC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7CA\uA7F5-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF30-\uDF3B]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF2\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE96\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDD\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])/))){var r=u[1]||u[2]||"";if(!r||r&&(""===n||this.rules.inline.punctuation.exec(n))){var i,a,o=u[0].length-1,s=o,l=0,c="*"===u[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+o);null!=(u=c.exec(t));)if(i=u[1]||u[2]||u[3]||u[4]||u[5]||u[6])if(a=i.length,u[3]||u[4])s+=a;else if(!((u[5]||u[6])&&o%3)||(o+a)%3){if(!((s-=a)>0))return a=Math.min(a,a+s+l),Math.min(o,a)%2?{type:"em",raw:e.slice(0,o+u.index+a+1),text:e.slice(1,o+u.index+a)}:{type:"strong",raw:e.slice(0,o+u.index+a+1),text:e.slice(2,o+u.index+a-1)}}else l+=a}}},t.codespan=function(e){var t=this.rules.inline.code.exec(e);if(t){var n=t[2].replace(/\n/g," "),u=/[^ ]/.test(n),r=/^ /.test(n)&&/ $/.test(n);return u&&r&&(n=n.substring(1,n.length-1)),n=I(n,!0),{type:"codespan",raw:t[0],text:n}}},t.br=function(e){var t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}},t.del=function(e){var t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2]}},t.autolink=function(e,t){var n,u,r=this.rules.inline.autolink.exec(e);if(r)return u="@"===r[2]?"mailto:"+(n=I(this.options.mangle?t(r[1]):r[1])):n=I(r[1]),{type:"link",raw:r[0],text:n,href:u,tokens:[{type:"text",raw:n,text:n}]}},t.url=function(e,t){var n;if(n=this.rules.inline.url.exec(e)){var u,r;if("@"===n[2])r="mailto:"+(u=I(this.options.mangle?t(n[0]):n[0]));else{var i;do{i=n[0],n[0]=this.rules.inline._backpedal.exec(n[0])[0]}while(i!==n[0]);u=I(n[0]),r="www."===n[1]?"http://"+u:u}return{type:"link",raw:n[0],text:u,href:r,tokens:[{type:"text",raw:u,text:u}]}}},t.inlineText=function(e,t,n){var u,r=this.rules.inline.text.exec(e);if(r)return u=t?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(r[0]):I(r[0]):r[0]:I(this.options.smartypants?n(r[0]):r[0]),{type:"text",raw:r[0],text:u}},e}(),P=x,U=v,j=w,q={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?! {0,3}bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *\n? *]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,nptable:P,table:P,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};q.def=U(q.def).replace("label",q._label).replace("title",q._title).getRegex(),q.bullet=/(?:[*+-]|\d{1,9}[.)])/,q.item=/^( *)(bull) ?[^\n]*(?:\n(?! *bull ?)[^\n]*)*/,q.item=U(q.item,"gm").replace(/bull/g,q.bullet).getRegex(),q.listItemStart=U(/^( *)(bull) */).replace("bull",q.bullet).getRegex(),q.list=U(q.list).replace(/bull/g,q.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+q.def.source+")").getRegex(),q._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",q._comment=/|$)/,q.html=U(q.html,"i").replace("comment",q._comment).replace("tag",q._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),q.paragraph=U(q._paragraph).replace("hr",q.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|!--)").replace("tag",q._tag).getRegex(),q.blockquote=U(q.blockquote).replace("paragraph",q.paragraph).getRegex(),q.normal=j({},q),q.gfm=j({},q.normal,{nptable:"^ *([^|\\n ].*\\|.*)\\n {0,3}([-:]+ *\\|[-| :]*)(?:\\n((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)",table:"^ *\\|(.+)\\n {0,3}\\|?( *[-:]+[-| :]*)(?:\\n *((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),q.gfm.nptable=U(q.gfm.nptable).replace("hr",q.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|!--)").replace("tag",q._tag).getRegex(),q.gfm.table=U(q.gfm.table).replace("hr",q.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|!--)").replace("tag",q._tag).getRegex(),q.pedantic=j({},q.normal,{html:U("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",q._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:P,paragraph:U(q.normal._paragraph).replace("hr",q.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",q.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var H={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:P,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/\_\_[^_*]*?\*[^_*]*?\_\_|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/,rDelimUnd:/\*\*[^_*]*?\_[^_*]*?\*\*|[punct*](\_+)(?=[\s]|$)|[^punct*_\s](\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:P,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\?@\\[\\]`^{|}~"};H.punctuation=U(H.punctuation).replace(/punctuation/g,H._punctuation).getRegex(),H.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g,H.escapedEmSt=/\\\*|\\_/g,H._comment=U(q._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),H.emStrong.lDelim=U(H.emStrong.lDelim).replace(/punct/g,H._punctuation).getRegex(),H.emStrong.rDelimAst=U(H.emStrong.rDelimAst,"g").replace(/punct/g,H._punctuation).getRegex(),H.emStrong.rDelimUnd=U(H.emStrong.rDelimUnd,"g").replace(/punct/g,H._punctuation).getRegex(),H._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,H._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,H._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,H.autolink=U(H.autolink).replace("scheme",H._scheme).replace("email",H._email).getRegex(),H._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,H.tag=U(H.tag).replace("comment",H._comment).replace("attribute",H._attribute).getRegex(),H._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,H._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,H._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,H.link=U(H.link).replace("label",H._label).replace("href",H._href).replace("title",H._title).getRegex(),H.reflink=U(H.reflink).replace("label",H._label).getRegex(),H.reflinkSearch=U(H.reflinkSearch,"g").replace("reflink",H.reflink).replace("nolink",H.nolink).getRegex(),H.normal=j({},H),H.pedantic=j({},H.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:U(/^!?\[(label)\]\((.*?)\)/).replace("label",H._label).getRegex(),reflink:U(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",H._label).getRegex()}),H.gfm=j({},H.normal,{escape:U(H.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\.5&&(n="x"+n.toString(16)),u+="&#"+n+";";return u}var Q=function(){function t(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||G,this.options.tokenizer=this.options.tokenizer||new W,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options;var t={block:K.normal,inline:V.normal};this.options.pedantic?(t.block=K.pedantic,t.inline=V.pedantic):this.options.gfm&&(t.block=K.gfm,this.options.breaks?t.inline=V.breaks:t.inline=V.gfm),this.tokenizer.rules=t}t.lex=function(e,n){return new t(n).lex(e)},t.lexInline=function(e,n){return new t(n).inlineTokens(e)};var n,u,r,i=t.prototype;return i.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," "),this.blockTokens(e,this.tokens,!0),this.inline(this.tokens),this.tokens},i.blockTokens=function(e,t,n){var u,r,i,a;for(void 0===t&&(t=[]),void 0===n&&(n=!0),this.options.pedantic&&(e=e.replace(/^ +$/gm,""));e;)if(u=this.tokenizer.space(e))e=e.substring(u.raw.length),u.type&&t.push(u);else if(u=this.tokenizer.code(e))e=e.substring(u.raw.length),(a=t[t.length-1])&&"paragraph"===a.type?(a.raw+="\n"+u.raw,a.text+="\n"+u.text):t.push(u);else if(u=this.tokenizer.fences(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.heading(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.nptable(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.hr(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.blockquote(e))e=e.substring(u.raw.length),u.tokens=this.blockTokens(u.text,[],n),t.push(u);else if(u=this.tokenizer.list(e)){for(e=e.substring(u.raw.length),i=u.items.length,r=0;r0)for(;null!=(a=this.tokenizer.rules.inline.reflinkSearch.exec(l));)c.includes(a[0].slice(a[0].lastIndexOf("[")+1,-1))&&(l=l.slice(0,a.index)+"["+X("a",a[0].length-2)+"]"+l.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(a=this.tokenizer.rules.inline.blockSkip.exec(l));)l=l.slice(0,a.index)+"["+X("a",a[0].length-2)+"]"+l.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;null!=(a=this.tokenizer.rules.inline.escapedEmSt.exec(l));)l=l.slice(0,a.index)+"++"+l.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);for(;e;)if(o||(s=""),o=!1,r=this.tokenizer.escape(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.tag(e,n,u)){e=e.substring(r.raw.length),n=r.inLink,u=r.inRawBlock;var D=t[t.length-1];D&&"text"===r.type&&"text"===D.type?(D.raw+=r.raw,D.text+=r.text):t.push(r)}else if(r=this.tokenizer.link(e))e=e.substring(r.raw.length),"link"===r.type&&(r.tokens=this.inlineTokens(r.text,[],!0,u)),t.push(r);else if(r=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(r.raw.length);var p=t[t.length-1];"link"===r.type?(r.tokens=this.inlineTokens(r.text,[],!0,u),t.push(r)):p&&"text"===r.type&&"text"===p.type?(p.raw+=r.raw,p.text+=r.text):t.push(r)}else if(r=this.tokenizer.emStrong(e,l,s))e=e.substring(r.raw.length),r.tokens=this.inlineTokens(r.text,[],n,u),t.push(r);else if(r=this.tokenizer.codespan(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.br(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.del(e))e=e.substring(r.raw.length),r.tokens=this.inlineTokens(r.text,[],n,u),t.push(r);else if(r=this.tokenizer.autolink(e,J))e=e.substring(r.raw.length),t.push(r);else if(n||!(r=this.tokenizer.url(e,J))){if(r=this.tokenizer.inlineText(e,u,Y))e=e.substring(r.raw.length),"_"!==r.raw.slice(-1)&&(s=r.raw.slice(-1)),o=!0,(i=t[t.length-1])&&"text"===i.type?(i.raw+=r.raw,i.text+=r.text):t.push(r);else if(e){var h="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(h);break}throw new Error(h)}}else e=e.substring(r.raw.length),t.push(r);return t},n=t,r=[{key:"rules",get:function(){return{block:K,inline:V}}}],(u=null)&&e(n.prototype,u),r&&e(n,r),t}(),ee=u.exports.defaults,te=y,ne=C,ue=function(){function e(e){this.options=e||ee}var t=e.prototype;return t.code=function(e,t,n){var u=(t||"").match(/\S*/)[0];if(this.options.highlight){var r=this.options.highlight(e,u);null!=r&&r!==e&&(n=!0,e=r)}return e=e.replace(/\n$/,"")+"\n",u?'
'+(n?e:ne(e,!0))+"
\n":"
"+(n?e:ne(e,!0))+"
\n"},t.blockquote=function(e){return"
\n"+e+"
\n"},t.html=function(e){return e},t.heading=function(e,t,n,u){return this.options.headerIds?"'+e+"\n":""+e+"\n"},t.hr=function(){return this.options.xhtml?"
\n":"
\n"},t.list=function(e,t,n){var u=t?"ol":"ul";return"<"+u+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"\n"},t.listitem=function(e){return"
  • "+e+"
  • \n"},t.checkbox=function(e){return" "},t.paragraph=function(e){return"

    "+e+"

    \n"},t.table=function(e,t){return t&&(t=""+t+""),"\n\n"+e+"\n"+t+"
    \n"},t.tablerow=function(e){return"\n"+e+"\n"},t.tablecell=function(e,t){var n=t.header?"th":"td";return(t.align?"<"+n+' align="'+t.align+'">':"<"+n+">")+e+"\n"},t.strong=function(e){return""+e+""},t.em=function(e){return""+e+""},t.codespan=function(e){return""+e+""},t.br=function(){return this.options.xhtml?"
    ":"
    "},t.del=function(e){return""+e+""},t.link=function(e,t,n){if(null===(e=te(this.options.sanitize,this.options.baseUrl,e)))return n;var u='"+n+""},t.image=function(e,t,n){if(null===(e=te(this.options.sanitize,this.options.baseUrl,e)))return n;var u=''+n+'":">")},t.text=function(e){return e},e}(),re=function(){function e(){}var t=e.prototype;return t.strong=function(e){return e},t.em=function(e){return e},t.codespan=function(e){return e},t.del=function(e){return e},t.html=function(e){return e},t.text=function(e){return e},t.link=function(e,t,n){return""+n},t.image=function(e,t,n){return""+n},t.br=function(){return""},e}(),ie=function(){function e(){this.seen={}}var t=e.prototype;return t.serialize=function(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")},t.getNextSafeSlug=function(e,t){var n=e,u=0;if(this.seen.hasOwnProperty(n)){u=this.seen[e];do{n=e+"-"+ ++u}while(this.seen.hasOwnProperty(n))}return t||(this.seen[e]=u,this.seen[n]=0),n},t.slug=function(e,t){void 0===t&&(t={});var n=this.serialize(e);return this.getNextSafeSlug(n,t.dryrun)},e}(),ae=ue,oe=re,se=ie,le=u.exports.defaults,ce=E,De=Q,pe=function(){function e(e){this.options=e||le,this.options.renderer=this.options.renderer||new ae,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new oe,this.slugger=new se}e.parse=function(t,n){return new e(n).parse(t)},e.parseInline=function(t,n){return new e(n).parseInline(t)};var t=e.prototype;return t.parse=function(e,t){void 0===t&&(t=!0);var n,u,r,i,a,o,s,l,c,D,p,h,d,f,g,m,A,F,k="",b=e.length;for(n=0;n0&&"text"===g.tokens[0].type?(g.tokens[0].text=F+" "+g.tokens[0].text,g.tokens[0].tokens&&g.tokens[0].tokens.length>0&&"text"===g.tokens[0].tokens[0].type&&(g.tokens[0].tokens[0].text=F+" "+g.tokens[0].tokens[0].text)):g.tokens.unshift({type:"text",text:F}):f+=F),f+=this.parse(g.tokens,d),c+=this.renderer.listitem(f,A,m);k+=this.renderer.list(c,p,h);continue;case"html":k+=this.renderer.html(D.text);continue;case"paragraph":k+=this.renderer.paragraph(this.parseInline(D.tokens));continue;case"text":for(c=D.tokens?this.parseInline(D.tokens):D.text;n+1An error occurred:

    "+Fe(e.message+"",!0)+"
    ";throw e}}return Ee.options=Ee.setOptions=function(e){return me(Ee.defaults,e),be(Ee.defaults),Ee},Ee.getDefaults=ke,Ee.defaults=Ce,Ee.use=function(e){var t=me({},e);if(e.renderer&&function(){var n=Ee.defaults.renderer||new de,u=function(t){var u=n[t];n[t]=function(){for(var r=arguments.length,i=new Array(r),a=0;aAn error occurred:

    "+Fe(e.message+"",!0)+"
    ";throw e}},Ee.Parser=pe,Ee.parser=pe.parse,Ee.Renderer=de,Ee.TextRenderer=fe,Ee.Lexer=De,Ee.lexer=De.lex,Ee.Tokenizer=he,Ee.Slugger=ge,Ee.parse=Ee,Ee}()},308:e=>{var t;self,t=function(){return(()=>{"use strict";var e={754:(e,t,n)=>{n.r(t),n.d(t,{SKAlert:()=>u});class u{constructor({title:e,text:t,buttons:n}){var u,r;r=e=>{if("Enter"===e.key){let e=this.primaryButton();e.action&&e.action(),this.dismiss()}},(u="keyupListener")in this?Object.defineProperty(this,u,{value:r,enumerable:!0,configurable:!0,writable:!0}):this[u]=r,this.title=e,this.text=t,this.buttons=n}buttonsString(){return`\n
    \n ${this.buttons.map((function(e,t){return function(e,t){return`\n \n `}(e,t)})).join("")}\n
    \n `}templateString(){let e,t;return this.buttons?(e=`\n
    \n ${this.buttonsString()}\n
    \n `,t=""):(e="",t='style="padding-bottom: 8px"'),`\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n ${this.title?`
    ${this.title}
    `:""}\n\n
    \n ${this.text?`

    ${this.text}

    `:""}\n
    \n\n ${e}\n
    \n
    \n
    \n
    \n
    \n
    \n `}dismiss(){this.onElement.removeChild(this.element),document.removeEventListener("keyup",this.keyupListener)}primaryButton(){let e=this.buttons.find((e=>!0===e.primary));return e||(e=this.buttons[this.buttons.length-1]),e}present({onElement:e}={}){e||(e=document.body),this.onElement=e,this.element=document.createElement("div"),this.element.className="sn-component",this.element.innerHTML=this.templateString().trim(),this.buttons&&(document.addEventListener("keyup",this.keyupListener),this.buttons.forEach(((e,t)=>{this.element.querySelector(`#button-${t}`).onclick=()=>{e.action&&e.action(),this.dismiss()}}))),e.appendChild(this.element)}}}},t={};function n(u){if(t[u])return t[u].exports;var r=t[u]={exports:{}};return e[u](r,r.exports,n),r.exports}return n.m=e,n.x=e=>{},n.d=(e,t)=>{for(var u in t)n.o(t,u)&&!n.o(e,u)&&Object.defineProperty(e,u,{enumerable:!0,get:t[u]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e={388:0},t=[[754]],u=e=>{},r=(r,i)=>{for(var a,o,[s,l,c,D]=i,p=0,h=[];p{}),u}i.forEach(r.bind(null,0)),i.push=r.bind(null,i.push.bind(i));var o=n.x;n.x=()=>(n.x=o||(e=>{}),(u=a)())})(),n.x()})()},e.exports=t()}},t={};function n(u){var r=t[u];if(void 0!==r)return r.exports;var i=t[u]={exports:{}};return e[u].call(i.exports,i,i.exports,n),i.exports}document.addEventListener("DOMContentLoaded",(function(){let e,t,u,r,i=new ComponentRelay({targetWindow:window,onReady:()=>{document.body.classList.add(i.platform),document.body.classList.add(i.environment)}}),a=!1,o=!0,s=!1,l=!1;function c(){if(!s)return;const t=()=>{const e=window.easymde;if(e){if(e.isPreviewActive())return"preview";if(e.isSideBySideActive())return"split"}return"edit"},n=e;i.saveItemWithPresave(n,(()=>{n.clientData={...n.clientData,mode:t()}}))}i.streamContextItem((async c=>{if(!l&&(c.uuid!==u&&(t=null,o=!0,u=c.uuid,r=c.clientData),e=c,!c.isMetadataUpdate&&window.easymde)){if(function(e){const t=n(84),u=n(856),r=t(e,{headerIds:!1,smartypants:!0}),i=u.sanitize(r,{FORBID_TAGS:["script","style"],FORBID_ATTR:["onerror","onload","onunload","onclick","ondblclick","onmousedown","onmouseup","onmouseover","onmousemove","onmouseout","onfocus","onblur","onkeypress","onkeydown","onkeyup","onsubmit","onreset","onselect","onchange"]}),a=(new DOMParser).parseFromString(r,"text/html"),o=(new DOMParser).parseFromString(i,"text/html");return!a.isEqualNode(o)}(c.content.text))if(r.trustUnsafeContent)s=!0;else{const t=await function(){if(l)return;l=!0;return new Promise((e=>{new(n(308).SKAlert)({title:null,text:"We’ve detected that this note contains a script or code snippet which may be unsafe to execute. Scripts executed in the editor have the ability to impersonate as the editor to Standard Notes. Press Continue to mark this script as safe and proceed, or Cancel to avoid rendering this note.",buttons:[{text:"Cancel",style:"neutral",action:function(){l=!1,e(!1)}},{text:"Continue",style:"danger",action:function(){l=!1,e(!0)}}]}).present()}))}();t&&function(e){i.saveItemWithPresave(e,(()=>{e.clientData={...e.clientData,trustUnsafeContent:!0}}))}(e),s=t}else s=!0;if(!s)return window.easymde.value(""),void(window.easymde.isPreviewActive()||window.easymde.togglePreview());if(c.content.text!==t&&(a=!0,window.easymde.value(c.content.text),a=!1),o){o=!1,window.easymde.codemirror.getDoc().clearHistory();const e=r&&r.mode;"preview"===e?window.easymde.isPreviewActive()||window.easymde.togglePreview():"split"===e?window.easymde.isSideBySideActive()||window.easymde.toggleSideBySide():window.easymde.isPreviewActive()&&window.easymde.togglePreview()}}})),window.easymde=new EasyMDE({element:document.getElementById("editor"),autoDownloadFontAwesome:!1,spellChecker:!1,status:!1,shortcuts:{toggleSideBySide:"Cmd-Alt-P"},toolbar:[{className:"fa fa-eye",default:!0,name:"preview",noDisable:!0,title:"Toggle Preview",action:function(){window.easymde.togglePreview(),c()}},{className:"fa fa-columns",default:!0,name:"side-by-side",noDisable:!0,noMobile:!0,title:"Toggle Side by Side",action:function(){window.easymde.toggleSideBySide(),c()}},"|","heading","bold","italic","strikethrough","|","quote","code","|","unordered-list","ordered-list","|","clean-block","|","link","image","|","table"]});try{window.easymde.toggleFullScreen()}catch(e){console.log("Error:",e)}window.easymde.codemirror.setOption("viewportMargin",100),window.easymde.codemirror.on("change",(function(){if(!a&&s&&e){const n=e;i.saveItemWithPresave(n,(()=>{t=window.easymde.value();let e=((e,t=90)=>e.length<=t?e:e.substring(0,t)+"...")((e=>{const t=document.implementation.createHTMLDocument("New").body;return t.innerHTML=e,t.textContent||t.innerText||""})(window.easymde.options.previewRender(window.easymde.value())));n.content.preview_plain=e,n.content.preview_html=null,n.content.text=t}))}}))}))})(); +(()=>{var e={856:function(e){e.exports=function(){"use strict";var e=Object.hasOwnProperty,t=Object.setPrototypeOf,n=Object.isFrozen,u=Object.getPrototypeOf,r=Object.getOwnPropertyDescriptor,i=Object.freeze,a=Object.seal,o=Object.create,s="undefined"!=typeof Reflect&&Reflect,l=s.apply,c=s.construct;l||(l=function(e,t,n){return e.apply(t,n)}),i||(i=function(e){return e}),a||(a=function(e){return e}),c||(c=function(e,t){return new(Function.prototype.bind.apply(e,[null].concat(function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t1?n-1:0),r=1;r/gm),N=a(/^data-[\-\w.\u00B7-\uFFFF]/),P=a(/^aria-[\-\w]+$/),U=a(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),j=a(/^(?:\w+script|data):/i),q=a(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),H="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function Z(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:W(),n=function(t){return e(t)};if(n.version="2.2.9",n.removed=[],!t||!t.document||9!==t.document.nodeType)return n.isSupported=!1,n;var u=t.document,r=t.document,a=t.DocumentFragment,o=t.HTMLTemplateElement,s=t.Node,l=t.Element,c=t.NodeFilter,D=t.NamedNodeMap,C=void 0===D?t.NamedNodeMap||t.MozNamedAttrMap:D,K=t.Text,V=t.Comment,X=t.DOMParser,Y=t.trustedTypes,J=l.prototype,Q=y(J,"cloneNode"),ee=y(J,"nextSibling"),te=y(J,"childNodes"),ne=y(J,"parentNode");if("function"==typeof o){var ue=r.createElement("template");ue.content&&ue.content.ownerDocument&&(r=ue.content.ownerDocument)}var re=G(Y,u),ie=re&&Ie?re.createHTML(""):"",ae=r,oe=ae.implementation,se=ae.createNodeIterator,le=ae.createDocumentFragment,ce=u.importNode,De={};try{De=v(r).documentMode?r.documentMode:{}}catch(e){}var pe={};n.isSupported="function"==typeof ne&&oe&&void 0!==oe.createHTMLDocument&&9!==De;var he=L,de=M,fe=N,ge=P,me=j,Ae=q,Fe=U,ke=null,be=E({},[].concat(Z(x),Z(w),Z(B),Z(S),Z(z))),Ce=null,Ee=E({},[].concat(Z(R),Z($),Z(O),Z(I))),ve=null,ye=null,xe=!0,we=!0,Be=!1,_e=!1,Se=!1,Te=!1,ze=!1,Re=!1,$e=!1,Oe=!0,Ie=!1,Le=!0,Me=!0,Ne=!1,Pe={},Ue=E({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),je=null,qe=E({},["audio","video","img","source","image","track"]),He=null,Ze=E({},["alt","class","for","id","label","name","pattern","placeholder","summary","title","value","style","xmlns"]),We="http://www.w3.org/1998/Math/MathML",Ge="http://www.w3.org/2000/svg",Ke="http://www.w3.org/1999/xhtml",Ve=Ke,Xe=!1,Ye=null,Je=r.createElement("form"),Qe=function(e){Ye&&Ye===e||(e&&"object"===(void 0===e?"undefined":H(e))||(e={}),e=v(e),ke="ALLOWED_TAGS"in e?E({},e.ALLOWED_TAGS):be,Ce="ALLOWED_ATTR"in e?E({},e.ALLOWED_ATTR):Ee,He="ADD_URI_SAFE_ATTR"in e?E(v(Ze),e.ADD_URI_SAFE_ATTR):Ze,je="ADD_DATA_URI_TAGS"in e?E(v(qe),e.ADD_DATA_URI_TAGS):qe,ve="FORBID_TAGS"in e?E({},e.FORBID_TAGS):{},ye="FORBID_ATTR"in e?E({},e.FORBID_ATTR):{},Pe="USE_PROFILES"in e&&e.USE_PROFILES,xe=!1!==e.ALLOW_ARIA_ATTR,we=!1!==e.ALLOW_DATA_ATTR,Be=e.ALLOW_UNKNOWN_PROTOCOLS||!1,_e=e.SAFE_FOR_TEMPLATES||!1,Se=e.WHOLE_DOCUMENT||!1,Re=e.RETURN_DOM||!1,$e=e.RETURN_DOM_FRAGMENT||!1,Oe=!1!==e.RETURN_DOM_IMPORT,Ie=e.RETURN_TRUSTED_TYPE||!1,ze=e.FORCE_BODY||!1,Le=!1!==e.SANITIZE_DOM,Me=!1!==e.KEEP_CONTENT,Ne=e.IN_PLACE||!1,Fe=e.ALLOWED_URI_REGEXP||Fe,Ve=e.NAMESPACE||Ke,_e&&(we=!1),$e&&(Re=!0),Pe&&(ke=E({},[].concat(Z(z))),Ce=[],!0===Pe.html&&(E(ke,x),E(Ce,R)),!0===Pe.svg&&(E(ke,w),E(Ce,$),E(Ce,I)),!0===Pe.svgFilters&&(E(ke,B),E(Ce,$),E(Ce,I)),!0===Pe.mathMl&&(E(ke,S),E(Ce,O),E(Ce,I))),e.ADD_TAGS&&(ke===be&&(ke=v(ke)),E(ke,e.ADD_TAGS)),e.ADD_ATTR&&(Ce===Ee&&(Ce=v(Ce)),E(Ce,e.ADD_ATTR)),e.ADD_URI_SAFE_ATTR&&E(He,e.ADD_URI_SAFE_ATTR),Me&&(ke["#text"]=!0),Se&&E(ke,["html","head","body"]),ke.table&&(E(ke,["tbody"]),delete ve.tbody),i&&i(e),Ye=e)},et=E({},["mi","mo","mn","ms","mtext"]),tt=E({},["foreignobject","desc","title","annotation-xml"]),nt=E({},w);E(nt,B),E(nt,_);var ut=E({},S);E(ut,T);var rt=function(e){var t=ne(e);t&&t.tagName||(t={namespaceURI:Ke,tagName:"template"});var n=f(e.tagName),u=f(t.tagName);if(e.namespaceURI===Ge)return t.namespaceURI===Ke?"svg"===n:t.namespaceURI===We?"svg"===n&&("annotation-xml"===u||et[u]):Boolean(nt[n]);if(e.namespaceURI===We)return t.namespaceURI===Ke?"math"===n:t.namespaceURI===Ge?"math"===n&&tt[u]:Boolean(ut[n]);if(e.namespaceURI===Ke){if(t.namespaceURI===Ge&&!tt[u])return!1;if(t.namespaceURI===We&&!et[u])return!1;var r=E({},["title","style","font","a","script"]);return!ut[n]&&(r[n]||!nt[n])}return!1},it=function(e){d(n.removed,{element:e});try{e.parentNode.removeChild(e)}catch(t){try{e.outerHTML=ie}catch(t){e.remove()}}},at=function(e,t){try{d(n.removed,{attribute:t.getAttributeNode(e),from:t})}catch(e){d(n.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e&&!Ce[e])if(Re||$e)try{it(t)}catch(e){}else try{t.setAttribute(e,"")}catch(e){}},ot=function(e){var t=void 0,n=void 0;if(ze)e=""+e;else{var u=g(e,/^[\r\n\t ]+/);n=u&&u[0]}var i=re?re.createHTML(e):e;if(Ve===Ke)try{t=(new X).parseFromString(i,"text/html")}catch(e){}if(!t||!t.documentElement){t=oe.createDocument(Ve,"template",null);try{t.documentElement.innerHTML=Xe?"":i}catch(e){}}var a=t.body||t.documentElement;return e&&n&&a.insertBefore(r.createTextNode(n),a.childNodes[0]||null),Se?t.documentElement:a},st=function(e){return se.call(e.ownerDocument||e,e,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT,null,!1)},lt=function(e){return!(e instanceof K||e instanceof V||"string"==typeof e.nodeName&&"string"==typeof e.textContent&&"function"==typeof e.removeChild&&e.attributes instanceof C&&"function"==typeof e.removeAttribute&&"function"==typeof e.setAttribute&&"string"==typeof e.namespaceURI&&"function"==typeof e.insertBefore)},ct=function(e){return"object"===(void 0===s?"undefined":H(s))?e instanceof s:e&&"object"===(void 0===e?"undefined":H(e))&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName},Dt=function(e,t,u){pe[e]&&p(pe[e],(function(e){e.call(n,t,u,Ye)}))},pt=function(e){var t=void 0;if(Dt("beforeSanitizeElements",e,null),lt(e))return it(e),!0;if(g(e.nodeName,/[\u0080-\uFFFF]/))return it(e),!0;var u=f(e.nodeName);if(Dt("uponSanitizeElement",e,{tagName:u,allowedTags:ke}),!ct(e.firstElementChild)&&(!ct(e.content)||!ct(e.content.firstElementChild))&&k(/<[/\w]/g,e.innerHTML)&&k(/<[/\w]/g,e.textContent))return it(e),!0;if(!ke[u]||ve[u]){if(Me&&!Ue[u]){var r=ne(e)||e.parentNode,i=te(e)||e.childNodes;if(i&&r)for(var a=i.length-1;a>=0;--a)r.insertBefore(Q(i[a],!0),ee(e))}return it(e),!0}return e instanceof l&&!rt(e)?(it(e),!0):"noscript"!==u&&"noembed"!==u||!k(/<\/no(script|embed)/i,e.innerHTML)?(_e&&3===e.nodeType&&(t=e.textContent,t=m(t,he," "),t=m(t,de," "),e.textContent!==t&&(d(n.removed,{element:e.cloneNode()}),e.textContent=t)),Dt("afterSanitizeElements",e,null),!1):(it(e),!0)},ht=function(e,t,n){if(Le&&("id"===t||"name"===t)&&(n in r||n in Je))return!1;if(we&&k(fe,t));else if(xe&&k(ge,t));else{if(!Ce[t]||ye[t])return!1;if(He[t]);else if(k(Fe,m(n,Ae,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==A(n,"data:")||!je[e])if(Be&&!k(me,m(n,Ae,"")));else if(n)return!1}return!0},dt=function(e){var t=void 0,u=void 0,r=void 0,i=void 0;Dt("beforeSanitizeAttributes",e,null);var a=e.attributes;if(a){var o={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Ce};for(i=a.length;i--;){var s=t=a[i],l=s.name,c=s.namespaceURI;if(u=F(t.value),r=f(l),o.attrName=r,o.attrValue=u,o.keepAttr=!0,o.forceKeepAttr=void 0,Dt("uponSanitizeAttribute",e,o),u=o.attrValue,!o.forceKeepAttr&&(at(l,e),o.keepAttr))if(k(/\/>/i,u))at(l,e);else{_e&&(u=m(u,he," "),u=m(u,de," "));var D=e.nodeName.toLowerCase();if(ht(D,r,u))try{c?e.setAttributeNS(c,l,u):e.setAttribute(l,u),h(n.removed)}catch(e){}}}Dt("afterSanitizeAttributes",e,null)}},ft=function e(t){var n=void 0,u=st(t);for(Dt("beforeSanitizeShadowDOM",t,null);n=u.nextNode();)Dt("uponSanitizeShadowNode",n,null),pt(n)||(n.content instanceof a&&e(n.content),dt(n));Dt("afterSanitizeShadowDOM",t,null)};return n.sanitize=function(e,r){var i=void 0,o=void 0,l=void 0,c=void 0,D=void 0;if((Xe=!e)&&(e="\x3c!--\x3e"),"string"!=typeof e&&!ct(e)){if("function"!=typeof e.toString)throw b("toString is not a function");if("string"!=typeof(e=e.toString()))throw b("dirty is not a string, aborting")}if(!n.isSupported){if("object"===H(t.toStaticHTML)||"function"==typeof t.toStaticHTML){if("string"==typeof e)return t.toStaticHTML(e);if(ct(e))return t.toStaticHTML(e.outerHTML)}return e}if(Te||Qe(r),n.removed=[],"string"==typeof e&&(Ne=!1),Ne);else if(e instanceof s)1===(o=(i=ot("\x3c!----\x3e")).ownerDocument.importNode(e,!0)).nodeType&&"BODY"===o.nodeName||"HTML"===o.nodeName?i=o:i.appendChild(o);else{if(!Re&&!_e&&!Se&&-1===e.indexOf("<"))return re&&Ie?re.createHTML(e):e;if(!(i=ot(e)))return Re?null:ie}i&&ze&&it(i.firstChild);for(var p=st(Ne?e:i);l=p.nextNode();)3===l.nodeType&&l===c||pt(l)||(l.content instanceof a&&ft(l.content),dt(l),c=l);if(c=null,Ne)return e;if(Re){if($e)for(D=le.call(i.ownerDocument);i.firstChild;)D.appendChild(i.firstChild);else D=i;return Oe&&(D=ce.call(u,D,!0)),D}var h=Se?i.outerHTML:i.innerHTML;return _e&&(h=m(h,he," "),h=m(h,de," ")),re&&Ie?re.createHTML(h):h},n.setConfig=function(e){Qe(e),Te=!0},n.clearConfig=function(){Ye=null,Te=!1},n.isValidAttribute=function(e,t,n){Ye||Qe({});var u=f(e),r=f(t);return ht(u,r,n)},n.addHook=function(e,t){"function"==typeof t&&(pe[e]=pe[e]||[],d(pe[e],t))},n.removeHook=function(e){pe[e]&&h(pe[e])},n.removeHooks=function(e){pe[e]&&(pe[e]=[])},n.removeAllHooks=function(){pe={}},n}()}()},84:function(e){e.exports=function(){"use strict";function e(e,t){for(var n=0;ne.length)&&(t=e.length);for(var n=0,u=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var u={exports:{}};function r(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}u.exports={defaults:{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1},getDefaults:r,changeDefaults:function(e){u.exports.defaults=e}};var i=/[&<>"']/,a=/[&<>"']/g,o=/[<>"']|&(?!#?\w+;)/,s=/[<>"']|&(?!#?\w+;)/g,l={"&":"&","<":"<",">":">",'"':""","'":"'"},c=function(e){return l[e]};var D=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function p(e){return e.replace(D,(function(e,t){return"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""}))}var h=/(^|[^\[])\^/g;var d=/[^\w:]/g,f=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;var g={},m=/^[^:]+:\/*[^/]*$/,A=/^([^:]+:)[\s\S]*$/,F=/^([^:]+:\/*[^/]*)[\s\S]*$/;function k(e,t){g[" "+e]||(m.test(e)?g[" "+e]=e+"/":g[" "+e]=b(e,"/",!0));var n=-1===(e=g[" "+e]).indexOf(":");return"//"===t.substring(0,2)?n?t:e.replace(A,"$1")+t:"/"===t.charAt(0)?n?t:e.replace(F,"$1")+t:e+t}function b(e,t,n){var u=e.length;if(0===u)return"";for(var r=0;r=0&&"\\"===n[r];)u=!u;return u?"|":" |"})).split(/ \|/),u=0;if(n.length>t)n.splice(t);else for(;n.length1;)1&t&&(n+=e),t>>=1,e+=e;return n+e},R=u.exports.defaults,$=_,O=B,I=C,L=S;function M(e,t,n){var u=t.href,r=t.title?I(t.title):null,i=e[1].replace(/\\([\[\]])/g,"$1");return"!"!==e[0].charAt(0)?{type:"link",raw:n,href:u,title:r,text:i}:{type:"image",raw:n,href:u,title:r,text:I(i)}}var N=function(){function e(e){this.options=e||R}var t=e.prototype;return t.space=function(e){var t=this.rules.block.newline.exec(e);if(t)return t[0].length>1?{type:"space",raw:t[0]}:{raw:"\n"}},t.code=function(e){var t=this.rules.block.code.exec(e);if(t){var n=t[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?n:$(n,"\n")}}},t.fences=function(e){var t=this.rules.block.fences.exec(e);if(t){var n=t[0],u=function(e,t){var n=e.match(/^(\s+)(?:```)/);if(null===n)return t;var u=n[1];return t.split("\n").map((function(e){var t=e.match(/^\s+/);return null===t?e:t[0].length>=u.length?e.slice(u.length):e})).join("\n")}(n,t[3]||"");return{type:"code",raw:n,lang:t[2]?t[2].trim():t[2],text:u}}},t.heading=function(e){var t=this.rules.block.heading.exec(e);if(t){var n=t[2].trim();if(/#$/.test(n)){var u=$(n,"#");this.options.pedantic?n=u.trim():u&&!/ $/.test(u)||(n=u.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:n}}},t.nptable=function(e){var t=this.rules.block.nptable.exec(e);if(t){var n={type:"table",header:O(t[1].replace(/^ *| *\| *$/g,"")),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:t[3]?t[3].replace(/\n$/,"").split("\n"):[],raw:t[0]};if(n.header.length===n.align.length){var u,r=n.align.length;for(u=0;u ?/gm,"");return{type:"blockquote",raw:t[0],text:n}}},t.list=function(e){var t=this.rules.block.list.exec(e);if(t){var n,u,r,i,a,o,s,l,c,D=t[0],p=t[2],h=p.length>1,d={type:"list",raw:D,ordered:h,start:h?+p.slice(0,-1):"",loose:!1,items:[]},f=t[0].match(this.rules.block.item),g=!1,m=f.length;r=this.rules.block.listItemStart.exec(f[0]);for(var A=0;Ar[1].length:i[1].length>=r[0].length||i[1].length>3){f.splice(A,2,f[A]+(!this.options.pedantic&&i[1].length/i.test(u[0])&&(t=!1),!n&&/^<(pre|code|kbd|script)(\s|>)/i.test(u[0])?n=!0:n&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(u[0])&&(n=!1),{type:this.options.sanitize?"text":"html",raw:u[0],inLink:t,inRawBlock:n,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(u[0]):I(u[0]):u[0]}},t.link=function(e){var t=this.rules.inline.link.exec(e);if(t){var n=t[2].trim();if(!this.options.pedantic&&/^$/.test(n))return;var u=$(n.slice(0,-1),"\\");if((n.length-u.length)%2==0)return}else{var r=L(t[2],"()");if(r>-1){var i=(0===t[0].indexOf("!")?5:4)+t[1].length+r;t[2]=t[2].substring(0,r),t[0]=t[0].substring(0,i).trim(),t[3]=""}}var a=t[2],o="";if(this.options.pedantic){var s=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(a);s&&(a=s[1],o=s[3])}else o=t[3]?t[3].slice(1,-1):"";return a=a.trim(),/^$/.test(n)?a.slice(1):a.slice(1,-1)),M(t,{href:a?a.replace(this.rules.inline._escapes,"$1"):a,title:o?o.replace(this.rules.inline._escapes,"$1"):o},t[0])}},t.reflink=function(e,t){var n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){var u=(n[2]||n[1]).replace(/\s+/g," ");if(!(u=t[u.toLowerCase()])||!u.href){var r=n[0].charAt(0);return{type:"text",raw:r,text:r}}return M(n,u,n[0])}},t.emStrong=function(e,t,n){void 0===n&&(n="");var u=this.rules.inline.emStrong.lDelim.exec(e);if(u&&(!u[3]||!n.match(/(?:[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08C7\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\u9FFC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7CA\uA7F5-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF30-\uDF3B]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF2\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE96\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDD\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])/))){var r=u[1]||u[2]||"";if(!r||r&&(""===n||this.rules.inline.punctuation.exec(n))){var i,a,o=u[0].length-1,s=o,l=0,c="*"===u[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+o);null!=(u=c.exec(t));)if(i=u[1]||u[2]||u[3]||u[4]||u[5]||u[6])if(a=i.length,u[3]||u[4])s+=a;else if(!((u[5]||u[6])&&o%3)||(o+a)%3){if(!((s-=a)>0))return a=Math.min(a,a+s+l),Math.min(o,a)%2?{type:"em",raw:e.slice(0,o+u.index+a+1),text:e.slice(1,o+u.index+a)}:{type:"strong",raw:e.slice(0,o+u.index+a+1),text:e.slice(2,o+u.index+a-1)}}else l+=a}}},t.codespan=function(e){var t=this.rules.inline.code.exec(e);if(t){var n=t[2].replace(/\n/g," "),u=/[^ ]/.test(n),r=/^ /.test(n)&&/ $/.test(n);return u&&r&&(n=n.substring(1,n.length-1)),n=I(n,!0),{type:"codespan",raw:t[0],text:n}}},t.br=function(e){var t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}},t.del=function(e){var t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2]}},t.autolink=function(e,t){var n,u,r=this.rules.inline.autolink.exec(e);if(r)return u="@"===r[2]?"mailto:"+(n=I(this.options.mangle?t(r[1]):r[1])):n=I(r[1]),{type:"link",raw:r[0],text:n,href:u,tokens:[{type:"text",raw:n,text:n}]}},t.url=function(e,t){var n;if(n=this.rules.inline.url.exec(e)){var u,r;if("@"===n[2])r="mailto:"+(u=I(this.options.mangle?t(n[0]):n[0]));else{var i;do{i=n[0],n[0]=this.rules.inline._backpedal.exec(n[0])[0]}while(i!==n[0]);u=I(n[0]),r="www."===n[1]?"http://"+u:u}return{type:"link",raw:n[0],text:u,href:r,tokens:[{type:"text",raw:u,text:u}]}}},t.inlineText=function(e,t,n){var u,r=this.rules.inline.text.exec(e);if(r)return u=t?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(r[0]):I(r[0]):r[0]:I(this.options.smartypants?n(r[0]):r[0]),{type:"text",raw:r[0],text:u}},e}(),P=x,U=v,j=w,q={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?! {0,3}bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *\n? *]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,nptable:P,table:P,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};q.def=U(q.def).replace("label",q._label).replace("title",q._title).getRegex(),q.bullet=/(?:[*+-]|\d{1,9}[.)])/,q.item=/^( *)(bull) ?[^\n]*(?:\n(?! *bull ?)[^\n]*)*/,q.item=U(q.item,"gm").replace(/bull/g,q.bullet).getRegex(),q.listItemStart=U(/^( *)(bull) */).replace("bull",q.bullet).getRegex(),q.list=U(q.list).replace(/bull/g,q.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+q.def.source+")").getRegex(),q._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",q._comment=/|$)/,q.html=U(q.html,"i").replace("comment",q._comment).replace("tag",q._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),q.paragraph=U(q._paragraph).replace("hr",q.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|!--)").replace("tag",q._tag).getRegex(),q.blockquote=U(q.blockquote).replace("paragraph",q.paragraph).getRegex(),q.normal=j({},q),q.gfm=j({},q.normal,{nptable:"^ *([^|\\n ].*\\|.*)\\n {0,3}([-:]+ *\\|[-| :]*)(?:\\n((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)",table:"^ *\\|(.+)\\n {0,3}\\|?( *[-:]+[-| :]*)(?:\\n *((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),q.gfm.nptable=U(q.gfm.nptable).replace("hr",q.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|!--)").replace("tag",q._tag).getRegex(),q.gfm.table=U(q.gfm.table).replace("hr",q.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|!--)").replace("tag",q._tag).getRegex(),q.pedantic=j({},q.normal,{html:U("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",q._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:P,paragraph:U(q.normal._paragraph).replace("hr",q.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",q.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var H={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:P,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/\_\_[^_*]*?\*[^_*]*?\_\_|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/,rDelimUnd:/\*\*[^_*]*?\_[^_*]*?\*\*|[punct*](\_+)(?=[\s]|$)|[^punct*_\s](\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:P,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\?@\\[\\]`^{|}~"};H.punctuation=U(H.punctuation).replace(/punctuation/g,H._punctuation).getRegex(),H.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g,H.escapedEmSt=/\\\*|\\_/g,H._comment=U(q._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),H.emStrong.lDelim=U(H.emStrong.lDelim).replace(/punct/g,H._punctuation).getRegex(),H.emStrong.rDelimAst=U(H.emStrong.rDelimAst,"g").replace(/punct/g,H._punctuation).getRegex(),H.emStrong.rDelimUnd=U(H.emStrong.rDelimUnd,"g").replace(/punct/g,H._punctuation).getRegex(),H._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,H._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,H._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,H.autolink=U(H.autolink).replace("scheme",H._scheme).replace("email",H._email).getRegex(),H._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,H.tag=U(H.tag).replace("comment",H._comment).replace("attribute",H._attribute).getRegex(),H._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,H._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,H._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,H.link=U(H.link).replace("label",H._label).replace("href",H._href).replace("title",H._title).getRegex(),H.reflink=U(H.reflink).replace("label",H._label).getRegex(),H.reflinkSearch=U(H.reflinkSearch,"g").replace("reflink",H.reflink).replace("nolink",H.nolink).getRegex(),H.normal=j({},H),H.pedantic=j({},H.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:U(/^!?\[(label)\]\((.*?)\)/).replace("label",H._label).getRegex(),reflink:U(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",H._label).getRegex()}),H.gfm=j({},H.normal,{escape:U(H.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\.5&&(n="x"+n.toString(16)),u+="&#"+n+";";return u}var Q=function(){function t(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||G,this.options.tokenizer=this.options.tokenizer||new W,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options;var t={block:K.normal,inline:V.normal};this.options.pedantic?(t.block=K.pedantic,t.inline=V.pedantic):this.options.gfm&&(t.block=K.gfm,this.options.breaks?t.inline=V.breaks:t.inline=V.gfm),this.tokenizer.rules=t}t.lex=function(e,n){return new t(n).lex(e)},t.lexInline=function(e,n){return new t(n).inlineTokens(e)};var n,u,r,i=t.prototype;return i.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," "),this.blockTokens(e,this.tokens,!0),this.inline(this.tokens),this.tokens},i.blockTokens=function(e,t,n){var u,r,i,a;for(void 0===t&&(t=[]),void 0===n&&(n=!0),this.options.pedantic&&(e=e.replace(/^ +$/gm,""));e;)if(u=this.tokenizer.space(e))e=e.substring(u.raw.length),u.type&&t.push(u);else if(u=this.tokenizer.code(e))e=e.substring(u.raw.length),(a=t[t.length-1])&&"paragraph"===a.type?(a.raw+="\n"+u.raw,a.text+="\n"+u.text):t.push(u);else if(u=this.tokenizer.fences(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.heading(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.nptable(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.hr(e))e=e.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.blockquote(e))e=e.substring(u.raw.length),u.tokens=this.blockTokens(u.text,[],n),t.push(u);else if(u=this.tokenizer.list(e)){for(e=e.substring(u.raw.length),i=u.items.length,r=0;r0)for(;null!=(a=this.tokenizer.rules.inline.reflinkSearch.exec(l));)c.includes(a[0].slice(a[0].lastIndexOf("[")+1,-1))&&(l=l.slice(0,a.index)+"["+X("a",a[0].length-2)+"]"+l.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(a=this.tokenizer.rules.inline.blockSkip.exec(l));)l=l.slice(0,a.index)+"["+X("a",a[0].length-2)+"]"+l.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;null!=(a=this.tokenizer.rules.inline.escapedEmSt.exec(l));)l=l.slice(0,a.index)+"++"+l.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);for(;e;)if(o||(s=""),o=!1,r=this.tokenizer.escape(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.tag(e,n,u)){e=e.substring(r.raw.length),n=r.inLink,u=r.inRawBlock;var D=t[t.length-1];D&&"text"===r.type&&"text"===D.type?(D.raw+=r.raw,D.text+=r.text):t.push(r)}else if(r=this.tokenizer.link(e))e=e.substring(r.raw.length),"link"===r.type&&(r.tokens=this.inlineTokens(r.text,[],!0,u)),t.push(r);else if(r=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(r.raw.length);var p=t[t.length-1];"link"===r.type?(r.tokens=this.inlineTokens(r.text,[],!0,u),t.push(r)):p&&"text"===r.type&&"text"===p.type?(p.raw+=r.raw,p.text+=r.text):t.push(r)}else if(r=this.tokenizer.emStrong(e,l,s))e=e.substring(r.raw.length),r.tokens=this.inlineTokens(r.text,[],n,u),t.push(r);else if(r=this.tokenizer.codespan(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.br(e))e=e.substring(r.raw.length),t.push(r);else if(r=this.tokenizer.del(e))e=e.substring(r.raw.length),r.tokens=this.inlineTokens(r.text,[],n,u),t.push(r);else if(r=this.tokenizer.autolink(e,J))e=e.substring(r.raw.length),t.push(r);else if(n||!(r=this.tokenizer.url(e,J))){if(r=this.tokenizer.inlineText(e,u,Y))e=e.substring(r.raw.length),"_"!==r.raw.slice(-1)&&(s=r.raw.slice(-1)),o=!0,(i=t[t.length-1])&&"text"===i.type?(i.raw+=r.raw,i.text+=r.text):t.push(r);else if(e){var h="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(h);break}throw new Error(h)}}else e=e.substring(r.raw.length),t.push(r);return t},n=t,r=[{key:"rules",get:function(){return{block:K,inline:V}}}],(u=null)&&e(n.prototype,u),r&&e(n,r),t}(),ee=u.exports.defaults,te=y,ne=C,ue=function(){function e(e){this.options=e||ee}var t=e.prototype;return t.code=function(e,t,n){var u=(t||"").match(/\S*/)[0];if(this.options.highlight){var r=this.options.highlight(e,u);null!=r&&r!==e&&(n=!0,e=r)}return e=e.replace(/\n$/,"")+"\n",u?'
    '+(n?e:ne(e,!0))+"
    \n":"
    "+(n?e:ne(e,!0))+"
    \n"},t.blockquote=function(e){return"
    \n"+e+"
    \n"},t.html=function(e){return e},t.heading=function(e,t,n,u){return this.options.headerIds?"'+e+"\n":""+e+"\n"},t.hr=function(){return this.options.xhtml?"
    \n":"
    \n"},t.list=function(e,t,n){var u=t?"ol":"ul";return"<"+u+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+"\n"},t.listitem=function(e){return"
  • "+e+"
  • \n"},t.checkbox=function(e){return" "},t.paragraph=function(e){return"

    "+e+"

    \n"},t.table=function(e,t){return t&&(t=""+t+""),"\n\n"+e+"\n"+t+"
    \n"},t.tablerow=function(e){return"\n"+e+"\n"},t.tablecell=function(e,t){var n=t.header?"th":"td";return(t.align?"<"+n+' align="'+t.align+'">':"<"+n+">")+e+"\n"},t.strong=function(e){return""+e+""},t.em=function(e){return""+e+""},t.codespan=function(e){return""+e+""},t.br=function(){return this.options.xhtml?"
    ":"
    "},t.del=function(e){return""+e+""},t.link=function(e,t,n){if(null===(e=te(this.options.sanitize,this.options.baseUrl,e)))return n;var u='"+n+""},t.image=function(e,t,n){if(null===(e=te(this.options.sanitize,this.options.baseUrl,e)))return n;var u=''+n+'":">")},t.text=function(e){return e},e}(),re=function(){function e(){}var t=e.prototype;return t.strong=function(e){return e},t.em=function(e){return e},t.codespan=function(e){return e},t.del=function(e){return e},t.html=function(e){return e},t.text=function(e){return e},t.link=function(e,t,n){return""+n},t.image=function(e,t,n){return""+n},t.br=function(){return""},e}(),ie=function(){function e(){this.seen={}}var t=e.prototype;return t.serialize=function(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")},t.getNextSafeSlug=function(e,t){var n=e,u=0;if(this.seen.hasOwnProperty(n)){u=this.seen[e];do{n=e+"-"+ ++u}while(this.seen.hasOwnProperty(n))}return t||(this.seen[e]=u,this.seen[n]=0),n},t.slug=function(e,t){void 0===t&&(t={});var n=this.serialize(e);return this.getNextSafeSlug(n,t.dryrun)},e}(),ae=ue,oe=re,se=ie,le=u.exports.defaults,ce=E,De=Q,pe=function(){function e(e){this.options=e||le,this.options.renderer=this.options.renderer||new ae,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new oe,this.slugger=new se}e.parse=function(t,n){return new e(n).parse(t)},e.parseInline=function(t,n){return new e(n).parseInline(t)};var t=e.prototype;return t.parse=function(e,t){void 0===t&&(t=!0);var n,u,r,i,a,o,s,l,c,D,p,h,d,f,g,m,A,F,k="",b=e.length;for(n=0;n0&&"text"===g.tokens[0].type?(g.tokens[0].text=F+" "+g.tokens[0].text,g.tokens[0].tokens&&g.tokens[0].tokens.length>0&&"text"===g.tokens[0].tokens[0].type&&(g.tokens[0].tokens[0].text=F+" "+g.tokens[0].tokens[0].text)):g.tokens.unshift({type:"text",text:F}):f+=F),f+=this.parse(g.tokens,d),c+=this.renderer.listitem(f,A,m);k+=this.renderer.list(c,p,h);continue;case"html":k+=this.renderer.html(D.text);continue;case"paragraph":k+=this.renderer.paragraph(this.parseInline(D.tokens));continue;case"text":for(c=D.tokens?this.parseInline(D.tokens):D.text;n+1An error occurred:

    "+Fe(e.message+"",!0)+"
    ";throw e}}return Ee.options=Ee.setOptions=function(e){return me(Ee.defaults,e),be(Ee.defaults),Ee},Ee.getDefaults=ke,Ee.defaults=Ce,Ee.use=function(e){var t=me({},e);if(e.renderer&&function(){var n=Ee.defaults.renderer||new de,u=function(t){var u=n[t];n[t]=function(){for(var r=arguments.length,i=new Array(r),a=0;aAn error occurred:

    "+Fe(e.message+"",!0)+"
    ";throw e}},Ee.Parser=pe,Ee.parser=pe.parse,Ee.Renderer=de,Ee.TextRenderer=fe,Ee.Lexer=De,Ee.lexer=De.lex,Ee.Tokenizer=he,Ee.Slugger=ge,Ee.parse=Ee,Ee}()},308:e=>{var t;self,t=function(){return(()=>{"use strict";var e={754:(e,t,n)=>{n.r(t),n.d(t,{SKAlert:()=>u});class u{constructor({title:e,text:t,buttons:n}){var u,r;r=e=>{if("Enter"===e.key){let e=this.primaryButton();e.action&&e.action(),this.dismiss()}},(u="keyupListener")in this?Object.defineProperty(this,u,{value:r,enumerable:!0,configurable:!0,writable:!0}):this[u]=r,this.title=e,this.text=t,this.buttons=n}buttonsString(){return`\n
    \n ${this.buttons.map((function(e,t){return function(e,t){return`\n \n `}(e,t)})).join("")}\n
    \n `}templateString(){let e,t;return this.buttons?(e=`\n
    \n ${this.buttonsString()}\n
    \n `,t=""):(e="",t='style="padding-bottom: 8px"'),`\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n ${this.title?`
    ${this.title}
    `:""}\n\n
    \n ${this.text?`

    ${this.text}

    `:""}\n
    \n\n ${e}\n
    \n
    \n
    \n
    \n
    \n
    \n `}dismiss(){this.onElement.removeChild(this.element),document.removeEventListener("keyup",this.keyupListener)}primaryButton(){let e=this.buttons.find((e=>!0===e.primary));return e||(e=this.buttons[this.buttons.length-1]),e}present({onElement:e}={}){e||(e=document.body),this.onElement=e,this.element=document.createElement("div"),this.element.className="sn-component",this.element.innerHTML=this.templateString().trim(),this.buttons&&(document.addEventListener("keyup",this.keyupListener),this.buttons.forEach(((e,t)=>{this.element.querySelector(`#button-${t}`).onclick=()=>{e.action&&e.action(),this.dismiss()}}))),e.appendChild(this.element)}}}},t={};function n(u){if(t[u])return t[u].exports;var r=t[u]={exports:{}};return e[u](r,r.exports,n),r.exports}return n.m=e,n.x=e=>{},n.d=(e,t)=>{for(var u in t)n.o(t,u)&&!n.o(e,u)&&Object.defineProperty(e,u,{enumerable:!0,get:t[u]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e={388:0},t=[[754]],u=e=>{},r=(r,i)=>{for(var a,o,[s,l,c,D]=i,p=0,h=[];p{}),u}i.forEach(r.bind(null,0)),i.push=r.bind(null,i.push.bind(i));var o=n.x;n.x=()=>(n.x=o||(e=>{}),(u=a)())})(),n.x()})()},e.exports=t()}},t={};function n(u){var r=t[u];if(void 0!==r)return r.exports;var i=t[u]={exports:{}};return e[u].call(i.exports,i,i.exports,n),i.exports}document.addEventListener("DOMContentLoaded",(function(){let e,t,u,r,i=new ComponentRelay({targetWindow:window,onReady:()=>{document.body.classList.add(i.platform),document.body.classList.add(i.environment)}}),a=!1,o=!0,s=!1,l=!1;function c(){if(!s)return;const t=()=>{const e=window.easymde;if(e){if(e.isPreviewActive())return"preview";if(e.isSideBySideActive())return"split"}return"edit"},n=e;i.saveItemWithPresave(n,(()=>{n.clientData={...n.clientData,mode:t()}}))}i.streamContextItem((async c=>{if(!l&&(c.uuid!==u&&(t=null,o=!0,u=c.uuid,r=c.clientData),e=c,!c.isMetadataUpdate&&window.easymde)){if(document.getElementsByClassName("CodeMirror-code")[0].setAttribute("spellcheck",JSON.stringify(c.content.spellcheck)),function(e){const t=n(84),u=n(856),r=t(e,{headerIds:!1,smartypants:!0}),i=u.sanitize(r,{FORBID_TAGS:["script","style"],FORBID_ATTR:["onerror","onload","onunload","onclick","ondblclick","onmousedown","onmouseup","onmouseover","onmousemove","onmouseout","onfocus","onblur","onkeypress","onkeydown","onkeyup","onsubmit","onreset","onselect","onchange"]}),a=(new DOMParser).parseFromString(r,"text/html"),o=(new DOMParser).parseFromString(i,"text/html");return!a.isEqualNode(o)}(c.content.text))if(r.trustUnsafeContent)s=!0;else{const t=await function(){if(l)return;l=!0;return new Promise((e=>{new(n(308).SKAlert)({title:null,text:"We’ve detected that this note contains a script or code snippet which may be unsafe to execute. Scripts executed in the editor have the ability to impersonate as the editor to Standard Notes. Press Continue to mark this script as safe and proceed, or Cancel to avoid rendering this note.",buttons:[{text:"Cancel",style:"neutral",action:function(){l=!1,e(!1)}},{text:"Continue",style:"danger",action:function(){l=!1,e(!0)}}]}).present()}))}();t&&function(e){i.saveItemWithPresave(e,(()=>{e.clientData={...e.clientData,trustUnsafeContent:!0}}))}(e),s=t}else s=!0;if(!s)return window.easymde.value(""),void(window.easymde.isPreviewActive()||window.easymde.togglePreview());if(c.content.text!==t&&(a=!0,window.easymde.value(c.content.text),a=!1),o){o=!1,window.easymde.codemirror.getDoc().clearHistory();const e=r&&r.mode;"preview"===e?window.easymde.isPreviewActive()||window.easymde.togglePreview():"split"===e?window.easymde.isSideBySideActive()||window.easymde.toggleSideBySide():window.easymde.isPreviewActive()&&window.easymde.togglePreview()}}})),window.easymde=new EasyMDE({element:document.getElementById("editor"),autoDownloadFontAwesome:!1,spellChecker:!1,nativeSpellcheck:!0,inputStyle:"contenteditable",status:!1,shortcuts:{toggleSideBySide:"Cmd-Alt-P"},toolbar:[{className:"fa fa-eye",default:!0,name:"preview",noDisable:!0,title:"Toggle Preview",action:function(){window.easymde.togglePreview(),c()}},{className:"fa fa-columns",default:!0,name:"side-by-side",noDisable:!0,noMobile:!0,title:"Toggle Side by Side",action:function(){window.easymde.toggleSideBySide(),c()}},"|","heading","bold","italic","strikethrough","|","quote","code","|","unordered-list","ordered-list","|","clean-block","|","link","image","|","table"]});try{window.easymde.toggleFullScreen()}catch(e){console.log("Error:",e)}window.easymde.codemirror.setOption("viewportMargin",100),window.easymde.codemirror.on("change",(function(){if(!a&&s&&e){const n=e;i.saveItemWithPresave(n,(()=>{t=window.easymde.value();let e=((e,t=90)=>e.length<=t?e:e.substring(0,t)+"...")((e=>{const t=document.implementation.createHTMLDocument("New").body;return t.innerHTML=e,t.textContent||t.innerText||""})(window.easymde.options.previewRender(window.easymde.value())));n.content.preview_plain=e,n.content.preview_html=null,n.content.text=t}))}}))}))})(); //# sourceMappingURL=dist.js.map \ No newline at end of file diff --git a/public/components/org.standardnotes.advanced-markdown-editor/dist/dist.js.map b/public/components/org.standardnotes.advanced-markdown-editor/dist/dist.js.map index 36c8003cb..9ba5de662 100644 --- a/public/components/org.standardnotes.advanced-markdown-editor/dist/dist.js.map +++ b/public/components/org.standardnotes.advanced-markdown-editor/dist/dist.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://sn-advanced-markdown-editor/./node_modules/dompurify/dist/purify.js","webpack://sn-advanced-markdown-editor/./node_modules/marked/lib/marked.js","webpack://sn-advanced-markdown-editor/./node_modules/sn-stylekit/dist/stylekit.js","webpack://sn-advanced-markdown-editor/webpack/bootstrap","webpack://sn-advanced-markdown-editor/./src/main.js"],"names":["module","exports","hasOwnProperty","Object","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","create","_ref","Reflect","apply","construct","fun","thisValue","args","x","Func","Function","prototype","bind","concat","arr","Array","isArray","i","arr2","length","from","_toConsumableArray","func","arrayForEach","unapply","forEach","arrayPop","pop","arrayPush","push","stringToLowerCase","String","toLowerCase","stringMatch","match","stringReplace","replace","stringIndexOf","indexOf","stringTrim","trim","regExpTest","RegExp","test","typeErrorCreate","TypeError","_len2","arguments","_key2","thisArg","_len","_key","addToSet","set","array","l","element","lcElement","clone","object","newObject","property","lookupGetter","prop","desc","get","value","console","warn","html","svg","svgFilters","svgDisallowed","mathMl","mathMlDisallowed","text","html$1","svg$1","mathMl$1","xml","MUSTACHE_EXPR","ERB_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","_typeof","Symbol","iterator","obj","constructor","_toConsumableArray$1","getGlobal","window","_createTrustedTypesPolicy","trustedTypes","document","createPolicy","suffix","ATTR_NAME","currentScript","hasAttribute","getAttribute","policyName","createHTML","html$$1","_","createDOMPurify","undefined","DOMPurify","root","version","removed","nodeType","isSupported","originalDocument","DocumentFragment","HTMLTemplateElement","Node","Element","NodeFilter","_window$NamedNodeMap","NamedNodeMap","MozNamedAttrMap","Text","Comment","DOMParser","ElementPrototype","cloneNode","getNextSibling","getChildNodes","getParentNode","template","createElement","content","ownerDocument","trustedTypesPolicy","emptyHTML","RETURN_TRUSTED_TYPE","_document","implementation","createNodeIterator","createDocumentFragment","importNode","documentMode","hooks","createHTMLDocument","MUSTACHE_EXPR$$1","ERB_EXPR$$1","DATA_ATTR$$1","ARIA_ATTR$$1","IS_SCRIPT_OR_DATA$$1","ATTR_WHITESPACE$$1","IS_ALLOWED_URI$$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","SAFE_FOR_TEMPLATES","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_DOM_IMPORT","SANITIZE_DOM","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","CONFIG","formElement","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","ADD_TAGS","ADD_ATTR","table","tbody","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","parent","tagName","namespaceURI","parentTagName","Boolean","commonSvgAndHTMLElements","_forceRemove","node","parentNode","removeChild","outerHTML","remove","_removeAttribute","name","attribute","getAttributeNode","removeAttribute","setAttribute","_initDocument","dirty","doc","leadingWhitespace","matches","dirtyPayload","parseFromString","documentElement","createDocument","innerHTML","body","insertBefore","createTextNode","childNodes","_createIterator","call","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","_isClobbered","elm","nodeName","textContent","attributes","_isNode","_executeHook","entryPoint","currentNode","data","hook","_sanitizeElements","allowedTags","firstElementChild","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","attr","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","_attr","forceKeepAttr","setAttributeNS","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","nextNode","sanitize","importedNode","oldNode","returnNode","toString","toStaticHTML","appendChild","firstChild","nodeIterator","serializedHTML","setConfig","clearConfig","isValidAttribute","tag","addHook","hookFunction","removeHook","removeHooks","removeAllHooks","factory","_defineProperties","target","props","descriptor","enumerable","configurable","writable","defineProperty","key","_arrayLikeToArray","len","_createForOfIteratorHelperLoose","o","allowArrayLike","it","next","minLen","n","slice","_unsupportedIterableToArray","done","defaults$5","getDefaults$1","baseUrl","breaks","gfm","headerIds","headerPrefix","highlight","langPrefix","mangle","pedantic","renderer","sanitizer","silent","smartLists","smartypants","tokenizer","walkTokens","xhtml","defaults","getDefaults","changeDefaults","newDefaults","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","unescapeTest","unescape$1","charAt","fromCharCode","parseInt","substring","caret","nonWordAndColonTest","originIndependentUrl","baseUrls","justDomain","protocol","domain","resolveUrl","base","href","rtrim$1","relativeBase","str","c","invert","suffLen","currChar","substr","helpers","encode","regex","opt","source","val","getRegex","prot","decodeURIComponent","e","encodeURI","exec","tableRow","count","cells","offset","escaped","curr","split","splice","b","level","pattern","result","defaults$4","rtrim","splitCells","_escape","findClosingBracket","outputLink","cap","link","raw","title","type","Tokenizer_1","Tokenizer","options","this","_proto","space","src","rules","block","newline","code","codeBlockStyle","fences","matchIndentToCode","indentToCode","map","matchIndentInNode","join","indentCodeCompensation","lang","heading","trimmed","depth","nptable","item","header","align","hr","blockquote","list","bcurr","bnext","addBack","loose","istask","ischecked","endMatch","bull","isordered","ordered","start","items","itemMatch","listItemStart","index","task","checked","pre","def","lheading","paragraph","escape","inline","inLink","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","_escapes","reflink","links","nolink","emStrong","maskedSrc","prevChar","lDelim","nextChar","punctuation","rDelim","rLength","lLength","delimTotal","midDelimTotal","endReg","rDelimAst","rDelimUnd","lastIndex","Math","min","codespan","hasNonSpaceChars","hasSpaceCharsOnBothEnds","br","del","autolink","tokens","url","prevCapZero","_backpedal","inlineText","noopTest","edit","merge$1","block$1","_paragraph","_label","_title","bullet","_tag","_comment","normal","inline$1","reflinkSearch","_punctuation","blockSkip","escapedEmSt","_scheme","_email","_attribute","_href","strong","middle","endAst","endUnd","em","_extended_email","Tokenizer$1","defaults$3","repeatString","out","charCodeAt","random","Lexer_1","Lexer","lex","lexInline","inlineTokens","Constructor","protoProps","staticProps","blockTokens","top","token","lastToken","errMsg","error","Error","j","k","l2","row","keepPrevChar","keys","includes","lastIndexOf","_lastToken","_lastToken2","defaults$2","cleanUrl","escape$1","Renderer_1","Renderer","_code","infostring","quote","_html","slugger","slug","listitem","checkbox","tablerow","tablecell","flags","image","_text","TextRenderer_1","TextRenderer","Slugger_1","Slugger","seen","serialize","getNextSafeSlug","originalSlug","isDryRun","occurenceAccumulator","dryrun","Renderer$1","TextRenderer$1","Slugger$1","defaults$1","unescape","Parser","textRenderer","parse","parseInline","l3","cell","itemBody","unshift","merge","checkSanitizeDeprecation","marked","callback","err","pending","setTimeout","_tokens","message","setOptions","use","extension","opts","_loop","prevRenderer","ret","_loop2","prevTokenizer","_step","_iterator","_step2","_iterator2","_step3","_iterator3","_step4","_iterator4","_cell","parser","lexer","self","__webpack_modules__","754","__unused_webpack_module","__webpack_exports__","r","d","SKAlert","buttons","event","primaryButton","action","dismiss","buttonDesc","style","genButton","buttonsTemplate","panelStyle","buttonsString","onElement","removeEventListener","keyupListener","primary","find","button","className","templateString","addEventListener","querySelector","onclick","__webpack_module_cache__","moduleId","m","definition","toStringTag","installedChunks","388","deferredModules","checkDeferredModules","webpackJsonpCallback","parentChunkLoadingFunction","chunkId","chunkIds","moreModules","runtime","executeModules","resolves","shift","chunkLoadingGlobal","checkDeferredModulesImpl","deferredModule","fulfilled","depId","s","startup","__webpack_require__","cachedModule","workingNote","lastValue","lastUUID","clientData","componentRelay","ComponentRelay","targetWindow","onReady","classList","add","platform","environment","ignoreTextChange","initialLoad","renderNote","showingUnsafeContentAlert","saveMetadata","getEditorMode","editor","easymde","isPreviewActive","isSideBySideActive","note","saveItemWithPresave","mode","streamContextItem","async","uuid","isMetadataUpdate","markdownText","renderedHtml","sanitizedHtml","renderedDom","sanitizedDom","isEqualNode","checkIfUnsafeContent","Promise","resolve","present","showUnsafeContentAlert","trustUnsafeContent","setTrustUnsafeContent","togglePreview","codemirror","getDoc","clearHistory","toggleSideBySide","EasyMDE","getElementById","autoDownloadFontAwesome","spellChecker","status","shortcuts","toolbar","default","noDisable","noMobile","toggleFullScreen","log","setOption","on","strippedHtml","string","limit","truncateString","tmp","innerText","strip","previewRender","preview_plain","preview_html"],"mappings":"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","file":"dist.js","sourcesContent":["/*! @license DOMPurify | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.2.2/LICENSE */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.DOMPurify = factory());\n}(this, function () { 'use strict';\n\n function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n var hasOwnProperty = Object.hasOwnProperty,\n setPrototypeOf = Object.setPrototypeOf,\n isFrozen = Object.isFrozen,\n getPrototypeOf = Object.getPrototypeOf,\n getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n var freeze = Object.freeze,\n seal = Object.seal,\n create = Object.create; // eslint-disable-line import/no-mutable-exports\n\n var _ref = typeof Reflect !== 'undefined' && Reflect,\n apply = _ref.apply,\n construct = _ref.construct;\n\n if (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n }\n\n if (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n }\n\n if (!seal) {\n seal = function seal(x) {\n return x;\n };\n }\n\n if (!construct) {\n construct = function construct(Func, args) {\n return new (Function.prototype.bind.apply(Func, [null].concat(_toConsumableArray(args))))();\n };\n }\n\n var arrayForEach = unapply(Array.prototype.forEach);\n var arrayPop = unapply(Array.prototype.pop);\n var arrayPush = unapply(Array.prototype.push);\n\n var stringToLowerCase = unapply(String.prototype.toLowerCase);\n var stringMatch = unapply(String.prototype.match);\n var stringReplace = unapply(String.prototype.replace);\n var stringIndexOf = unapply(String.prototype.indexOf);\n var stringTrim = unapply(String.prototype.trim);\n\n var regExpTest = unapply(RegExp.prototype.test);\n\n var typeErrorCreate = unconstruct(TypeError);\n\n function unapply(func) {\n return function (thisArg) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return apply(func, thisArg, args);\n };\n }\n\n function unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return construct(func, args);\n };\n }\n\n /* Add properties to a lookup table */\n function addToSet(set, array) {\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n var l = array.length;\n while (l--) {\n var element = array[l];\n if (typeof element === 'string') {\n var lcElement = stringToLowerCase(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n }\n\n /* Shallow clone an object */\n function clone(object) {\n var newObject = create(null);\n\n var property = void 0;\n for (property in object) {\n if (apply(hasOwnProperty, object, [property])) {\n newObject[property] = object[property];\n }\n }\n\n return newObject;\n }\n\n /* IE10 doesn't support __lookupGetter__ so lets'\n * simulate it. It also automatically checks\n * if the prop is function or getter and behaves\n * accordingly. */\n function lookupGetter(object, prop) {\n while (object !== null) {\n var desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(element) {\n console.warn('fallback value for', element);\n return null;\n }\n\n return fallbackValue;\n }\n\n var html = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\n\n // SVG\n var svg = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\n\n var svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n\n // List of SVG elements that are disallowed by default.\n // We still need to know them so that we can do namespace\n // checks properly in case one wants to add them to\n // allow-list.\n var svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'fedropshadow', 'feimage', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\n\n var mathMl = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover']);\n\n // Similarly to SVG, we want to know all MathML elements,\n // even those that we disallow by default.\n var mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\n\n var text = freeze(['#text']);\n\n var html$1 = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']);\n\n var svg$1 = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n\n var mathMl$1 = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n\n var xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n // eslint-disable-next-line unicorn/better-regex\n var MUSTACHE_EXPR = seal(/\\{\\{[\\s\\S]*|[\\s\\S]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\n var ERB_EXPR = seal(/<%[\\s\\S]*|[\\s\\S]*%>/gm);\n var DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\n var ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\n var IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n );\n var IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\n var ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n );\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n function _toConsumableArray$1(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n var getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n };\n\n /**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\n var _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, document) {\n if ((typeof trustedTypes === 'undefined' ? 'undefined' : _typeof(trustedTypes)) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n var suffix = null;\n var ATTR_NAME = 'data-tt-policy-suffix';\n if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n suffix = document.currentScript.getAttribute(ATTR_NAME);\n }\n\n var policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML: function createHTML(html$$1) {\n return html$$1;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n };\n\n function createDOMPurify() {\n var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n var DOMPurify = function DOMPurify(root) {\n return createDOMPurify(root);\n };\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n DOMPurify.version = '2.2.9';\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n\n return DOMPurify;\n }\n\n var originalDocument = window.document;\n\n var document = window.document;\n var DocumentFragment = window.DocumentFragment,\n HTMLTemplateElement = window.HTMLTemplateElement,\n Node = window.Node,\n Element = window.Element,\n NodeFilter = window.NodeFilter,\n _window$NamedNodeMap = window.NamedNodeMap,\n NamedNodeMap = _window$NamedNodeMap === undefined ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,\n Text = window.Text,\n Comment = window.Comment,\n DOMParser = window.DOMParser,\n trustedTypes = window.trustedTypes;\n\n\n var ElementPrototype = Element.prototype;\n\n var cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n var getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n var getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n var getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n var template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);\n var emptyHTML = trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML('') : '';\n\n var _document = document,\n implementation = _document.implementation,\n createNodeIterator = _document.createNodeIterator,\n createDocumentFragment = _document.createDocumentFragment;\n var importNode = originalDocument.importNode;\n\n\n var documentMode = {};\n try {\n documentMode = clone(document).documentMode ? document.documentMode : {};\n } catch (_) {}\n\n var hooks = {};\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof getParentNode === 'function' && implementation && typeof implementation.createHTMLDocument !== 'undefined' && documentMode !== 9;\n\n var MUSTACHE_EXPR$$1 = MUSTACHE_EXPR,\n ERB_EXPR$$1 = ERB_EXPR,\n DATA_ATTR$$1 = DATA_ATTR,\n ARIA_ATTR$$1 = ARIA_ATTR,\n IS_SCRIPT_OR_DATA$$1 = IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE$$1 = ATTR_WHITESPACE;\n var IS_ALLOWED_URI$$1 = IS_ALLOWED_URI;\n\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n\n var ALLOWED_TAGS = null;\n var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(html), _toConsumableArray$1(svg), _toConsumableArray$1(svgFilters), _toConsumableArray$1(mathMl), _toConsumableArray$1(text)));\n\n /* Allowed attribute names */\n var ALLOWED_ATTR = null;\n var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray$1(html$1), _toConsumableArray$1(svg$1), _toConsumableArray$1(mathMl$1), _toConsumableArray$1(xml)));\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n var FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n var FORBID_ATTR = null;\n\n /* Decide if ARIA attributes are okay */\n var ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n var ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n var ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n var SAFE_FOR_TEMPLATES = false;\n\n /* Decide if document with ... should be returned */\n var WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n var SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n var FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n var RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n var RETURN_DOM_FRAGMENT = false;\n\n /* If `RETURN_DOM` or `RETURN_DOM_FRAGMENT` is enabled, decide if the returned DOM\n * `Node` is imported into the current `Document`. If this flag is not enabled the\n * `Node` will belong (its ownerDocument) to a fresh `HTMLDocument`, created by\n * DOMPurify.\n *\n * This defaults to `true` starting DOMPurify 2.2.0. Note that setting it to `false`\n * might cause XSS from attacks hidden in closed shadowroots in case the browser\n * supports Declarative Shadow: DOM https://web.dev/declarative-shadow-dom/\n */\n var RETURN_DOM_IMPORT = true;\n\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n var RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks? */\n var SANITIZE_DOM = true;\n\n /* Keep element content when removing element? */\n var KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n var IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n var USE_PROFILES = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n var FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n\n /* Tags that are safe for data: URIs */\n var DATA_URI_TAGS = null;\n var DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n\n /* Attributes safe for values like \"javascript:\" */\n var URI_SAFE_ATTRIBUTES = null;\n var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'summary', 'title', 'value', 'style', 'xmlns']);\n\n var MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n var NAMESPACE = HTML_NAMESPACE;\n var IS_EMPTY_INPUT = false;\n\n /* Keep a reference to config to pass to hooks */\n var CONFIG = null;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n var formElement = document.createElement('form');\n\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n var _parseConfig = function _parseConfig(cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || (typeof cfg === 'undefined' ? 'undefined' : _typeof(cfg)) !== 'object') {\n cfg = {};\n }\n\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n\n /* Set configuration parameters */\n ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR) : DEFAULT_ALLOWED_ATTR;\n URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS) : DEFAULT_DATA_URI_TAGS;\n FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS) : {};\n FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR) : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_DOM_IMPORT = cfg.RETURN_DOM_IMPORT !== false; // Default true\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$$1;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(text)));\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html);\n addToSet(ALLOWED_ATTR, html$1);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl);\n addToSet(ALLOWED_ATTR, mathMl$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n\n var HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']);\n\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n var ALL_SVG_TAGS = addToSet({}, svg);\n addToSet(ALL_SVG_TAGS, svgFilters);\n addToSet(ALL_SVG_TAGS, svgDisallowed);\n\n var ALL_MATHML_TAGS = addToSet({}, mathMl);\n addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n\n /**\n *\n *\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n var _checkValidNamespace = function _checkValidNamespace(element) {\n var parent = getParentNode(element);\n\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: HTML_NAMESPACE,\n tagName: 'template'\n };\n }\n\n var tagName = stringToLowerCase(element.tagName);\n var parentTagName = stringToLowerCase(parent.tagName);\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n\n // The only way to switch from MathML to SVG is via\n // svg if parent is either or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n\n // The only way to switch from SVG to MathML is via\n // and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erronously deleted from\n // HTML namespace.\n var commonSvgAndHTMLElements = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (commonSvgAndHTMLElements[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG or MathML). Return false just in case.\n return false;\n };\n\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n var _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, { element: node });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n try {\n node.outerHTML = emptyHTML;\n } catch (_) {\n node.remove();\n }\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n var _removeAttribute = function _removeAttribute(name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node\n });\n }\n\n node.removeAttribute(name);\n\n // We void attribute values for unremovable \"is\"\" attributes\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n var _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n var doc = void 0;\n var leadingWhitespace = void 0;\n\n if (FORCE_BODY) {\n dirty = '' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n var matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, 'text/html');\n } catch (_) {}\n }\n\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? '' : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n\n var body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n\n /* Work on whole document or just its body */\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n\n /**\n * _createIterator\n *\n * @param {Document} root document/fragment to create iterator for\n * @return {Iterator} iterator instance\n */\n var _createIterator = function _createIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n };\n\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n var _isClobbered = function _isClobbered(elm) {\n if (elm instanceof Text || elm instanceof Comment) {\n return false;\n }\n\n if (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function') {\n return true;\n }\n\n return false;\n };\n\n /**\n * _isNode\n *\n * @param {Node} obj object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n var _isNode = function _isNode(object) {\n return (typeof Node === 'undefined' ? 'undefined' : _typeof(Node)) === 'object' ? object instanceof Node : object && (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string';\n };\n\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n var _executeHook = function _executeHook(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n arrayForEach(hooks[entryPoint], function (hook) {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n var _sanitizeElements = function _sanitizeElements(currentNode) {\n var content = void 0;\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeElements', currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check if tagname contains Unicode */\n if (stringMatch(currentNode.nodeName, /[\\u0080-\\uFFFF]/)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n var tagName = stringToLowerCase(currentNode.nodeName);\n\n /* Execute a hook if present */\n _executeHook('uponSanitizeElement', currentNode, {\n tagName: tagName,\n allowedTags: ALLOWED_TAGS\n });\n\n /* Detect mXSS attempts abusing namespace confusion */\n if (!_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove element if anything forbids its presence */\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n var parentNode = getParentNode(currentNode) || currentNode.parentNode;\n var childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n if (childNodes && parentNode) {\n var childCount = childNodes.length;\n\n for (var i = childCount - 1; i >= 0; --i) {\n parentNode.insertBefore(cloneNode(childNodes[i], true), getNextSibling(currentNode));\n }\n }\n }\n\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n if ((tagName === 'noscript' || tagName === 'noembed') && regExpTest(/<\\/no(script|embed)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n /* Get the element's text content */\n content = currentNode.textContent;\n content = stringReplace(content, MUSTACHE_EXPR$$1, ' ');\n content = stringReplace(content, ERB_EXPR$$1, ' ');\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n currentNode.textContent = content;\n }\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeElements', currentNode, null);\n\n return false;\n };\n\n /**\n * _isValidAttribute\n *\n * @param {string} lcTag Lowercase tag name of containing element.\n * @param {string} lcName Lowercase attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n var _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && regExpTest(DATA_ATTR$$1, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$$1, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n return false;\n\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$$1, stringReplace(value, ATTR_WHITESPACE$$1, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$$1, stringReplace(value, ATTR_WHITESPACE$$1, ''))) ; else if (!value) ; else {\n return false;\n }\n\n return true;\n };\n\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param {Node} currentNode to sanitize\n */\n var _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n var attr = void 0;\n var value = void 0;\n var lcName = void 0;\n var l = void 0;\n /* Execute a hook if present */\n _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n var attributes = currentNode.attributes;\n\n /* Check if we have attributes; if not we might have a text node */\n\n if (!attributes) {\n return;\n }\n\n var hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR\n };\n l = attributes.length;\n\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n attr = attributes[l];\n var _attr = attr,\n name = _attr.name,\n namespaceURI = _attr.namespaceURI;\n\n value = stringTrim(attr.value);\n lcName = stringToLowerCase(name);\n\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n\n /* Remove attribute */\n _removeAttribute(name, currentNode);\n\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n continue;\n }\n\n /* Work around a security issue in jQuery 3.0 */\n if (regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n value = stringReplace(value, MUSTACHE_EXPR$$1, ' ');\n value = stringReplace(value, ERB_EXPR$$1, ' ');\n }\n\n /* Is `value` valid for this attribute? */\n var lcTag = currentNode.nodeName.toLowerCase();\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n\n /* Handle invalid data-* attribute set by try-catching it */\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n\n arrayPop(DOMPurify.removed);\n } catch (_) {}\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeAttributes', currentNode, null);\n };\n\n /**\n * _sanitizeShadowDOM\n *\n * @param {DocumentFragment} fragment to iterate over recursively\n */\n var _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n var shadowNode = void 0;\n var shadowIterator = _createIterator(fragment);\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHook('uponSanitizeShadowNode', shadowNode, null);\n\n /* Sanitize tags and elements */\n if (_sanitizeElements(shadowNode)) {\n continue;\n }\n\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(shadowNode);\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeShadowDOM', fragment, null);\n };\n\n /**\n * Sanitize\n * Public method providing core sanitation functionality\n *\n * @param {String|Node} dirty string or DOM node\n * @param {Object} configuration object\n */\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty, cfg) {\n var body = void 0;\n var importedNode = void 0;\n var currentNode = void 0;\n var oldNode = void 0;\n var returnNode = void 0;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '';\n }\n\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n // eslint-disable-next-line no-negated-condition\n if (typeof dirty.toString !== 'function') {\n throw typeErrorCreate('toString is not a function');\n } else {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n }\n }\n\n /* Check we can run. Otherwise fall back or ignore */\n if (!DOMPurify.isSupported) {\n if (_typeof(window.toStaticHTML) === 'object' || typeof window.toStaticHTML === 'function') {\n if (typeof dirty === 'string') {\n return window.toStaticHTML(dirty);\n }\n\n if (_isNode(dirty)) {\n return window.toStaticHTML(dirty.outerHTML);\n }\n }\n\n return dirty;\n }\n\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n\n /* Clean up removed elements */\n DOMPurify.removed = [];\n\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n\n if (IN_PLACE) ; else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : emptyHTML;\n }\n }\n\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n\n /* Get node iterator */\n var nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Fix IE's strange behavior with manipulated textNodes #89 */\n if (currentNode.nodeType === 3 && currentNode === oldNode) {\n continue;\n }\n\n /* Sanitize tags and elements */\n if (_sanitizeElements(currentNode)) {\n continue;\n }\n\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(currentNode);\n\n oldNode = currentNode;\n }\n\n oldNode = null;\n\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n\n if (RETURN_DOM_IMPORT) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n\n return returnNode;\n }\n\n var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR$$1, ' ');\n serializedHTML = stringReplace(serializedHTML, ERB_EXPR$$1, ' ');\n }\n\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n\n /**\n * Public method to set the configuration once\n * setConfig\n *\n * @param {Object} cfg configuration object\n */\n DOMPurify.setConfig = function (cfg) {\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n\n /**\n * Public method to remove the configuration\n * clearConfig\n *\n */\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n\n /**\n * Public method to check if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n * isValidAttribute\n *\n * @param {string} tag Tag name of containing element.\n * @param {string} attr Attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n */\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n\n var lcTag = stringToLowerCase(tag);\n var lcName = stringToLowerCase(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n\n /**\n * AddHook\n * Public method to add DOMPurify hooks\n *\n * @param {String} entryPoint entry point for the hook to add\n * @param {Function} hookFunction function to execute\n */\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n\n hooks[entryPoint] = hooks[entryPoint] || [];\n arrayPush(hooks[entryPoint], hookFunction);\n };\n\n /**\n * RemoveHook\n * Public method to remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if more are present)\n *\n * @param {String} entryPoint entry point for the hook to remove\n */\n DOMPurify.removeHook = function (entryPoint) {\n if (hooks[entryPoint]) {\n arrayPop(hooks[entryPoint]);\n }\n };\n\n /**\n * RemoveHooks\n * Public method to remove all DOMPurify hooks at a given entryPoint\n *\n * @param {String} entryPoint entry point for the hooks to remove\n */\n DOMPurify.removeHooks = function (entryPoint) {\n if (hooks[entryPoint]) {\n hooks[entryPoint] = [];\n }\n };\n\n /**\n * RemoveAllHooks\n * Public method to remove all DOMPurify hooks\n *\n */\n DOMPurify.removeAllHooks = function () {\n hooks = {};\n };\n\n return DOMPurify;\n }\n\n var purify = createDOMPurify();\n\n return purify;\n\n}));\n//# sourceMappingURL=purify.js.map\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2021, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.marked = factory());\n}(this, (function () { 'use strict';\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n\n function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var defaults$5 = {exports: {}};\n\n function getDefaults$1() {\n return {\n baseUrl: null,\n breaks: false,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n }\n\n function changeDefaults$1(newDefaults) {\n defaults$5.exports.defaults = newDefaults;\n }\n\n defaults$5.exports = {\n defaults: getDefaults$1(),\n getDefaults: getDefaults$1,\n changeDefaults: changeDefaults$1\n };\n\n /**\n * Helpers\n */\n var escapeTest = /[&<>\"']/;\n var escapeReplace = /[&<>\"']/g;\n var escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\n var escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\n var escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n var getEscapeReplacement = function getEscapeReplacement(ch) {\n return escapeReplacements[ch];\n };\n\n function escape$2(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n }\n\n var unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\n function unescape$1(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, function (_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));\n }\n\n return '';\n });\n }\n\n var caret = /(^|[^\\[])\\^/g;\n\n function edit$1(regex, opt) {\n regex = regex.source || regex;\n opt = opt || '';\n var obj = {\n replace: function replace(name, val) {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: function getRegex() {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n }\n\n var nonWordAndColonTest = /[^\\w:]/g;\n var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\n function cleanUrl$1(sanitize, base, href) {\n if (sanitize) {\n var prot;\n\n try {\n prot = decodeURIComponent(unescape$1(href)).replace(nonWordAndColonTest, '').toLowerCase();\n } catch (e) {\n return null;\n }\n\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n\n return href;\n }\n\n var baseUrls = {};\n var justDomain = /^[^:]+:\\/*[^/]*$/;\n var protocol = /^([^:]+:)[\\s\\S]*$/;\n var domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\n function resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim$1(base, '/', true);\n }\n }\n\n base = baseUrls[' ' + base];\n var relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n }\n\n var noopTest$1 = {\n exec: function noopTest() {}\n };\n\n function merge$2(obj) {\n var i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n }\n\n function splitCells$1(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n var row = tableRow.replace(/\\|/g, function (match, offset, str) {\n var escaped = false,\n curr = offset;\n\n while (--curr >= 0 && str[curr] === '\\\\') {\n escaped = !escaped;\n }\n\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n var i = 0;\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) {\n cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n\n return cells;\n } // Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n // /c*$/ is vulnerable to REDOS.\n // invert: Remove suffix of non-c chars instead. Default falsey.\n\n\n function rtrim$1(str, c, invert) {\n var l = str.length;\n\n if (l === 0) {\n return '';\n } // Length of suffix matching the invert condition.\n\n\n var suffLen = 0; // Step left until we fail to match the invert condition.\n\n while (suffLen < l) {\n var currChar = str.charAt(l - suffLen - 1);\n\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.substr(0, l - suffLen);\n }\n\n function findClosingBracket$1(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n\n var l = str.length;\n var level = 0,\n i = 0;\n\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n\n if (level < 0) {\n return i;\n }\n }\n }\n\n return -1;\n }\n\n function checkSanitizeDeprecation$1(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n } // copied from https://stackoverflow.com/a/5450113/806777\n\n\n function repeatString$1(pattern, count) {\n if (count < 1) {\n return '';\n }\n\n var result = '';\n\n while (count > 1) {\n if (count & 1) {\n result += pattern;\n }\n\n count >>= 1;\n pattern += pattern;\n }\n\n return result + pattern;\n }\n\n var helpers = {\n escape: escape$2,\n unescape: unescape$1,\n edit: edit$1,\n cleanUrl: cleanUrl$1,\n resolveUrl: resolveUrl,\n noopTest: noopTest$1,\n merge: merge$2,\n splitCells: splitCells$1,\n rtrim: rtrim$1,\n findClosingBracket: findClosingBracket$1,\n checkSanitizeDeprecation: checkSanitizeDeprecation$1,\n repeatString: repeatString$1\n };\n\n var defaults$4 = defaults$5.exports.defaults;\n var rtrim = helpers.rtrim,\n splitCells = helpers.splitCells,\n _escape = helpers.escape,\n findClosingBracket = helpers.findClosingBracket;\n\n function outputLink(cap, link, raw) {\n var href = link.href;\n var title = link.title ? _escape(link.title) : null;\n var text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n return {\n type: 'link',\n raw: raw,\n href: href,\n title: title,\n text: text\n };\n } else {\n return {\n type: 'image',\n raw: raw,\n href: href,\n title: title,\n text: _escape(text)\n };\n }\n }\n\n function indentCodeCompensation(raw, text) {\n var matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n var indentToCode = matchIndentToCode[1];\n return text.split('\\n').map(function (node) {\n var matchIndentInNode = node.match(/^\\s+/);\n\n if (matchIndentInNode === null) {\n return node;\n }\n\n var indentInNode = matchIndentInNode[0];\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n }).join('\\n');\n }\n /**\n * Tokenizer\n */\n\n\n var Tokenizer_1 = /*#__PURE__*/function () {\n function Tokenizer(options) {\n this.options = options || defaults$4;\n }\n\n var _proto = Tokenizer.prototype;\n\n _proto.space = function space(src) {\n var cap = this.rules.block.newline.exec(src);\n\n if (cap) {\n if (cap[0].length > 1) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n\n return {\n raw: '\\n'\n };\n }\n };\n\n _proto.code = function code(src) {\n var cap = this.rules.block.code.exec(src);\n\n if (cap) {\n var text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic ? rtrim(text, '\\n') : text\n };\n }\n };\n\n _proto.fences = function fences(src) {\n var cap = this.rules.block.fences.exec(src);\n\n if (cap) {\n var raw = cap[0];\n var text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw: raw,\n lang: cap[2] ? cap[2].trim() : cap[2],\n text: text\n };\n }\n };\n\n _proto.heading = function heading(src) {\n var cap = this.rules.block.heading.exec(src);\n\n if (cap) {\n var text = cap[2].trim(); // remove trailing #s\n\n if (/#$/.test(text)) {\n var trimmed = rtrim(text, '#');\n\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text: text\n };\n }\n };\n\n _proto.nptable = function nptable(src) {\n var cap = this.rules.block.nptable.exec(src);\n\n if (cap) {\n var item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : [],\n raw: cap[0]\n };\n\n if (item.header.length === item.align.length) {\n var l = item.align.length;\n var i;\n\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.cells.length;\n\n for (i = 0; i < l; i++) {\n item.cells[i] = splitCells(item.cells[i], item.header.length);\n }\n\n return item;\n }\n }\n };\n\n _proto.hr = function hr(src) {\n var cap = this.rules.block.hr.exec(src);\n\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n };\n\n _proto.blockquote = function blockquote(src) {\n var cap = this.rules.block.blockquote.exec(src);\n\n if (cap) {\n var text = cap[0].replace(/^ *> ?/gm, '');\n return {\n type: 'blockquote',\n raw: cap[0],\n text: text\n };\n }\n };\n\n _proto.list = function list(src) {\n var cap = this.rules.block.list.exec(src);\n\n if (cap) {\n var raw = cap[0];\n var bull = cap[2];\n var isordered = bull.length > 1;\n var list = {\n type: 'list',\n raw: raw,\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n }; // Get each top-level item.\n\n var itemMatch = cap[0].match(this.rules.block.item);\n var next = false,\n item,\n space,\n bcurr,\n bnext,\n addBack,\n loose,\n istask,\n ischecked,\n endMatch;\n var l = itemMatch.length;\n bcurr = this.rules.block.listItemStart.exec(itemMatch[0]);\n\n for (var i = 0; i < l; i++) {\n item = itemMatch[i];\n raw = item;\n\n if (!this.options.pedantic) {\n // Determine if current item contains the end of the list\n endMatch = item.match(new RegExp('\\\\n\\\\s*\\\\n {0,' + (bcurr[0].length - 1) + '}\\\\S'));\n\n if (endMatch) {\n addBack = item.length - endMatch.index + itemMatch.slice(i + 1).join('\\n').length;\n list.raw = list.raw.substring(0, list.raw.length - addBack);\n item = item.substring(0, endMatch.index);\n raw = item;\n l = i + 1;\n }\n } // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n\n\n if (i !== l - 1) {\n bnext = this.rules.block.listItemStart.exec(itemMatch[i + 1]);\n\n if (!this.options.pedantic ? bnext[1].length >= bcurr[0].length || bnext[1].length > 3 : bnext[1].length > bcurr[1].length) {\n // nested list or continuation\n itemMatch.splice(i, 2, itemMatch[i] + (!this.options.pedantic && bnext[1].length < bcurr[0].length && !itemMatch[i].match(/\\n$/) ? '' : '\\n') + itemMatch[i + 1]);\n i--;\n l--;\n continue;\n } else if ( // different bullet style\n !this.options.pedantic || this.options.smartLists ? bnext[2][bnext[2].length - 1] !== bull[bull.length - 1] : isordered === (bnext[2].length === 1)) {\n addBack = itemMatch.slice(i + 1).join('\\n').length;\n list.raw = list.raw.substring(0, list.raw.length - addBack);\n i = l - 1;\n }\n\n bcurr = bnext;\n } // Remove the list item's bullet\n // so it is seen as the next token.\n\n\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+[.)]) ?/, ''); // Outdent whatever the\n // list item contains. Hacky.\n\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '') : item.replace(/^ {1,4}/gm, '');\n } // trim item newlines at end\n\n\n item = rtrim(item, '\\n');\n\n if (i !== l - 1) {\n raw = raw + '\\n';\n } // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n\n\n loose = next || /\\n\\n(?!\\s*$)/.test(raw);\n\n if (i !== l - 1) {\n next = raw.slice(-2) === '\\n\\n';\n if (!loose) loose = next;\n }\n\n if (loose) {\n list.loose = true;\n } // Check for task list items\n\n\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.test(item);\n ischecked = undefined;\n\n if (istask) {\n ischecked = item[1] !== ' ';\n item = item.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw: raw,\n task: istask,\n checked: ischecked,\n loose: loose,\n text: item\n });\n }\n\n return list;\n }\n };\n\n _proto.html = function html(src) {\n var cap = this.rules.block.html.exec(src);\n\n if (cap) {\n return {\n type: this.options.sanitize ? 'paragraph' : 'html',\n raw: cap[0],\n pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]) : cap[0]\n };\n }\n };\n\n _proto.def = function def(src) {\n var cap = this.rules.block.def.exec(src);\n\n if (cap) {\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n var tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n return {\n type: 'def',\n tag: tag,\n raw: cap[0],\n href: cap[2],\n title: cap[3]\n };\n }\n };\n\n _proto.table = function table(src) {\n var cap = this.rules.block.table.exec(src);\n\n if (cap) {\n var item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n var l = item.align.length;\n var i;\n\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.cells.length;\n\n for (i = 0; i < l; i++) {\n item.cells[i] = splitCells(item.cells[i].replace(/^ *\\| *| *\\| *$/g, ''), item.header.length);\n }\n\n return item;\n }\n }\n };\n\n _proto.lheading = function lheading(src) {\n var cap = this.rules.block.lheading.exec(src);\n\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1]\n };\n }\n };\n\n _proto.paragraph = function paragraph(src) {\n var cap = this.rules.block.paragraph.exec(src);\n\n if (cap) {\n return {\n type: 'paragraph',\n raw: cap[0],\n text: cap[1].charAt(cap[1].length - 1) === '\\n' ? cap[1].slice(0, -1) : cap[1]\n };\n }\n };\n\n _proto.text = function text(src) {\n var cap = this.rules.block.text.exec(src);\n\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0]\n };\n }\n };\n\n _proto.escape = function escape(src) {\n var cap = this.rules.inline.escape.exec(src);\n\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: _escape(cap[1])\n };\n }\n };\n\n _proto.tag = function tag(src, inLink, inRawBlock) {\n var cap = this.rules.inline.tag.exec(src);\n\n if (cap) {\n if (!inLink && /^/i.test(cap[0])) {\n inLink = false;\n }\n\n if (!inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n inRawBlock = true;\n } else if (inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize ? 'text' : 'html',\n raw: cap[0],\n inLink: inLink,\n inRawBlock: inRawBlock,\n text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]) : cap[0]\n };\n }\n };\n\n _proto.link = function link(src) {\n var cap = this.rules.inline.link.exec(src);\n\n if (cap) {\n var trimmedUrl = cap[2].trim();\n\n if (!this.options.pedantic && /^$/.test(trimmedUrl)) {\n return;\n } // ending angle bracket cannot be escaped\n\n\n var rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n var lastParenIndex = findClosingBracket(cap[2], '()');\n\n if (lastParenIndex > -1) {\n var start = cap[0].indexOf('!') === 0 ? 5 : 4;\n var linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n\n var href = cap[2];\n var title = '';\n\n if (this.options.pedantic) {\n // split pedantic href and title\n var link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n\n if (/^$/.test(trimmedUrl)) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0]);\n }\n };\n\n _proto.reflink = function reflink(src, links) {\n var cap;\n\n if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {\n var link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n\n if (!link || !link.href) {\n var text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text: text\n };\n }\n\n return outputLink(cap, link, cap[0]);\n }\n };\n\n _proto.emStrong = function emStrong(src, maskedSrc, prevChar) {\n if (prevChar === void 0) {\n prevChar = '';\n }\n\n var match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return; // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n\n if (match[3] && prevChar.match(/(?:[0-9A-Za-z\\xAA\\xB2\\xB3\\xB5\\xB9\\xBA\\xBC-\\xBE\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u0660-\\u0669\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08C7\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0966-\\u096F\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09F9\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AEF\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B6F\\u0B71-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0BE6-\\u0BF2\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D58-\\u0D61\\u0D66-\\u0D78\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DE6-\\u0DEF\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F20-\\u0F33\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F-\\u1049\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u1090-\\u1099\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B50-\\u1B59\\u1B83-\\u1BA0\\u1BAE-\\u1BE5\\u1C00-\\u1C23\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2070\\u2071\\u2074-\\u2079\\u207F-\\u2089\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2150-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2CFD\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3192-\\u3195\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\u3400-\\u4DBF\\u4E00-\\u9FFC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7BF\\uA7C2-\\uA7CA\\uA7F5-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA830-\\uA835\\uA840-\\uA873\\uA882-\\uA8B3\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA900-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF-\\uA9D9\\uA9E0-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE1-\\uDEFB\\uDF00-\\uDF23\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC58-\\uDC76\\uDC79-\\uDC9E\\uDCA7-\\uDCAF\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDCFB-\\uDD1B\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBC-\\uDDCF\\uDDD2-\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE40-\\uDE48\\uDE60-\\uDE7E\\uDE80-\\uDE9F\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDEEB-\\uDEEF\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF58-\\uDF72\\uDF78-\\uDF91\\uDFA9-\\uDFAF]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDCFA-\\uDD23\\uDD30-\\uDD39\\uDE60-\\uDE7E\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF27\\uDF30-\\uDF45\\uDF51-\\uDF54\\uDFB0-\\uDFCB\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC52-\\uDC6F\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD03-\\uDD26\\uDD36-\\uDD3F\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDD0-\\uDDDA\\uDDDC\\uDDE1-\\uDDF4\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDEF0-\\uDEF9\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC50-\\uDC59\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEAA\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF30-\\uDF3B]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCF2\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC50-\\uDC6C\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF2\\uDFB0\\uDFC0-\\uDFD4]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF5B-\\uDF61\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE96\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82C[\\uDC00-\\uDD1E\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD834[\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDEC0-\\uDEEB\\uDEF0-\\uDEF9]|\\uD83A[\\uDC00-\\uDCC4\\uDCC7-\\uDCCF\\uDD00-\\uDD43\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83C[\\uDD00-\\uDD0C]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDD\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])/)) return;\n var nextChar = match[1] || match[2] || '';\n\n if (!nextChar || nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar))) {\n var lLength = match[0].length - 1;\n var rDelim,\n rLength,\n delimTotal = lLength,\n midDelimTotal = 0;\n var endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0; // Clip maskedSrc to same section of string as src (move to lexer?)\n\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) {\n // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) {\n // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal); // Create `em` if smallest delimiter has odd char count. *a***\n\n if (Math.min(lLength, rLength) % 2) {\n return {\n type: 'em',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text: src.slice(1, lLength + match.index + rLength)\n };\n } // Create 'strong' if smallest delimiter has even char count. **a***\n\n\n return {\n type: 'strong',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text: src.slice(2, lLength + match.index + rLength - 1)\n };\n }\n }\n };\n\n _proto.codespan = function codespan(src) {\n var cap = this.rules.inline.code.exec(src);\n\n if (cap) {\n var text = cap[2].replace(/\\n/g, ' ');\n var hasNonSpaceChars = /[^ ]/.test(text);\n var hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n\n text = _escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text: text\n };\n }\n };\n\n _proto.br = function br(src) {\n var cap = this.rules.inline.br.exec(src);\n\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n };\n\n _proto.del = function del(src) {\n var cap = this.rules.inline.del.exec(src);\n\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2]\n };\n }\n };\n\n _proto.autolink = function autolink(src, mangle) {\n var cap = this.rules.inline.autolink.exec(src);\n\n if (cap) {\n var text, href;\n\n if (cap[2] === '@') {\n text = _escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = _escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n\n _proto.url = function url(src, mangle) {\n var cap;\n\n if (cap = this.rules.inline.url.exec(src)) {\n var text, href;\n\n if (cap[2] === '@') {\n text = _escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n var prevCapZero;\n\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n\n text = _escape(cap[0]);\n\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n\n _proto.inlineText = function inlineText(src, inRawBlock, smartypants) {\n var cap = this.rules.inline.text.exec(src);\n\n if (cap) {\n var text;\n\n if (inRawBlock) {\n text = this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]) : cap[0];\n } else {\n text = _escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n\n return {\n type: 'text',\n raw: cap[0],\n text: text\n };\n }\n };\n\n return Tokenizer;\n }();\n\n var noopTest = helpers.noopTest,\n edit = helpers.edit,\n merge$1 = helpers.merge;\n /**\n * Block-Level Grammar\n */\n\n var block$1 = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*\\n)|~{3,})([^\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?:\\n+|$)|$)/,\n hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3})(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?! {0,3}bull )\\n*|\\s*$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *\\n? *]+)>?(?:(?: +\\n? *| *\\n *)(title))? *(?:\\n+|$)/,\n nptable: noopTest,\n table: noopTest,\n lheading: /^([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n };\n block$1._label = /(?!\\s*\\])(?:\\\\[\\[\\]]|[^\\[\\]])+/;\n block$1._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\n block$1.def = edit(block$1.def).replace('label', block$1._label).replace('title', block$1._title).getRegex();\n block$1.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\n block$1.item = /^( *)(bull) ?[^\\n]*(?:\\n(?! *bull ?)[^\\n]*)*/;\n block$1.item = edit(block$1.item, 'gm').replace(/bull/g, block$1.bullet).getRegex();\n block$1.listItemStart = edit(/^( *)(bull) */).replace('bull', block$1.bullet).getRegex();\n block$1.list = edit(block$1.list).replace(/bull/g, block$1.bullet).replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))').replace('def', '\\\\n+(?=' + block$1.def.source + ')').getRegex();\n block$1._tag = 'address|article|aside|base|basefont|blockquote|body|caption' + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr' + '|track|ul';\n block$1._comment = /|$)/;\n block$1.html = edit(block$1.html, 'i').replace('comment', block$1._comment).replace('tag', block$1._tag).replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex();\n block$1.paragraph = edit(block$1._paragraph).replace('hr', block$1.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|!--)').replace('tag', block$1._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n block$1.blockquote = edit(block$1.blockquote).replace('paragraph', block$1.paragraph).getRegex();\n /**\n * Normal Block Grammar\n */\n\n block$1.normal = merge$1({}, block$1);\n /**\n * GFM Block Grammar\n */\n\n block$1.gfm = merge$1({}, block$1.normal, {\n nptable: '^ *([^|\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}([-:]+ *\\\\|[-| :]*)' // Align\n + '(?:\\\\n((?:(?!\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)',\n // Cells\n table: '^ *\\\\|(.+)\\\\n' // Header\n + ' {0,3}\\\\|?( *[-:]+[-| :]*)' // Align\n + '(?:\\\\n *((?:(?!\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n\n });\n block$1.gfm.nptable = edit(block$1.gfm.nptable).replace('hr', block$1.hr).replace('heading', ' {0,3}#{1,6} ').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|!--)').replace('tag', block$1._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n block$1.gfm.table = edit(block$1.gfm.table).replace('hr', block$1.hr).replace('heading', ' {0,3}#{1,6} ').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|!--)').replace('tag', block$1._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n /**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\n block$1.pedantic = merge$1({}, block$1.normal, {\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)' + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))').replace('comment', block$1._comment).replace(/tag/g, '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b').getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n // fences not supported\n paragraph: edit(block$1.normal._paragraph).replace('hr', block$1.hr).replace('heading', ' *#{1,6} *[^\\n]').replace('lheading', block$1.lheading).replace('blockquote', ' {0,3}>').replace('|fences', '').replace('|list', '').replace('|html', '').getRegex()\n });\n /**\n * Inline-Level Grammar\n */\n\n var inline$1 = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment' + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^',\n // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(?!\\s*\\])((?:\\\\[\\[\\]]?|[^\\[\\]\\\\])+)\\]/,\n nolink: /^!?\\[(?!\\s*\\])((?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]|[^\\[\\]])*)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // () Skip other delimiter (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a\n rDelimAst: /\\_\\_[^_*]*?\\*[^_*]*?\\_\\_|[punct_](\\*+)(?=[\\s]|$)|[^punct*_\\s](\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|[^punct*_\\s](\\*+)(?=[^punct*_\\s])/,\n rDelimUnd: /\\*\\*[^_*]*?\\_[^_*]*?\\*\\*|[punct*](\\_+)(?=[\\s]|$)|[^punct*_\\s](\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/ // ^- Not allowed for _\n\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\?@\\\\[\\\\]`^{|}~';\n inline$1.punctuation = edit(inline$1.punctuation).replace(/punctuation/g, inline$1._punctuation).getRegex(); // sequences em should skip over [title](link), `code`, \n\n inline$1.blockSkip = /\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>/g;\n inline$1.escapedEmSt = /\\\\\\*|\\\\_/g;\n inline$1._comment = edit(block$1._comment).replace('(?:-->|$)', '-->').getRegex();\n inline$1.emStrong.lDelim = edit(inline$1.emStrong.lDelim).replace(/punct/g, inline$1._punctuation).getRegex();\n inline$1.emStrong.rDelimAst = edit(inline$1.emStrong.rDelimAst, 'g').replace(/punct/g, inline$1._punctuation).getRegex();\n inline$1.emStrong.rDelimUnd = edit(inline$1.emStrong.rDelimUnd, 'g').replace(/punct/g, inline$1._punctuation).getRegex();\n inline$1._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n inline$1._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\n inline$1._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\n inline$1.autolink = edit(inline$1.autolink).replace('scheme', inline$1._scheme).replace('email', inline$1._email).getRegex();\n inline$1._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n inline$1.tag = edit(inline$1.tag).replace('comment', inline$1._comment).replace('attribute', inline$1._attribute).getRegex();\n inline$1._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\n inline$1._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\n inline$1._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n inline$1.link = edit(inline$1.link).replace('label', inline$1._label).replace('href', inline$1._href).replace('title', inline$1._title).getRegex();\n inline$1.reflink = edit(inline$1.reflink).replace('label', inline$1._label).getRegex();\n inline$1.reflinkSearch = edit(inline$1.reflinkSearch, 'g').replace('reflink', inline$1.reflink).replace('nolink', inline$1.nolink).getRegex();\n /**\n * Normal Inline Grammar\n */\n\n inline$1.normal = merge$1({}, inline$1);\n /**\n * Pedantic Inline Grammar\n */\n\n inline$1.pedantic = merge$1({}, inline$1.normal, {\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/).replace('label', inline$1._label).getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace('label', inline$1._label).getRegex()\n });\n /**\n * GFM Inline Grammar\n */\n\n inline$1.gfm = merge$1({}, inline$1.normal, {\n escape: edit(inline$1.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n\n out += '&#' + ch + ';';\n }\n\n return out;\n }\n /**\n * Block Lexer\n */\n\n\n var Lexer_1 = /*#__PURE__*/function () {\n function Lexer(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || defaults$3;\n this.options.tokenizer = this.options.tokenizer || new Tokenizer$1();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n var rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n\n\n /**\n * Static Lex Method\n */\n Lexer.lex = function lex(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n ;\n\n Lexer.lexInline = function lexInline(src, options) {\n var lexer = new Lexer(options);\n return lexer.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n ;\n\n var _proto = Lexer.prototype;\n\n _proto.lex = function lex(src) {\n src = src.replace(/\\r\\n|\\r/g, '\\n').replace(/\\t/g, ' ');\n this.blockTokens(src, this.tokens, true);\n this.inline(this.tokens);\n return this.tokens;\n }\n /**\n * Lexing\n */\n ;\n\n _proto.blockTokens = function blockTokens(src, tokens, top) {\n if (tokens === void 0) {\n tokens = [];\n }\n\n if (top === void 0) {\n top = true;\n }\n\n if (this.options.pedantic) {\n src = src.replace(/^ +$/gm, '');\n }\n\n var token, i, l, lastToken;\n\n while (src) {\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n\n if (token.type) {\n tokens.push(token);\n }\n\n continue;\n } // code\n\n\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1]; // An indented code block cannot interrupt a paragraph.\n\n if (lastToken && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // fences\n\n\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // heading\n\n\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // table no leading pipe (gfm)\n\n\n if (token = this.tokenizer.nptable(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // hr\n\n\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // blockquote\n\n\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n token.tokens = this.blockTokens(token.text, [], top);\n tokens.push(token);\n continue;\n } // list\n\n\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n l = token.items.length;\n\n for (i = 0; i < l; i++) {\n token.items[i].tokens = this.blockTokens(token.items[i].text, [], false);\n }\n\n tokens.push(token);\n continue;\n } // html\n\n\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // def\n\n\n if (top && (token = this.tokenizer.def(src))) {\n src = src.substring(token.raw.length);\n\n if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n\n continue;\n } // table (gfm)\n\n\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // lheading\n\n\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // top-level paragraph\n\n\n if (top && (token = this.tokenizer.paragraph(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // text\n\n\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n }\n\n if (src) {\n var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n };\n\n _proto.inline = function inline(tokens) {\n var i, j, k, l2, row, token;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n switch (token.type) {\n case 'paragraph':\n case 'text':\n case 'heading':\n {\n token.tokens = [];\n this.inlineTokens(token.text, token.tokens);\n break;\n }\n\n case 'table':\n {\n token.tokens = {\n header: [],\n cells: []\n }; // header\n\n l2 = token.header.length;\n\n for (j = 0; j < l2; j++) {\n token.tokens.header[j] = [];\n this.inlineTokens(token.header[j], token.tokens.header[j]);\n } // cells\n\n\n l2 = token.cells.length;\n\n for (j = 0; j < l2; j++) {\n row = token.cells[j];\n token.tokens.cells[j] = [];\n\n for (k = 0; k < row.length; k++) {\n token.tokens.cells[j][k] = [];\n this.inlineTokens(row[k], token.tokens.cells[j][k]);\n }\n }\n\n break;\n }\n\n case 'blockquote':\n {\n this.inline(token.tokens);\n break;\n }\n\n case 'list':\n {\n l2 = token.items.length;\n\n for (j = 0; j < l2; j++) {\n this.inline(token.items[j].tokens);\n }\n\n break;\n }\n }\n }\n\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n ;\n\n _proto.inlineTokens = function inlineTokens(src, tokens, inLink, inRawBlock) {\n if (tokens === void 0) {\n tokens = [];\n }\n\n if (inLink === void 0) {\n inLink = false;\n }\n\n if (inRawBlock === void 0) {\n inRawBlock = false;\n }\n\n var token, lastToken; // String with links masked to avoid interference with em and strong\n\n var maskedSrc = src;\n var match;\n var keepPrevChar, prevChar; // Mask out reflinks\n\n if (this.tokens.links) {\n var links = Object.keys(this.tokens.links);\n\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n } // Mask out other blocks\n\n\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n } // Mask out escaped em & strong delimiters\n\n\n while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n\n keepPrevChar = false; // escape\n\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // tag\n\n\n if (token = this.tokenizer.tag(src, inLink, inRawBlock)) {\n src = src.substring(token.raw.length);\n inLink = token.inLink;\n inRawBlock = token.inRawBlock;\n var _lastToken = tokens[tokens.length - 1];\n\n if (_lastToken && token.type === 'text' && _lastToken.type === 'text') {\n _lastToken.raw += token.raw;\n _lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // link\n\n\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n\n if (token.type === 'link') {\n token.tokens = this.inlineTokens(token.text, [], true, inRawBlock);\n }\n\n tokens.push(token);\n continue;\n } // reflink, nolink\n\n\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n var _lastToken2 = tokens[tokens.length - 1];\n\n if (token.type === 'link') {\n token.tokens = this.inlineTokens(token.text, [], true, inRawBlock);\n tokens.push(token);\n } else if (_lastToken2 && token.type === 'text' && _lastToken2.type === 'text') {\n _lastToken2.raw += token.raw;\n _lastToken2.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // em & strong\n\n\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n token.tokens = this.inlineTokens(token.text, [], inLink, inRawBlock);\n tokens.push(token);\n continue;\n } // code\n\n\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // br\n\n\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // del (gfm)\n\n\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n token.tokens = this.inlineTokens(token.text, [], inLink, inRawBlock);\n tokens.push(token);\n continue;\n } // autolink\n\n\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // url (gfm)\n\n\n if (!inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // text\n\n\n if (token = this.tokenizer.inlineText(src, inRawBlock, smartypants)) {\n src = src.substring(token.raw.length);\n\n if (token.raw.slice(-1) !== '_') {\n // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n }\n\n if (src) {\n var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n };\n\n _createClass(Lexer, null, [{\n key: \"rules\",\n get: function get() {\n return {\n block: block,\n inline: inline\n };\n }\n }]);\n\n return Lexer;\n }();\n\n var defaults$2 = defaults$5.exports.defaults;\n var cleanUrl = helpers.cleanUrl,\n escape$1 = helpers.escape;\n /**\n * Renderer\n */\n\n var Renderer_1 = /*#__PURE__*/function () {\n function Renderer(options) {\n this.options = options || defaults$2;\n }\n\n var _proto = Renderer.prototype;\n\n _proto.code = function code(_code, infostring, escaped) {\n var lang = (infostring || '').match(/\\S*/)[0];\n\n if (this.options.highlight) {\n var out = this.options.highlight(_code, lang);\n\n if (out != null && out !== _code) {\n escaped = true;\n _code = out;\n }\n }\n\n _code = _code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    ' + (escaped ? _code : escape$1(_code, true)) + '
    \\n';\n }\n\n return '
    ' + (escaped ? _code : escape$1(_code, true)) + '
    \\n';\n };\n\n _proto.blockquote = function blockquote(quote) {\n return '
    \\n' + quote + '
    \\n';\n };\n\n _proto.html = function html(_html) {\n return _html;\n };\n\n _proto.heading = function heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n return '' + text + '\\n';\n } // ignore IDs\n\n\n return '' + text + '\\n';\n };\n\n _proto.hr = function hr() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n };\n\n _proto.list = function list(body, ordered, start) {\n var type = ordered ? 'ol' : 'ul',\n startatt = ordered && start !== 1 ? ' start=\"' + start + '\"' : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n };\n\n _proto.listitem = function listitem(text) {\n return '
  • ' + text + '
  • \\n';\n };\n\n _proto.checkbox = function checkbox(checked) {\n return ' ';\n };\n\n _proto.paragraph = function paragraph(text) {\n return '

    ' + text + '

    \\n';\n };\n\n _proto.table = function table(header, body) {\n if (body) body = '' + body + '';\n return '\\n' + '\\n' + header + '\\n' + body + '
    \\n';\n };\n\n _proto.tablerow = function tablerow(content) {\n return '\\n' + content + '\\n';\n };\n\n _proto.tablecell = function tablecell(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align ? '<' + type + ' align=\"' + flags.align + '\">' : '<' + type + '>';\n return tag + content + '\\n';\n } // span level renderer\n ;\n\n _proto.strong = function strong(text) {\n return '' + text + '';\n };\n\n _proto.em = function em(text) {\n return '' + text + '';\n };\n\n _proto.codespan = function codespan(text) {\n return '' + text + '';\n };\n\n _proto.br = function br() {\n return this.options.xhtml ? '
    ' : '
    ';\n };\n\n _proto.del = function del(text) {\n return '' + text + '';\n };\n\n _proto.link = function link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n\n if (href === null) {\n return text;\n }\n\n var out = '';\n return out;\n };\n\n _proto.image = function image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n\n if (href === null) {\n return text;\n }\n\n var out = '\"'' : '>';\n return out;\n };\n\n _proto.text = function text(_text) {\n return _text;\n };\n\n return Renderer;\n }();\n\n /**\n * TextRenderer\n * returns only the textual part of the token\n */\n\n var TextRenderer_1 = /*#__PURE__*/function () {\n function TextRenderer() {}\n\n var _proto = TextRenderer.prototype;\n\n // no need for block level renderers\n _proto.strong = function strong(text) {\n return text;\n };\n\n _proto.em = function em(text) {\n return text;\n };\n\n _proto.codespan = function codespan(text) {\n return text;\n };\n\n _proto.del = function del(text) {\n return text;\n };\n\n _proto.html = function html(text) {\n return text;\n };\n\n _proto.text = function text(_text) {\n return _text;\n };\n\n _proto.link = function link(href, title, text) {\n return '' + text;\n };\n\n _proto.image = function image(href, title, text) {\n return '' + text;\n };\n\n _proto.br = function br() {\n return '';\n };\n\n return TextRenderer;\n }();\n\n /**\n * Slugger generates header id\n */\n\n var Slugger_1 = /*#__PURE__*/function () {\n function Slugger() {\n this.seen = {};\n }\n\n var _proto = Slugger.prototype;\n\n _proto.serialize = function serialize(value) {\n return value.toLowerCase().trim() // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '') // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '').replace(/\\s/g, '-');\n }\n /**\n * Finds the next safe (unique) slug to use\n */\n ;\n\n _proto.getNextSafeSlug = function getNextSafeSlug(originalSlug, isDryRun) {\n var slug = originalSlug;\n var occurenceAccumulator = 0;\n\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n\n return slug;\n }\n /**\n * Convert string to unique id\n * @param {object} options\n * @param {boolean} options.dryrun Generates the next unique slug without updating the internal accumulator.\n */\n ;\n\n _proto.slug = function slug(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n var slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n };\n\n return Slugger;\n }();\n\n var Renderer$1 = Renderer_1;\n var TextRenderer$1 = TextRenderer_1;\n var Slugger$1 = Slugger_1;\n var defaults$1 = defaults$5.exports.defaults;\n var unescape = helpers.unescape;\n /**\n * Parsing & Compiling\n */\n\n var Parser_1 = /*#__PURE__*/function () {\n function Parser(options) {\n this.options = options || defaults$1;\n this.options.renderer = this.options.renderer || new Renderer$1();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new TextRenderer$1();\n this.slugger = new Slugger$1();\n }\n /**\n * Static Parse Method\n */\n\n\n Parser.parse = function parse(tokens, options) {\n var parser = new Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n ;\n\n Parser.parseInline = function parseInline(tokens, options) {\n var parser = new Parser(options);\n return parser.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n ;\n\n var _proto = Parser.prototype;\n\n _proto.parse = function parse(tokens, top) {\n if (top === void 0) {\n top = true;\n }\n\n var out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n switch (token.type) {\n case 'space':\n {\n continue;\n }\n\n case 'hr':\n {\n out += this.renderer.hr();\n continue;\n }\n\n case 'heading':\n {\n out += this.renderer.heading(this.parseInline(token.tokens), token.depth, unescape(this.parseInline(token.tokens, this.textRenderer)), this.slugger);\n continue;\n }\n\n case 'code':\n {\n out += this.renderer.code(token.text, token.lang, token.escaped);\n continue;\n }\n\n case 'table':\n {\n header = ''; // header\n\n cell = '';\n l2 = token.header.length;\n\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(this.parseInline(token.tokens.header[j]), {\n header: true,\n align: token.align[j]\n });\n }\n\n header += this.renderer.tablerow(cell);\n body = '';\n l2 = token.cells.length;\n\n for (j = 0; j < l2; j++) {\n row = token.tokens.cells[j];\n cell = '';\n l3 = row.length;\n\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k]), {\n header: false,\n align: token.align[k]\n });\n }\n\n body += this.renderer.tablerow(cell);\n }\n\n out += this.renderer.table(header, body);\n continue;\n }\n\n case 'blockquote':\n {\n body = this.parse(token.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n\n case 'list':\n {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n body = '';\n\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n itemBody = '';\n\n if (item.task) {\n checkbox = this.renderer.checkbox(checked);\n\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'text') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n\n case 'html':\n {\n // TODO parse inline content if parameter markdown=1\n out += this.renderer.html(token.text);\n continue;\n }\n\n case 'paragraph':\n {\n out += this.renderer.paragraph(this.parseInline(token.tokens));\n continue;\n }\n\n case 'text':\n {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i];\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n\n default:\n {\n var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n ;\n\n _proto.parseInline = function parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n var out = '',\n i,\n token;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n switch (token.type) {\n case 'escape':\n {\n out += renderer.text(token.text);\n break;\n }\n\n case 'html':\n {\n out += renderer.html(token.text);\n break;\n }\n\n case 'link':\n {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'image':\n {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n\n case 'strong':\n {\n out += renderer.strong(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'em':\n {\n out += renderer.em(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'codespan':\n {\n out += renderer.codespan(token.text);\n break;\n }\n\n case 'br':\n {\n out += renderer.br();\n break;\n }\n\n case 'del':\n {\n out += renderer.del(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'text':\n {\n out += renderer.text(token.text);\n break;\n }\n\n default:\n {\n var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n };\n\n return Parser;\n }();\n\n var Lexer = Lexer_1;\n var Parser = Parser_1;\n var Tokenizer = Tokenizer_1;\n var Renderer = Renderer_1;\n var TextRenderer = TextRenderer_1;\n var Slugger = Slugger_1;\n var merge = helpers.merge,\n checkSanitizeDeprecation = helpers.checkSanitizeDeprecation,\n escape = helpers.escape;\n var getDefaults = defaults$5.exports.getDefaults,\n changeDefaults = defaults$5.exports.changeDefaults,\n defaults = defaults$5.exports.defaults;\n /**\n * Marked\n */\n\n function marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (typeof opt === 'function') {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n if (callback) {\n var highlight = opt.highlight;\n var tokens;\n\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n var done = function done(err) {\n var out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n }\n\n opt.highlight = highlight;\n return err ? callback(err) : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n if (!tokens.length) return done();\n var pending = 0;\n marked.walkTokens(tokens, function (token) {\n if (token.type === 'code') {\n pending++;\n setTimeout(function () {\n highlight(token.text, token.lang, function (err, code) {\n if (err) {\n return done(err);\n }\n\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n try {\n var _tokens = Lexer.lex(src, opt);\n\n if (opt.walkTokens) {\n marked.walkTokens(_tokens, opt.walkTokens);\n }\n\n return Parser.parse(_tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (opt.silent) {\n return '

    An error occurred:

    ' + escape(e.message + '', true) + '
    ';\n }\n\n throw e;\n }\n }\n /**\n * Options\n */\n\n\n marked.options = marked.setOptions = function (opt) {\n merge(marked.defaults, opt);\n changeDefaults(marked.defaults);\n return marked;\n };\n\n marked.getDefaults = getDefaults;\n marked.defaults = defaults;\n /**\n * Use Extension\n */\n\n marked.use = function (extension) {\n var opts = merge({}, extension);\n\n if (extension.renderer) {\n (function () {\n var renderer = marked.defaults.renderer || new Renderer();\n\n var _loop = function _loop(prop) {\n var prevRenderer = renderer[prop];\n\n renderer[prop] = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var ret = extension.renderer[prop].apply(renderer, args);\n\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n\n return ret;\n };\n };\n\n for (var prop in extension.renderer) {\n _loop(prop);\n }\n\n opts.renderer = renderer;\n })();\n }\n\n if (extension.tokenizer) {\n (function () {\n var tokenizer = marked.defaults.tokenizer || new Tokenizer();\n\n var _loop2 = function _loop2(prop) {\n var prevTokenizer = tokenizer[prop];\n\n tokenizer[prop] = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var ret = extension.tokenizer[prop].apply(tokenizer, args);\n\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n\n return ret;\n };\n };\n\n for (var prop in extension.tokenizer) {\n _loop2(prop);\n }\n\n opts.tokenizer = tokenizer;\n })();\n }\n\n if (extension.walkTokens) {\n var walkTokens = marked.defaults.walkTokens;\n\n opts.walkTokens = function (token) {\n extension.walkTokens(token);\n\n if (walkTokens) {\n walkTokens(token);\n }\n };\n }\n\n marked.setOptions(opts);\n };\n /**\n * Run callback for every token\n */\n\n\n marked.walkTokens = function (tokens, callback) {\n for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {\n var token = _step.value;\n callback(token);\n\n switch (token.type) {\n case 'table':\n {\n for (var _iterator2 = _createForOfIteratorHelperLoose(token.tokens.header), _step2; !(_step2 = _iterator2()).done;) {\n var cell = _step2.value;\n marked.walkTokens(cell, callback);\n }\n\n for (var _iterator3 = _createForOfIteratorHelperLoose(token.tokens.cells), _step3; !(_step3 = _iterator3()).done;) {\n var row = _step3.value;\n\n for (var _iterator4 = _createForOfIteratorHelperLoose(row), _step4; !(_step4 = _iterator4()).done;) {\n var _cell = _step4.value;\n marked.walkTokens(_cell, callback);\n }\n }\n\n break;\n }\n\n case 'list':\n {\n marked.walkTokens(token.items, callback);\n break;\n }\n\n default:\n {\n if (token.tokens) {\n marked.walkTokens(token.tokens, callback);\n }\n }\n }\n }\n };\n /**\n * Parse Inline\n */\n\n\n marked.parseInline = function (src, opt) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked.parseInline(): input parameter is undefined or null');\n }\n\n if (typeof src !== 'string') {\n throw new Error('marked.parseInline(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n try {\n var tokens = Lexer.lexInline(src, opt);\n\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n\n return Parser.parseInline(tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (opt.silent) {\n return '

    An error occurred:

    ' + escape(e.message + '', true) + '
    ';\n }\n\n throw e;\n }\n };\n /**\n * Expose\n */\n\n\n marked.Parser = Parser;\n marked.parser = Parser.parse;\n marked.Renderer = Renderer;\n marked.TextRenderer = TextRenderer;\n marked.Lexer = Lexer;\n marked.lexer = Lexer.lex;\n marked.Tokenizer = Tokenizer;\n marked.Slugger = Slugger;\n marked.parse = marked;\n var marked_1 = marked;\n\n return marked_1;\n\n})));\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"SK\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SK\"] = factory();\n\telse\n\t\troot[\"SK\"] = root[\"SK\"] || {}, root[\"SK\"][\"stylekit\"] = factory();\n})(self, function() {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 754:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"SKAlert\": () => (/* reexport */ SKAlert)\n});\n\n;// CONCATENATED MODULE: ./src/js/Alert.js\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nclass SKAlert {\n /*\n buttons: [{text, style, action}]\n */\n constructor({\n title,\n text,\n buttons\n }) {\n _defineProperty(this, \"keyupListener\", event => {\n if (event.key === 'Enter') {\n let primaryButton = this.primaryButton();\n primaryButton.action && primaryButton.action();\n this.dismiss();\n }\n });\n\n this.title = title;\n this.text = text;\n this.buttons = buttons;\n }\n\n buttonsString() {\n const genButton = function (buttonDesc, index) {\n return `\n \n `;\n };\n\n let buttonString = this.buttons.map(function (buttonDesc, index) {\n return genButton(buttonDesc, index);\n }).join('');\n let str = `\n
    \n ${buttonString}\n
    \n `;\n return str;\n }\n\n templateString() {\n let buttonsTemplate;\n let panelStyle;\n\n if (this.buttons) {\n buttonsTemplate = `\n
    \n ${this.buttonsString()}\n
    \n `;\n panelStyle = '';\n } else {\n buttonsTemplate = '';\n panelStyle = 'style=\"padding-bottom: 8px\"';\n }\n\n let titleTemplate = this.title ? `
    ${this.title}
    ` : '';\n let messageTemplate = this.text ? `

    ${this.text}

    ` : '';\n let template = `\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n ${titleTemplate}\n\n
    \n ${messageTemplate}\n
    \n\n ${buttonsTemplate}\n
    \n
    \n
    \n
    \n
    \n
    \n `;\n return template;\n }\n\n dismiss() {\n this.onElement.removeChild(this.element);\n document.removeEventListener('keyup', this.keyupListener);\n }\n\n primaryButton() {\n let primary = this.buttons.find(button => button.primary === true);\n\n if (!primary) {\n primary = this.buttons[this.buttons.length - 1];\n }\n\n return primary;\n }\n\n present({\n onElement\n } = {}) {\n if (!onElement) {\n onElement = document.body;\n }\n\n this.onElement = onElement;\n this.element = document.createElement('div');\n this.element.className = 'sn-component';\n this.element.innerHTML = this.templateString().trim();\n\n if (this.buttons) {\n document.addEventListener('keyup', this.keyupListener);\n this.buttons.forEach((buttonDesc, index) => {\n let buttonElem = this.element.querySelector(`#button-${index}`);\n\n buttonElem.onclick = () => {\n buttonDesc.action && buttonDesc.action();\n this.dismiss();\n };\n });\n }\n\n onElement.appendChild(this.element);\n }\n\n}\n;// CONCATENATED MODULE: ./src/stylekit.js\n\n\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = __webpack_modules__;\n/******/ \t\n/******/ \t// the startup function\n/******/ \t// It's empty as some runtime module handles the default behavior\n/******/ \t__webpack_require__.x = x => {};\n/************************************************************************/\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/jsonp chunk loading */\n/******/ \t(() => {\n/******/ \t\t// no baseURI\n/******/ \t\t\n/******/ \t\t// object to store loaded and loading chunks\n/******/ \t\t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n/******/ \t\t// Promise = chunk loading, 0 = chunk loaded\n/******/ \t\tvar installedChunks = {\n/******/ \t\t\t388: 0\n/******/ \t\t};\n/******/ \t\t\n/******/ \t\tvar deferredModules = [\n/******/ \t\t\t[754]\n/******/ \t\t];\n/******/ \t\t// no chunk on demand loading\n/******/ \t\t\n/******/ \t\t// no prefetching\n/******/ \t\t\n/******/ \t\t// no preloaded\n/******/ \t\t\n/******/ \t\t// no HMR\n/******/ \t\t\n/******/ \t\t// no HMR manifest\n/******/ \t\t\n/******/ \t\tvar checkDeferredModules = x => {};\n/******/ \t\t\n/******/ \t\t// install a JSONP callback for chunk loading\n/******/ \t\tvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n/******/ \t\t\tvar [chunkIds, moreModules, runtime, executeModules] = data;\n/******/ \t\t\t// add \"moreModules\" to the modules object,\n/******/ \t\t\t// then flag all \"chunkIds\" as loaded and fire callback\n/******/ \t\t\tvar moduleId, chunkId, i = 0, resolves = [];\n/******/ \t\t\tfor(;i < chunkIds.length; i++) {\n/******/ \t\t\t\tchunkId = chunkIds[i];\n/******/ \t\t\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n/******/ \t\t\t\t\tresolves.push(installedChunks[chunkId][0]);\n/******/ \t\t\t\t}\n/******/ \t\t\t\tinstalledChunks[chunkId] = 0;\n/******/ \t\t\t}\n/******/ \t\t\tfor(moduleId in moreModules) {\n/******/ \t\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n/******/ \t\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t\tif(runtime) runtime(__webpack_require__);\n/******/ \t\t\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n/******/ \t\t\twhile(resolves.length) {\n/******/ \t\t\t\tresolves.shift()();\n/******/ \t\t\t}\n/******/ \t\t\n/******/ \t\t\t// add entry modules from loaded chunk to deferred list\n/******/ \t\t\tif(executeModules) deferredModules.push.apply(deferredModules, executeModules);\n/******/ \t\t\n/******/ \t\t\t// run deferred modules when all chunks ready\n/******/ \t\t\treturn checkDeferredModules();\n/******/ \t\t}\n/******/ \t\t\n/******/ \t\tvar chunkLoadingGlobal = self[\"webpackChunkSK_name_\"] = self[\"webpackChunkSK_name_\"] || [];\n/******/ \t\tchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\n/******/ \t\tchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));\n/******/ \t\t\n/******/ \t\tfunction checkDeferredModulesImpl() {\n/******/ \t\t\tvar result;\n/******/ \t\t\tfor(var i = 0; i < deferredModules.length; i++) {\n/******/ \t\t\t\tvar deferredModule = deferredModules[i];\n/******/ \t\t\t\tvar fulfilled = true;\n/******/ \t\t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n/******/ \t\t\t\t\tvar depId = deferredModule[j];\n/******/ \t\t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n/******/ \t\t\t\t}\n/******/ \t\t\t\tif(fulfilled) {\n/******/ \t\t\t\t\tdeferredModules.splice(i--, 1);\n/******/ \t\t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t\tif(deferredModules.length === 0) {\n/******/ \t\t\t\t__webpack_require__.x();\n/******/ \t\t\t\t__webpack_require__.x = x => {};\n/******/ \t\t\t}\n/******/ \t\t\treturn result;\n/******/ \t\t}\n/******/ \t\tvar startup = __webpack_require__.x;\n/******/ \t\t__webpack_require__.x = () => {\n/******/ \t\t\t// reset startup function so it can be called again when more startup code is added\n/******/ \t\t\t__webpack_require__.x = startup || (x => {});\n/******/ \t\t\treturn (checkDeferredModules = checkDeferredModulesImpl)();\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\n/******/ \t// module exports must be returned from runtime so entry inlining is disabled\n/******/ \t// run startup\n/******/ \treturn __webpack_require__.x();\n/******/ })()\n;\n});","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","document.addEventListener('DOMContentLoaded', function() {\n\n let workingNote;\n\n let componentRelay = new ComponentRelay({\n targetWindow: window,\n onReady: () => {\n document.body.classList.add(componentRelay.platform);\n document.body.classList.add(componentRelay.environment);\n }\n });\n\n let ignoreTextChange = false;\n let initialLoad = true;\n let lastValue, lastUUID, clientData;\n let renderNote = false;\n let showingUnsafeContentAlert = false;\n\n componentRelay.streamContextItem(async (note) => {\n if (showingUnsafeContentAlert) {\n return;\n }\n\n if (note.uuid !== lastUUID) {\n // Note changed, reset last values\n lastValue = null;\n initialLoad = true;\n lastUUID = note.uuid;\n clientData = note.clientData;\n }\n\n workingNote = note;\n\n // Only update UI on non-metadata updates.\n if (note.isMetadataUpdate || !window.easymde) {\n return;\n }\n\n const isUnsafeContent = checkIfUnsafeContent(note.content.text);\n\n if (isUnsafeContent) {\n const trustUnsafeContent = clientData['trustUnsafeContent'] ?? false;\n if (!trustUnsafeContent) {\n const result = await showUnsafeContentAlert();\n if (result) {\n setTrustUnsafeContent(workingNote);\n }\n renderNote = result;\n } else {\n renderNote = true;\n }\n } else {\n renderNote = true;\n }\n\n /**\n * If the user decides not to continue rendering the note,\n * clear the editor and disable it.\n */\n if (!renderNote) {\n window.easymde.value('');\n if (!window.easymde.isPreviewActive()) {\n window.easymde.togglePreview();\n }\n return;\n }\n\n if (note.content.text !== lastValue) {\n ignoreTextChange = true;\n window.easymde.value(note.content.text);\n ignoreTextChange = false;\n }\n\n if (initialLoad) {\n initialLoad = false;\n window.easymde.codemirror.getDoc().clearHistory();\n const mode = clientData && clientData.mode;\n\n // Set initial editor mode\n if (mode === 'preview') {\n if (!window.easymde.isPreviewActive()) {\n window.easymde.togglePreview();\n }\n } else if (mode === 'split') {\n if (!window.easymde.isSideBySideActive()) {\n window.easymde.toggleSideBySide();\n }\n // falback config\n } else if (window.easymde.isPreviewActive()) {\n window.easymde.togglePreview();\n }\n }\n });\n\n window.easymde = new EasyMDE({\n element: document.getElementById('editor'),\n autoDownloadFontAwesome: false,\n spellChecker: false,\n status: false,\n shortcuts: {\n toggleSideBySide: 'Cmd-Alt-P'\n },\n // Syntax highlighting is disabled until we figure out performance issue: https://github.com/sn-extensions/advanced-markdown-editor/pull/20#issuecomment-513811633\n // renderingConfig: {\n // codeSyntaxHighlighting: true\n // },\n toolbar:[\n {\n className: 'fa fa-eye',\n default: true,\n name: 'preview',\n noDisable: true,\n title: 'Toggle Preview',\n action: function() {\n window.easymde.togglePreview();\n saveMetadata();\n }\n },\n {\n className: 'fa fa-columns',\n default: true,\n name: 'side-by-side',\n noDisable: true,\n noMobile: true,\n title: 'Toggle Side by Side',\n action: function() {\n window.easymde.toggleSideBySide();\n saveMetadata();\n }\n },\n '|',\n 'heading', 'bold', 'italic', 'strikethrough',\n '|', 'quote', 'code',\n '|', 'unordered-list', 'ordered-list',\n '|', 'clean-block',\n '|', 'link', 'image',\n '|', 'table'\n ]\n });\n\n function saveMetadata() {\n if (!renderNote) {\n return;\n }\n\n const getEditorMode = () => {\n const editor = window.easymde;\n\n if (editor) {\n if (editor.isPreviewActive()) return 'preview';\n if (editor.isSideBySideActive()) return 'split';\n }\n return 'edit';\n };\n\n const note = workingNote;\n\n componentRelay.saveItemWithPresave(note, () => {\n note.clientData = {\n ...note.clientData,\n mode: getEditorMode()\n };\n });\n }\n\n // Some sort of issue on Mobile RN where this causes an exception (\".className is not defined\")\n try {\n window.easymde.toggleFullScreen();\n } catch (e) {\n console.log('Error:', e);\n }\n\n /*\n Can be set to Infinity to make sure the whole document is always rendered, and thus the browser's text search works on it. This will have bad effects on performance of big documents.\n Really bad performance on Safari. Unusable.\n */\n window.easymde.codemirror.setOption('viewportMargin', 100);\n\n window.easymde.codemirror.on('change', function() {\n const strip = (html) => {\n const tmp = document.implementation.createHTMLDocument('New').body;\n tmp.innerHTML = html;\n return tmp.textContent || tmp.innerText || '';\n };\n\n const truncateString = (string, limit = 90) => {\n if (string.length <= limit) {\n return string;\n } else {\n return string.substring(0, limit) + '...';\n }\n };\n\n if (!ignoreTextChange && renderNote) {\n if (workingNote) {\n // Be sure to capture this object as a variable, as this.note may be reassigned in `streamContextItem`, so by the time\n // you modify it in the presave block, it may not be the same object anymore, so the presave values will not be applied to\n // the right object, and it will save incorrectly.\n const note = workingNote;\n\n componentRelay.saveItemWithPresave(note, () => {\n lastValue = window.easymde.value();\n\n let html = window.easymde.options.previewRender(window.easymde.value());\n let strippedHtml = truncateString(strip(html));\n\n note.content.preview_plain = strippedHtml;\n note.content.preview_html = null;\n note.content.text = lastValue;\n });\n\n }\n }\n });\n\n function setTrustUnsafeContent(note) {\n componentRelay.saveItemWithPresave(note, () => {\n note.clientData = {\n ...note.clientData,\n trustUnsafeContent: true\n };\n });\n }\n\n /**\n * Checks if a markdown text is safe to render.\n */\n function checkIfUnsafeContent(markdownText) {\n const marked = require('marked');\n const DOMPurify = require('dompurify');\n\n /**\n * Using marked to get the resulting HTML string from the markdown text.\n */\n const renderedHtml = marked(markdownText, {\n headerIds: false,\n smartypants: true\n });\n\n const sanitizedHtml = DOMPurify.sanitize(renderedHtml, {\n /**\n * We don't need script or style tags.\n */\n FORBID_TAGS: ['script', 'style'],\n /**\n * XSS payloads can be injected via these attributes.\n */\n FORBID_ATTR: [\n 'onerror',\n 'onload',\n 'onunload',\n 'onclick',\n 'ondblclick',\n 'onmousedown',\n 'onmouseup',\n 'onmouseover',\n 'onmousemove',\n 'onmouseout',\n 'onfocus',\n 'onblur',\n 'onkeypress',\n 'onkeydown',\n 'onkeyup',\n 'onsubmit',\n 'onreset',\n 'onselect',\n 'onchange'\n ]\n });\n\n /**\n * Create documents from both the sanitized string and the rendered string.\n * This will allow us to compare them, and if they are not equal\n * (i.e: do not contain the same properties, attributes, inner text, etc)\n * it means something was stripped.\n */\n const renderedDom = new DOMParser().parseFromString(renderedHtml, 'text/html');\n const sanitizedDom = new DOMParser().parseFromString(sanitizedHtml, 'text/html');\n return !renderedDom.isEqualNode(sanitizedDom);\n }\n\n function showUnsafeContentAlert() {\n if (showingUnsafeContentAlert) {\n return;\n }\n\n showingUnsafeContentAlert = true;\n\n const text = 'We’ve detected that this note contains a script or code snippet which may be unsafe to execute. ' +\n 'Scripts executed in the editor have the ability to impersonate as the editor to Standard Notes. ' +\n 'Press Continue to mark this script as safe and proceed, or Cancel to avoid rendering this note.';\n\n return new Promise((resolve) => {\n const Stylekit = require('sn-stylekit');\n const alert = new Stylekit.SKAlert({\n title: null,\n text,\n buttons: [\n {\n text: 'Cancel',\n style: 'neutral',\n action: function() {\n showingUnsafeContentAlert = false;\n resolve(false);\n },\n },\n {\n text: 'Continue',\n style: 'danger',\n action: function() {\n showingUnsafeContentAlert = false;\n resolve(true);\n },\n },\n ]\n });\n alert.present();\n });\n }\n});\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://sn-advanced-markdown-editor/./node_modules/dompurify/dist/purify.js","webpack://sn-advanced-markdown-editor/./node_modules/marked/lib/marked.js","webpack://sn-advanced-markdown-editor/./node_modules/sn-stylekit/dist/stylekit.js","webpack://sn-advanced-markdown-editor/webpack/bootstrap","webpack://sn-advanced-markdown-editor/./src/main.js"],"names":["module","exports","hasOwnProperty","Object","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","create","_ref","Reflect","apply","construct","fun","thisValue","args","x","Func","Function","prototype","bind","concat","arr","Array","isArray","i","arr2","length","from","_toConsumableArray","func","arrayForEach","unapply","forEach","arrayPop","pop","arrayPush","push","stringToLowerCase","String","toLowerCase","stringMatch","match","stringReplace","replace","stringIndexOf","indexOf","stringTrim","trim","regExpTest","RegExp","test","typeErrorCreate","TypeError","_len2","arguments","_key2","thisArg","_len","_key","addToSet","set","array","l","element","lcElement","clone","object","newObject","property","lookupGetter","prop","desc","get","value","console","warn","html","svg","svgFilters","svgDisallowed","mathMl","mathMlDisallowed","text","html$1","svg$1","mathMl$1","xml","MUSTACHE_EXPR","ERB_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","_typeof","Symbol","iterator","obj","constructor","_toConsumableArray$1","getGlobal","window","_createTrustedTypesPolicy","trustedTypes","document","createPolicy","suffix","ATTR_NAME","currentScript","hasAttribute","getAttribute","policyName","createHTML","html$$1","_","createDOMPurify","undefined","DOMPurify","root","version","removed","nodeType","isSupported","originalDocument","DocumentFragment","HTMLTemplateElement","Node","Element","NodeFilter","_window$NamedNodeMap","NamedNodeMap","MozNamedAttrMap","Text","Comment","DOMParser","ElementPrototype","cloneNode","getNextSibling","getChildNodes","getParentNode","template","createElement","content","ownerDocument","trustedTypesPolicy","emptyHTML","RETURN_TRUSTED_TYPE","_document","implementation","createNodeIterator","createDocumentFragment","importNode","documentMode","hooks","createHTMLDocument","MUSTACHE_EXPR$$1","ERB_EXPR$$1","DATA_ATTR$$1","ARIA_ATTR$$1","IS_SCRIPT_OR_DATA$$1","ATTR_WHITESPACE$$1","IS_ALLOWED_URI$$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","SAFE_FOR_TEMPLATES","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_DOM_IMPORT","SANITIZE_DOM","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","CONFIG","formElement","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","ADD_TAGS","ADD_ATTR","table","tbody","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","parent","tagName","namespaceURI","parentTagName","Boolean","commonSvgAndHTMLElements","_forceRemove","node","parentNode","removeChild","outerHTML","remove","_removeAttribute","name","attribute","getAttributeNode","removeAttribute","setAttribute","_initDocument","dirty","doc","leadingWhitespace","matches","dirtyPayload","parseFromString","documentElement","createDocument","innerHTML","body","insertBefore","createTextNode","childNodes","_createIterator","call","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","_isClobbered","elm","nodeName","textContent","attributes","_isNode","_executeHook","entryPoint","currentNode","data","hook","_sanitizeElements","allowedTags","firstElementChild","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","attr","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","_attr","forceKeepAttr","setAttributeNS","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","nextNode","sanitize","importedNode","oldNode","returnNode","toString","toStaticHTML","appendChild","firstChild","nodeIterator","serializedHTML","setConfig","clearConfig","isValidAttribute","tag","addHook","hookFunction","removeHook","removeHooks","removeAllHooks","factory","_defineProperties","target","props","descriptor","enumerable","configurable","writable","defineProperty","key","_arrayLikeToArray","len","_createForOfIteratorHelperLoose","o","allowArrayLike","it","next","minLen","n","slice","_unsupportedIterableToArray","done","defaults$5","getDefaults$1","baseUrl","breaks","gfm","headerIds","headerPrefix","highlight","langPrefix","mangle","pedantic","renderer","sanitizer","silent","smartLists","smartypants","tokenizer","walkTokens","xhtml","defaults","getDefaults","changeDefaults","newDefaults","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","unescapeTest","unescape$1","charAt","fromCharCode","parseInt","substring","caret","nonWordAndColonTest","originIndependentUrl","baseUrls","justDomain","protocol","domain","resolveUrl","base","href","rtrim$1","relativeBase","str","c","invert","suffLen","currChar","substr","helpers","encode","regex","opt","source","val","getRegex","prot","decodeURIComponent","e","encodeURI","exec","tableRow","count","cells","offset","escaped","curr","split","splice","b","level","pattern","result","defaults$4","rtrim","splitCells","_escape","findClosingBracket","outputLink","cap","link","raw","title","type","Tokenizer_1","Tokenizer","options","this","_proto","space","src","rules","block","newline","code","codeBlockStyle","fences","matchIndentToCode","indentToCode","map","matchIndentInNode","join","indentCodeCompensation","lang","heading","trimmed","depth","nptable","item","header","align","hr","blockquote","list","bcurr","bnext","addBack","loose","istask","ischecked","endMatch","bull","isordered","ordered","start","items","itemMatch","listItemStart","index","task","checked","pre","def","lheading","paragraph","escape","inline","inLink","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","_escapes","reflink","links","nolink","emStrong","maskedSrc","prevChar","lDelim","nextChar","punctuation","rDelim","rLength","lLength","delimTotal","midDelimTotal","endReg","rDelimAst","rDelimUnd","lastIndex","Math","min","codespan","hasNonSpaceChars","hasSpaceCharsOnBothEnds","br","del","autolink","tokens","url","prevCapZero","_backpedal","inlineText","noopTest","edit","merge$1","block$1","_paragraph","_label","_title","bullet","_tag","_comment","normal","inline$1","reflinkSearch","_punctuation","blockSkip","escapedEmSt","_scheme","_email","_attribute","_href","strong","middle","endAst","endUnd","em","_extended_email","Tokenizer$1","defaults$3","repeatString","out","charCodeAt","random","Lexer_1","Lexer","lex","lexInline","inlineTokens","Constructor","protoProps","staticProps","blockTokens","top","token","lastToken","errMsg","error","Error","j","k","l2","row","keepPrevChar","keys","includes","lastIndexOf","_lastToken","_lastToken2","defaults$2","cleanUrl","escape$1","Renderer_1","Renderer","_code","infostring","quote","_html","slugger","slug","listitem","checkbox","tablerow","tablecell","flags","image","_text","TextRenderer_1","TextRenderer","Slugger_1","Slugger","seen","serialize","getNextSafeSlug","originalSlug","isDryRun","occurenceAccumulator","dryrun","Renderer$1","TextRenderer$1","Slugger$1","defaults$1","unescape","Parser","textRenderer","parse","parseInline","l3","cell","itemBody","unshift","merge","checkSanitizeDeprecation","marked","callback","err","pending","setTimeout","_tokens","message","setOptions","use","extension","opts","_loop","prevRenderer","ret","_loop2","prevTokenizer","_step","_iterator","_step2","_iterator2","_step3","_iterator3","_step4","_iterator4","_cell","parser","lexer","self","__webpack_modules__","754","__unused_webpack_module","__webpack_exports__","r","d","SKAlert","buttons","event","primaryButton","action","dismiss","buttonDesc","style","genButton","buttonsTemplate","panelStyle","buttonsString","onElement","removeEventListener","keyupListener","primary","find","button","className","templateString","addEventListener","querySelector","onclick","__webpack_module_cache__","moduleId","m","definition","toStringTag","installedChunks","388","deferredModules","checkDeferredModules","webpackJsonpCallback","parentChunkLoadingFunction","chunkId","chunkIds","moreModules","runtime","executeModules","resolves","shift","chunkLoadingGlobal","checkDeferredModulesImpl","deferredModule","fulfilled","depId","s","startup","__webpack_require__","cachedModule","workingNote","lastValue","lastUUID","clientData","componentRelay","ComponentRelay","targetWindow","onReady","classList","add","platform","environment","ignoreTextChange","initialLoad","renderNote","showingUnsafeContentAlert","saveMetadata","getEditorMode","editor","easymde","isPreviewActive","isSideBySideActive","note","saveItemWithPresave","mode","streamContextItem","async","uuid","isMetadataUpdate","getElementsByClassName","JSON","stringify","spellcheck","markdownText","renderedHtml","sanitizedHtml","renderedDom","sanitizedDom","isEqualNode","checkIfUnsafeContent","Promise","resolve","present","showUnsafeContentAlert","trustUnsafeContent","setTrustUnsafeContent","togglePreview","codemirror","getDoc","clearHistory","toggleSideBySide","EasyMDE","getElementById","autoDownloadFontAwesome","spellChecker","nativeSpellcheck","inputStyle","status","shortcuts","toolbar","default","noDisable","noMobile","toggleFullScreen","log","setOption","on","strippedHtml","string","limit","truncateString","tmp","innerText","strip","previewRender","preview_plain","preview_html"],"mappings":"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","file":"dist.js","sourcesContent":["/*! @license DOMPurify | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.2.2/LICENSE */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.DOMPurify = factory());\n}(this, function () { 'use strict';\n\n function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n var hasOwnProperty = Object.hasOwnProperty,\n setPrototypeOf = Object.setPrototypeOf,\n isFrozen = Object.isFrozen,\n getPrototypeOf = Object.getPrototypeOf,\n getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n var freeze = Object.freeze,\n seal = Object.seal,\n create = Object.create; // eslint-disable-line import/no-mutable-exports\n\n var _ref = typeof Reflect !== 'undefined' && Reflect,\n apply = _ref.apply,\n construct = _ref.construct;\n\n if (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n }\n\n if (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n }\n\n if (!seal) {\n seal = function seal(x) {\n return x;\n };\n }\n\n if (!construct) {\n construct = function construct(Func, args) {\n return new (Function.prototype.bind.apply(Func, [null].concat(_toConsumableArray(args))))();\n };\n }\n\n var arrayForEach = unapply(Array.prototype.forEach);\n var arrayPop = unapply(Array.prototype.pop);\n var arrayPush = unapply(Array.prototype.push);\n\n var stringToLowerCase = unapply(String.prototype.toLowerCase);\n var stringMatch = unapply(String.prototype.match);\n var stringReplace = unapply(String.prototype.replace);\n var stringIndexOf = unapply(String.prototype.indexOf);\n var stringTrim = unapply(String.prototype.trim);\n\n var regExpTest = unapply(RegExp.prototype.test);\n\n var typeErrorCreate = unconstruct(TypeError);\n\n function unapply(func) {\n return function (thisArg) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return apply(func, thisArg, args);\n };\n }\n\n function unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return construct(func, args);\n };\n }\n\n /* Add properties to a lookup table */\n function addToSet(set, array) {\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n var l = array.length;\n while (l--) {\n var element = array[l];\n if (typeof element === 'string') {\n var lcElement = stringToLowerCase(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n }\n\n /* Shallow clone an object */\n function clone(object) {\n var newObject = create(null);\n\n var property = void 0;\n for (property in object) {\n if (apply(hasOwnProperty, object, [property])) {\n newObject[property] = object[property];\n }\n }\n\n return newObject;\n }\n\n /* IE10 doesn't support __lookupGetter__ so lets'\n * simulate it. It also automatically checks\n * if the prop is function or getter and behaves\n * accordingly. */\n function lookupGetter(object, prop) {\n while (object !== null) {\n var desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(element) {\n console.warn('fallback value for', element);\n return null;\n }\n\n return fallbackValue;\n }\n\n var html = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\n\n // SVG\n var svg = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\n\n var svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n\n // List of SVG elements that are disallowed by default.\n // We still need to know them so that we can do namespace\n // checks properly in case one wants to add them to\n // allow-list.\n var svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'fedropshadow', 'feimage', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\n\n var mathMl = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover']);\n\n // Similarly to SVG, we want to know all MathML elements,\n // even those that we disallow by default.\n var mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\n\n var text = freeze(['#text']);\n\n var html$1 = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']);\n\n var svg$1 = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n\n var mathMl$1 = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n\n var xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n // eslint-disable-next-line unicorn/better-regex\n var MUSTACHE_EXPR = seal(/\\{\\{[\\s\\S]*|[\\s\\S]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\n var ERB_EXPR = seal(/<%[\\s\\S]*|[\\s\\S]*%>/gm);\n var DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\n var ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\n var IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n );\n var IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\n var ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n );\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n function _toConsumableArray$1(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n var getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n };\n\n /**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\n var _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, document) {\n if ((typeof trustedTypes === 'undefined' ? 'undefined' : _typeof(trustedTypes)) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n var suffix = null;\n var ATTR_NAME = 'data-tt-policy-suffix';\n if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n suffix = document.currentScript.getAttribute(ATTR_NAME);\n }\n\n var policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML: function createHTML(html$$1) {\n return html$$1;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n };\n\n function createDOMPurify() {\n var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n var DOMPurify = function DOMPurify(root) {\n return createDOMPurify(root);\n };\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n DOMPurify.version = '2.2.9';\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n\n return DOMPurify;\n }\n\n var originalDocument = window.document;\n\n var document = window.document;\n var DocumentFragment = window.DocumentFragment,\n HTMLTemplateElement = window.HTMLTemplateElement,\n Node = window.Node,\n Element = window.Element,\n NodeFilter = window.NodeFilter,\n _window$NamedNodeMap = window.NamedNodeMap,\n NamedNodeMap = _window$NamedNodeMap === undefined ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,\n Text = window.Text,\n Comment = window.Comment,\n DOMParser = window.DOMParser,\n trustedTypes = window.trustedTypes;\n\n\n var ElementPrototype = Element.prototype;\n\n var cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n var getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n var getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n var getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n var template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);\n var emptyHTML = trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML('') : '';\n\n var _document = document,\n implementation = _document.implementation,\n createNodeIterator = _document.createNodeIterator,\n createDocumentFragment = _document.createDocumentFragment;\n var importNode = originalDocument.importNode;\n\n\n var documentMode = {};\n try {\n documentMode = clone(document).documentMode ? document.documentMode : {};\n } catch (_) {}\n\n var hooks = {};\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof getParentNode === 'function' && implementation && typeof implementation.createHTMLDocument !== 'undefined' && documentMode !== 9;\n\n var MUSTACHE_EXPR$$1 = MUSTACHE_EXPR,\n ERB_EXPR$$1 = ERB_EXPR,\n DATA_ATTR$$1 = DATA_ATTR,\n ARIA_ATTR$$1 = ARIA_ATTR,\n IS_SCRIPT_OR_DATA$$1 = IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE$$1 = ATTR_WHITESPACE;\n var IS_ALLOWED_URI$$1 = IS_ALLOWED_URI;\n\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n\n var ALLOWED_TAGS = null;\n var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(html), _toConsumableArray$1(svg), _toConsumableArray$1(svgFilters), _toConsumableArray$1(mathMl), _toConsumableArray$1(text)));\n\n /* Allowed attribute names */\n var ALLOWED_ATTR = null;\n var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray$1(html$1), _toConsumableArray$1(svg$1), _toConsumableArray$1(mathMl$1), _toConsumableArray$1(xml)));\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n var FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n var FORBID_ATTR = null;\n\n /* Decide if ARIA attributes are okay */\n var ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n var ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n var ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n var SAFE_FOR_TEMPLATES = false;\n\n /* Decide if document with ... should be returned */\n var WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n var SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n var FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n var RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n var RETURN_DOM_FRAGMENT = false;\n\n /* If `RETURN_DOM` or `RETURN_DOM_FRAGMENT` is enabled, decide if the returned DOM\n * `Node` is imported into the current `Document`. If this flag is not enabled the\n * `Node` will belong (its ownerDocument) to a fresh `HTMLDocument`, created by\n * DOMPurify.\n *\n * This defaults to `true` starting DOMPurify 2.2.0. Note that setting it to `false`\n * might cause XSS from attacks hidden in closed shadowroots in case the browser\n * supports Declarative Shadow: DOM https://web.dev/declarative-shadow-dom/\n */\n var RETURN_DOM_IMPORT = true;\n\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n var RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks? */\n var SANITIZE_DOM = true;\n\n /* Keep element content when removing element? */\n var KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n var IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n var USE_PROFILES = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n var FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n\n /* Tags that are safe for data: URIs */\n var DATA_URI_TAGS = null;\n var DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n\n /* Attributes safe for values like \"javascript:\" */\n var URI_SAFE_ATTRIBUTES = null;\n var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'summary', 'title', 'value', 'style', 'xmlns']);\n\n var MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n var NAMESPACE = HTML_NAMESPACE;\n var IS_EMPTY_INPUT = false;\n\n /* Keep a reference to config to pass to hooks */\n var CONFIG = null;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n var formElement = document.createElement('form');\n\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n var _parseConfig = function _parseConfig(cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || (typeof cfg === 'undefined' ? 'undefined' : _typeof(cfg)) !== 'object') {\n cfg = {};\n }\n\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n\n /* Set configuration parameters */\n ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR) : DEFAULT_ALLOWED_ATTR;\n URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS) : DEFAULT_DATA_URI_TAGS;\n FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS) : {};\n FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR) : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_DOM_IMPORT = cfg.RETURN_DOM_IMPORT !== false; // Default true\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$$1;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray$1(text)));\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html);\n addToSet(ALLOWED_ATTR, html$1);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl);\n addToSet(ALLOWED_ATTR, mathMl$1);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n\n var HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']);\n\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n var ALL_SVG_TAGS = addToSet({}, svg);\n addToSet(ALL_SVG_TAGS, svgFilters);\n addToSet(ALL_SVG_TAGS, svgDisallowed);\n\n var ALL_MATHML_TAGS = addToSet({}, mathMl);\n addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n\n /**\n *\n *\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n var _checkValidNamespace = function _checkValidNamespace(element) {\n var parent = getParentNode(element);\n\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: HTML_NAMESPACE,\n tagName: 'template'\n };\n }\n\n var tagName = stringToLowerCase(element.tagName);\n var parentTagName = stringToLowerCase(parent.tagName);\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n\n // The only way to switch from MathML to SVG is via\n // svg if parent is either or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n\n // The only way to switch from SVG to MathML is via\n // and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erronously deleted from\n // HTML namespace.\n var commonSvgAndHTMLElements = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (commonSvgAndHTMLElements[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG or MathML). Return false just in case.\n return false;\n };\n\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n var _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, { element: node });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n try {\n node.outerHTML = emptyHTML;\n } catch (_) {\n node.remove();\n }\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n var _removeAttribute = function _removeAttribute(name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node\n });\n }\n\n node.removeAttribute(name);\n\n // We void attribute values for unremovable \"is\"\" attributes\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n var _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n var doc = void 0;\n var leadingWhitespace = void 0;\n\n if (FORCE_BODY) {\n dirty = '' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n var matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, 'text/html');\n } catch (_) {}\n }\n\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? '' : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n\n var body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n\n /* Work on whole document or just its body */\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n\n /**\n * _createIterator\n *\n * @param {Document} root document/fragment to create iterator for\n * @return {Iterator} iterator instance\n */\n var _createIterator = function _createIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n };\n\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n var _isClobbered = function _isClobbered(elm) {\n if (elm instanceof Text || elm instanceof Comment) {\n return false;\n }\n\n if (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function') {\n return true;\n }\n\n return false;\n };\n\n /**\n * _isNode\n *\n * @param {Node} obj object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n var _isNode = function _isNode(object) {\n return (typeof Node === 'undefined' ? 'undefined' : _typeof(Node)) === 'object' ? object instanceof Node : object && (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string';\n };\n\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n var _executeHook = function _executeHook(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n arrayForEach(hooks[entryPoint], function (hook) {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n var _sanitizeElements = function _sanitizeElements(currentNode) {\n var content = void 0;\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeElements', currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check if tagname contains Unicode */\n if (stringMatch(currentNode.nodeName, /[\\u0080-\\uFFFF]/)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n var tagName = stringToLowerCase(currentNode.nodeName);\n\n /* Execute a hook if present */\n _executeHook('uponSanitizeElement', currentNode, {\n tagName: tagName,\n allowedTags: ALLOWED_TAGS\n });\n\n /* Detect mXSS attempts abusing namespace confusion */\n if (!_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove element if anything forbids its presence */\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n var parentNode = getParentNode(currentNode) || currentNode.parentNode;\n var childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n if (childNodes && parentNode) {\n var childCount = childNodes.length;\n\n for (var i = childCount - 1; i >= 0; --i) {\n parentNode.insertBefore(cloneNode(childNodes[i], true), getNextSibling(currentNode));\n }\n }\n }\n\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n if ((tagName === 'noscript' || tagName === 'noembed') && regExpTest(/<\\/no(script|embed)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n /* Get the element's text content */\n content = currentNode.textContent;\n content = stringReplace(content, MUSTACHE_EXPR$$1, ' ');\n content = stringReplace(content, ERB_EXPR$$1, ' ');\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n currentNode.textContent = content;\n }\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeElements', currentNode, null);\n\n return false;\n };\n\n /**\n * _isValidAttribute\n *\n * @param {string} lcTag Lowercase tag name of containing element.\n * @param {string} lcName Lowercase attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n var _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && regExpTest(DATA_ATTR$$1, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$$1, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n return false;\n\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$$1, stringReplace(value, ATTR_WHITESPACE$$1, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$$1, stringReplace(value, ATTR_WHITESPACE$$1, ''))) ; else if (!value) ; else {\n return false;\n }\n\n return true;\n };\n\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param {Node} currentNode to sanitize\n */\n var _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n var attr = void 0;\n var value = void 0;\n var lcName = void 0;\n var l = void 0;\n /* Execute a hook if present */\n _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n var attributes = currentNode.attributes;\n\n /* Check if we have attributes; if not we might have a text node */\n\n if (!attributes) {\n return;\n }\n\n var hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR\n };\n l = attributes.length;\n\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n attr = attributes[l];\n var _attr = attr,\n name = _attr.name,\n namespaceURI = _attr.namespaceURI;\n\n value = stringTrim(attr.value);\n lcName = stringToLowerCase(name);\n\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n\n /* Remove attribute */\n _removeAttribute(name, currentNode);\n\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n continue;\n }\n\n /* Work around a security issue in jQuery 3.0 */\n if (regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n value = stringReplace(value, MUSTACHE_EXPR$$1, ' ');\n value = stringReplace(value, ERB_EXPR$$1, ' ');\n }\n\n /* Is `value` valid for this attribute? */\n var lcTag = currentNode.nodeName.toLowerCase();\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n\n /* Handle invalid data-* attribute set by try-catching it */\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n\n arrayPop(DOMPurify.removed);\n } catch (_) {}\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeAttributes', currentNode, null);\n };\n\n /**\n * _sanitizeShadowDOM\n *\n * @param {DocumentFragment} fragment to iterate over recursively\n */\n var _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n var shadowNode = void 0;\n var shadowIterator = _createIterator(fragment);\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHook('uponSanitizeShadowNode', shadowNode, null);\n\n /* Sanitize tags and elements */\n if (_sanitizeElements(shadowNode)) {\n continue;\n }\n\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(shadowNode);\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeShadowDOM', fragment, null);\n };\n\n /**\n * Sanitize\n * Public method providing core sanitation functionality\n *\n * @param {String|Node} dirty string or DOM node\n * @param {Object} configuration object\n */\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty, cfg) {\n var body = void 0;\n var importedNode = void 0;\n var currentNode = void 0;\n var oldNode = void 0;\n var returnNode = void 0;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '';\n }\n\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n // eslint-disable-next-line no-negated-condition\n if (typeof dirty.toString !== 'function') {\n throw typeErrorCreate('toString is not a function');\n } else {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n }\n }\n\n /* Check we can run. Otherwise fall back or ignore */\n if (!DOMPurify.isSupported) {\n if (_typeof(window.toStaticHTML) === 'object' || typeof window.toStaticHTML === 'function') {\n if (typeof dirty === 'string') {\n return window.toStaticHTML(dirty);\n }\n\n if (_isNode(dirty)) {\n return window.toStaticHTML(dirty.outerHTML);\n }\n }\n\n return dirty;\n }\n\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n\n /* Clean up removed elements */\n DOMPurify.removed = [];\n\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n\n if (IN_PLACE) ; else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : emptyHTML;\n }\n }\n\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n\n /* Get node iterator */\n var nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Fix IE's strange behavior with manipulated textNodes #89 */\n if (currentNode.nodeType === 3 && currentNode === oldNode) {\n continue;\n }\n\n /* Sanitize tags and elements */\n if (_sanitizeElements(currentNode)) {\n continue;\n }\n\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(currentNode);\n\n oldNode = currentNode;\n }\n\n oldNode = null;\n\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n\n if (RETURN_DOM_IMPORT) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n\n return returnNode;\n }\n\n var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR$$1, ' ');\n serializedHTML = stringReplace(serializedHTML, ERB_EXPR$$1, ' ');\n }\n\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n\n /**\n * Public method to set the configuration once\n * setConfig\n *\n * @param {Object} cfg configuration object\n */\n DOMPurify.setConfig = function (cfg) {\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n\n /**\n * Public method to remove the configuration\n * clearConfig\n *\n */\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n\n /**\n * Public method to check if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n * isValidAttribute\n *\n * @param {string} tag Tag name of containing element.\n * @param {string} attr Attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n */\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n\n var lcTag = stringToLowerCase(tag);\n var lcName = stringToLowerCase(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n\n /**\n * AddHook\n * Public method to add DOMPurify hooks\n *\n * @param {String} entryPoint entry point for the hook to add\n * @param {Function} hookFunction function to execute\n */\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n\n hooks[entryPoint] = hooks[entryPoint] || [];\n arrayPush(hooks[entryPoint], hookFunction);\n };\n\n /**\n * RemoveHook\n * Public method to remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if more are present)\n *\n * @param {String} entryPoint entry point for the hook to remove\n */\n DOMPurify.removeHook = function (entryPoint) {\n if (hooks[entryPoint]) {\n arrayPop(hooks[entryPoint]);\n }\n };\n\n /**\n * RemoveHooks\n * Public method to remove all DOMPurify hooks at a given entryPoint\n *\n * @param {String} entryPoint entry point for the hooks to remove\n */\n DOMPurify.removeHooks = function (entryPoint) {\n if (hooks[entryPoint]) {\n hooks[entryPoint] = [];\n }\n };\n\n /**\n * RemoveAllHooks\n * Public method to remove all DOMPurify hooks\n *\n */\n DOMPurify.removeAllHooks = function () {\n hooks = {};\n };\n\n return DOMPurify;\n }\n\n var purify = createDOMPurify();\n\n return purify;\n\n}));\n//# sourceMappingURL=purify.js.map\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2021, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.marked = factory());\n}(this, (function () { 'use strict';\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n\n function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var defaults$5 = {exports: {}};\n\n function getDefaults$1() {\n return {\n baseUrl: null,\n breaks: false,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n }\n\n function changeDefaults$1(newDefaults) {\n defaults$5.exports.defaults = newDefaults;\n }\n\n defaults$5.exports = {\n defaults: getDefaults$1(),\n getDefaults: getDefaults$1,\n changeDefaults: changeDefaults$1\n };\n\n /**\n * Helpers\n */\n var escapeTest = /[&<>\"']/;\n var escapeReplace = /[&<>\"']/g;\n var escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\n var escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\n var escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n var getEscapeReplacement = function getEscapeReplacement(ch) {\n return escapeReplacements[ch];\n };\n\n function escape$2(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n }\n\n var unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\n function unescape$1(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, function (_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));\n }\n\n return '';\n });\n }\n\n var caret = /(^|[^\\[])\\^/g;\n\n function edit$1(regex, opt) {\n regex = regex.source || regex;\n opt = opt || '';\n var obj = {\n replace: function replace(name, val) {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: function getRegex() {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n }\n\n var nonWordAndColonTest = /[^\\w:]/g;\n var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\n function cleanUrl$1(sanitize, base, href) {\n if (sanitize) {\n var prot;\n\n try {\n prot = decodeURIComponent(unescape$1(href)).replace(nonWordAndColonTest, '').toLowerCase();\n } catch (e) {\n return null;\n }\n\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n\n return href;\n }\n\n var baseUrls = {};\n var justDomain = /^[^:]+:\\/*[^/]*$/;\n var protocol = /^([^:]+:)[\\s\\S]*$/;\n var domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\n function resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim$1(base, '/', true);\n }\n }\n\n base = baseUrls[' ' + base];\n var relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n }\n\n var noopTest$1 = {\n exec: function noopTest() {}\n };\n\n function merge$2(obj) {\n var i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n }\n\n function splitCells$1(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n var row = tableRow.replace(/\\|/g, function (match, offset, str) {\n var escaped = false,\n curr = offset;\n\n while (--curr >= 0 && str[curr] === '\\\\') {\n escaped = !escaped;\n }\n\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n var i = 0;\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) {\n cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n\n return cells;\n } // Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n // /c*$/ is vulnerable to REDOS.\n // invert: Remove suffix of non-c chars instead. Default falsey.\n\n\n function rtrim$1(str, c, invert) {\n var l = str.length;\n\n if (l === 0) {\n return '';\n } // Length of suffix matching the invert condition.\n\n\n var suffLen = 0; // Step left until we fail to match the invert condition.\n\n while (suffLen < l) {\n var currChar = str.charAt(l - suffLen - 1);\n\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.substr(0, l - suffLen);\n }\n\n function findClosingBracket$1(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n\n var l = str.length;\n var level = 0,\n i = 0;\n\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n\n if (level < 0) {\n return i;\n }\n }\n }\n\n return -1;\n }\n\n function checkSanitizeDeprecation$1(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n } // copied from https://stackoverflow.com/a/5450113/806777\n\n\n function repeatString$1(pattern, count) {\n if (count < 1) {\n return '';\n }\n\n var result = '';\n\n while (count > 1) {\n if (count & 1) {\n result += pattern;\n }\n\n count >>= 1;\n pattern += pattern;\n }\n\n return result + pattern;\n }\n\n var helpers = {\n escape: escape$2,\n unescape: unescape$1,\n edit: edit$1,\n cleanUrl: cleanUrl$1,\n resolveUrl: resolveUrl,\n noopTest: noopTest$1,\n merge: merge$2,\n splitCells: splitCells$1,\n rtrim: rtrim$1,\n findClosingBracket: findClosingBracket$1,\n checkSanitizeDeprecation: checkSanitizeDeprecation$1,\n repeatString: repeatString$1\n };\n\n var defaults$4 = defaults$5.exports.defaults;\n var rtrim = helpers.rtrim,\n splitCells = helpers.splitCells,\n _escape = helpers.escape,\n findClosingBracket = helpers.findClosingBracket;\n\n function outputLink(cap, link, raw) {\n var href = link.href;\n var title = link.title ? _escape(link.title) : null;\n var text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n return {\n type: 'link',\n raw: raw,\n href: href,\n title: title,\n text: text\n };\n } else {\n return {\n type: 'image',\n raw: raw,\n href: href,\n title: title,\n text: _escape(text)\n };\n }\n }\n\n function indentCodeCompensation(raw, text) {\n var matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n var indentToCode = matchIndentToCode[1];\n return text.split('\\n').map(function (node) {\n var matchIndentInNode = node.match(/^\\s+/);\n\n if (matchIndentInNode === null) {\n return node;\n }\n\n var indentInNode = matchIndentInNode[0];\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n }).join('\\n');\n }\n /**\n * Tokenizer\n */\n\n\n var Tokenizer_1 = /*#__PURE__*/function () {\n function Tokenizer(options) {\n this.options = options || defaults$4;\n }\n\n var _proto = Tokenizer.prototype;\n\n _proto.space = function space(src) {\n var cap = this.rules.block.newline.exec(src);\n\n if (cap) {\n if (cap[0].length > 1) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n\n return {\n raw: '\\n'\n };\n }\n };\n\n _proto.code = function code(src) {\n var cap = this.rules.block.code.exec(src);\n\n if (cap) {\n var text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic ? rtrim(text, '\\n') : text\n };\n }\n };\n\n _proto.fences = function fences(src) {\n var cap = this.rules.block.fences.exec(src);\n\n if (cap) {\n var raw = cap[0];\n var text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw: raw,\n lang: cap[2] ? cap[2].trim() : cap[2],\n text: text\n };\n }\n };\n\n _proto.heading = function heading(src) {\n var cap = this.rules.block.heading.exec(src);\n\n if (cap) {\n var text = cap[2].trim(); // remove trailing #s\n\n if (/#$/.test(text)) {\n var trimmed = rtrim(text, '#');\n\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text: text\n };\n }\n };\n\n _proto.nptable = function nptable(src) {\n var cap = this.rules.block.nptable.exec(src);\n\n if (cap) {\n var item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : [],\n raw: cap[0]\n };\n\n if (item.header.length === item.align.length) {\n var l = item.align.length;\n var i;\n\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.cells.length;\n\n for (i = 0; i < l; i++) {\n item.cells[i] = splitCells(item.cells[i], item.header.length);\n }\n\n return item;\n }\n }\n };\n\n _proto.hr = function hr(src) {\n var cap = this.rules.block.hr.exec(src);\n\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n };\n\n _proto.blockquote = function blockquote(src) {\n var cap = this.rules.block.blockquote.exec(src);\n\n if (cap) {\n var text = cap[0].replace(/^ *> ?/gm, '');\n return {\n type: 'blockquote',\n raw: cap[0],\n text: text\n };\n }\n };\n\n _proto.list = function list(src) {\n var cap = this.rules.block.list.exec(src);\n\n if (cap) {\n var raw = cap[0];\n var bull = cap[2];\n var isordered = bull.length > 1;\n var list = {\n type: 'list',\n raw: raw,\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n }; // Get each top-level item.\n\n var itemMatch = cap[0].match(this.rules.block.item);\n var next = false,\n item,\n space,\n bcurr,\n bnext,\n addBack,\n loose,\n istask,\n ischecked,\n endMatch;\n var l = itemMatch.length;\n bcurr = this.rules.block.listItemStart.exec(itemMatch[0]);\n\n for (var i = 0; i < l; i++) {\n item = itemMatch[i];\n raw = item;\n\n if (!this.options.pedantic) {\n // Determine if current item contains the end of the list\n endMatch = item.match(new RegExp('\\\\n\\\\s*\\\\n {0,' + (bcurr[0].length - 1) + '}\\\\S'));\n\n if (endMatch) {\n addBack = item.length - endMatch.index + itemMatch.slice(i + 1).join('\\n').length;\n list.raw = list.raw.substring(0, list.raw.length - addBack);\n item = item.substring(0, endMatch.index);\n raw = item;\n l = i + 1;\n }\n } // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n\n\n if (i !== l - 1) {\n bnext = this.rules.block.listItemStart.exec(itemMatch[i + 1]);\n\n if (!this.options.pedantic ? bnext[1].length >= bcurr[0].length || bnext[1].length > 3 : bnext[1].length > bcurr[1].length) {\n // nested list or continuation\n itemMatch.splice(i, 2, itemMatch[i] + (!this.options.pedantic && bnext[1].length < bcurr[0].length && !itemMatch[i].match(/\\n$/) ? '' : '\\n') + itemMatch[i + 1]);\n i--;\n l--;\n continue;\n } else if ( // different bullet style\n !this.options.pedantic || this.options.smartLists ? bnext[2][bnext[2].length - 1] !== bull[bull.length - 1] : isordered === (bnext[2].length === 1)) {\n addBack = itemMatch.slice(i + 1).join('\\n').length;\n list.raw = list.raw.substring(0, list.raw.length - addBack);\n i = l - 1;\n }\n\n bcurr = bnext;\n } // Remove the list item's bullet\n // so it is seen as the next token.\n\n\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+[.)]) ?/, ''); // Outdent whatever the\n // list item contains. Hacky.\n\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '') : item.replace(/^ {1,4}/gm, '');\n } // trim item newlines at end\n\n\n item = rtrim(item, '\\n');\n\n if (i !== l - 1) {\n raw = raw + '\\n';\n } // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n\n\n loose = next || /\\n\\n(?!\\s*$)/.test(raw);\n\n if (i !== l - 1) {\n next = raw.slice(-2) === '\\n\\n';\n if (!loose) loose = next;\n }\n\n if (loose) {\n list.loose = true;\n } // Check for task list items\n\n\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.test(item);\n ischecked = undefined;\n\n if (istask) {\n ischecked = item[1] !== ' ';\n item = item.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw: raw,\n task: istask,\n checked: ischecked,\n loose: loose,\n text: item\n });\n }\n\n return list;\n }\n };\n\n _proto.html = function html(src) {\n var cap = this.rules.block.html.exec(src);\n\n if (cap) {\n return {\n type: this.options.sanitize ? 'paragraph' : 'html',\n raw: cap[0],\n pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]) : cap[0]\n };\n }\n };\n\n _proto.def = function def(src) {\n var cap = this.rules.block.def.exec(src);\n\n if (cap) {\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n var tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n return {\n type: 'def',\n tag: tag,\n raw: cap[0],\n href: cap[2],\n title: cap[3]\n };\n }\n };\n\n _proto.table = function table(src) {\n var cap = this.rules.block.table.exec(src);\n\n if (cap) {\n var item = {\n type: 'table',\n header: splitCells(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n var l = item.align.length;\n var i;\n\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.cells.length;\n\n for (i = 0; i < l; i++) {\n item.cells[i] = splitCells(item.cells[i].replace(/^ *\\| *| *\\| *$/g, ''), item.header.length);\n }\n\n return item;\n }\n }\n };\n\n _proto.lheading = function lheading(src) {\n var cap = this.rules.block.lheading.exec(src);\n\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1]\n };\n }\n };\n\n _proto.paragraph = function paragraph(src) {\n var cap = this.rules.block.paragraph.exec(src);\n\n if (cap) {\n return {\n type: 'paragraph',\n raw: cap[0],\n text: cap[1].charAt(cap[1].length - 1) === '\\n' ? cap[1].slice(0, -1) : cap[1]\n };\n }\n };\n\n _proto.text = function text(src) {\n var cap = this.rules.block.text.exec(src);\n\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0]\n };\n }\n };\n\n _proto.escape = function escape(src) {\n var cap = this.rules.inline.escape.exec(src);\n\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: _escape(cap[1])\n };\n }\n };\n\n _proto.tag = function tag(src, inLink, inRawBlock) {\n var cap = this.rules.inline.tag.exec(src);\n\n if (cap) {\n if (!inLink && /^/i.test(cap[0])) {\n inLink = false;\n }\n\n if (!inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n inRawBlock = true;\n } else if (inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize ? 'text' : 'html',\n raw: cap[0],\n inLink: inLink,\n inRawBlock: inRawBlock,\n text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]) : cap[0]\n };\n }\n };\n\n _proto.link = function link(src) {\n var cap = this.rules.inline.link.exec(src);\n\n if (cap) {\n var trimmedUrl = cap[2].trim();\n\n if (!this.options.pedantic && /^$/.test(trimmedUrl)) {\n return;\n } // ending angle bracket cannot be escaped\n\n\n var rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n var lastParenIndex = findClosingBracket(cap[2], '()');\n\n if (lastParenIndex > -1) {\n var start = cap[0].indexOf('!') === 0 ? 5 : 4;\n var linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n\n var href = cap[2];\n var title = '';\n\n if (this.options.pedantic) {\n // split pedantic href and title\n var link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n\n if (/^$/.test(trimmedUrl)) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0]);\n }\n };\n\n _proto.reflink = function reflink(src, links) {\n var cap;\n\n if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {\n var link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n\n if (!link || !link.href) {\n var text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text: text\n };\n }\n\n return outputLink(cap, link, cap[0]);\n }\n };\n\n _proto.emStrong = function emStrong(src, maskedSrc, prevChar) {\n if (prevChar === void 0) {\n prevChar = '';\n }\n\n var match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return; // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n\n if (match[3] && prevChar.match(/(?:[0-9A-Za-z\\xAA\\xB2\\xB3\\xB5\\xB9\\xBA\\xBC-\\xBE\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u0660-\\u0669\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08C7\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0966-\\u096F\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09F9\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AEF\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B6F\\u0B71-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0BE6-\\u0BF2\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D58-\\u0D61\\u0D66-\\u0D78\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DE6-\\u0DEF\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F20-\\u0F33\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F-\\u1049\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u1090-\\u1099\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B50-\\u1B59\\u1B83-\\u1BA0\\u1BAE-\\u1BE5\\u1C00-\\u1C23\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2070\\u2071\\u2074-\\u2079\\u207F-\\u2089\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2150-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2CFD\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3192-\\u3195\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\u3400-\\u4DBF\\u4E00-\\u9FFC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7BF\\uA7C2-\\uA7CA\\uA7F5-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA830-\\uA835\\uA840-\\uA873\\uA882-\\uA8B3\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA900-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF-\\uA9D9\\uA9E0-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE1-\\uDEFB\\uDF00-\\uDF23\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC58-\\uDC76\\uDC79-\\uDC9E\\uDCA7-\\uDCAF\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDCFB-\\uDD1B\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBC-\\uDDCF\\uDDD2-\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE40-\\uDE48\\uDE60-\\uDE7E\\uDE80-\\uDE9F\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDEEB-\\uDEEF\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF58-\\uDF72\\uDF78-\\uDF91\\uDFA9-\\uDFAF]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDCFA-\\uDD23\\uDD30-\\uDD39\\uDE60-\\uDE7E\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF27\\uDF30-\\uDF45\\uDF51-\\uDF54\\uDFB0-\\uDFCB\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC52-\\uDC6F\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD03-\\uDD26\\uDD36-\\uDD3F\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDD0-\\uDDDA\\uDDDC\\uDDE1-\\uDDF4\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDEF0-\\uDEF9\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC50-\\uDC59\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEAA\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF30-\\uDF3B]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCF2\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC50-\\uDC6C\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF2\\uDFB0\\uDFC0-\\uDFD4]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF5B-\\uDF61\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE96\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82C[\\uDC00-\\uDD1E\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD834[\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDEC0-\\uDEEB\\uDEF0-\\uDEF9]|\\uD83A[\\uDC00-\\uDCC4\\uDCC7-\\uDCCF\\uDD00-\\uDD43\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83C[\\uDD00-\\uDD0C]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDD\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])/)) return;\n var nextChar = match[1] || match[2] || '';\n\n if (!nextChar || nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar))) {\n var lLength = match[0].length - 1;\n var rDelim,\n rLength,\n delimTotal = lLength,\n midDelimTotal = 0;\n var endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0; // Clip maskedSrc to same section of string as src (move to lexer?)\n\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) {\n // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) {\n // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal); // Create `em` if smallest delimiter has odd char count. *a***\n\n if (Math.min(lLength, rLength) % 2) {\n return {\n type: 'em',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text: src.slice(1, lLength + match.index + rLength)\n };\n } // Create 'strong' if smallest delimiter has even char count. **a***\n\n\n return {\n type: 'strong',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text: src.slice(2, lLength + match.index + rLength - 1)\n };\n }\n }\n };\n\n _proto.codespan = function codespan(src) {\n var cap = this.rules.inline.code.exec(src);\n\n if (cap) {\n var text = cap[2].replace(/\\n/g, ' ');\n var hasNonSpaceChars = /[^ ]/.test(text);\n var hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n\n text = _escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text: text\n };\n }\n };\n\n _proto.br = function br(src) {\n var cap = this.rules.inline.br.exec(src);\n\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n };\n\n _proto.del = function del(src) {\n var cap = this.rules.inline.del.exec(src);\n\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2]\n };\n }\n };\n\n _proto.autolink = function autolink(src, mangle) {\n var cap = this.rules.inline.autolink.exec(src);\n\n if (cap) {\n var text, href;\n\n if (cap[2] === '@') {\n text = _escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = _escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n\n _proto.url = function url(src, mangle) {\n var cap;\n\n if (cap = this.rules.inline.url.exec(src)) {\n var text, href;\n\n if (cap[2] === '@') {\n text = _escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n var prevCapZero;\n\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n\n text = _escape(cap[0]);\n\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n\n _proto.inlineText = function inlineText(src, inRawBlock, smartypants) {\n var cap = this.rules.inline.text.exec(src);\n\n if (cap) {\n var text;\n\n if (inRawBlock) {\n text = this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]) : cap[0];\n } else {\n text = _escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n\n return {\n type: 'text',\n raw: cap[0],\n text: text\n };\n }\n };\n\n return Tokenizer;\n }();\n\n var noopTest = helpers.noopTest,\n edit = helpers.edit,\n merge$1 = helpers.merge;\n /**\n * Block-Level Grammar\n */\n\n var block$1 = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*\\n)|~{3,})([^\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?:\\n+|$)|$)/,\n hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3})(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?! {0,3}bull )\\n*|\\s*$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *\\n? *]+)>?(?:(?: +\\n? *| *\\n *)(title))? *(?:\\n+|$)/,\n nptable: noopTest,\n table: noopTest,\n lheading: /^([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n };\n block$1._label = /(?!\\s*\\])(?:\\\\[\\[\\]]|[^\\[\\]])+/;\n block$1._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\n block$1.def = edit(block$1.def).replace('label', block$1._label).replace('title', block$1._title).getRegex();\n block$1.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\n block$1.item = /^( *)(bull) ?[^\\n]*(?:\\n(?! *bull ?)[^\\n]*)*/;\n block$1.item = edit(block$1.item, 'gm').replace(/bull/g, block$1.bullet).getRegex();\n block$1.listItemStart = edit(/^( *)(bull) */).replace('bull', block$1.bullet).getRegex();\n block$1.list = edit(block$1.list).replace(/bull/g, block$1.bullet).replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))').replace('def', '\\\\n+(?=' + block$1.def.source + ')').getRegex();\n block$1._tag = 'address|article|aside|base|basefont|blockquote|body|caption' + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr' + '|track|ul';\n block$1._comment = /|$)/;\n block$1.html = edit(block$1.html, 'i').replace('comment', block$1._comment).replace('tag', block$1._tag).replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex();\n block$1.paragraph = edit(block$1._paragraph).replace('hr', block$1.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|!--)').replace('tag', block$1._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n block$1.blockquote = edit(block$1.blockquote).replace('paragraph', block$1.paragraph).getRegex();\n /**\n * Normal Block Grammar\n */\n\n block$1.normal = merge$1({}, block$1);\n /**\n * GFM Block Grammar\n */\n\n block$1.gfm = merge$1({}, block$1.normal, {\n nptable: '^ *([^|\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}([-:]+ *\\\\|[-| :]*)' // Align\n + '(?:\\\\n((?:(?!\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)',\n // Cells\n table: '^ *\\\\|(.+)\\\\n' // Header\n + ' {0,3}\\\\|?( *[-:]+[-| :]*)' // Align\n + '(?:\\\\n *((?:(?!\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n\n });\n block$1.gfm.nptable = edit(block$1.gfm.nptable).replace('hr', block$1.hr).replace('heading', ' {0,3}#{1,6} ').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|!--)').replace('tag', block$1._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n block$1.gfm.table = edit(block$1.gfm.table).replace('hr', block$1.hr).replace('heading', ' {0,3}#{1,6} ').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|!--)').replace('tag', block$1._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n /**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\n block$1.pedantic = merge$1({}, block$1.normal, {\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)' + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))').replace('comment', block$1._comment).replace(/tag/g, '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b').getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n // fences not supported\n paragraph: edit(block$1.normal._paragraph).replace('hr', block$1.hr).replace('heading', ' *#{1,6} *[^\\n]').replace('lheading', block$1.lheading).replace('blockquote', ' {0,3}>').replace('|fences', '').replace('|list', '').replace('|html', '').getRegex()\n });\n /**\n * Inline-Level Grammar\n */\n\n var inline$1 = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment' + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^',\n // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(?!\\s*\\])((?:\\\\[\\[\\]]?|[^\\[\\]\\\\])+)\\]/,\n nolink: /^!?\\[(?!\\s*\\])((?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]|[^\\[\\]])*)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // () Skip other delimiter (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a\n rDelimAst: /\\_\\_[^_*]*?\\*[^_*]*?\\_\\_|[punct_](\\*+)(?=[\\s]|$)|[^punct*_\\s](\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|[^punct*_\\s](\\*+)(?=[^punct*_\\s])/,\n rDelimUnd: /\\*\\*[^_*]*?\\_[^_*]*?\\*\\*|[punct*](\\_+)(?=[\\s]|$)|[^punct*_\\s](\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/ // ^- Not allowed for _\n\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\?@\\\\[\\\\]`^{|}~';\n inline$1.punctuation = edit(inline$1.punctuation).replace(/punctuation/g, inline$1._punctuation).getRegex(); // sequences em should skip over [title](link), `code`, \n\n inline$1.blockSkip = /\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>/g;\n inline$1.escapedEmSt = /\\\\\\*|\\\\_/g;\n inline$1._comment = edit(block$1._comment).replace('(?:-->|$)', '-->').getRegex();\n inline$1.emStrong.lDelim = edit(inline$1.emStrong.lDelim).replace(/punct/g, inline$1._punctuation).getRegex();\n inline$1.emStrong.rDelimAst = edit(inline$1.emStrong.rDelimAst, 'g').replace(/punct/g, inline$1._punctuation).getRegex();\n inline$1.emStrong.rDelimUnd = edit(inline$1.emStrong.rDelimUnd, 'g').replace(/punct/g, inline$1._punctuation).getRegex();\n inline$1._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n inline$1._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\n inline$1._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\n inline$1.autolink = edit(inline$1.autolink).replace('scheme', inline$1._scheme).replace('email', inline$1._email).getRegex();\n inline$1._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n inline$1.tag = edit(inline$1.tag).replace('comment', inline$1._comment).replace('attribute', inline$1._attribute).getRegex();\n inline$1._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\n inline$1._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\n inline$1._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n inline$1.link = edit(inline$1.link).replace('label', inline$1._label).replace('href', inline$1._href).replace('title', inline$1._title).getRegex();\n inline$1.reflink = edit(inline$1.reflink).replace('label', inline$1._label).getRegex();\n inline$1.reflinkSearch = edit(inline$1.reflinkSearch, 'g').replace('reflink', inline$1.reflink).replace('nolink', inline$1.nolink).getRegex();\n /**\n * Normal Inline Grammar\n */\n\n inline$1.normal = merge$1({}, inline$1);\n /**\n * Pedantic Inline Grammar\n */\n\n inline$1.pedantic = merge$1({}, inline$1.normal, {\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/).replace('label', inline$1._label).getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace('label', inline$1._label).getRegex()\n });\n /**\n * GFM Inline Grammar\n */\n\n inline$1.gfm = merge$1({}, inline$1.normal, {\n escape: edit(inline$1.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n\n out += '&#' + ch + ';';\n }\n\n return out;\n }\n /**\n * Block Lexer\n */\n\n\n var Lexer_1 = /*#__PURE__*/function () {\n function Lexer(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || defaults$3;\n this.options.tokenizer = this.options.tokenizer || new Tokenizer$1();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n var rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n\n\n /**\n * Static Lex Method\n */\n Lexer.lex = function lex(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n ;\n\n Lexer.lexInline = function lexInline(src, options) {\n var lexer = new Lexer(options);\n return lexer.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n ;\n\n var _proto = Lexer.prototype;\n\n _proto.lex = function lex(src) {\n src = src.replace(/\\r\\n|\\r/g, '\\n').replace(/\\t/g, ' ');\n this.blockTokens(src, this.tokens, true);\n this.inline(this.tokens);\n return this.tokens;\n }\n /**\n * Lexing\n */\n ;\n\n _proto.blockTokens = function blockTokens(src, tokens, top) {\n if (tokens === void 0) {\n tokens = [];\n }\n\n if (top === void 0) {\n top = true;\n }\n\n if (this.options.pedantic) {\n src = src.replace(/^ +$/gm, '');\n }\n\n var token, i, l, lastToken;\n\n while (src) {\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n\n if (token.type) {\n tokens.push(token);\n }\n\n continue;\n } // code\n\n\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1]; // An indented code block cannot interrupt a paragraph.\n\n if (lastToken && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // fences\n\n\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // heading\n\n\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // table no leading pipe (gfm)\n\n\n if (token = this.tokenizer.nptable(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // hr\n\n\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // blockquote\n\n\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n token.tokens = this.blockTokens(token.text, [], top);\n tokens.push(token);\n continue;\n } // list\n\n\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n l = token.items.length;\n\n for (i = 0; i < l; i++) {\n token.items[i].tokens = this.blockTokens(token.items[i].text, [], false);\n }\n\n tokens.push(token);\n continue;\n } // html\n\n\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // def\n\n\n if (top && (token = this.tokenizer.def(src))) {\n src = src.substring(token.raw.length);\n\n if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n\n continue;\n } // table (gfm)\n\n\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // lheading\n\n\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // top-level paragraph\n\n\n if (top && (token = this.tokenizer.paragraph(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // text\n\n\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n }\n\n if (src) {\n var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n };\n\n _proto.inline = function inline(tokens) {\n var i, j, k, l2, row, token;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n switch (token.type) {\n case 'paragraph':\n case 'text':\n case 'heading':\n {\n token.tokens = [];\n this.inlineTokens(token.text, token.tokens);\n break;\n }\n\n case 'table':\n {\n token.tokens = {\n header: [],\n cells: []\n }; // header\n\n l2 = token.header.length;\n\n for (j = 0; j < l2; j++) {\n token.tokens.header[j] = [];\n this.inlineTokens(token.header[j], token.tokens.header[j]);\n } // cells\n\n\n l2 = token.cells.length;\n\n for (j = 0; j < l2; j++) {\n row = token.cells[j];\n token.tokens.cells[j] = [];\n\n for (k = 0; k < row.length; k++) {\n token.tokens.cells[j][k] = [];\n this.inlineTokens(row[k], token.tokens.cells[j][k]);\n }\n }\n\n break;\n }\n\n case 'blockquote':\n {\n this.inline(token.tokens);\n break;\n }\n\n case 'list':\n {\n l2 = token.items.length;\n\n for (j = 0; j < l2; j++) {\n this.inline(token.items[j].tokens);\n }\n\n break;\n }\n }\n }\n\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n ;\n\n _proto.inlineTokens = function inlineTokens(src, tokens, inLink, inRawBlock) {\n if (tokens === void 0) {\n tokens = [];\n }\n\n if (inLink === void 0) {\n inLink = false;\n }\n\n if (inRawBlock === void 0) {\n inRawBlock = false;\n }\n\n var token, lastToken; // String with links masked to avoid interference with em and strong\n\n var maskedSrc = src;\n var match;\n var keepPrevChar, prevChar; // Mask out reflinks\n\n if (this.tokens.links) {\n var links = Object.keys(this.tokens.links);\n\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n } // Mask out other blocks\n\n\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n } // Mask out escaped em & strong delimiters\n\n\n while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n\n keepPrevChar = false; // escape\n\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // tag\n\n\n if (token = this.tokenizer.tag(src, inLink, inRawBlock)) {\n src = src.substring(token.raw.length);\n inLink = token.inLink;\n inRawBlock = token.inRawBlock;\n var _lastToken = tokens[tokens.length - 1];\n\n if (_lastToken && token.type === 'text' && _lastToken.type === 'text') {\n _lastToken.raw += token.raw;\n _lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // link\n\n\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n\n if (token.type === 'link') {\n token.tokens = this.inlineTokens(token.text, [], true, inRawBlock);\n }\n\n tokens.push(token);\n continue;\n } // reflink, nolink\n\n\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n var _lastToken2 = tokens[tokens.length - 1];\n\n if (token.type === 'link') {\n token.tokens = this.inlineTokens(token.text, [], true, inRawBlock);\n tokens.push(token);\n } else if (_lastToken2 && token.type === 'text' && _lastToken2.type === 'text') {\n _lastToken2.raw += token.raw;\n _lastToken2.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n } // em & strong\n\n\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n token.tokens = this.inlineTokens(token.text, [], inLink, inRawBlock);\n tokens.push(token);\n continue;\n } // code\n\n\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // br\n\n\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // del (gfm)\n\n\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n token.tokens = this.inlineTokens(token.text, [], inLink, inRawBlock);\n tokens.push(token);\n continue;\n } // autolink\n\n\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // url (gfm)\n\n\n if (!inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // text\n\n\n if (token = this.tokenizer.inlineText(src, inRawBlock, smartypants)) {\n src = src.substring(token.raw.length);\n\n if (token.raw.slice(-1) !== '_') {\n // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n\n continue;\n }\n\n if (src) {\n var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n };\n\n _createClass(Lexer, null, [{\n key: \"rules\",\n get: function get() {\n return {\n block: block,\n inline: inline\n };\n }\n }]);\n\n return Lexer;\n }();\n\n var defaults$2 = defaults$5.exports.defaults;\n var cleanUrl = helpers.cleanUrl,\n escape$1 = helpers.escape;\n /**\n * Renderer\n */\n\n var Renderer_1 = /*#__PURE__*/function () {\n function Renderer(options) {\n this.options = options || defaults$2;\n }\n\n var _proto = Renderer.prototype;\n\n _proto.code = function code(_code, infostring, escaped) {\n var lang = (infostring || '').match(/\\S*/)[0];\n\n if (this.options.highlight) {\n var out = this.options.highlight(_code, lang);\n\n if (out != null && out !== _code) {\n escaped = true;\n _code = out;\n }\n }\n\n _code = _code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    ' + (escaped ? _code : escape$1(_code, true)) + '
    \\n';\n }\n\n return '
    ' + (escaped ? _code : escape$1(_code, true)) + '
    \\n';\n };\n\n _proto.blockquote = function blockquote(quote) {\n return '
    \\n' + quote + '
    \\n';\n };\n\n _proto.html = function html(_html) {\n return _html;\n };\n\n _proto.heading = function heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n return '' + text + '\\n';\n } // ignore IDs\n\n\n return '' + text + '\\n';\n };\n\n _proto.hr = function hr() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n };\n\n _proto.list = function list(body, ordered, start) {\n var type = ordered ? 'ol' : 'ul',\n startatt = ordered && start !== 1 ? ' start=\"' + start + '\"' : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n };\n\n _proto.listitem = function listitem(text) {\n return '
  • ' + text + '
  • \\n';\n };\n\n _proto.checkbox = function checkbox(checked) {\n return ' ';\n };\n\n _proto.paragraph = function paragraph(text) {\n return '

    ' + text + '

    \\n';\n };\n\n _proto.table = function table(header, body) {\n if (body) body = '' + body + '';\n return '\\n' + '\\n' + header + '\\n' + body + '
    \\n';\n };\n\n _proto.tablerow = function tablerow(content) {\n return '\\n' + content + '\\n';\n };\n\n _proto.tablecell = function tablecell(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align ? '<' + type + ' align=\"' + flags.align + '\">' : '<' + type + '>';\n return tag + content + '\\n';\n } // span level renderer\n ;\n\n _proto.strong = function strong(text) {\n return '' + text + '';\n };\n\n _proto.em = function em(text) {\n return '' + text + '';\n };\n\n _proto.codespan = function codespan(text) {\n return '' + text + '';\n };\n\n _proto.br = function br() {\n return this.options.xhtml ? '
    ' : '
    ';\n };\n\n _proto.del = function del(text) {\n return '' + text + '';\n };\n\n _proto.link = function link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n\n if (href === null) {\n return text;\n }\n\n var out = '
    ';\n return out;\n };\n\n _proto.image = function image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n\n if (href === null) {\n return text;\n }\n\n var out = '\"'' : '>';\n return out;\n };\n\n _proto.text = function text(_text) {\n return _text;\n };\n\n return Renderer;\n }();\n\n /**\n * TextRenderer\n * returns only the textual part of the token\n */\n\n var TextRenderer_1 = /*#__PURE__*/function () {\n function TextRenderer() {}\n\n var _proto = TextRenderer.prototype;\n\n // no need for block level renderers\n _proto.strong = function strong(text) {\n return text;\n };\n\n _proto.em = function em(text) {\n return text;\n };\n\n _proto.codespan = function codespan(text) {\n return text;\n };\n\n _proto.del = function del(text) {\n return text;\n };\n\n _proto.html = function html(text) {\n return text;\n };\n\n _proto.text = function text(_text) {\n return _text;\n };\n\n _proto.link = function link(href, title, text) {\n return '' + text;\n };\n\n _proto.image = function image(href, title, text) {\n return '' + text;\n };\n\n _proto.br = function br() {\n return '';\n };\n\n return TextRenderer;\n }();\n\n /**\n * Slugger generates header id\n */\n\n var Slugger_1 = /*#__PURE__*/function () {\n function Slugger() {\n this.seen = {};\n }\n\n var _proto = Slugger.prototype;\n\n _proto.serialize = function serialize(value) {\n return value.toLowerCase().trim() // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '') // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '').replace(/\\s/g, '-');\n }\n /**\n * Finds the next safe (unique) slug to use\n */\n ;\n\n _proto.getNextSafeSlug = function getNextSafeSlug(originalSlug, isDryRun) {\n var slug = originalSlug;\n var occurenceAccumulator = 0;\n\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n\n return slug;\n }\n /**\n * Convert string to unique id\n * @param {object} options\n * @param {boolean} options.dryrun Generates the next unique slug without updating the internal accumulator.\n */\n ;\n\n _proto.slug = function slug(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n var slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n };\n\n return Slugger;\n }();\n\n var Renderer$1 = Renderer_1;\n var TextRenderer$1 = TextRenderer_1;\n var Slugger$1 = Slugger_1;\n var defaults$1 = defaults$5.exports.defaults;\n var unescape = helpers.unescape;\n /**\n * Parsing & Compiling\n */\n\n var Parser_1 = /*#__PURE__*/function () {\n function Parser(options) {\n this.options = options || defaults$1;\n this.options.renderer = this.options.renderer || new Renderer$1();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new TextRenderer$1();\n this.slugger = new Slugger$1();\n }\n /**\n * Static Parse Method\n */\n\n\n Parser.parse = function parse(tokens, options) {\n var parser = new Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n ;\n\n Parser.parseInline = function parseInline(tokens, options) {\n var parser = new Parser(options);\n return parser.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n ;\n\n var _proto = Parser.prototype;\n\n _proto.parse = function parse(tokens, top) {\n if (top === void 0) {\n top = true;\n }\n\n var out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n switch (token.type) {\n case 'space':\n {\n continue;\n }\n\n case 'hr':\n {\n out += this.renderer.hr();\n continue;\n }\n\n case 'heading':\n {\n out += this.renderer.heading(this.parseInline(token.tokens), token.depth, unescape(this.parseInline(token.tokens, this.textRenderer)), this.slugger);\n continue;\n }\n\n case 'code':\n {\n out += this.renderer.code(token.text, token.lang, token.escaped);\n continue;\n }\n\n case 'table':\n {\n header = ''; // header\n\n cell = '';\n l2 = token.header.length;\n\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(this.parseInline(token.tokens.header[j]), {\n header: true,\n align: token.align[j]\n });\n }\n\n header += this.renderer.tablerow(cell);\n body = '';\n l2 = token.cells.length;\n\n for (j = 0; j < l2; j++) {\n row = token.tokens.cells[j];\n cell = '';\n l3 = row.length;\n\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k]), {\n header: false,\n align: token.align[k]\n });\n }\n\n body += this.renderer.tablerow(cell);\n }\n\n out += this.renderer.table(header, body);\n continue;\n }\n\n case 'blockquote':\n {\n body = this.parse(token.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n\n case 'list':\n {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n body = '';\n\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n itemBody = '';\n\n if (item.task) {\n checkbox = this.renderer.checkbox(checked);\n\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'text') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n\n case 'html':\n {\n // TODO parse inline content if parameter markdown=1\n out += this.renderer.html(token.text);\n continue;\n }\n\n case 'paragraph':\n {\n out += this.renderer.paragraph(this.parseInline(token.tokens));\n continue;\n }\n\n case 'text':\n {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i];\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n\n default:\n {\n var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n ;\n\n _proto.parseInline = function parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n var out = '',\n i,\n token;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n switch (token.type) {\n case 'escape':\n {\n out += renderer.text(token.text);\n break;\n }\n\n case 'html':\n {\n out += renderer.html(token.text);\n break;\n }\n\n case 'link':\n {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'image':\n {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n\n case 'strong':\n {\n out += renderer.strong(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'em':\n {\n out += renderer.em(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'codespan':\n {\n out += renderer.codespan(token.text);\n break;\n }\n\n case 'br':\n {\n out += renderer.br();\n break;\n }\n\n case 'del':\n {\n out += renderer.del(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'text':\n {\n out += renderer.text(token.text);\n break;\n }\n\n default:\n {\n var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n };\n\n return Parser;\n }();\n\n var Lexer = Lexer_1;\n var Parser = Parser_1;\n var Tokenizer = Tokenizer_1;\n var Renderer = Renderer_1;\n var TextRenderer = TextRenderer_1;\n var Slugger = Slugger_1;\n var merge = helpers.merge,\n checkSanitizeDeprecation = helpers.checkSanitizeDeprecation,\n escape = helpers.escape;\n var getDefaults = defaults$5.exports.getDefaults,\n changeDefaults = defaults$5.exports.changeDefaults,\n defaults = defaults$5.exports.defaults;\n /**\n * Marked\n */\n\n function marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (typeof opt === 'function') {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n if (callback) {\n var highlight = opt.highlight;\n var tokens;\n\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n var done = function done(err) {\n var out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n }\n\n opt.highlight = highlight;\n return err ? callback(err) : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n if (!tokens.length) return done();\n var pending = 0;\n marked.walkTokens(tokens, function (token) {\n if (token.type === 'code') {\n pending++;\n setTimeout(function () {\n highlight(token.text, token.lang, function (err, code) {\n if (err) {\n return done(err);\n }\n\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n try {\n var _tokens = Lexer.lex(src, opt);\n\n if (opt.walkTokens) {\n marked.walkTokens(_tokens, opt.walkTokens);\n }\n\n return Parser.parse(_tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (opt.silent) {\n return '

    An error occurred:

    ' + escape(e.message + '', true) + '
    ';\n }\n\n throw e;\n }\n }\n /**\n * Options\n */\n\n\n marked.options = marked.setOptions = function (opt) {\n merge(marked.defaults, opt);\n changeDefaults(marked.defaults);\n return marked;\n };\n\n marked.getDefaults = getDefaults;\n marked.defaults = defaults;\n /**\n * Use Extension\n */\n\n marked.use = function (extension) {\n var opts = merge({}, extension);\n\n if (extension.renderer) {\n (function () {\n var renderer = marked.defaults.renderer || new Renderer();\n\n var _loop = function _loop(prop) {\n var prevRenderer = renderer[prop];\n\n renderer[prop] = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var ret = extension.renderer[prop].apply(renderer, args);\n\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n\n return ret;\n };\n };\n\n for (var prop in extension.renderer) {\n _loop(prop);\n }\n\n opts.renderer = renderer;\n })();\n }\n\n if (extension.tokenizer) {\n (function () {\n var tokenizer = marked.defaults.tokenizer || new Tokenizer();\n\n var _loop2 = function _loop2(prop) {\n var prevTokenizer = tokenizer[prop];\n\n tokenizer[prop] = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var ret = extension.tokenizer[prop].apply(tokenizer, args);\n\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n\n return ret;\n };\n };\n\n for (var prop in extension.tokenizer) {\n _loop2(prop);\n }\n\n opts.tokenizer = tokenizer;\n })();\n }\n\n if (extension.walkTokens) {\n var walkTokens = marked.defaults.walkTokens;\n\n opts.walkTokens = function (token) {\n extension.walkTokens(token);\n\n if (walkTokens) {\n walkTokens(token);\n }\n };\n }\n\n marked.setOptions(opts);\n };\n /**\n * Run callback for every token\n */\n\n\n marked.walkTokens = function (tokens, callback) {\n for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {\n var token = _step.value;\n callback(token);\n\n switch (token.type) {\n case 'table':\n {\n for (var _iterator2 = _createForOfIteratorHelperLoose(token.tokens.header), _step2; !(_step2 = _iterator2()).done;) {\n var cell = _step2.value;\n marked.walkTokens(cell, callback);\n }\n\n for (var _iterator3 = _createForOfIteratorHelperLoose(token.tokens.cells), _step3; !(_step3 = _iterator3()).done;) {\n var row = _step3.value;\n\n for (var _iterator4 = _createForOfIteratorHelperLoose(row), _step4; !(_step4 = _iterator4()).done;) {\n var _cell = _step4.value;\n marked.walkTokens(_cell, callback);\n }\n }\n\n break;\n }\n\n case 'list':\n {\n marked.walkTokens(token.items, callback);\n break;\n }\n\n default:\n {\n if (token.tokens) {\n marked.walkTokens(token.tokens, callback);\n }\n }\n }\n }\n };\n /**\n * Parse Inline\n */\n\n\n marked.parseInline = function (src, opt) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked.parseInline(): input parameter is undefined or null');\n }\n\n if (typeof src !== 'string') {\n throw new Error('marked.parseInline(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n try {\n var tokens = Lexer.lexInline(src, opt);\n\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n\n return Parser.parseInline(tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (opt.silent) {\n return '

    An error occurred:

    ' + escape(e.message + '', true) + '
    ';\n }\n\n throw e;\n }\n };\n /**\n * Expose\n */\n\n\n marked.Parser = Parser;\n marked.parser = Parser.parse;\n marked.Renderer = Renderer;\n marked.TextRenderer = TextRenderer;\n marked.Lexer = Lexer;\n marked.lexer = Lexer.lex;\n marked.Tokenizer = Tokenizer;\n marked.Slugger = Slugger;\n marked.parse = marked;\n var marked_1 = marked;\n\n return marked_1;\n\n})));\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"SK\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SK\"] = factory();\n\telse\n\t\troot[\"SK\"] = root[\"SK\"] || {}, root[\"SK\"][\"stylekit\"] = factory();\n})(self, function() {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 754:\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"SKAlert\": () => (/* reexport */ SKAlert)\n});\n\n;// CONCATENATED MODULE: ./src/js/Alert.js\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nclass SKAlert {\n /*\n buttons: [{text, style, action}]\n */\n constructor({\n title,\n text,\n buttons\n }) {\n _defineProperty(this, \"keyupListener\", event => {\n if (event.key === 'Enter') {\n let primaryButton = this.primaryButton();\n primaryButton.action && primaryButton.action();\n this.dismiss();\n }\n });\n\n this.title = title;\n this.text = text;\n this.buttons = buttons;\n }\n\n buttonsString() {\n const genButton = function (buttonDesc, index) {\n return `\n \n `;\n };\n\n let buttonString = this.buttons.map(function (buttonDesc, index) {\n return genButton(buttonDesc, index);\n }).join('');\n let str = `\n
    \n ${buttonString}\n
    \n `;\n return str;\n }\n\n templateString() {\n let buttonsTemplate;\n let panelStyle;\n\n if (this.buttons) {\n buttonsTemplate = `\n
    \n ${this.buttonsString()}\n
    \n `;\n panelStyle = '';\n } else {\n buttonsTemplate = '';\n panelStyle = 'style=\"padding-bottom: 8px\"';\n }\n\n let titleTemplate = this.title ? `
    ${this.title}
    ` : '';\n let messageTemplate = this.text ? `

    ${this.text}

    ` : '';\n let template = `\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n ${titleTemplate}\n\n
    \n ${messageTemplate}\n
    \n\n ${buttonsTemplate}\n
    \n
    \n
    \n
    \n
    \n
    \n `;\n return template;\n }\n\n dismiss() {\n this.onElement.removeChild(this.element);\n document.removeEventListener('keyup', this.keyupListener);\n }\n\n primaryButton() {\n let primary = this.buttons.find(button => button.primary === true);\n\n if (!primary) {\n primary = this.buttons[this.buttons.length - 1];\n }\n\n return primary;\n }\n\n present({\n onElement\n } = {}) {\n if (!onElement) {\n onElement = document.body;\n }\n\n this.onElement = onElement;\n this.element = document.createElement('div');\n this.element.className = 'sn-component';\n this.element.innerHTML = this.templateString().trim();\n\n if (this.buttons) {\n document.addEventListener('keyup', this.keyupListener);\n this.buttons.forEach((buttonDesc, index) => {\n let buttonElem = this.element.querySelector(`#button-${index}`);\n\n buttonElem.onclick = () => {\n buttonDesc.action && buttonDesc.action();\n this.dismiss();\n };\n });\n }\n\n onElement.appendChild(this.element);\n }\n\n}\n;// CONCATENATED MODULE: ./src/stylekit.js\n\n\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = __webpack_modules__;\n/******/ \t\n/******/ \t// the startup function\n/******/ \t// It's empty as some runtime module handles the default behavior\n/******/ \t__webpack_require__.x = x => {};\n/************************************************************************/\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/jsonp chunk loading */\n/******/ \t(() => {\n/******/ \t\t// no baseURI\n/******/ \t\t\n/******/ \t\t// object to store loaded and loading chunks\n/******/ \t\t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n/******/ \t\t// Promise = chunk loading, 0 = chunk loaded\n/******/ \t\tvar installedChunks = {\n/******/ \t\t\t388: 0\n/******/ \t\t};\n/******/ \t\t\n/******/ \t\tvar deferredModules = [\n/******/ \t\t\t[754]\n/******/ \t\t];\n/******/ \t\t// no chunk on demand loading\n/******/ \t\t\n/******/ \t\t// no prefetching\n/******/ \t\t\n/******/ \t\t// no preloaded\n/******/ \t\t\n/******/ \t\t// no HMR\n/******/ \t\t\n/******/ \t\t// no HMR manifest\n/******/ \t\t\n/******/ \t\tvar checkDeferredModules = x => {};\n/******/ \t\t\n/******/ \t\t// install a JSONP callback for chunk loading\n/******/ \t\tvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n/******/ \t\t\tvar [chunkIds, moreModules, runtime, executeModules] = data;\n/******/ \t\t\t// add \"moreModules\" to the modules object,\n/******/ \t\t\t// then flag all \"chunkIds\" as loaded and fire callback\n/******/ \t\t\tvar moduleId, chunkId, i = 0, resolves = [];\n/******/ \t\t\tfor(;i < chunkIds.length; i++) {\n/******/ \t\t\t\tchunkId = chunkIds[i];\n/******/ \t\t\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n/******/ \t\t\t\t\tresolves.push(installedChunks[chunkId][0]);\n/******/ \t\t\t\t}\n/******/ \t\t\t\tinstalledChunks[chunkId] = 0;\n/******/ \t\t\t}\n/******/ \t\t\tfor(moduleId in moreModules) {\n/******/ \t\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n/******/ \t\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t\tif(runtime) runtime(__webpack_require__);\n/******/ \t\t\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n/******/ \t\t\twhile(resolves.length) {\n/******/ \t\t\t\tresolves.shift()();\n/******/ \t\t\t}\n/******/ \t\t\n/******/ \t\t\t// add entry modules from loaded chunk to deferred list\n/******/ \t\t\tif(executeModules) deferredModules.push.apply(deferredModules, executeModules);\n/******/ \t\t\n/******/ \t\t\t// run deferred modules when all chunks ready\n/******/ \t\t\treturn checkDeferredModules();\n/******/ \t\t}\n/******/ \t\t\n/******/ \t\tvar chunkLoadingGlobal = self[\"webpackChunkSK_name_\"] = self[\"webpackChunkSK_name_\"] || [];\n/******/ \t\tchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\n/******/ \t\tchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));\n/******/ \t\t\n/******/ \t\tfunction checkDeferredModulesImpl() {\n/******/ \t\t\tvar result;\n/******/ \t\t\tfor(var i = 0; i < deferredModules.length; i++) {\n/******/ \t\t\t\tvar deferredModule = deferredModules[i];\n/******/ \t\t\t\tvar fulfilled = true;\n/******/ \t\t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n/******/ \t\t\t\t\tvar depId = deferredModule[j];\n/******/ \t\t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n/******/ \t\t\t\t}\n/******/ \t\t\t\tif(fulfilled) {\n/******/ \t\t\t\t\tdeferredModules.splice(i--, 1);\n/******/ \t\t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t\tif(deferredModules.length === 0) {\n/******/ \t\t\t\t__webpack_require__.x();\n/******/ \t\t\t\t__webpack_require__.x = x => {};\n/******/ \t\t\t}\n/******/ \t\t\treturn result;\n/******/ \t\t}\n/******/ \t\tvar startup = __webpack_require__.x;\n/******/ \t\t__webpack_require__.x = () => {\n/******/ \t\t\t// reset startup function so it can be called again when more startup code is added\n/******/ \t\t\t__webpack_require__.x = startup || (x => {});\n/******/ \t\t\treturn (checkDeferredModules = checkDeferredModulesImpl)();\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\n/******/ \t// module exports must be returned from runtime so entry inlining is disabled\n/******/ \t// run startup\n/******/ \treturn __webpack_require__.x();\n/******/ })()\n;\n});","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","document.addEventListener('DOMContentLoaded', function () {\n\n let workingNote;\n\n let componentRelay = new ComponentRelay({\n targetWindow: window,\n onReady: () => {\n document.body.classList.add(componentRelay.platform);\n document.body.classList.add(componentRelay.environment);\n }\n });\n\n let ignoreTextChange = false;\n let initialLoad = true;\n let lastValue, lastUUID, clientData;\n let renderNote = false;\n let showingUnsafeContentAlert = false;\n\n componentRelay.streamContextItem(async (note) => {\n if (showingUnsafeContentAlert) {\n return;\n }\n\n if (note.uuid !== lastUUID) {\n // Note changed, reset last values\n lastValue = null;\n initialLoad = true;\n lastUUID = note.uuid;\n clientData = note.clientData;\n }\n\n workingNote = note;\n\n // Only update UI on non-metadata updates.\n if (note.isMetadataUpdate || !window.easymde) {\n return;\n }\n\n document.getElementsByClassName('CodeMirror-code')[0].setAttribute(\n 'spellcheck',\n JSON.stringify(note.content.spellcheck)\n );\n\n const isUnsafeContent = checkIfUnsafeContent(note.content.text);\n\n if (isUnsafeContent) {\n const trustUnsafeContent = clientData['trustUnsafeContent'] ?? false;\n if (!trustUnsafeContent) {\n const result = await showUnsafeContentAlert();\n if (result) {\n setTrustUnsafeContent(workingNote);\n }\n renderNote = result;\n } else {\n renderNote = true;\n }\n } else {\n renderNote = true;\n }\n\n /**\n * If the user decides not to continue rendering the note,\n * clear the editor and disable it.\n */\n if (!renderNote) {\n window.easymde.value('');\n if (!window.easymde.isPreviewActive()) {\n window.easymde.togglePreview();\n }\n return;\n }\n\n if (note.content.text !== lastValue) {\n ignoreTextChange = true;\n window.easymde.value(note.content.text);\n ignoreTextChange = false;\n }\n\n if (initialLoad) {\n initialLoad = false;\n window.easymde.codemirror.getDoc().clearHistory();\n const mode = clientData && clientData.mode;\n\n // Set initial editor mode\n if (mode === 'preview') {\n if (!window.easymde.isPreviewActive()) {\n window.easymde.togglePreview();\n }\n } else if (mode === 'split') {\n if (!window.easymde.isSideBySideActive()) {\n window.easymde.toggleSideBySide();\n }\n // falback config\n } else if (window.easymde.isPreviewActive()) {\n window.easymde.togglePreview();\n }\n }\n });\n\n window.easymde = new EasyMDE({\n element: document.getElementById('editor'),\n autoDownloadFontAwesome: false,\n spellChecker: false,\n nativeSpellcheck: true,\n inputStyle: 'contenteditable',\n status: false,\n shortcuts: {\n toggleSideBySide: 'Cmd-Alt-P'\n },\n // Syntax highlighting is disabled until we figure out performance issue: https://github.com/sn-extensions/advanced-markdown-editor/pull/20#issuecomment-513811633\n // renderingConfig: {\n // codeSyntaxHighlighting: true\n // },\n toolbar: [\n {\n className: 'fa fa-eye',\n default: true,\n name: 'preview',\n noDisable: true,\n title: 'Toggle Preview',\n action: function () {\n window.easymde.togglePreview();\n saveMetadata();\n }\n },\n {\n className: 'fa fa-columns',\n default: true,\n name: 'side-by-side',\n noDisable: true,\n noMobile: true,\n title: 'Toggle Side by Side',\n action: function () {\n window.easymde.toggleSideBySide();\n saveMetadata();\n }\n },\n '|',\n 'heading', 'bold', 'italic', 'strikethrough',\n '|', 'quote', 'code',\n '|', 'unordered-list', 'ordered-list',\n '|', 'clean-block',\n '|', 'link', 'image',\n '|', 'table'\n ]\n });\n\n function saveMetadata() {\n if (!renderNote) {\n return;\n }\n\n const getEditorMode = () => {\n const editor = window.easymde;\n\n if (editor) {\n if (editor.isPreviewActive()) return 'preview';\n if (editor.isSideBySideActive()) return 'split';\n }\n return 'edit';\n };\n\n const note = workingNote;\n\n componentRelay.saveItemWithPresave(note, () => {\n note.clientData = {\n ...note.clientData,\n mode: getEditorMode()\n };\n });\n }\n\n // Some sort of issue on Mobile RN where this causes an exception (\".className is not defined\")\n try {\n window.easymde.toggleFullScreen();\n } catch (e) {\n console.log('Error:', e);\n }\n\n /*\n Can be set to Infinity to make sure the whole document is always rendered, and thus the browser's text search works on it. This will have bad effects on performance of big documents.\n Really bad performance on Safari. Unusable.\n */\n window.easymde.codemirror.setOption('viewportMargin', 100);\n\n window.easymde.codemirror.on('change', function () {\n const strip = (html) => {\n const tmp = document.implementation.createHTMLDocument('New').body;\n tmp.innerHTML = html;\n return tmp.textContent || tmp.innerText || '';\n };\n\n const truncateString = (string, limit = 90) => {\n if (string.length <= limit) {\n return string;\n } else {\n return string.substring(0, limit) + '...';\n }\n };\n\n if (!ignoreTextChange && renderNote) {\n if (workingNote) {\n // Be sure to capture this object as a variable, as this.note may be reassigned in `streamContextItem`, so by the time\n // you modify it in the presave block, it may not be the same object anymore, so the presave values will not be applied to\n // the right object, and it will save incorrectly.\n const note = workingNote;\n\n componentRelay.saveItemWithPresave(note, () => {\n lastValue = window.easymde.value();\n\n let html = window.easymde.options.previewRender(window.easymde.value());\n let strippedHtml = truncateString(strip(html));\n\n note.content.preview_plain = strippedHtml;\n note.content.preview_html = null;\n note.content.text = lastValue;\n });\n\n }\n }\n });\n\n function setTrustUnsafeContent(note) {\n componentRelay.saveItemWithPresave(note, () => {\n note.clientData = {\n ...note.clientData,\n trustUnsafeContent: true\n };\n });\n }\n\n /**\n * Checks if a markdown text is safe to render.\n */\n function checkIfUnsafeContent(markdownText) {\n const marked = require('marked');\n const DOMPurify = require('dompurify');\n\n /**\n * Using marked to get the resulting HTML string from the markdown text.\n */\n const renderedHtml = marked(markdownText, {\n headerIds: false,\n smartypants: true\n });\n\n const sanitizedHtml = DOMPurify.sanitize(renderedHtml, {\n /**\n * We don't need script or style tags.\n */\n FORBID_TAGS: ['script', 'style'],\n /**\n * XSS payloads can be injected via these attributes.\n */\n FORBID_ATTR: [\n 'onerror',\n 'onload',\n 'onunload',\n 'onclick',\n 'ondblclick',\n 'onmousedown',\n 'onmouseup',\n 'onmouseover',\n 'onmousemove',\n 'onmouseout',\n 'onfocus',\n 'onblur',\n 'onkeypress',\n 'onkeydown',\n 'onkeyup',\n 'onsubmit',\n 'onreset',\n 'onselect',\n 'onchange'\n ]\n });\n\n /**\n * Create documents from both the sanitized string and the rendered string.\n * This will allow us to compare them, and if they are not equal\n * (i.e: do not contain the same properties, attributes, inner text, etc)\n * it means something was stripped.\n */\n const renderedDom = new DOMParser().parseFromString(renderedHtml, 'text/html');\n const sanitizedDom = new DOMParser().parseFromString(sanitizedHtml, 'text/html');\n return !renderedDom.isEqualNode(sanitizedDom);\n }\n\n function showUnsafeContentAlert() {\n if (showingUnsafeContentAlert) {\n return;\n }\n\n showingUnsafeContentAlert = true;\n\n const text = 'We’ve detected that this note contains a script or code snippet which may be unsafe to execute. ' +\n 'Scripts executed in the editor have the ability to impersonate as the editor to Standard Notes. ' +\n 'Press Continue to mark this script as safe and proceed, or Cancel to avoid rendering this note.';\n\n return new Promise((resolve) => {\n const Stylekit = require('sn-stylekit');\n const alert = new Stylekit.SKAlert({\n title: null,\n text,\n buttons: [\n {\n text: 'Cancel',\n style: 'neutral',\n action: function () {\n showingUnsafeContentAlert = false;\n resolve(false);\n },\n },\n {\n text: 'Continue',\n style: 'danger',\n action: function () {\n showingUnsafeContentAlert = false;\n resolve(true);\n },\n },\n ]\n });\n alert.present();\n });\n }\n});\n"],"sourceRoot":""} \ No newline at end of file diff --git a/public/components/org.standardnotes.advanced-markdown-editor/dist/lib/component-relay.js b/public/components/org.standardnotes.advanced-markdown-editor/dist/lib/component-relay.js index 7c6a6cd12..bdd5a5369 100644 --- a/public/components/org.standardnotes.advanced-markdown-editor/dist/lib/component-relay.js +++ b/public/components/org.standardnotes.advanced-markdown-editor/dist/lib/component-relay.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("ComponentRelay",[],t):"object"==typeof exports?exports.ComponentRelay=t():e.ComponentRelay=t()}(self,(function(){return(()=>{"use strict";var e={d:(t,s)=>{for(var n in s)e.o(s,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:s[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};let s,n,i,o;var a;e.d(t,{default:()=>C}),function(e){e.SetSize="set-size",e.StreamItems="stream-items",e.StreamContextItem="stream-context-item",e.SaveItems="save-items",e.SelectItem="select-item",e.AssociateItem="associate-item",e.DeassociateItem="deassociate-item",e.ClearSelection="clear-selection",e.CreateItem="create-item",e.CreateItems="create-items",e.DeleteItems="delete-items",e.SetComponentData="set-component-data",e.InstallLocalComponent="install-local-component",e.ToggleActivateComponent="toggle-activate-component",e.RequestPermissions="request-permissions",e.PresentConflictResolution="present-conflict-resolution",e.DuplicateItem="duplicate-item",e.ComponentRegistered="component-registered",e.ActivateThemes="themes",e.Reply="reply",e.SaveSuccess="save-success",e.SaveError="save-error",e.ThemesActivated="themes-activated",e.KeyDown="key-down",e.KeyUp="key-up",e.Click="click"}(s||(s={})),function(e){e[e.Web=1]="Web",e[e.Desktop=2]="Desktop",e[e.Mobile=3]="Mobile"}(n||(n={})),function(e){e.Any="*",e.Item="SF|Item",e.RootKey="SN|RootKey|NoSync",e.ItemsKey="SN|ItemsKey",e.EncryptedStorage="SN|EncryptedStorage",e.Note="Note",e.Tag="Tag",e.SmartTag="SN|SmartTag",e.Component="SN|Component",e.Editor="SN|Editor",e.ActionsExtension="Extension",e.UserPrefs="SN|UserPreferences",e.HistorySession="SN|HistorySession",e.Theme="SN|Theme",e.Mfa="SF|MFA",e.ServerExtension="SF|Extension",e.FilesafeCredentials="SN|FileSafe|Credentials",e.FilesafeFileMetadata="SN|FileSafe|FileMetadata",e.FilesafeIntegration="SN|FileSafe|Integration",e.ExtensionRepo="SN|ExtensionRepo"}(i||(i={})),function(e){e.Pinned="pinned",e.Archived="archived",e.Locked="locked",e.UserModifiedDate="client_updated_at",e.DefaultEditor="defaultEditor",e.MobileRules="mobileRules",e.NotAvailableOnMobile="notAvailableOnMobile",e.MobileActive="mobileActive",e.LastSize="lastSize",e.PrefersPlainEditor="prefersPlainEditor",e.ComponentInstallError="installError"}(o||(o={}));var r=new Uint8Array(16);function c(){if(!a&&!(a="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return a(r)}const m=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,l=function(e){return"string"==typeof e&&m.test(e)};for(var d=[],h=0;h<256;++h)d.push((h+256).toString(16).substr(1));const p=function(e,t,s){var n=(e=e||{}).random||(e.rng||c)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){s=s||0;for(var i=0;i<16;++i)t[s+i]=n[i];return t}return function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,s=(d[e[t+0]]+d[e[t+1]]+d[e[t+2]]+d[e[t+3]]+"-"+d[e[t+4]]+d[e[t+5]]+"-"+d[e[t+6]]+d[e[t+7]]+"-"+d[e[t+8]]+d[e[t+9]]+"-"+d[e[t+10]]+d[e[t+11]]+d[e[t+12]]+d[e[t+13]]+d[e[t+14]]+d[e[t+15]]).toLowerCase();if(!l(s))throw TypeError("Stringified UUID is invalid");return s}(n)},v=e=>{var t;const s={[n.Web]:"web",[n.Desktop]:"desktop",[n.Mobile]:"mobile"};return null!==(t=s[e])&&void 0!==t?t:s[n.Web]},u=e=>null!=e,g=()=>{};class f{static get isSupported(){return!(!window.console&&!console)}static get info(){return f.isSupported&&this.enabled?console.log.bind(console):g}static get error(){return f.isSupported?console.error.bind(console):g}}var y,S,b,I;function k(e,t){var s=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),s.push.apply(s,n)}return s}function E(e){for(var t=1;t0&&(this.initialPermissions=s),u(null==n?void 0:n.coallesedSaving)&&(this.coallesedSaving=n.coallesedSaving),u(null==n?void 0:n.coallesedSavingDelay)&&(this.coallesedSavingDelay=n.coallesedSavingDelay),u(null==n?void 0:n.acceptsThemes)&&(this.component.acceptsThemes=null===(o=null==n?void 0:n.acceptsThemes)||void 0===o||o),u(i)&&(this.onReadyCallback=i),f.enabled=null!==(t=null==n?void 0:n.debug)&&void 0!==t&&t}deinit(){this.onReadyCallback=void 0,this.component={acceptsThemes:!0,activeThemes:[]},this.messageQueue=[],this.sentMessages=[],this.lastStreamedItem=void 0,this.pendingSaveItems=void 0,this.pendingSaveTimeout=void 0,this.pendingSaveParams=void 0,this.messageHandler&&(this.contentWindow.document.removeEventListener("message",this.messageHandler),this.contentWindow.removeEventListener("message",this.messageHandler)),this.keyDownEventListener&&this.contentWindow.removeEventListener("keydown",this.keyDownEventListener),this.keyUpEventListener&&this.contentWindow.removeEventListener("keyup",this.keyUpEventListener),this.clickEventListener&&this.contentWindow.removeEventListener("click",this.clickEventListener)}registerMessageHandler(){this.messageHandler=e=>{if(f.info("Components API Message received:",e.data),document.referrer&&new URL(document.referrer).origin!==new URL(e.origin).origin)return;if(this.component.origin){if(e.origin!==this.component.origin)return}else this.component.origin=e.origin;const{data:t}=e,s=(e=>{if("string"!=typeof e)return!1;try{const t=JSON.parse(e),s=Object.prototype.toString.call(t);return"[object Object]"===s||"[object Array]"===s}catch(e){return!1}})(t)?JSON.parse(t):t;s?this.handleMessage(s):f.error("Invalid data received. Skipping...")},this.contentWindow.document.addEventListener("message",this.messageHandler,!1),this.contentWindow.addEventListener("message",this.messageHandler,!1),f.info("Waiting for messages...")}registerKeyboardEventListeners(){this.keyDownEventListener=e=>{f.info("A key has been pressed: ".concat(e.key)),e.ctrlKey?this.keyDownEvent(I.Ctrl):e.shiftKey?this.keyDownEvent(I.Shift):(e.metaKey||"Meta"===e.key)&&this.keyDownEvent(I.Meta)},this.keyUpEventListener=e=>{f.info("A key has been released: ".concat(e.key)),"Control"===e.key?this.keyUpEvent(I.Ctrl):"Shift"===e.key?this.keyUpEvent(I.Shift):"Meta"===e.key&&this.keyUpEvent(I.Meta)},this.contentWindow.addEventListener("keydown",this.keyDownEventListener,!1),this.contentWindow.addEventListener("keyup",this.keyUpEventListener,!1)}registerMouseEventListeners(){this.clickEventListener=e=>{f.info("A click has been performed."),this.mouseClickEvent()},this.contentWindow.addEventListener("click",this.clickEventListener,!1)}handleMessage(e){switch(e.action){case s.ComponentRegistered:this.component.sessionKey=e.sessionKey,e.componentData&&(this.component.data=e.componentData),this.onReady(e.data),f.info("Component successfully registered with payload:",e);break;case s.ActivateThemes:this.activateThemes(e.data.themes);break;default:{var t,n;if(!e.original)return;const s=null===(t=this.sentMessages)||void 0===t?void 0:t.filter((t=>{var s;return t.messageId===(null===(s=e.original)||void 0===s?void 0:s.messageId)}))[0];if(!s){const e=this.contentWindow.document.title,t=("The extension '".concat(e,"' is attempting to communicate with Standard Notes, ")+"but an error is preventing it from doing so. Please restart this extension and try again.").replace(" "," ");return void f.info(t)}null==s||null===(n=s.callback)||void 0===n||n.call(s,e.data);break}}}onReady(e){this.component.environment=e.environment,this.component.platform=e.platform,this.component.uuid=e.uuid,this.initialPermissions&&this.initialPermissions.length>0&&this.requestPermissions(this.initialPermissions);for(const e of this.messageQueue)this.postMessage(e.action,e.data,e.callback);this.messageQueue=[],f.info("Data passed to onReady:",e),this.activateThemes(e.activeThemeUrls||[]),this.postMessage(s.ThemesActivated,{}),this.onReadyCallback&&this.onReadyCallback()}getSelfComponentUUID(){return this.component.uuid}isRunningInDesktopApplication(){return this.component.environment===v(n.Desktop)}isRunningInMobileApplication(){return this.component.environment===v(n.Mobile)}getComponentDataValueForKey(e){if(this.component.data)return this.component.data[e]}setComponentDataValueForKey(e,t){if(!this.component.data)throw new Error("The component has not been initialized.");if(!e||e&&0===e.length)throw new Error("The key for the data value should be a valid string.");this.component.data=E(E({},this.component.data),{},{[e]:t}),this.postMessage(s.SetComponentData,{componentData:this.component.data})}clearComponentData(){this.component.data={},this.postMessage(s.SetComponentData,{componentData:this.component.data})}postMessage(e,t,s){if(!this.component.sessionKey)return void this.messageQueue.push({action:e,data:t,api:b.Component,callback:s});const n={action:e,data:t,messageId:this.generateUUID(),sessionKey:this.component.sessionKey,api:b.Component},i=JSON.parse(JSON.stringify(n));let o;i.callback=s,this.sentMessages.push(i),o=this.isRunningInMobileApplication()?JSON.stringify(n):n,f.info("Posting message:",o),this.contentWindow.parent.postMessage(o,this.component.origin)}requestPermissions(e,t){this.postMessage(s.RequestPermissions,{permissions:e},(()=>{t&&t()}))}activateThemes(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(!this.component.acceptsThemes)return;f.info("Incoming themes:",e);const{activeThemes:t}=this.component;if(t&&t.sort().toString()==e.sort().toString())return;let s=e;const n=[];for(const i of t)e.includes(i)?s=s.filter((e=>e!==i)):n.push(i);f.info("Deactivating themes:",n),f.info("Activating themes:",s);for(const e of n)this.deactivateTheme(e);this.component.activeThemes=e;for(const e of s){if(!e)continue;const t=this.contentWindow.document.createElement("link");t.id=btoa(e),t.href=e,t.type="text/css",t.rel="stylesheet",t.media="screen,print",t.className="custom-theme",this.contentWindow.document.getElementsByTagName("head")[0].appendChild(t)}}themeElementForUrl(e){return Array.from(this.contentWindow.document.getElementsByClassName("custom-theme")).slice().find((t=>t.id==btoa(e)))}deactivateTheme(e){const t=this.themeElementForUrl(e);t&&t.parentNode&&(t.setAttribute("disabled","true"),t.parentNode.removeChild(t))}generateUUID(){return p()}get platform(){return this.component.platform}get environment(){return this.component.environment}streamItems(e,t){this.postMessage(s.StreamItems,{content_types:e},(e=>{t(e.items)}))}streamContextItem(e){this.postMessage(s.StreamContextItem,{},(t=>{const{item:s}=t;(!this.lastStreamedItem||this.lastStreamedItem.uuid!==s.uuid)&&this.pendingSaveTimeout&&(clearTimeout(this.pendingSaveTimeout),this._performSavingOfItems(this.pendingSaveParams),this.pendingSaveTimeout=void 0,this.pendingSaveParams=void 0),this.lastStreamedItem=s,e(this.lastStreamedItem)}))}selectItem(e){this.postMessage(s.SelectItem,{item:this.jsonObjectForItem(e)})}clearSelection(){this.postMessage(s.ClearSelection,{content_type:i.Tag})}createItem(e,t){this.postMessage(s.CreateItem,{item:this.jsonObjectForItem(e)},(e=>{let{item:s}=e;!s&&e.items&&e.items.length>0&&(s=e.items[0]),this.associateItem(s),t&&t(s)}))}createItems(e,t){const n=e.map((e=>this.jsonObjectForItem(e)));this.postMessage(s.CreateItems,{items:n},(e=>{t&&t(e.items)}))}associateItem(e){this.postMessage(s.AssociateItem,{item:this.jsonObjectForItem(e)})}deassociateItem(e){this.postMessage(s.DeassociateItem,{item:this.jsonObjectForItem(e)})}deleteItem(e,t){this.deleteItems([e],t)}deleteItems(e,t){const n={items:e.map((e=>this.jsonObjectForItem(e)))};this.postMessage(s.DeleteItems,n,(e=>{t&&t(e)}))}sendCustomEvent(e,t,s){this.postMessage(e,t,(e=>{s&&s(e)}))}saveItem(e,t){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.saveItems([e],t,s)}saveItemWithPresave(e,t,s){this.saveItemsWithPresave([e],t,s)}saveItemsWithPresave(e,t,s){this.saveItems(e,s,!1,t)}_performSavingOfItems(e){let{items:t,presave:n,callback:i}=e;n&&n();const o=[];for(const e of t)o.push(this.jsonObjectForItem(e));this.postMessage(s.SaveItems,{items:o},(()=>{i&&i()}))}saveItems(e,t){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3?arguments[3]:void 0;if(this.pendingSaveItems||(this.pendingSaveItems=[]),this.coallesedSaving&&!s){this.pendingSaveTimeout&&clearTimeout(this.pendingSaveTimeout);const s=e.map((e=>e.uuid)),i=this.pendingSaveItems.filter((e=>!s.includes(e.uuid)));this.pendingSaveItems=i.concat(e),this.pendingSaveParams={items:this.pendingSaveItems,presave:n,callback:t},this.pendingSaveTimeout=setTimeout((()=>{this._performSavingOfItems(this.pendingSaveParams),this.pendingSaveItems=[],this.pendingSaveTimeout=void 0,this.pendingSaveParams=null}),this.coallesedSavingDelay)}else this._performSavingOfItems({items:e,presave:n,callback:t})}setSize(e,t){this.postMessage(s.SetSize,{type:"container",width:e,height:t})}keyDownEvent(e){this.postMessage(s.KeyDown,{keyboardModifier:e})}keyUpEvent(e){this.postMessage(s.KeyUp,{keyboardModifier:e})}mouseClickEvent(){this.postMessage(s.Click,{})}jsonObjectForItem(e){const t=Object.assign({},e);return t.children=null,t.parent=null,t}getItemAppDataValue(e,t){var s,n;return null==e||null===(s=e.content)||void 0===s||null===(n=s.appData)||void 0===n?void 0:n["org.standardnotes.sn"][t]}}return t.default})()})); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("ComponentRelay",[],t):"object"==typeof exports?exports.ComponentRelay=t():e.ComponentRelay=t()}(self,(function(){return(()=>{"use strict";var e={d:(t,s)=>{for(var n in s)e.o(s,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:s[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};let s,n,i,o;var a;e.d(t,{default:()=>w}),function(e){e.SetSize="set-size",e.StreamItems="stream-items",e.StreamContextItem="stream-context-item",e.SaveItems="save-items",e.SelectItem="select-item",e.AssociateItem="associate-item",e.DeassociateItem="deassociate-item",e.ClearSelection="clear-selection",e.CreateItem="create-item",e.CreateItems="create-items",e.DeleteItems="delete-items",e.SetComponentData="set-component-data",e.InstallLocalComponent="install-local-component",e.ToggleActivateComponent="toggle-activate-component",e.RequestPermissions="request-permissions",e.PresentConflictResolution="present-conflict-resolution",e.DuplicateItem="duplicate-item",e.ComponentRegistered="component-registered",e.ActivateThemes="themes",e.Reply="reply",e.SaveSuccess="save-success",e.SaveError="save-error",e.ThemesActivated="themes-activated",e.KeyDown="key-down",e.KeyUp="key-up",e.Click="click"}(s||(s={})),function(e){e[e.Web=1]="Web",e[e.Desktop=2]="Desktop",e[e.Mobile=3]="Mobile"}(n||(n={})),function(e){e.Any="*",e.Item="SF|Item",e.RootKey="SN|RootKey|NoSync",e.ItemsKey="SN|ItemsKey",e.EncryptedStorage="SN|EncryptedStorage",e.Note="Note",e.Tag="Tag",e.SmartTag="SN|SmartTag",e.Component="SN|Component",e.Editor="SN|Editor",e.ActionsExtension="Extension",e.UserPrefs="SN|UserPreferences",e.HistorySession="SN|HistorySession",e.Theme="SN|Theme",e.Mfa="SF|MFA",e.ServerExtension="SF|Extension",e.FilesafeCredentials="SN|FileSafe|Credentials",e.FilesafeFileMetadata="SN|FileSafe|FileMetadata",e.FilesafeIntegration="SN|FileSafe|Integration",e.ExtensionRepo="SN|ExtensionRepo"}(i||(i={})),function(e){e.Pinned="pinned",e.Archived="archived",e.Locked="locked",e.UserModifiedDate="client_updated_at",e.DefaultEditor="defaultEditor",e.MobileRules="mobileRules",e.NotAvailableOnMobile="notAvailableOnMobile",e.MobileActive="mobileActive",e.LastSize="lastSize",e.PrefersPlainEditor="prefersPlainEditor",e.ComponentInstallError="installError"}(o||(o={}));var r=new Uint8Array(16);function c(){if(!a&&!(a="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return a(r)}const m=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,l=function(e){return"string"==typeof e&&m.test(e)};for(var d=[],h=0;h<256;++h)d.push((h+256).toString(16).substr(1));const p=function(e,t,s){var n=(e=e||{}).random||(e.rng||c)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){s=s||0;for(var i=0;i<16;++i)t[s+i]=n[i];return t}return function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,s=(d[e[t+0]]+d[e[t+1]]+d[e[t+2]]+d[e[t+3]]+"-"+d[e[t+4]]+d[e[t+5]]+"-"+d[e[t+6]]+d[e[t+7]]+"-"+d[e[t+8]]+d[e[t+9]]+"-"+d[e[t+10]]+d[e[t+11]]+d[e[t+12]]+d[e[t+13]]+d[e[t+14]]+d[e[t+15]]).toLowerCase();if(!l(s))throw TypeError("Stringified UUID is invalid");return s}(n)},u=e=>{var t;const s={[n.Web]:"web",[n.Desktop]:"desktop",[n.Mobile]:"mobile"};return null!==(t=s[e])&&void 0!==t?t:s[n.Web]},v=e=>null!=e,g=()=>{};class f{static get isSupported(){return!(!window.console&&!console)}static get info(){return f.isSupported&&this.enabled?console.log.bind(console):g}static get error(){return f.isSupported?console.error.bind(console):g}}var y,S,b,I;function k(e,t){var s=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),s.push.apply(s,n)}return s}function E(e){for(var t=1;t0&&(this.initialPermissions=s),v(null==n?void 0:n.coallesedSaving)&&(this.coallesedSaving=n.coallesedSaving),v(null==n?void 0:n.coallesedSavingDelay)&&(this.coallesedSavingDelay=n.coallesedSavingDelay),v(null==n?void 0:n.acceptsThemes)&&(this.component.acceptsThemes=null===(a=null==n?void 0:n.acceptsThemes)||void 0===a||a),v(i)&&(this.onReadyCallback=i),v(o)&&(this.onThemesChangeCallback=o),f.enabled=null!==(t=null==n?void 0:n.debug)&&void 0!==t&&t}deinit(){this.onReadyCallback=void 0,this.component={acceptsThemes:!0,activeThemes:[]},this.messageQueue=[],this.sentMessages=[],this.lastStreamedItem=void 0,this.pendingSaveItems=void 0,this.pendingSaveTimeout=void 0,this.pendingSaveParams=void 0,this.messageHandler&&(this.contentWindow.document.removeEventListener("message",this.messageHandler),this.contentWindow.removeEventListener("message",this.messageHandler)),this.keyDownEventListener&&this.contentWindow.removeEventListener("keydown",this.keyDownEventListener),this.keyUpEventListener&&this.contentWindow.removeEventListener("keyup",this.keyUpEventListener),this.clickEventListener&&this.contentWindow.removeEventListener("click",this.clickEventListener)}registerMessageHandler(){this.messageHandler=e=>{if(f.info("Components API Message received:",e.data),document.referrer&&new URL(document.referrer).origin!==new URL(e.origin).origin)return;const{data:t}=e,n=(e=>{if("string"!=typeof e)return!1;try{const t=JSON.parse(e),s=Object.prototype.toString.call(t);return"[object Object]"===s||"[object Array]"===s}catch(e){return!1}})(t)?JSON.parse(t):t;if(n){if(void 0===this.component.origin&&n.action===s.ComponentRegistered)this.component.origin=e.origin;else if(e.origin!==this.component.origin)return;this.handleMessage(n)}else f.error("Invalid data received. Skipping...")},this.contentWindow.document.addEventListener("message",this.messageHandler,!1),this.contentWindow.addEventListener("message",this.messageHandler,!1),f.info("Waiting for messages...")}registerKeyboardEventListeners(){this.keyDownEventListener=e=>{f.info("A key has been pressed: ".concat(e.key)),e.ctrlKey?this.keyDownEvent(I.Ctrl):e.shiftKey?this.keyDownEvent(I.Shift):(e.metaKey||"Meta"===e.key)&&this.keyDownEvent(I.Meta)},this.keyUpEventListener=e=>{f.info("A key has been released: ".concat(e.key)),"Control"===e.key?this.keyUpEvent(I.Ctrl):"Shift"===e.key?this.keyUpEvent(I.Shift):"Meta"===e.key&&this.keyUpEvent(I.Meta)},this.contentWindow.addEventListener("keydown",this.keyDownEventListener,!1),this.contentWindow.addEventListener("keyup",this.keyUpEventListener,!1)}registerMouseEventListeners(){this.clickEventListener=e=>{f.info("A click has been performed."),this.mouseClickEvent()},this.contentWindow.addEventListener("click",this.clickEventListener,!1)}handleMessage(e){switch(e.action){case s.ComponentRegistered:this.component.sessionKey=e.sessionKey,e.componentData&&(this.component.data=e.componentData),this.onReady(e.data),f.info("Component successfully registered with payload:",e);break;case s.ActivateThemes:this.activateThemes(e.data.themes);break;default:{var t,n;if(!e.original)return;const s=null===(t=this.sentMessages)||void 0===t?void 0:t.filter((t=>{var s;return t.messageId===(null===(s=e.original)||void 0===s?void 0:s.messageId)}))[0];if(!s){const e=this.contentWindow.document.title,t=("The extension '".concat(e,"' is attempting to communicate with Standard Notes, ")+"but an error is preventing it from doing so. Please restart this extension and try again.").replace(" "," ");return void f.info(t)}null==s||null===(n=s.callback)||void 0===n||n.call(s,e.data);break}}}onReady(e){this.component.environment=e.environment,this.component.platform=e.platform,this.component.uuid=e.uuid,this.initialPermissions&&this.initialPermissions.length>0&&this.requestPermissions(this.initialPermissions);for(const e of this.messageQueue)this.postMessage(e.action,e.data,e.callback);this.messageQueue=[],f.info("Data passed to onReady:",e),this.activateThemes(e.activeThemeUrls||[]),this.postMessage(s.ThemesActivated,{}),this.onReadyCallback&&this.onReadyCallback()}getSelfComponentUUID(){return this.component.uuid}isRunningInDesktopApplication(){return this.component.environment===u(n.Desktop)}isRunningInMobileApplication(){return this.component.environment===u(n.Mobile)}getComponentDataValueForKey(e){if(this.component.data)return this.component.data[e]}setComponentDataValueForKey(e,t){if(!this.component.data)throw new Error("The component has not been initialized.");if(!e||e&&0===e.length)throw new Error("The key for the data value should be a valid string.");this.component.data=E(E({},this.component.data),{},{[e]:t}),this.postMessage(s.SetComponentData,{componentData:this.component.data})}clearComponentData(){this.component.data={},this.postMessage(s.SetComponentData,{componentData:this.component.data})}postMessage(e,t,s){if(!this.component.sessionKey)return void this.messageQueue.push({action:e,data:t,api:b.Component,callback:s});const n={action:e,data:t,messageId:this.generateUUID(),sessionKey:this.component.sessionKey,api:b.Component},i=JSON.parse(JSON.stringify(n));let o;i.callback=s,this.sentMessages.push(i),o=this.isRunningInMobileApplication()?JSON.stringify(n):n,f.info("Posting message:",o),this.contentWindow.parent.postMessage(o,this.component.origin)}requestPermissions(e,t){this.postMessage(s.RequestPermissions,{permissions:e},(()=>{t&&t()}))}activateThemes(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(!this.component.acceptsThemes)return;f.info("Incoming themes:",e);const{activeThemes:t}=this.component;if(t&&t.sort().toString()==e.sort().toString())return;let s=e;const n=[];for(const i of t)e.includes(i)?s=s.filter((e=>e!==i)):n.push(i);f.info("Deactivating themes:",n),f.info("Activating themes:",s);for(const e of n)this.deactivateTheme(e);this.component.activeThemes=e;for(const e of s){if(!e)continue;const t=this.contentWindow.document.createElement("link");t.id=btoa(e),t.href=e,t.type="text/css",t.rel="stylesheet",t.media="screen,print",t.className="custom-theme",this.contentWindow.document.getElementsByTagName("head")[0].appendChild(t)}this.onThemesChangeCallback&&this.onThemesChangeCallback()}themeElementForUrl(e){return Array.from(this.contentWindow.document.getElementsByClassName("custom-theme")).slice().find((t=>t.id==btoa(e)))}deactivateTheme(e){const t=this.themeElementForUrl(e);t&&t.parentNode&&(t.setAttribute("disabled","true"),t.parentNode.removeChild(t))}generateUUID(){return p()}get platform(){return this.component.platform}get environment(){return this.component.environment}streamItems(e,t){this.postMessage(s.StreamItems,{content_types:e},(e=>{t(e.items)}))}streamContextItem(e){this.postMessage(s.StreamContextItem,{},(t=>{const{item:s}=t;(!this.lastStreamedItem||this.lastStreamedItem.uuid!==s.uuid)&&this.pendingSaveTimeout&&(clearTimeout(this.pendingSaveTimeout),this.performSavingOfItems(this.pendingSaveParams),this.pendingSaveTimeout=void 0,this.pendingSaveParams=void 0),this.lastStreamedItem=s,e(this.lastStreamedItem)}))}selectItem(e){this.postMessage(s.SelectItem,{item:this.jsonObjectForItem(e)})}clearSelection(){this.postMessage(s.ClearSelection,{content_type:i.Tag})}createItem(e,t){this.postMessage(s.CreateItem,{item:this.jsonObjectForItem(e)},(e=>{let{item:s}=e;!s&&e.items&&e.items.length>0&&(s=e.items[0]),this.associateItem(s),t&&t(s)}))}createItems(e,t){const n=e.map((e=>this.jsonObjectForItem(e)));this.postMessage(s.CreateItems,{items:n},(e=>{t&&t(e.items)}))}associateItem(e){this.postMessage(s.AssociateItem,{item:this.jsonObjectForItem(e)})}deassociateItem(e){this.postMessage(s.DeassociateItem,{item:this.jsonObjectForItem(e)})}deleteItem(e,t){this.deleteItems([e],t)}deleteItems(e,t){const n={items:e.map((e=>this.jsonObjectForItem(e)))};this.postMessage(s.DeleteItems,n,(e=>{t&&t(e)}))}sendCustomEvent(e,t,s){this.postMessage(e,t,(e=>{s&&s(e)}))}saveItem(e,t){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.saveItems([e],t,s)}saveItemWithPresave(e,t,s){this.saveItemsWithPresave([e],t,s)}saveItemsWithPresave(e,t,s){this.saveItems(e,s,!1,t)}performSavingOfItems(e){let{items:t,presave:n,callback:i}=e;const o=setTimeout((()=>{this.concernTimeouts.forEach((e=>clearTimeout(e))),alert("This editor is unable to communicate with Standard Notes. Your changes may not be saved. Please backup your changes, then restart the application and try again.")}),5e3);this.concernTimeouts.push(o),n&&n();const a=[];for(const e of t)a.push(this.jsonObjectForItem(e));this.postMessage(s.SaveItems,{items:a},(()=>{this.concernTimeouts.forEach((e=>clearTimeout(e))),null==i||i()}))}saveItems(e,t){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3?arguments[3]:void 0;if(this.pendingSaveItems||(this.pendingSaveItems=[]),this.coallesedSaving&&!s){this.pendingSaveTimeout&&clearTimeout(this.pendingSaveTimeout);const s=e.map((e=>e.uuid)),i=this.pendingSaveItems.filter((e=>!s.includes(e.uuid)));this.pendingSaveItems=i.concat(e),this.pendingSaveParams={items:this.pendingSaveItems,presave:n,callback:t},this.pendingSaveTimeout=setTimeout((()=>{this.performSavingOfItems(this.pendingSaveParams),this.pendingSaveItems=[],this.pendingSaveTimeout=void 0,this.pendingSaveParams=null}),this.coallesedSavingDelay)}else this.performSavingOfItems({items:e,presave:n,callback:t})}setSize(e,t){this.postMessage(s.SetSize,{type:"container",width:e,height:t})}keyDownEvent(e){this.postMessage(s.KeyDown,{keyboardModifier:e})}keyUpEvent(e){this.postMessage(s.KeyUp,{keyboardModifier:e})}mouseClickEvent(){this.postMessage(s.Click,{})}jsonObjectForItem(e){const t=Object.assign({},e);return t.children=null,t.parent=null,t}getItemAppDataValue(e,t){var s,n;return null==e||null===(s=e.content)||void 0===s||null===(n=s.appData)||void 0===n?void 0:n["org.standardnotes.sn"][t]}}return t.default})()})); \ No newline at end of file diff --git a/public/components/org.standardnotes.advanced-markdown-editor/package.json b/public/components/org.standardnotes.advanced-markdown-editor/package.json index f84291dac..f3acf0ce9 100644 --- a/public/components/org.standardnotes.advanced-markdown-editor/package.json +++ b/public/components/org.standardnotes.advanced-markdown-editor/package.json @@ -1,9 +1,9 @@ { "name": "sn-advanced-markdown-editor", - "version": "1.3.14", + "version": "1.4.1", "description": "A Standard Notes derived editor that offers full support for Markdown editing.", "main": "dist/dist.js", - "author": "Standard Notes ", + "author": "Standard Notes ", "license": "AGPL-3.0", "sn": { "main": "dist/index.html" @@ -20,7 +20,7 @@ "@babel/cli": "^7.13.10", "@babel/core": "^7.13.13", "@babel/preset-env": "^7.13.12", - "@standardnotes/component-relay": "2.1.0", + "@standardnotes/component-relay": "2.2.0", "@standardnotes/eslint-config-extensions": "^1.0.2", "copy-webpack-plugin": "^8.1.0", "css-loader": "^5.2.0", diff --git a/public/components/org.standardnotes.bold-editor/dist/dist.min.js b/public/components/org.standardnotes.bold-editor/dist/dist.min.js index 4fb4cffd3..9abea69fe 100644 --- a/public/components/org.standardnotes.bold-editor/dist/dist.min.js +++ b/public/components/org.standardnotes.bold-editor/dist/dist.min.js @@ -1,2 +1,2 @@ /*! For license information please see dist.min.js.LICENSE.txt */ -(()=>{var e={33:(e,t,n)=>{var r;self,e.exports=(r=n(166),(()=>{var e,t,n={968:e=>{self,e.exports=(()=>{"use strict";var e={d:(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};let n,r,a,i;var o;e.d(t,{default:()=>E}),function(e){e.SetSize="set-size",e.StreamItems="stream-items",e.StreamContextItem="stream-context-item",e.SaveItems="save-items",e.SelectItem="select-item",e.AssociateItem="associate-item",e.DeassociateItem="deassociate-item",e.ClearSelection="clear-selection",e.CreateItem="create-item",e.CreateItems="create-items",e.DeleteItems="delete-items",e.SetComponentData="set-component-data",e.InstallLocalComponent="install-local-component",e.ToggleActivateComponent="toggle-activate-component",e.RequestPermissions="request-permissions",e.PresentConflictResolution="present-conflict-resolution",e.DuplicateItem="duplicate-item",e.ComponentRegistered="component-registered",e.ActivateThemes="themes",e.Reply="reply",e.SaveSuccess="save-success",e.SaveError="save-error",e.ThemesActivated="themes-activated",e.KeyDown="key-down",e.KeyUp="key-up",e.Click="click"}(n||(n={})),function(e){e[e.Web=1]="Web",e[e.Desktop=2]="Desktop",e[e.Mobile=3]="Mobile"}(r||(r={})),function(e){e.Any="*",e.Item="SF|Item",e.RootKey="SN|RootKey|NoSync",e.ItemsKey="SN|ItemsKey",e.EncryptedStorage="SN|EncryptedStorage",e.Note="Note",e.Tag="Tag",e.SmartTag="SN|SmartTag",e.Component="SN|Component",e.Editor="SN|Editor",e.ActionsExtension="Extension",e.UserPrefs="SN|UserPreferences",e.HistorySession="SN|HistorySession",e.Theme="SN|Theme",e.Mfa="SF|MFA",e.ServerExtension="SF|Extension",e.FilesafeCredentials="SN|FileSafe|Credentials",e.FilesafeFileMetadata="SN|FileSafe|FileMetadata",e.FilesafeIntegration="SN|FileSafe|Integration",e.ExtensionRepo="SN|ExtensionRepo"}(a||(a={})),function(e){e.Pinned="pinned",e.Archived="archived",e.Locked="locked",e.UserModifiedDate="client_updated_at",e.DefaultEditor="defaultEditor",e.MobileRules="mobileRules",e.NotAvailableOnMobile="notAvailableOnMobile",e.MobileActive="mobileActive",e.LastSize="lastSize",e.PrefersPlainEditor="prefersPlainEditor",e.ComponentInstallError="installError"}(i||(i={}));var s=new Uint8Array(16);function u(){if(!o&&!(o="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return o(s)}const l=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,c=function(e){return"string"==typeof e&&l.test(e)};for(var f=[],d=0;d<256;++d)f.push((d+256).toString(16).substr(1));const p=function(e,t,n){var r=(e=e||{}).random||(e.rng||u)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){n=n||0;for(var a=0;a<16;++a)t[n+a]=r[a];return t}return function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=(f[e[t+0]]+f[e[t+1]]+f[e[t+2]]+f[e[t+3]]+"-"+f[e[t+4]]+f[e[t+5]]+"-"+f[e[t+6]]+f[e[t+7]]+"-"+f[e[t+8]]+f[e[t+9]]+"-"+f[e[t+10]]+f[e[t+11]]+f[e[t+12]]+f[e[t+13]]+f[e[t+14]]+f[e[t+15]]).toLowerCase();if(!c(n))throw TypeError("Stringified UUID is invalid");return n}(r)},h=e=>{var t;const n={[r.Web]:"web",[r.Desktop]:"desktop",[r.Mobile]:"mobile"};return null!==(t=n[e])&&void 0!==t?t:n[r.Web]},m=e=>null!=e,v=()=>{};class g{static get isSupported(){return!(!window.console&&!console)}static get info(){return g.isSupported&&this.enabled?console.log.bind(console):v}static get error(){return g.isSupported?console.error.bind(console):v}}var y,b,k,w;function x(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function S(e){for(var t=1;t0&&(this.initialPermissions=n),m(null==r?void 0:r.coallesedSaving)&&(this.coallesedSaving=r.coallesedSaving),m(null==r?void 0:r.coallesedSavingDelay)&&(this.coallesedSavingDelay=r.coallesedSavingDelay),m(null==r?void 0:r.acceptsThemes)&&(this.component.acceptsThemes=null===(o=null==r?void 0:r.acceptsThemes)||void 0===o||o),m(a)&&(this.onReadyCallback=a),m(i)&&(this.onThemesChangeCallback=i),g.enabled=null!==(t=null==r?void 0:r.debug)&&void 0!==t&&t}deinit(){this.onReadyCallback=void 0,this.component={acceptsThemes:!0,activeThemes:[]},this.messageQueue=[],this.sentMessages=[],this.lastStreamedItem=void 0,this.pendingSaveItems=void 0,this.pendingSaveTimeout=void 0,this.pendingSaveParams=void 0,this.messageHandler&&(this.contentWindow.document.removeEventListener("message",this.messageHandler),this.contentWindow.removeEventListener("message",this.messageHandler)),this.keyDownEventListener&&this.contentWindow.removeEventListener("keydown",this.keyDownEventListener),this.keyUpEventListener&&this.contentWindow.removeEventListener("keyup",this.keyUpEventListener),this.clickEventListener&&this.contentWindow.removeEventListener("click",this.clickEventListener)}registerMessageHandler(){this.messageHandler=e=>{if(g.info("Components API Message received:",e.data),document.referrer&&new URL(document.referrer).origin!==new URL(e.origin).origin)return;const{data:t}=e,r=(e=>{if("string"!=typeof e)return!1;try{const t=JSON.parse(e),n=Object.prototype.toString.call(t);return"[object Object]"===n||"[object Array]"===n}catch(e){return!1}})(t)?JSON.parse(t):t;if(r){if(void 0===this.component.origin&&r.action===n.ComponentRegistered)this.component.origin=e.origin;else if(e.origin!==this.component.origin)return;this.handleMessage(r)}else g.error("Invalid data received. Skipping...")},this.contentWindow.document.addEventListener("message",this.messageHandler,!1),this.contentWindow.addEventListener("message",this.messageHandler,!1),g.info("Waiting for messages...")}registerKeyboardEventListeners(){this.keyDownEventListener=e=>{g.info("A key has been pressed: ".concat(e.key)),e.ctrlKey?this.keyDownEvent(w.Ctrl):e.shiftKey?this.keyDownEvent(w.Shift):(e.metaKey||"Meta"===e.key)&&this.keyDownEvent(w.Meta)},this.keyUpEventListener=e=>{g.info("A key has been released: ".concat(e.key)),"Control"===e.key?this.keyUpEvent(w.Ctrl):"Shift"===e.key?this.keyUpEvent(w.Shift):"Meta"===e.key&&this.keyUpEvent(w.Meta)},this.contentWindow.addEventListener("keydown",this.keyDownEventListener,!1),this.contentWindow.addEventListener("keyup",this.keyUpEventListener,!1)}registerMouseEventListeners(){this.clickEventListener=e=>{g.info("A click has been performed."),this.mouseClickEvent()},this.contentWindow.addEventListener("click",this.clickEventListener,!1)}handleMessage(e){switch(e.action){case n.ComponentRegistered:this.component.sessionKey=e.sessionKey,e.componentData&&(this.component.data=e.componentData),this.onReady(e.data),g.info("Component successfully registered with payload:",e);break;case n.ActivateThemes:this.activateThemes(e.data.themes);break;default:{var t,r;if(!e.original)return;const n=null===(t=this.sentMessages)||void 0===t?void 0:t.filter((t=>{var n;return t.messageId===(null===(n=e.original)||void 0===n?void 0:n.messageId)}))[0];if(!n){const e=this.contentWindow.document.title,t=("The extension '".concat(e,"' is attempting to communicate with Standard Notes, ")+"but an error is preventing it from doing so. Please restart this extension and try again.").replace(" "," ");return void g.info(t)}null==n||null===(r=n.callback)||void 0===r||r.call(n,e.data);break}}}onReady(e){this.component.environment=e.environment,this.component.platform=e.platform,this.component.uuid=e.uuid,this.initialPermissions&&this.initialPermissions.length>0&&this.requestPermissions(this.initialPermissions);for(const e of this.messageQueue)this.postMessage(e.action,e.data,e.callback);this.messageQueue=[],g.info("Data passed to onReady:",e),this.activateThemes(e.activeThemeUrls||[]),this.postMessage(n.ThemesActivated,{}),this.onReadyCallback&&this.onReadyCallback()}getSelfComponentUUID(){return this.component.uuid}isRunningInDesktopApplication(){return this.component.environment===h(r.Desktop)}isRunningInMobileApplication(){return this.component.environment===h(r.Mobile)}getComponentDataValueForKey(e){if(this.component.data)return this.component.data[e]}setComponentDataValueForKey(e,t){if(!this.component.data)throw new Error("The component has not been initialized.");if(!e||e&&0===e.length)throw new Error("The key for the data value should be a valid string.");this.component.data=S(S({},this.component.data),{},{[e]:t}),this.postMessage(n.SetComponentData,{componentData:this.component.data})}clearComponentData(){this.component.data={},this.postMessage(n.SetComponentData,{componentData:this.component.data})}postMessage(e,t,n){if(!this.component.sessionKey)return void this.messageQueue.push({action:e,data:t,api:k.Component,callback:n});const r={action:e,data:t,messageId:this.generateUUID(),sessionKey:this.component.sessionKey,api:k.Component},a=JSON.parse(JSON.stringify(r));let i;a.callback=n,this.sentMessages.push(a),i=this.isRunningInMobileApplication()?JSON.stringify(r):r,g.info("Posting message:",i),this.contentWindow.parent.postMessage(i,this.component.origin)}requestPermissions(e,t){this.postMessage(n.RequestPermissions,{permissions:e},(()=>{t&&t()}))}activateThemes(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(!this.component.acceptsThemes)return;g.info("Incoming themes:",e);const{activeThemes:t}=this.component;if(t&&t.sort().toString()==e.sort().toString())return;let n=e;const r=[];for(const a of t)e.includes(a)?n=n.filter((e=>e!==a)):r.push(a);g.info("Deactivating themes:",r),g.info("Activating themes:",n);for(const e of r)this.deactivateTheme(e);this.component.activeThemes=e;for(const e of n){if(!e)continue;const t=this.contentWindow.document.createElement("link");t.id=btoa(e),t.href=e,t.type="text/css",t.rel="stylesheet",t.media="screen,print",t.className="custom-theme",this.contentWindow.document.getElementsByTagName("head")[0].appendChild(t)}this.onThemesChangeCallback&&this.onThemesChangeCallback()}themeElementForUrl(e){return Array.from(this.contentWindow.document.getElementsByClassName("custom-theme")).slice().find((t=>t.id==btoa(e)))}deactivateTheme(e){const t=this.themeElementForUrl(e);t&&t.parentNode&&(t.setAttribute("disabled","true"),t.parentNode.removeChild(t))}generateUUID(){return p()}get platform(){return this.component.platform}get environment(){return this.component.environment}streamItems(e,t){this.postMessage(n.StreamItems,{content_types:e},(e=>{t(e.items)}))}streamContextItem(e){this.postMessage(n.StreamContextItem,{},(t=>{const{item:n}=t;(!this.lastStreamedItem||this.lastStreamedItem.uuid!==n.uuid)&&this.pendingSaveTimeout&&(clearTimeout(this.pendingSaveTimeout),this._performSavingOfItems(this.pendingSaveParams),this.pendingSaveTimeout=void 0,this.pendingSaveParams=void 0),this.lastStreamedItem=n,e(this.lastStreamedItem)}))}selectItem(e){this.postMessage(n.SelectItem,{item:this.jsonObjectForItem(e)})}clearSelection(){this.postMessage(n.ClearSelection,{content_type:a.Tag})}createItem(e,t){this.postMessage(n.CreateItem,{item:this.jsonObjectForItem(e)},(e=>{let{item:n}=e;!n&&e.items&&e.items.length>0&&(n=e.items[0]),this.associateItem(n),t&&t(n)}))}createItems(e,t){const r=e.map((e=>this.jsonObjectForItem(e)));this.postMessage(n.CreateItems,{items:r},(e=>{t&&t(e.items)}))}associateItem(e){this.postMessage(n.AssociateItem,{item:this.jsonObjectForItem(e)})}deassociateItem(e){this.postMessage(n.DeassociateItem,{item:this.jsonObjectForItem(e)})}deleteItem(e,t){this.deleteItems([e],t)}deleteItems(e,t){const r={items:e.map((e=>this.jsonObjectForItem(e)))};this.postMessage(n.DeleteItems,r,(e=>{t&&t(e)}))}sendCustomEvent(e,t,n){this.postMessage(e,t,(e=>{n&&n(e)}))}saveItem(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.saveItems([e],t,n)}saveItemWithPresave(e,t,n){this.saveItemsWithPresave([e],t,n)}saveItemsWithPresave(e,t,n){this.saveItems(e,n,!1,t)}_performSavingOfItems(e){let{items:t,presave:r,callback:a}=e;r&&r();const i=[];for(const e of t)i.push(this.jsonObjectForItem(e));this.postMessage(n.SaveItems,{items:i},(()=>{a&&a()}))}saveItems(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3?arguments[3]:void 0;if(this.pendingSaveItems||(this.pendingSaveItems=[]),this.coallesedSaving&&!n){this.pendingSaveTimeout&&clearTimeout(this.pendingSaveTimeout);const n=e.map((e=>e.uuid)),a=this.pendingSaveItems.filter((e=>!n.includes(e.uuid)));this.pendingSaveItems=a.concat(e),this.pendingSaveParams={items:this.pendingSaveItems,presave:r,callback:t},this.pendingSaveTimeout=setTimeout((()=>{this._performSavingOfItems(this.pendingSaveParams),this.pendingSaveItems=[],this.pendingSaveTimeout=void 0,this.pendingSaveParams=null}),this.coallesedSavingDelay)}else this._performSavingOfItems({items:e,presave:r,callback:t})}setSize(e,t){this.postMessage(n.SetSize,{type:"container",width:e,height:t})}keyDownEvent(e){this.postMessage(n.KeyDown,{keyboardModifier:e})}keyUpEvent(e){this.postMessage(n.KeyUp,{keyboardModifier:e})}mouseClickEvent(){this.postMessage(n.Click,{})}jsonObjectForItem(e){const t=Object.assign({},e);return t.children=null,t.parent=null,t}getItemAppDataValue(e,t){var n,r;return null==e||null===(n=e.content)||void 0===n||null===(r=n.appData)||void 0===r?void 0:r["org.standardnotes.sn"][t]}}return t.default})()},695:e=>{"use strict";e.exports=r}},a={};function i(e){var t=a[e];if(void 0!==t)return t.exports;var r=a[e]={exports:{}};return n[e](r,r.exports,i),r.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(n,r){if(1&r&&(n=this(n)),8&r)return n;if("object"==typeof n&&n){if(4&r&&n.__esModule)return n;if(16&r&&"function"==typeof n.then)return n}var a=Object.create(null);i.r(a);var o={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&n;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>o[e]=()=>n[e]));return o.default=()=>n,i.d(a,o),a},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{"use strict";i.d(o,{default:()=>h});var e=i(968),t=i.n(e);const n=async e=>{await new Promise((t=>setTimeout(t,1e3*e)))};function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class a{constructor(e){this.options=e,r(this,"uuidToFileTempUrlAndTypeMapping",{}),r(this,"currentlyLoadingIds",[]),r(this,"statusElementMapping",{}),r(this,"fileTypeToElementType",{"image/png":"img","image/jpg":"img","image/jpeg":"img","image/gif":"img","image/tiff":"img","image/bmp":"img","video/mp4":"video","audio/mpeg":"audio","audio/mp3":"audio"})}fileTypeForElementType(e){return this.fileTypeToElementType[e.toLowerCase()]}loadFileSafeElements(){const e=this.options.getElementsBySelector("*[fsplaceholder]");for(const t of e)this.loadFileSafeElement(t)}async loadFileSafeElement(e){var t;const{fileSafeInstance:r}=this.options,a=e.getAttribute("fsid"),i=null!==(t=e.getAttribute("fsName"))&&void 0!==t?t:"",o=i&&"undefined"!=i?i:"file";if(!a)return!1;const s=this.uuidToFileTempUrlAndTypeMapping[a];if(s)return this.insertMediaElement({fsid:a,fsElement:e,url:s.url,fileType:s.fileType,fsName:s.fsName}),!1;if(this.currentlyLoadingIds.includes(a))return!1;const u=r.findFileDescriptor(a);if(!u)return this.setStatus({fsElement:e,fsid:a,status:"Unable to find ".concat(o," ").concat(a,"."),removable:!0}),!1;const l='[fsid="'.concat(u.uuid,'"][fscollapsable]');if(document.querySelectorAll("img".concat(l,", figure").concat(l,", video").concat(l,", audio").concat(l)).length>0)return!1;this.currentlyLoadingIds.push(a),this.setStatus({fsElement:e,fsid:a,status:"Downloading ".concat(o,"...")}),await n(.05);const c=await r.downloadFileFromDescriptor(u).catch((()=>{this.setStatus({fsElement:e,fsid:a,status:"Unable to download ".concat(o," ").concat(a,".")})}));if(!c)return!1;this.setStatus({fsElement:e,fsid:a,status:"Decrypting ".concat(o,"...")}),await n(.05);const f=await r.decryptFile({fileDescriptor:u,fileItem:c}).catch((()=>{this.setStatus({fsElement:e,fsid:a,status:"Unable to decrypt ".concat(o," ").concat(a,".")})}));if(!f)return!1;this.setStatus({fsElement:e,fsid:a}),await n(.05);const d=u.content.fileType,p=r.createTemporaryFileUrl({base64Data:f.decryptedData,dataType:d});return this.insertMediaElement({fsid:a,fileType:d,fsName:i,fsElement:e,url:p}),(()=>{this.currentlyLoadingIds.splice(this.currentlyLoadingIds.indexOf(a),1)})(),this.uuidToFileTempUrlAndTypeMapping[a]={fileType:d,url:p,fsName:i},!0}insertMediaElement(e){let t,{url:n,fsid:r,fsName:a,fileType:i,fsElement:o}=e;switch(this.fileTypeForElementType(i)){case"img":t=this.createImageElement({url:n,fsid:r,fsName:a,fsElement:o});break;case"video":t=this.createVideoElement({url:n,fsid:r,fileType:i,fsName:a,fsElement:o});break;case"audio":t=this.createAudioElement({url:n,fsid:r,fsName:a});break;default:t=this.createDownloadElement({url:n,fsid:r,fsName:a})}this.insertElementNearElement(t,o),o.remove()}wrapElementInTag(e){let{element:t,tagName:n,fsid:r,fsName:a}=e;const i=document.createElement(n);return i.setAttribute("fsid",r),i.setAttribute("fsName",a),i.setAttribute("fscollapsable","true"),i.setAttribute("contenteditable","true"),i.append(t),i}createImageElement(e){let{url:t,fsid:n,fsName:r,fsElement:a}=e;const i=document.createElement("img");i.setAttribute("src",t),i.setAttribute("srcset","".concat(t," 2x")),i.setAttribute("fsid",n),i.setAttribute("fsName",r),i.setAttribute("fscollapsable","true");const o=a.getAttribute("width");o&&i.setAttribute("width",o);const s=a.getAttribute("height");return s&&i.setAttribute("height",s),i}createVideoElement(e){let{url:t,fsid:n,fileType:r,fsName:a,fsElement:i}=e;const o=document.createElement("video");o.setAttribute("controls","true"),o.setAttribute("fsid",n),o.setAttribute("fsName",a),o.setAttribute("fscollapsable","true");const s=i.getAttribute("width");s&&o.setAttribute("width",s);const u=i.getAttribute("height");u&&o.setAttribute("height",u);const l=document.createElement("source");return l.setAttribute("src",t),l.setAttribute("type",r),o.append(l),this.wrapElementInTag({fsid:n,fsName:a,element:o,tagName:"p"})}createDownloadElement(e){let{url:t,fsid:n,fsName:r}=e;const a=document.createElement("a");return a.setAttribute("fsid",n),a.setAttribute("fsName",r),a.setAttribute("ghost","true"),a.setAttribute("fscollapsable","true"),a.setAttribute("href",t),a.textContent="".concat(r),a}createAudioElement(e){let{url:t,fsid:n,fsName:r}=e;const a=document.createElement("audio");return a.setAttribute("src",t),a.setAttribute("controls","true"),a.setAttribute("fsid",n),a.setAttribute("fsName",r),a.setAttribute("fscollapsable","true"),this.wrapElementInTag({fsid:n,fsName:r,element:a,tagName:"p"})}setStatus(e){let{status:t,fsElement:n,fsid:r,removable:a=!1}=e;if(r){const e=this.statusElementMapping[r];e&&(e.remove(),delete this.statusElementMapping[r])}if(t){let e=document.createElement("label");return e.setAttribute("id",r),e.setAttribute("ghost","true"),e.setAttribute("contenteditable","false"),e.style.fontWeight="bold",e.textContent=t,a&&(e.style.userSelect="all"),e=this.insertElementNearElement(e,n),r&&(this.statusElementMapping[r]=e),e}}insertStatusAtCursor(e){const t=Math.random().toString(36).substring(7);return this.setStatus({status:e,fsid:t,fsElement:null}),t}removeCursorStatus(e){const t=this.options.getElementsBySelector("#".concat(e));t.length>0&&t[0].remove()}insertElementNearElement(e,t){const n=this.options.preprocessElement(e);let r="child";if(t&&"figure"==n.tagName.toLowerCase()){const e=t.closest("p");e&&(t=e,r="afterend")}return this.options.insertElement(n,t,r),n}}class s{constructor(e){this.options=e}onKeyUp(e){let{isEnter:t,isPaste:n,isSpace:r}=e;(t||n||r)&&this.searchPatterns({searchPreviousLine:null!=t&&t})}searchPatterns(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{searchPreviousLine:!1};const t=e.searchPreviousLine?this.options.getPreviousLineText():this.options.getCurrentLineText();for(const n of this.options.patterns){const r=n.regex.exec(t);if(!r)continue;const a=r[0];if(a){const t=n.callback(a);this.replaceSelection(n.regex,t,e.searchPreviousLine)}}}replaceSelection(e,t,n){var r,a,i;null!==(r=this.options)&&void 0!==r&&r.beforeExpand&&this.options.beforeExpand(),this.options.replaceText({regex:e,replacement:t,searchPreviousLine:n}),null!==(a=this.options)&&void 0!==a&&a.afterExpand&&(null===(i=this.options)||void 0===i||i.afterExpand())}}const u=/(

    )?\[FileSafe[^\]]*\](<\/p>)?/g,l=e=>e.replace(u,(e=>f(e))),c=e=>"[FileSafe:".concat(e.uuid,":").concat(e.content.fileName,"]"),f=e=>{const t=(e=(e=(e=e.replace("

    ","")).replace("

    ","")).replace("[","").replace("]","")).split(":"),n=t[1],r=t[2],a=t[3];let i="";if(a){const e=a.split("x");i="width=".concat(e[0]," height=").concat(e[1])}return"

    ")};function d(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var p;!function(e){e.PlainText="plaintext",e.Html="html",e.Markdown="markdown",e.Json="json"}(p||(p={}));class h{constructor(e,t){this.delegate=e,this.options=t,d(this,"fileIdsPendingAssociation",[]),d(this,"componentRelay",void 0),d(this,"fileLoader",void 0),d(this,"textExpander",void 0),d(this,"fileSafeLoading",void 0),d(this,"fileSafeClass",void 0),d(this,"fileSafeInstance",void 0),d(this,"note",void 0),d(this,"ignoreNextTextChange",void 0),d(this,"needsFileSafeElementLoad",void 0),d(this,"previousText",void 0),this.connectToBridge(),this.options.supportsFileSafe&&(this.fileSafeLoading=this.importFileSafe())}connectToBridge(){const{coallesedSaving:e,coallesedSavingDelay:n,mode:r,supportsFileSafe:a}=this.options;this.componentRelay=new(t())({targetWindow:window,options:{coallesedSaving:e,coallesedSavingDelay:n},onReady:()=>{const{platform:e}=this.componentRelay;e&&document.documentElement.classList.add(e)},onThemesChange:this.delegate.onThemesChange}),this.componentRelay.streamContextItem((async e=>{let t=!0;this.note&&this.note.uuid==e.uuid&&(t=!1);const n=this.note;if(a){const t=this.fileSafeClass.getSFItemClass();this.note=new t(e),this.fileSafeInstance.setCurrentNote(this.note)}else this.note=e;if(e.isMetadataUpdate)return;let i=e.content.text;if(r===p.Html&&t&&(/<[a-z][\s\S]*>/i.test(i)||(this.ignoreNextTextChange=!0)),this.previousText=i,a&&(this.needsFileSafeElementLoad=!0,i=l(i)),this.delegate.onNoteValueChange&&await this.delegate.onNoteValueChange(e),this.delegate.setEditorRawText(i),this.delegate.onNoteLockToggle){var o,s;const e=null!==(o=this.componentRelay.getItemAppDataValue(n,"locked"))&&void 0!==o&&o,t=null!==(s=this.componentRelay.getItemAppDataValue(this.note,"locked"))&&void 0!==s&&s;e!==t&&this.delegate.onNoteLockToggle(t)}t&&this.delegate.clearUndoHistory()}))}async importFileSafe(){return Promise.resolve().then(i.t.bind(i,695,23)).then((e=>(this.fileSafeClass=e.default,this.configureFileSafe(),this.fileSafeInstance)))}configureFileSafe(){this.fileSafeInstance=new this.fileSafeClass({componentManager:this.componentRelay}),this.fileSafeInstance.addDataChangeObserver((()=>{const e=this.fileSafeInstance.getAllFileDescriptors();if(this.note&&this.fileIdsPendingAssociation.length>0){let t=!1;for(const n of this.fileIdsPendingAssociation.slice()){const r=e.find((e=>e.uuid==n));if(!r)continue;t=!0,this.fileIdsPendingAssociation.splice(this.fileIdsPendingAssociation.indexOf(n),1);const a=c(r);this.delegate.insertRawText(a)}t&&this.textExpander.searchPatterns()}e.length>0&&this.fileLoader.loadFileSafeElements()})),this.fileSafeInstance.addNewFileDescriptorHandler((e=>{this.fileIdsPendingAssociation.push(e.uuid)})),this.fileLoader=new a({fileSafeInstance:this.fileSafeInstance,getElementsBySelector:this.delegate.getElementsBySelector,insertElement:this.delegate.insertElement,preprocessElement:this.delegate.preprocessElement}),this.textExpander=new s({afterExpand:()=>this.fileLoader.loadFileSafeElements(),getCurrentLineText:this.delegate.getCurrentLineText,getPreviousLineText:this.delegate.getPreviousLineText,replaceText:this.delegate.replaceText,patterns:[{regex:u,callback:e=>l(e)}]})}async getFileSafe(){return!this.fileSafeInstance&&this.fileSafeLoading?this.fileSafeLoading:this.importFileSafe()}onEditorKeyUp(e){let{isSpace:t,isEnter:n}=e;this.textExpander.onKeyUp({isSpace:t,isEnter:n})}onEditorPaste(){this.textExpander.onKeyUp({isPaste:!0})}onEditorValueChanged(e){const{mode:t,supportsFileSafe:n}=this.options;if(this.needsFileSafeElementLoad&&(this.needsFileSafeElementLoad=!1,this.fileLoader.loadFileSafeElements()),this.ignoreNextTextChange)return void(this.ignoreNextTextChange=!1);if(n&&(e=(e=>{const t=(new DOMParser).parseFromString(e,"text/html"),n=t.querySelectorAll("*[fscollapsable]");for(const e of n){const t=e.getAttribute("fsid"),n=e.getAttribute("fsname"),r=e.getAttribute("width"),a=e.getAttribute("height"),i=["FileSafe",t,n];if(r&&a){const e="".concat(r,"x").concat(a);i.push(e)}const o="

    [".concat(i.join(":"),"]

    ");e.insertAdjacentHTML("afterend",o),e.remove()}return t.querySelectorAll("*[ghost]").forEach((e=>e.remove())),t.body.innerHTML})(e),this.previousText==e))return;if(this.previousText=e,!this.note)return;const r=this.note;this.componentRelay.saveItemWithPresave(r,(()=>{if(r.content.text=e,this.delegate.generateCustomPreview){var n;const t=this.delegate.generateCustomPreview(e);r.content.preview_plain=null!==(n=t.plain)&&void 0!==n?n:" ",r.content.preview_html=t.html}else{if(t===p.Html){let t=e.replace(u,(e=>""));t=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:90;return e.length<=t?e:e.substring(0,t)+"..."}((e=>{const t=document.implementation.createHTMLDocument().body;return t.innerHTML=e,t.textContent||t.innerText||""})(t)),r.content.preview_plain=t.length>0?t:" "}else r.content.preview_plain=e;r.content.preview_html=null}}))}canUploadFiles(){const e=this.fileSafeInstance.getAllCredentials(),t=this.fileSafeInstance.getAllIntegrations();return e.length>0&&t.length>0}async uploadJSFileObject(e){const t=this.fileLoader.insertStatusAtCursor("Processing file...");return this.fileSafeInstance.encryptAndUploadJavaScriptFileObject(e).then((()=>{this.fileLoader.removeCursorStatus(t)}))}saveItemWithPresave(e,t){this.componentRelay.saveItemWithPresave(e,t)}}})(),o.default})())},856:function(e){e.exports=function(){"use strict";function e(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t1?n-1:0),a=1;a/gm),z=s(/^data-[\-\w.\u00B7-\uFFFF]/),U=s(/^aria-[\-\w]+$/),H=s(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),W=s(/^(?:\w+script|data):/i),K=s(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),V="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function q(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:$(),t=function(e){return Q(e)};if(t.version="2.2.9",t.removed=[],!e||!e.document||9!==e.document.nodeType)return t.isSupported=!1,t;var n=e.document,r=e.document,a=e.DocumentFragment,i=e.HTMLTemplateElement,s=e.Node,u=e.Element,l=e.NodeFilter,c=e.NamedNodeMap,f=void 0===c?e.NamedNodeMap||e.MozNamedAttrMap:c,x=e.Text,S=e.Comment,G=e.DOMParser,Y=e.trustedTypes,X=u.prototype,Z=C(X,"cloneNode"),ee=C(X,"nextSibling"),te=C(X,"childNodes"),ne=C(X,"parentNode");if("function"==typeof i){var re=r.createElement("template");re.content&&re.content.ownerDocument&&(r=re.content.ownerDocument)}var ae=J(Y,n),ie=ae&&Ne?ae.createHTML(""):"",oe=r,se=oe.implementation,ue=oe.createNodeIterator,le=oe.createDocumentFragment,ce=n.importNode,fe={};try{fe=E(r).documentMode?r.documentMode:{}}catch(e){}var de={};t.isSupported="function"==typeof ne&&se&&void 0!==se.createHTMLDocument&&9!==fe;var pe=j,he=B,me=z,ve=U,ge=W,ye=K,be=H,ke=null,we=_({},[].concat(q(I),q(R),q(D),q(A),q(M))),xe=null,Se=_({},[].concat(q(T),q(P),q(N),q(L))),_e=null,Ee=null,Ce=!0,Ie=!0,Re=!1,De=!1,Fe=!1,Ae=!1,Oe=!1,Me=!1,Te=!1,Pe=!0,Ne=!1,Le=!0,je=!0,Be=!1,ze={},Ue=_({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),He=null,We=_({},["audio","video","img","source","image","track"]),Ke=null,Ve=_({},["alt","class","for","id","label","name","pattern","placeholder","summary","title","value","style","xmlns"]),qe="http://www.w3.org/1998/Math/MathML",$e="http://www.w3.org/2000/svg",Je="http://www.w3.org/1999/xhtml",Qe=Je,Ge=!1,Ye=null,Xe=r.createElement("form"),Ze=function(e){Ye&&Ye===e||(e&&"object"===(void 0===e?"undefined":V(e))||(e={}),e=E(e),ke="ALLOWED_TAGS"in e?_({},e.ALLOWED_TAGS):we,xe="ALLOWED_ATTR"in e?_({},e.ALLOWED_ATTR):Se,Ke="ADD_URI_SAFE_ATTR"in e?_(E(Ve),e.ADD_URI_SAFE_ATTR):Ve,He="ADD_DATA_URI_TAGS"in e?_(E(We),e.ADD_DATA_URI_TAGS):We,_e="FORBID_TAGS"in e?_({},e.FORBID_TAGS):{},Ee="FORBID_ATTR"in e?_({},e.FORBID_ATTR):{},ze="USE_PROFILES"in e&&e.USE_PROFILES,Ce=!1!==e.ALLOW_ARIA_ATTR,Ie=!1!==e.ALLOW_DATA_ATTR,Re=e.ALLOW_UNKNOWN_PROTOCOLS||!1,De=e.SAFE_FOR_TEMPLATES||!1,Fe=e.WHOLE_DOCUMENT||!1,Me=e.RETURN_DOM||!1,Te=e.RETURN_DOM_FRAGMENT||!1,Pe=!1!==e.RETURN_DOM_IMPORT,Ne=e.RETURN_TRUSTED_TYPE||!1,Oe=e.FORCE_BODY||!1,Le=!1!==e.SANITIZE_DOM,je=!1!==e.KEEP_CONTENT,Be=e.IN_PLACE||!1,be=e.ALLOWED_URI_REGEXP||be,Qe=e.NAMESPACE||Je,De&&(Ie=!1),Te&&(Me=!0),ze&&(ke=_({},[].concat(q(M))),xe=[],!0===ze.html&&(_(ke,I),_(xe,T)),!0===ze.svg&&(_(ke,R),_(xe,P),_(xe,L)),!0===ze.svgFilters&&(_(ke,D),_(xe,P),_(xe,L)),!0===ze.mathMl&&(_(ke,A),_(xe,N),_(xe,L))),e.ADD_TAGS&&(ke===we&&(ke=E(ke)),_(ke,e.ADD_TAGS)),e.ADD_ATTR&&(xe===Se&&(xe=E(xe)),_(xe,e.ADD_ATTR)),e.ADD_URI_SAFE_ATTR&&_(Ke,e.ADD_URI_SAFE_ATTR),je&&(ke["#text"]=!0),Fe&&_(ke,["html","head","body"]),ke.table&&(_(ke,["tbody"]),delete _e.tbody),o&&o(e),Ye=e)},et=_({},["mi","mo","mn","ms","mtext"]),tt=_({},["foreignobject","desc","title","annotation-xml"]),nt=_({},R);_(nt,D),_(nt,F);var rt=_({},A);_(rt,O);var at=function(e){var t=ne(e);t&&t.tagName||(t={namespaceURI:Je,tagName:"template"});var n=m(e.tagName),r=m(t.tagName);if(e.namespaceURI===$e)return t.namespaceURI===Je?"svg"===n:t.namespaceURI===qe?"svg"===n&&("annotation-xml"===r||et[r]):Boolean(nt[n]);if(e.namespaceURI===qe)return t.namespaceURI===Je?"math"===n:t.namespaceURI===$e?"math"===n&&tt[r]:Boolean(rt[n]);if(e.namespaceURI===Je){if(t.namespaceURI===$e&&!tt[r])return!1;if(t.namespaceURI===qe&&!et[r])return!1;var a=_({},["title","style","font","a","script"]);return!rt[n]&&(a[n]||!nt[n])}return!1},it=function(e){h(t.removed,{element:e});try{e.parentNode.removeChild(e)}catch(t){try{e.outerHTML=ie}catch(t){e.remove()}}},ot=function(e,n){try{h(t.removed,{attribute:n.getAttributeNode(e),from:n})}catch(e){h(t.removed,{attribute:null,from:n})}if(n.removeAttribute(e),"is"===e&&!xe[e])if(Me||Te)try{it(n)}catch(e){}else try{n.setAttribute(e,"")}catch(e){}},st=function(e){var t=void 0,n=void 0;if(Oe)e=""+e;else{var a=v(e,/^[\r\n\t ]+/);n=a&&a[0]}var i=ae?ae.createHTML(e):e;if(Qe===Je)try{t=(new G).parseFromString(i,"text/html")}catch(e){}if(!t||!t.documentElement){t=se.createDocument(Qe,"template",null);try{t.documentElement.innerHTML=Ge?"":i}catch(e){}}var o=t.body||t.documentElement;return e&&n&&o.insertBefore(r.createTextNode(n),o.childNodes[0]||null),Fe?t.documentElement:o},ut=function(e){return ue.call(e.ownerDocument||e,e,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT,null,!1)},lt=function(e){return!(e instanceof x||e instanceof S||"string"==typeof e.nodeName&&"string"==typeof e.textContent&&"function"==typeof e.removeChild&&e.attributes instanceof f&&"function"==typeof e.removeAttribute&&"function"==typeof e.setAttribute&&"string"==typeof e.namespaceURI&&"function"==typeof e.insertBefore)},ct=function(e){return"object"===(void 0===s?"undefined":V(s))?e instanceof s:e&&"object"===(void 0===e?"undefined":V(e))&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName},ft=function(e,n,r){de[e]&&d(de[e],(function(e){e.call(t,n,r,Ye)}))},dt=function(e){var n=void 0;if(ft("beforeSanitizeElements",e,null),lt(e))return it(e),!0;if(v(e.nodeName,/[\u0080-\uFFFF]/))return it(e),!0;var r=m(e.nodeName);if(ft("uponSanitizeElement",e,{tagName:r,allowedTags:ke}),!ct(e.firstElementChild)&&(!ct(e.content)||!ct(e.content.firstElementChild))&&k(/<[/\w]/g,e.innerHTML)&&k(/<[/\w]/g,e.textContent))return it(e),!0;if(!ke[r]||_e[r]){if(je&&!Ue[r]){var a=ne(e)||e.parentNode,i=te(e)||e.childNodes;if(i&&a)for(var o=i.length-1;o>=0;--o)a.insertBefore(Z(i[o],!0),ee(e))}return it(e),!0}return e instanceof u&&!at(e)?(it(e),!0):"noscript"!==r&&"noembed"!==r||!k(/<\/no(script|embed)/i,e.innerHTML)?(De&&3===e.nodeType&&(n=e.textContent,n=g(n,pe," "),n=g(n,he," "),e.textContent!==n&&(h(t.removed,{element:e.cloneNode()}),e.textContent=n)),ft("afterSanitizeElements",e,null),!1):(it(e),!0)},pt=function(e,t,n){if(Le&&("id"===t||"name"===t)&&(n in r||n in Xe))return!1;if(Ie&&k(me,t));else if(Ce&&k(ve,t));else{if(!xe[t]||Ee[t])return!1;if(Ke[t]);else if(k(be,g(n,ye,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==y(n,"data:")||!He[e])if(Re&&!k(ge,g(n,ye,"")));else if(n)return!1}return!0},ht=function(e){var n=void 0,r=void 0,a=void 0,i=void 0;ft("beforeSanitizeAttributes",e,null);var o=e.attributes;if(o){var s={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:xe};for(i=o.length;i--;){var u=n=o[i],l=u.name,c=u.namespaceURI;if(r=b(n.value),a=m(l),s.attrName=a,s.attrValue=r,s.keepAttr=!0,s.forceKeepAttr=void 0,ft("uponSanitizeAttribute",e,s),r=s.attrValue,!s.forceKeepAttr&&(ot(l,e),s.keepAttr))if(k(/\/>/i,r))ot(l,e);else{De&&(r=g(r,pe," "),r=g(r,he," "));var f=e.nodeName.toLowerCase();if(pt(f,a,r))try{c?e.setAttributeNS(c,l,r):e.setAttribute(l,r),p(t.removed)}catch(e){}}}ft("afterSanitizeAttributes",e,null)}},mt=function e(t){var n=void 0,r=ut(t);for(ft("beforeSanitizeShadowDOM",t,null);n=r.nextNode();)ft("uponSanitizeShadowNode",n,null),dt(n)||(n.content instanceof a&&e(n.content),ht(n));ft("afterSanitizeShadowDOM",t,null)};return t.sanitize=function(r,i){var o=void 0,u=void 0,l=void 0,c=void 0,f=void 0;if((Ge=!r)&&(r="\x3c!--\x3e"),"string"!=typeof r&&!ct(r)){if("function"!=typeof r.toString)throw w("toString is not a function");if("string"!=typeof(r=r.toString()))throw w("dirty is not a string, aborting")}if(!t.isSupported){if("object"===V(e.toStaticHTML)||"function"==typeof e.toStaticHTML){if("string"==typeof r)return e.toStaticHTML(r);if(ct(r))return e.toStaticHTML(r.outerHTML)}return r}if(Ae||Ze(i),t.removed=[],"string"==typeof r&&(Be=!1),Be);else if(r instanceof s)1===(u=(o=st("\x3c!----\x3e")).ownerDocument.importNode(r,!0)).nodeType&&"BODY"===u.nodeName||"HTML"===u.nodeName?o=u:o.appendChild(u);else{if(!Me&&!De&&!Fe&&-1===r.indexOf("<"))return ae&&Ne?ae.createHTML(r):r;if(!(o=st(r)))return Me?null:ie}o&&Oe&&it(o.firstChild);for(var d=ut(Be?r:o);l=d.nextNode();)3===l.nodeType&&l===c||dt(l)||(l.content instanceof a&&mt(l.content),ht(l),c=l);if(c=null,Be)return r;if(Me){if(Te)for(f=le.call(o.ownerDocument);o.firstChild;)f.appendChild(o.firstChild);else f=o;return Pe&&(f=ce.call(n,f,!0)),f}var p=Fe?o.outerHTML:o.innerHTML;return De&&(p=g(p,pe," "),p=g(p,he," ")),ae&&Ne?ae.createHTML(p):p},t.setConfig=function(e){Ze(e),Ae=!0},t.clearConfig=function(){Ye=null,Ae=!1},t.isValidAttribute=function(e,t,n){Ye||Ze({});var r=m(e),a=m(t);return pt(r,a,n)},t.addHook=function(e,t){"function"==typeof t&&(de[e]=de[e]||[],h(de[e],t))},t.removeHook=function(e){de[e]&&p(de[e])},t.removeHooks=function(e){de[e]&&(de[e]=[])},t.removeAllHooks=function(){de={}},t}return Q()}()},971:(e,t,n)=>{e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=13)}([function(e,t){e.exports=n(294)},function(e,t){e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},function(e,t){e.exports=function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}},function(e,t,n){e.exports=n(12)},function(e,t){function n(e,t){for(var n=0;n=0;--i){var o=this.tryEntries[i],s=o.completion;if("root"===o.tryLoc)return a("end");if(o.tryLoc<=this.prev){var u=r.call(o,"catchLoc"),l=r.call(o,"finallyLoc");if(u&&l){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),C(n),h}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;C(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,r){return this.delegate={iterator:R(e),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=t),h}},e}(e.exports);try{regeneratorRuntime=r}catch(e){Function("r","regeneratorRuntime = r")(r)}},function(e,t,n){"use strict";n.r(t);var r=n(0),a=n.n(r),i=n(9),o=n.n(i),s=n(5),u=n.n(s),l=n(6),c=n.n(l),f=n(7),d=n.n(f),p=n(4),h=n.n(p),m=n(8),v=n.n(m),g=n(2),y=n.n(g),b=n(1),k=n.n(b),w=function(){function e(){u()(this,e),this.unloadHandlers=[],this.dataChangeObservers=[]}return h()(e,null,[{key:"get",value:function(){return null==this.instance&&(this.instance=new e),this.instance}}]),h()(e,[{key:"setFilesafeInstance",value:function(e){var t=this;this.filesafe=e,this.fsObserver=e.addDataChangeObserver((function(){var e=!0,n=!1,r=void 0;try{for(var a,i=t.dataChangeObservers[Symbol.iterator]();!(e=(a=i.next()).done);e=!0)(0,a.value)()}catch(e){n=!0,r=e}finally{try{e||null==i.return||i.return()}finally{if(n)throw r}}}))}},{key:"setDelegate",value:function(e){this.delegate=e}},{key:"getDelegate",value:function(){return this.delegate||{}}},{key:"addDataChangeObserver",value:function(e){this.dataChangeObservers.push(e)}},{key:"addUnloadHandler",value:function(e){this.unloadHandlers.push(e)}},{key:"unload",value:function(){var t=!0,n=!1,r=void 0;try{for(var a,i=this.unloadHandlers[Symbol.iterator]();!(t=(a=i.next()).done);t=!0)(0,a.value)()}catch(e){n=!0,r=e}finally{try{t||null==i.return||i.return()}finally{if(n)throw r}}this.dataChangeObservers=[],this.filesafe&&this.filesafe.removeDataChangeObserver(this.fsObserver),e.instance=null}},{key:"defaultRelayServerUrl",value:function(){return window.default_fs_relay_server_url||"https://filesafe.standardnotes.org"}}]),e}();k()(w,"instance",null);var x=function(e){function t(e){var n;return u()(this,t),n=c()(this,d()(t).call(this,e)),k()(y()(n),"exportCredential",(function(e){var t=btoa(JSON.stringify(e,null,2));w.get().filesafe.downloadBase64Data({base64Data:t,fileName:"sn-filesafe-keys-".concat(e.created_at.toISOString(),".json"),fileType:"text/json"})})),k()(y()(n),"deleteCredential",(function(e){0==n.numFilesForCredential(e)?w.get().filesafe.deleteCredential(e):alert("This key has files encrypted with it and cannot be deleted. First delete any associated files, then try again.")})),k()(y()(n),"createNewKeys",(function(){w.get().filesafe.createNewCredentials()})),k()(y()(n),"labelForCredential",(function(e){return e.created_at.toLocaleString()})),k()(y()(n),"numFilesForCredential",(function(e){return w.get().filesafe.numberOfFilesEncryptedWithCredential(e)})),k()(y()(n),"setCredentialAsDefault",(function(e){w.get().filesafe.setCredentialAsDefault(e)})),n.state={credentials:w.get().filesafe.getAllCredentials()||[]},w.get().addDataChangeObserver((function(){n.setState({credentials:w.get().filesafe.getAllCredentials()})})),n}return v()(t,e),h()(t,[{key:"render",value:function(){var e=this;return a.a.createElement("div",null,a.a.createElement("div",{className:"sk-panel-row"},a.a.createElement("div",{className:"sk-h2 sk-bold"},"Keys"),a.a.createElement("div",{className:"sk-button info no-border",onClick:this.createNewKeys},a.a.createElement("div",{className:"sk-label"},"Create New"))),a.a.createElement("div",{className:"list-container"},this.state.credentials.map((function(t){return a.a.createElement("div",{className:"list-item sk-horizontal-group top"},a.a.createElement("div",{className:"sk-circle x-small "+(t.content.isDefault?"info":"sk-secondary-contrast")}),a.a.createElement("div",null,a.a.createElement("div",{className:"sk-panel-row condensed sk-bold"},e.labelForCredential(t)),a.a.createElement("div",{style:{marginTop:3},className:"sk-panel-row condensed"},e.numFilesForCredential(t)," encrypted files"),a.a.createElement("div",{className:"sk-panel-row condensed"},a.a.createElement("div",{className:"sk-horizontal-group"},e.state.credentials.length>1&&!t.content.isDefault&&a.a.createElement("a",{className:"info",onClick:function(){e.setCredentialAsDefault(t)}},"Make Default"),a.a.createElement("a",{className:"info",onClick:function(){e.exportCredential(t)}},"Export"),a.a.createElement("a",{className:"danger",onClick:function(){e.deleteCredential(t)}},"Delete")))))}))))}}]),t}(a.a.Component),S=n(3),_=n.n(S),E=function(){function e(t){var n=t.credentialManager,r=t.integrationManager;u()(this,e),this.credentialManager=n,this.integrationManager=r}return h()(e,[{key:"getMessages",value:function(){var e,t;return _.a.async((function(n){for(;;)switch(n.prev=n.next){case 0:return e=[],n.next=3,_.a.awrap(this.credentialManager.getDefaultCredentials());case 3:return n.sent||e.push({message:"Create keys by selecting Create New under Keys.",css:"sk-base"}),(t=this.integrationManager.integrations)&&0!=t.length||e.push({message:"Add a new integration by selecting Add New under Integrations",css:"sk-base"}),n.abrupt("return",e);case 8:case"end":return n.stop()}}),null,this)}}]),e}(),C=function(e){function t(e){var n;return u()(this,t),(n=c()(this,d()(t).call(this,e))).state={},n}return v()(t,e),h()(t,[{key:"render",value:function(){return a.a.createElement("div",{id:"messages"},a.a.createElement("div",{className:"title"},"Complete the following steps before uploading your first file:"),a.a.createElement("ul",null,this.props.messages.map((function(e){return a.a.createElement("li",{dangerouslySetInnerHTML:{__html:e.message},className:e.css})}))))}}]),t}(a.a.Component),I=function(e){function t(e){var n;return u()(this,t),n=c()(this,d()(t).call(this,e)),k()(y()(n),"setStatusForFile",(function(e,t,r){n.setState({fileStatusFile:e,fileStatus:t,hasStatusSpinner:r})})),k()(y()(n),"decryptFileDescriptor",(function(e){var t,r;return _.a.async((function(a){for(;;)switch(a.prev=a.next){case 0:if(t=w.get().filesafe.integrationForFileDescriptor(e)){a.next=4;break}return alert("Unable to find integration for file. If you have deleted the integration, please re-add it and try again."),a.abrupt("return");case 4:return r=w.get().filesafe.displayStringForIntegration(t),n.setStatusForFile(e,"Downloading from ".concat(r,"..."),!0),a.abrupt("return",w.get().filesafe.downloadFileFromDescriptor(e).then((function(t){return n.setStatusForFile(e,"Decrypting...",!0),w.get().filesafe.decryptFile({fileDescriptor:e,fileItem:t}).then((function(t){return{base64Data:t.decryptedData,fileName:e.content.fileName,fileType:e.content.fileType}})).catch((function(t){console.error("filesafe-embed | error decrypting file:",t),n.flashErrorForFileDescriptor(e,"Error decrypting file.")}))})).catch((function(t){console.error("Error downloading file",t),n.flashErrorForFileDescriptor(e,"Error downloading file.")})));case 7:case"end":return a.stop()}}))})),k()(y()(n),"downloadFile",(function(e){var t,r;return _.a.async((function(a){for(;;)switch(a.prev=a.next){case 0:if(!n.isMobile){a.next=5;break}return t=w.get().filesafe.getPlatform(),alert("Downloading files is not currently supported on ".concat("ios"==t?"iOS":"Android",".")),a.abrupt("return");case 5:return a.next=7,_.a.awrap(n.decryptFileDescriptor(e));case 7:if(r=a.sent){a.next=11;break}return console.error("decryptFile returned nil data"),a.abrupt("return");case 11:w.get().filesafe.downloadBase64Data(r),n.setStatusForFile(e,null);case 13:case"end":return a.stop()}}))})),k()(y()(n),"previewFile",(function(e){var t,r;return _.a.async((function(a){for(;;)switch(a.prev=a.next){case 0:return a.next=2,_.a.awrap(n.decryptFileDescriptor(e));case 2:t=a.sent,r=w.get().filesafe.createTemporaryFileUrl({base64Data:t.base64Data,dataType:t.fileType}),n.setStatusForFile(e,null),n.setState({previewUrl:r,previewingFile:e});case 6:case"end":return a.stop()}}))})),k()(y()(n),"onClickPreview",(function(){setTimeout((function(){n.revokePreview()}),500)})),k()(y()(n),"selectFile",(function(e,t){e.target.focus(),n.state.selectedFile==t?(n.setState({selectedFile:null}),n.delegate.onSelectFile&&n.delegate.onSelectFile(null)):(n.setState({selectedFile:t}),n.delegate.onSelectFile&&n.delegate.onSelectFile(t)),n.revokePreview()})),k()(y()(n),"deleteFile",(function(e){w.get().filesafe.deleteFileFromDescriptor(e)})),k()(y()(n),"copyInsertionLink",(function(e){var t="[FileSafe:".concat(e.uuid,":").concat(e.content.fileName,"]");w.get().filesafe.copyTextToClipboard(t),n.setState({copiedLink:e}),setTimeout((function(){n.setState({copiedLink:null})}),1e3)})),k()(y()(n),"isFileSelected",(function(e){return n.state.selectedFile==e})),k()(y()(n),"elementForFile",(function(e){var t,r=w.get().filesafe.integrationForFileDescriptor(e);t=r?w.get().filesafe.displayStringForIntegration(r):"Integration Not Found";var i=e.content.serverMetadata.file_path,o=n.state.previewUrl&&n.state.previewingFile==e,s=n.state.fileStatusFile==e&&n.state.fileStatus,u=n.state.hasStatusSpinner;return a.a.createElement("div",{className:"file-item-container "+(n.isFileSelected(e)?"expanded":"")},a.a.createElement("div",{onClick:function(t){n.selectFile(t,e)},className:"file-item-button sk-button info "+(n.isFileSelected(e)?"selected":void 0)},a.a.createElement("div",{className:"sk-label"},e.content.fileName),s&&a.a.createElement("div",{className:"file-download-status sk-horizontal-group"},u&&a.a.createElement("div",{className:"sk-spinner x-small"}),a.a.createElement("div",{className:"file-status-label"},n.state.fileStatus)),n.isFileSelected(e)&&a.a.createElement("div",{className:"file-item-options-wrapper"},a.a.createElement("div",{onClick:function(e){e.stopPropagation()},className:"sk-app-bar file-item-options"},a.a.createElement("div",{className:"center"},a.a.createElement("div",{onClick:function(t){t.stopPropagation(),n.downloadFile(e)},className:"sk-app-bar-item"},a.a.createElement("div",{className:"sk-label contrast "+(n.isMobile?"disabled":"")},"Download")),a.a.createElement("div",{className:"sk-app-bar-item border"}),n.supportsPreviews&&o&&a.a.createElement("a",{className:"sk-app-bar-item",href:n.state.previewUrl,onClick:function(e){e.stopPropagation(),n.onClickPreview()},target:"_blank"},a.a.createElement("div",{className:"sk-label contrast"},"Open Preview")),n.supportsPreviews&&!o&&a.a.createElement("div",{onClick:function(t){t.stopPropagation(),n.previewFile(e)},className:"sk-app-bar-item"},a.a.createElement("div",{className:"sk-label contrast "+(n.isMobile?"disabled":"")},"Preview")),n.supportsPreviews&&a.a.createElement("div",{className:"sk-app-bar-item border"}),a.a.createElement("div",{onClick:function(t){t.stopPropagation(),n.copyInsertionLink(e)},className:"sk-app-bar-item"},a.a.createElement("div",{className:"sk-label contrast"},n.state.copiedLink==e?"Copied":"Copy Insert Link")),a.a.createElement("div",{className:"sk-app-bar-item border"}),a.a.createElement("div",{onClick:function(t){t.stopPropagation(),n.deleteFile(e)},className:"sk-app-bar-item"},a.a.createElement("div",{className:"sk-label contrast"},"Delete")))),a.a.createElement("div",{className:"file-location"},a.a.createElement("strong",null,t),a.a.createElement("span",null," ",i)))))})),n.state={},n.delegate=w.get().getDelegate(),n}return v()(t,e),h()(t,[{key:"revokePreview",value:function(){this.state.previewUrl&&w.get().filesafe.revokeTempUrl(this.state.previewUrl),this.setState({previewUrl:null,previewingFile:null})}},{key:"flashErrorForFileDescriptor",value:function(e,t){var n=this;this.setStatusForFile(e,t,!1),setTimeout((function(){n.setStatusForFile(null)}),2500)}},{key:"render",value:function(){var e=this;return this.props.files.map((function(t){return e.elementForFile(t)}))}},{key:"supportsPreviews",get:function(){if(void 0!==this._supportsPreview)return this._supportsPreview;var e=w.get().filesafe.getEnvironment();if(null==e)return!1;this._supportsPreview="web"==e}},{key:"isMobile",get:function(){return w.get().filesafe.isMobile()}}]),t}(a.a.Component),R=function(e){function t(e){var n;return u()(this,t),n=c()(this,d()(t).call(this,e)),k()(y()(n),"event_preventDefaults",(function(e){e.preventDefault(),e.stopPropagation()})),k()(y()(n),"event_highlight",(function(e){n.event_preventDefaults(e),n.rootElement.classList.add("highlight")})),k()(y()(n),"event_unhighlight",(function(e){n.event_preventDefaults(e),n.rootElement.classList.remove("highlight")})),k()(y()(n),"event_drop",(function(e){n.event_unhighlight(e),n.event_preventDefaults(e);var t=e.dataTransfer.files;n.handleDroppedFiles(t)})),k()(y()(n),"handleDroppedFiles",(function(e){var t,r,a,i,o,s;return _.a.async((function(u){for(;;)switch(u.prev=u.next){case 0:if(0!=w.get().filesafe.getAllIntegrations().length){u.next=3;break}return alert("Please set up at least one integration before attempting to upload a file. To do this, press Expand, and select Add New in the Integrations section."),u.abrupt("return");case 3:t=!0,r=!1,a=void 0,u.prev=6,i=e[Symbol.iterator]();case 8:if(t=(o=i.next()).done){u.next=17;break}if(s=o.value){u.next=12;break}return u.abrupt("continue",14);case 12:return u.next=14,_.a.awrap(n.readFile(s));case 14:t=!0,u.next=8;break;case 17:u.next=23;break;case 19:u.prev=19,u.t0=u.catch(6),r=!0,a=u.t0;case 23:u.prev=23,u.prev=24,t||null==i.return||i.return();case 26:if(u.prev=26,!r){u.next=29;break}throw a;case 29:return u.finish(26);case 30:return u.finish(23);case 31:case"end":return u.stop()}}),null,null,[[6,19,23,31],[24,,26,30]])})),n.messagesManager=new E({credentialManager:w.get().filesafe.credentialManager,integrationManager:w.get().filesafe.integrationManager}),n.messagesManager.getMessages().then((function(e){n.setState({messages:e})})),n.state={noteFiles:w.get().filesafe.fileDescriptorsForCurrentNote(),messages:[]},w.get().addDataChangeObserver((function(){n.reload()})),w.get().addUnloadHandler((function(){window.removeEventListener("dragenter",n.event_highlight,!1),window.removeEventListener("dragover",n.event_highlight,!1),window.removeEventListener("dragleave",n.event_unhighlight,!1),window.removeEventListener("drop",n.event_drop,!1)})),n}return v()(t,e),h()(t,[{key:"reload",value:function(){var e;return _.a.async((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,_.a.awrap(this.messagesManager.getMessages());case 2:e=t.sent,this.setState({noteFiles:w.get().filesafe.fileDescriptorsForCurrentNote(),messages:e});case 4:case"end":return t.stop()}}),null,this)}},{key:"componentDidMount",value:function(){this.configureFileForm(),window.addEventListener("dragenter",this.event_highlight,!1),window.addEventListener("dragover",this.event_highlight,!1),window.addEventListener("dragleave",this.event_unhighlight,!1),window.addEventListener("drop",this.event_drop,!1)}},{key:"configureFileForm",value:function(){var e=this,t=this.fileInput;this.dropContainer,t&&(t.onchange=function(t){var n=t.target.files;e.handledFiles||e.handleDroppedFiles(n)})}},{key:"reset",value:function(){this.setState({rawData:null,decryptedItems:null,requestPassword:!1})}},{key:"readFile",value:function(e){var t=this;return _.a.async((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",new Promise((function(n,r){var a=new FileReader,i=!1;a.onload=function(r){var a,o,s,u;return _.a.async((function(l){for(;;)switch(l.prev=l.next){case 0:if(a=r.target.result,!i){l.next=7;break}a=JSON.parse(a),o=a.items[0],t.decryptDraggedFile(o).then(n),l.next=20;break;case 7:if(!((s=a).byteLength>5e7)){l.next=14;break}return alert("The maximum upload size is ".concat(50," megabytes per file.")),t.setState({status:null}),n(),l.abrupt("return");case 14:return l.next=16,_.a.awrap(SFJS.crypto.arrayBufferToBase64(s));case 16:return u=l.sent,l.next=19,_.a.awrap(t.encryptFile(u,e.name,e.type));case 19:n();case 20:case"end":return l.stop()}}))},t.setState({status:"Reading file..."}),e.name.endsWith(".sf")||e.name.endsWith(".json")?(i=!0,a.readAsText(e)):a.readAsArrayBuffer(e)})));case 4:case"end":return n.stop()}}))}},{key:"decryptDraggedFile",value:function(e){var t,n,r,a,i,o,s,u,l=this;return _.a.async((function(c){for(;;)switch(c.prev=c.next){case 0:this.setState({status:"Decrypting..."}),t=w.get().filesafe.getAllCredentials(),n=function(t){return _.a.async((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",new Promise((function(n,r){w.get().filesafe.decryptFile({fileItem:e,credential:t}).then((function(e){var t=e.decryptedItem;w.get().filesafe.downloadBase64Data({base64Data:e.decryptedData,fileName:t.content.fileName,fileType:t.content.fileType}),l.setState({status:null}),n(!0)})).catch((function(e){console.error("Error decrypting:",e),l.flashError("Error decrypting file."),r(!1)}))})));case 1:case"end":return n.stop()}}))},r=!0,a=!1,i=void 0,c.prev=6,o=t[Symbol.iterator]();case 8:if(r=(s=o.next()).done){c.next=18;break}return u=s.value,c.next=12,_.a.awrap(n(u));case 12:if(!c.sent){c.next=15;break}return c.abrupt("return");case 15:r=!0,c.next=8;break;case 18:c.next=24;break;case 20:c.prev=20,c.t0=c.catch(6),a=!0,i=c.t0;case 24:c.prev=24,c.prev=25,r||null==o.return||o.return();case 27:if(c.prev=27,!a){c.next=30;break}throw i;case 30:return c.finish(27);case 31:return c.finish(24);case 32:case"end":return c.stop()}}),null,this,[[6,20,24,32],[25,,27,31]])}},{key:"wait",value:function(e){return _.a.async((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",new Promise((function(t,n){setTimeout((function(){t()}),1e3*e)})));case 1:case"end":return t.stop()}}))}},{key:"encryptFile",value:function(e,t,n){var r,a,i=this;return _.a.async((function(o){for(;;)switch(o.prev=o.next){case 0:if(r=w.get().filesafe.getDefaultCredentials()){o.next=5;break}return this.setState({status:null}),alert("Please set up at least one key before attempting to upload a file. To do this, press Expand, and select Create New in the Keys section."),o.abrupt("return");case 5:if(a=w.get().filesafe.getDefaultIntegration()){o.next=10;break}return this.setState({status:null}),alert("Please set up at least one integration before attempting to upload a file. To do this, press Expand, and select Add New in the Integrations section."),o.abrupt("return");case 10:return this.setState({status:"Encrypting..."}),o.abrupt("return",w.get().filesafe.encryptFile({data:e,inputFileName:t,fileType:n,credential:r}).then((function(e){return _.a.async((function(o){for(;;)switch(o.prev=o.next){case 0:return i.setState({status:"Uploading to ".concat(w.get().filesafe.displayStringForIntegration(a),"...")}),o.next=3,_.a.awrap(i.wait(.5));case 3:return o.abrupt("return",w.get().filesafe.uploadFile({fileItem:e,inputFileName:t,fileType:n,credential:r}).then((function(){i.setState({status:"Upload Success."}),setTimeout((function(){i.setState({status:null})}),2e3)})).catch((function(e){console.error("fs-embed | error uploading file:",e),i.flashError("Error uploading file.")})));case 4:case"end":return o.stop()}}))})));case 12:case"end":return o.stop()}}),null,this)}},{key:"flashError",value:function(e){var t=this;this.setState({status:e,statusClass:"danger"}),setTimeout((function(){t.setState({status:null,statusClass:null})}),2500)}},{key:"render",value:function(){var e=this,t=this.state.statusClass?this.state.statusClass:"info",n="info"==t;return a.a.createElement("div",{className:"sn-component files-view"},a.a.createElement("div",{className:"sk-panel-row align-top"},a.a.createElement("div",{className:"files"},this.state.messages.length>0&&a.a.createElement("div",{id:"messages-container",className:"sk-panel-section"},a.a.createElement(C,{messages:this.state.messages})),this.state.status&&a.a.createElement("div",{id:"file-upload-status",className:"sk-horizontal-group"},n&&a.a.createElement("div",{className:"sk-spinner info small"}),a.a.createElement("div",{className:t},this.state.status)),a.a.createElement("div",{id:"add-file-button-container"},a.a.createElement("div",{className:"file sk-button info"},a.a.createElement("label",{className:"no-style"},a.a.createElement("input",{type:"file",style:{display:"none"},onChange:function(t){e.handleDroppedFiles(t.target.files)}}),a.a.createElement("div",{id:"attach-file-button-label",className:"sk-label"},"Attach File")))),a.a.createElement(I,{files:this.state.noteFiles}))))}},{key:"rootElement",get:function(){return document.getElementById("filesafe-embed")}},{key:"dropContainer",get:function(){return document.getElementById("files-view")}},{key:"fileInput",get:function(){return document.getElementById("file-input")}}]),t}(a.a.Component),D=function(e){function t(e){var n;return u()(this,t),n=c()(this,d()(t).call(this,e)),k()(y()(n),"toggleVisibility",(function(){n.setState({expanded:!n.state.expanded})})),n.state={expanded:!1,files:w.get().filesafe.getAllFileDescriptors()||[]},w.get().addDataChangeObserver((function(){n.setState({files:w.get().filesafe.getAllFileDescriptors()})})),n}return v()(t,e),h()(t,[{key:"render",value:function(){return a.a.createElement("div",{className:"files-view"},a.a.createElement("div",{className:"sk-panel-row justify-left"},a.a.createElement("div",{className:"sk-horizontal-group"},a.a.createElement("div",{className:"sk-panel-section-title"},"All Files ",a.a.createElement("span",{style:{fontWeight:"normal"}},"(",this.state.files.length,")")),a.a.createElement("a",{className:"info",onClick:this.toggleVisibility},this.state.expanded?"Hide":"Show"))),this.state.expanded&&a.a.createElement("div",{className:"sk-panel-row"},a.a.createElement("div",{className:"files"},a.a.createElement(I,{files:this.state.files}))))}}]),t}(a.a.Component),F=function(e){function t(e){var n;return u()(this,t),n=c()(this,d()(t).call(this,e)),k()(y()(n),"handleKeyPress",(function(e){"Enter"===e.key&&n.submitIntegrationCode()})),k()(y()(n),"handleTextChange",(function(e){var t=e.target.value;n.setState({integrationCode:t})})),k()(y()(n),"submitIntegrationCode",(function(){var e=n.state.integrationCode;e&&0!=e.length&&w.get().filesafe.saveIntegrationFromCode(e).then((function(){n.setState({integrationCode:null,showInputForm:!1}),n.reloadIntegrations()})).catch((function(){alert("Invalid integration code. Ensure the correct value is copied and try again.")}))})),k()(y()(n),"addNewIntegrationClicked",(function(){window.open(w.get().defaultRelayServerUrl(),"_blank"),n.setState({showInputForm:!0})})),k()(y()(n),"cancelIntegrationForm",(function(){n.setState({showInputForm:!1})})),k()(y()(n),"deleteIntegration",(function(e){w.get().filesafe.deleteIntegration(e)})),k()(y()(n),"setIntegrationAsDefaultUploadSource",(function(e){w.get().filesafe.setIntegrationAsDefault(e)})),n.state={integrations:w.get().filesafe.getAllIntegrations()||[]},w.get().addDataChangeObserver((function(){n.reloadIntegrations()})),n}return v()(t,e),h()(t,[{key:"reloadIntegrations",value:function(){var e=w.get().filesafe.getAllIntegrations();this.setState({integrations:e})}},{key:"componentDidMount",value:function(){}},{key:"componentWillUnmount",value:function(){}},{key:"displayStringForIntegration",value:function(e){return w.get().filesafe.displayStringForIntegration(e)}},{key:"render",value:function(){var e=this,t=this.state.integrations.length>1;return a.a.createElement("div",null,a.a.createElement("div",{className:"sk-panel-row"},a.a.createElement("div",{className:"sk-h2 sk-bold"},"Integrations"),!this.state.showInputForm&&a.a.createElement("div",{className:"sk-button info no-border",onClick:this.addNewIntegrationClicked},a.a.createElement("div",{className:"sk-label"},"Add New"))),a.a.createElement("div",{id:"integrations"},this.state.showInputForm&&a.a.createElement("div",{className:"sk-notification info"},a.a.createElement("strong",null,"New Integration"),a.a.createElement("p",{className:"sk-p"},"A new browser tab has opened—if not, try ",a.a.createElement("a",{href:w.get().defaultRelayServerUrl(),target:"_blank"},"this link"),". Complete the authentication flow and enter the code you receive below."),a.a.createElement("div",{className:"sk-panel-row"}),a.a.createElement("input",{className:"title sk-input contrast",type:"text",placeholder:"Enter integration code",value:this.state.integrationCode,onChange:this.handleTextChange,onKeyPress:this.handleKeyPress}),a.a.createElement("div",{className:"sk-button-group",style:{marginTop:10}},a.a.createElement("div",{className:"sk-button neutral",onClick:this.cancelIntegrationForm},a.a.createElement("a",{className:"sk-label"},"Cancel")),a.a.createElement("div",{className:"sk-button sk-base",onClick:this.submitIntegrationCode},a.a.createElement("a",{className:"sk-label"},"Submit"))))),a.a.createElement("div",{className:"list-container"},this.state.integrations.map((function(n){return a.a.createElement("div",{className:"list-item sk-horizontal-group top"},a.a.createElement("div",{className:"sk-circle x-small "+(n.content.isDefaultUploadSource?"info":"sk-secondary-contrast")}),a.a.createElement("div",null,a.a.createElement("div",{className:"sk-panel-row condensed sk-bold"},e.displayStringForIntegration(n)),a.a.createElement("div",{className:"sk-panel-row condensed"},a.a.createElement("div",{className:"sk-horizontal-group"},t&&!n.content.isDefaultUploadSource&&a.a.createElement("a",{className:"info",onClick:function(){e.setIntegrationAsDefaultUploadSource(n)}},"Make Default"),a.a.createElement("a",{className:"danger",onClick:function(){e.deleteIntegration(n)}},"Delete")))))}))))}}]),t}(a.a.Component),A=function(e){function t(e){var n;return u()(this,t),(n=c()(this,d()(t).call(this,e))).state={messages:[]},n}return v()(t,e),h()(t,[{key:"render",value:function(){return a.a.createElement("div",{id:"home",className:"sk-panel static"},a.a.createElement("div",{id:"main-content",className:"sk-panel-content"},a.a.createElement("div",{className:"sk-panel-section"},a.a.createElement(R,null)),a.a.createElement("div",{className:"sk-panel-section"},a.a.createElement(F,null)),a.a.createElement("div",{className:"sk-panel-section"},a.a.createElement(x,null)),a.a.createElement("div",{className:"sk-panel-section"},a.a.createElement(D,null))))}}]),t}(a.a.Component),O=function(e){function t(e){return u()(this,t),c()(this,d()(t).call(this,e))}return v()(t,e),h()(t,null,[{key:"renderInElement",value:function(e,n,r){w.get().setFilesafeInstance(n),w.get().setDelegate(r),o.a.render(a.a.createElement(t),e)}},{key:"unload",value:function(e){w.get().unload(),o.a.unmountComponentAtNode(e)}}]),h()(t,[{key:"render",value:function(){return a.a.createElement("div",{id:"filesafe-embed"},a.a.createElement("div",{className:"sn-component"},a.a.createElement(A,null)))}}]),t}(a.a.Component);t.default={FilesafeEmbed:O,React:a.a,ReactDOM:o.a}}])},166:e=>{e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=4)}([function(e,t,n){(function(t){e.exports=function(){function e(t,n,r){function a(o,s){if(!n[o]){if(!t[o]){if(i)return i(o,!0);var u=new Error("Cannot find module '"+o+"'");throw u.code="MODULE_NOT_FOUND",u}var l=n[o]={exports:{}};t[o][0].call(l.exports,(function(e){return a(t[o][1][e]||e)}),l,l.exports,e,t,n,r)}return n[o].exports}for(var i=!1,o=0;o>>2]|=(n[a>>>2]>>>24-a%4*8&255)<<24-(r+a)%4*8;else if(65535>>2]=n[a>>>2];else t.push.apply(t,n);return this.sigBytes+=e,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=i.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var n=[],r=0;r>>2]>>>24-r%4*8&255;n.push((a>>>4).toString(16)),n.push((15&a).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new o.init(n,t/2)}},l=s.Latin1={stringify:function(e){var t=e.words;e=e.sigBytes;for(var n=[],r=0;r>>2]>>>24-r%4*8&255));return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new o.init(n,t)}},c=s.Utf8={stringify:function(e){try{return decodeURIComponent(escape(l.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return l.parse(unescape(encodeURIComponent(e)))}},f=r.BufferedBlockAlgorithm=i.extend({reset:function(){this._data=new o.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=c.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n=this._data,r=n.words,a=n.sigBytes,i=this.blockSize,s=a/(4*i);if(t=(s=t?e.ceil(s):e.max((0|s)-this._minBufferSize,0))*i,a=e.min(4*t,a),t){for(var u=0;u>>2]>>>24-a%4*8&255)<<16|(t[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|t[a+2>>>2]>>>24-(a+2)%4*8&255,o=0;4>o&&a+.75*o>>6*(3-o)&63));if(t=r.charAt(64))for(;e.length%4;)e.push(t);return e.join("")},parse:function(e){var t=e.length,r=this._map;(a=r.charAt(64))&&-1!=(a=e.indexOf(a))&&(t=a);for(var a=[],i=0,o=0;o>>6-o%4*2;a[i>>>2]|=(s|u)<<24-i%4*8,i++}return n.create(a,i)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},function(e){function t(e,t,n,r,a,i,o){return((e=e+(t&n|~t&r)+a+o)<>>32-i)+t}function n(e,t,n,r,a,i,o){return((e=e+(t&r|n&~r)+a+o)<>>32-i)+t}function r(e,t,n,r,a,i,o){return((e=e+(t^n^r)+a+o)<>>32-i)+t}function a(e,t,n,r,a,i,o){return((e=e+(n^(t|~r))+a+o)<>>32-i)+t}for(var i=u,o=(l=i.lib).WordArray,s=l.Hasher,l=i.algo,c=[],f=0;64>f;f++)c[f]=4294967296*e.abs(e.sin(f+1))|0;l=l.MD5=s.extend({_doReset:function(){this._hash=new o.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,i){for(var o=0;16>o;o++){var s=e[u=i+o];e[u]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8)}o=this._hash.words;var u=e[i+0],l=(s=e[i+1],e[i+2]),f=e[i+3],d=e[i+4],p=e[i+5],h=e[i+6],m=e[i+7],v=e[i+8],g=e[i+9],y=e[i+10],b=e[i+11],k=e[i+12],w=e[i+13],x=e[i+14],S=e[i+15],_=t(_=o[0],I=o[1],C=o[2],E=o[3],u,7,c[0]),E=t(E,_,I,C,s,12,c[1]),C=t(C,E,_,I,l,17,c[2]),I=t(I,C,E,_,f,22,c[3]);_=t(_,I,C,E,d,7,c[4]),E=t(E,_,I,C,p,12,c[5]),C=t(C,E,_,I,h,17,c[6]),I=t(I,C,E,_,m,22,c[7]),_=t(_,I,C,E,v,7,c[8]),E=t(E,_,I,C,g,12,c[9]),C=t(C,E,_,I,y,17,c[10]),I=t(I,C,E,_,b,22,c[11]),_=t(_,I,C,E,k,7,c[12]),E=t(E,_,I,C,w,12,c[13]),C=t(C,E,_,I,x,17,c[14]),_=n(_,I=t(I,C,E,_,S,22,c[15]),C,E,s,5,c[16]),E=n(E,_,I,C,h,9,c[17]),C=n(C,E,_,I,b,14,c[18]),I=n(I,C,E,_,u,20,c[19]),_=n(_,I,C,E,p,5,c[20]),E=n(E,_,I,C,y,9,c[21]),C=n(C,E,_,I,S,14,c[22]),I=n(I,C,E,_,d,20,c[23]),_=n(_,I,C,E,g,5,c[24]),E=n(E,_,I,C,x,9,c[25]),C=n(C,E,_,I,f,14,c[26]),I=n(I,C,E,_,v,20,c[27]),_=n(_,I,C,E,w,5,c[28]),E=n(E,_,I,C,l,9,c[29]),C=n(C,E,_,I,m,14,c[30]),_=r(_,I=n(I,C,E,_,k,20,c[31]),C,E,p,4,c[32]),E=r(E,_,I,C,v,11,c[33]),C=r(C,E,_,I,b,16,c[34]),I=r(I,C,E,_,x,23,c[35]),_=r(_,I,C,E,s,4,c[36]),E=r(E,_,I,C,d,11,c[37]),C=r(C,E,_,I,m,16,c[38]),I=r(I,C,E,_,y,23,c[39]),_=r(_,I,C,E,w,4,c[40]),E=r(E,_,I,C,u,11,c[41]),C=r(C,E,_,I,f,16,c[42]),I=r(I,C,E,_,h,23,c[43]),_=r(_,I,C,E,g,4,c[44]),E=r(E,_,I,C,k,11,c[45]),C=r(C,E,_,I,S,16,c[46]),_=a(_,I=r(I,C,E,_,l,23,c[47]),C,E,u,6,c[48]),E=a(E,_,I,C,m,10,c[49]),C=a(C,E,_,I,x,15,c[50]),I=a(I,C,E,_,p,21,c[51]),_=a(_,I,C,E,k,6,c[52]),E=a(E,_,I,C,f,10,c[53]),C=a(C,E,_,I,y,15,c[54]),I=a(I,C,E,_,s,21,c[55]),_=a(_,I,C,E,v,6,c[56]),E=a(E,_,I,C,S,10,c[57]),C=a(C,E,_,I,h,15,c[58]),I=a(I,C,E,_,w,21,c[59]),_=a(_,I,C,E,d,6,c[60]),E=a(E,_,I,C,b,10,c[61]),C=a(C,E,_,I,l,15,c[62]),I=a(I,C,E,_,g,21,c[63]),o[0]=o[0]+_|0,o[1]=o[1]+I|0,o[2]=o[2]+C|0,o[3]=o[3]+E|0},_doFinalize:function(){var t=this._data,n=t.words,r=8*this._nDataBytes,a=8*t.sigBytes;n[a>>>5]|=128<<24-a%32;var i=e.floor(r/4294967296);for(n[15+(a+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),n[14+(a+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),t.sigBytes=4*(n.length+1),this._process(),n=(t=this._hash).words,r=0;4>r;r++)a=n[r],n[r]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8);return t},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}}),i.MD5=s._createHelper(l),i.HmacMD5=s._createHmacHelper(l)}(Math),function(){var e,t=u,n=(e=t.lib).Base,r=e.WordArray,a=(e=t.algo).EvpKDF=n.extend({cfg:n.extend({keySize:4,hasher:e.MD5,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var n=(s=this.cfg).hasher.create(),a=r.create(),i=a.words,o=s.keySize,s=s.iterations;i.length>>2]}},t.BlockCipher=s.extend({cfg:s.cfg.extend({mode:l,padding:f}),reset:function(){s.reset.call(this);var e=(t=this.cfg).iv,t=t.mode;if(this._xformMode==this._ENC_XFORM_MODE)var n=t.createEncryptor;else n=t.createDecryptor,this._minBufferSize=1;this._mode=n.call(t,this,e&&e.words)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){e.pad(this._data,this.blockSize);var t=this._process(!0)}else t=this._process(!0),e.unpad(t);return t},blockSize:4});var d=t.CipherParams=n.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),p=(l=(h.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext;return((e=e.salt)?r.create([1398893684,1701076831]).concat(e).concat(t):t).toString(i)},parse:function(e){var t=(e=i.parse(e)).words;if(1398893684==t[0]&&1701076831==t[1]){var n=r.create(t.slice(2,4));t.splice(0,4),e.sigBytes-=16}return d.create({ciphertext:e,salt:n})}},t.SerializableCipher=n.extend({cfg:n.extend({format:l}),encrypt:function(e,t,n,r){r=this.cfg.extend(r);var a=e.createEncryptor(n,r);return t=a.finalize(t),a=a.cfg,d.create({ciphertext:t,key:n,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:e.blockSize,formatter:r.format})},decrypt:function(e,t,n,r){return r=this.cfg.extend(r),t=this._parse(t,r.format),e.createDecryptor(n,r).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}})),h=(h.kdf={}).OpenSSL={execute:function(e,t,n,a){return a||(a=r.random(8)),e=o.create({keySize:t+n}).compute(e,a),n=r.create(e.words.slice(t),4*n),e.sigBytes=4*t,d.create({key:e,iv:n,salt:a})}},m=t.PasswordBasedCipher=p.extend({cfg:p.cfg.extend({kdf:h}),encrypt:function(e,t,n,r){return n=(r=this.cfg.extend(r)).kdf.execute(n,e.keySize,e.ivSize),r.iv=n.iv,(e=p.encrypt.call(this,e,t,n.key,r)).mixIn(n),e},decrypt:function(e,t,n,r){return r=this.cfg.extend(r),t=this._parse(t,r.format),n=r.kdf.execute(n,e.keySize,e.ivSize,t.salt),r.iv=n.iv,p.decrypt.call(this,e,t,n.key,r)}})}(),function(){for(var e=u,t=e.lib.BlockCipher,n=e.algo,r=[],a=[],i=[],o=[],s=[],l=[],c=[],f=[],d=[],p=[],h=[],m=0;256>m;m++)h[m]=128>m?m<<1:m<<1^283;var v=0,g=0;for(m=0;256>m;m++){var y=(y=g^g<<1^g<<2^g<<3^g<<4)>>>8^255&y^99;r[v]=y,a[y]=v;var b=h[v],k=h[b],w=h[k],x=257*h[y]^16843008*y;i[v]=x<<24|x>>>8,o[v]=x<<16|x>>>16,s[v]=x<<8|x>>>24,l[v]=x,x=16843009*w^65537*k^257*b^16843008*v,c[y]=x<<24|x>>>8,f[y]=x<<16|x>>>16,d[y]=x<<8|x>>>24,p[y]=x,v?(v=b^h[h[h[w^b]]],g^=h[h[g]]):v=g=1}var S=[0,1,2,4,8,16,32,64,128,27,54];n=n.AES=t.extend({_doReset:function(){for(var e=(n=this._key).words,t=n.sigBytes/4,n=4*((this._nRounds=t+6)+1),a=this._keySchedule=[],i=0;i>>24]<<24|r[o>>>16&255]<<16|r[o>>>8&255]<<8|r[255&o]):(o=r[(o=o<<8|o>>>24)>>>24]<<24|r[o>>>16&255]<<16|r[o>>>8&255]<<8|r[255&o],o^=S[i/t|0]<<24),a[i]=a[i-t]^o}for(e=this._invKeySchedule=[],t=0;tt||4>=i?o:c[r[o>>>24]]^f[r[o>>>16&255]]^d[r[o>>>8&255]]^p[r[255&o]]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,i,o,s,l,r)},decryptBlock:function(e,t){var n=e[t+1];e[t+1]=e[t+3],e[t+3]=n,this._doCryptBlock(e,t,this._invKeySchedule,c,f,d,p,a),n=e[t+1],e[t+1]=e[t+3],e[t+3]=n},_doCryptBlock:function(e,t,n,r,a,i,o,s){for(var u=this._nRounds,l=e[t]^n[0],c=e[t+1]^n[1],f=e[t+2]^n[2],d=e[t+3]^n[3],p=4,h=1;h>>24]^a[c>>>16&255]^i[f>>>8&255]^o[255&d]^n[p++],v=r[c>>>24]^a[f>>>16&255]^i[d>>>8&255]^o[255&l]^n[p++],g=r[f>>>24]^a[d>>>16&255]^i[l>>>8&255]^o[255&c]^n[p++];d=r[d>>>24]^a[l>>>16&255]^i[c>>>8&255]^o[255&f]^n[p++],l=m,c=v,f=g}m=(s[l>>>24]<<24|s[c>>>16&255]<<16|s[f>>>8&255]<<8|s[255&d])^n[p++],v=(s[c>>>24]<<24|s[f>>>16&255]<<16|s[d>>>8&255]<<8|s[255&l])^n[p++],g=(s[f>>>24]<<24|s[d>>>16&255]<<16|s[l>>>8&255]<<8|s[255&c])^n[p++],d=(s[d>>>24]<<24|s[l>>>16&255]<<16|s[c>>>8&255]<<8|s[255&f])^n[p++],e[t]=m,e[t+1]=v,e[t+2]=g,e[t+3]=d},keySize:8}),e.AES=t._createHelper(n)}(),u=u||function(e,t){var n={},r=n.lib={},a=function(){},i=r.Base={extend:function(e){a.prototype=this;var t=new a;return e&&t.mixIn(e),t.hasOwnProperty("init")||(t.init=function(){t.$super.init.apply(this,arguments)}),t.init.prototype=t,t.$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},o=r.WordArray=i.extend({init:function(e,n){e=this.words=e||[],this.sigBytes=n!=t?n:4*e.length},toString:function(e){return(e||u).stringify(this)},concat:function(e){var t=this.words,n=e.words,r=this.sigBytes;if(e=e.sigBytes,this.clamp(),r%4)for(var a=0;a>>2]|=(n[a>>>2]>>>24-a%4*8&255)<<24-(r+a)%4*8;else if(65535>>2]=n[a>>>2];else t.push.apply(t,n);return this.sigBytes+=e,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=i.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var n=[],r=0;r>>2]>>>24-r%4*8&255;n.push((a>>>4).toString(16)),n.push((15&a).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new o.init(n,t/2)}},l=s.Latin1={stringify:function(e){var t=e.words;e=e.sigBytes;for(var n=[],r=0;r>>2]>>>24-r%4*8&255));return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new o.init(n,t)}},c=s.Utf8={stringify:function(e){try{return decodeURIComponent(escape(l.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return l.parse(unescape(encodeURIComponent(e)))}},f=r.BufferedBlockAlgorithm=i.extend({reset:function(){this._data=new o.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=c.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n=this._data,r=n.words,a=n.sigBytes,i=this.blockSize,s=a/(4*i);if(t=(s=t?e.ceil(s):e.max((0|s)-this._minBufferSize,0))*i,a=e.min(4*t,a),t){for(var u=0;uc;){var f;e:{f=l;for(var d=e.sqrt(f),p=2;p<=d;p++)if(!(f%p)){f=!1;break e}f=!0}f&&(8>c&&(i[c]=s(e.pow(l,.5))),o[c]=s(e.pow(l,1/3)),c++),l++}var h=[];a=a.SHA256=r.extend({_doReset:function(){this._hash=new n.init(i.slice(0))},_doProcessBlock:function(e,t){for(var n=this._hash.words,r=n[0],a=n[1],i=n[2],s=n[3],u=n[4],l=n[5],c=n[6],f=n[7],d=0;64>d;d++){if(16>d)h[d]=0|e[t+d];else{var p=h[d-15],m=h[d-2];h[d]=((p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3)+h[d-7]+((m<<15|m>>>17)^(m<<13|m>>>19)^m>>>10)+h[d-16]}p=f+((u<<26|u>>>6)^(u<<21|u>>>11)^(u<<7|u>>>25))+(u&l^~u&c)+o[d]+h[d],m=((r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22))+(r&a^r&i^a&i),f=c,c=l,l=u,u=s+p|0,s=i,i=a,a=r,r=p+m|0}n[0]=n[0]+r|0,n[1]=n[1]+a|0,n[2]=n[2]+i|0,n[3]=n[3]+s|0,n[4]=n[4]+u|0,n[5]=n[5]+l|0,n[6]=n[6]+c|0,n[7]=n[7]+f|0},_doFinalize:function(){var t=this._data,n=t.words,r=8*this._nDataBytes,a=8*t.sigBytes;return n[a>>>5]|=128<<24-a%32,n[14+(a+64>>>9<<4)]=e.floor(r/4294967296),n[15+(a+64>>>9<<4)]=r,t.sigBytes=4*n.length,this._process(),this._hash},clone:function(){var e=r.clone.call(this);return e._hash=this._hash.clone(),e}}),t.SHA256=r._createHelper(a),t.HmacSHA256=r._createHmacHelper(a)}(Math),i=(a=u).enc.Utf8,a.algo.HMAC=a.lib.Base.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=i.parse(t));var n=e.blockSize,r=4*n;t.sigBytes>r&&(t=e.finalize(t)),t.clamp();for(var a=this._oKey=t.clone(),o=this._iKey=t.clone(),s=a.words,u=o.words,l=0;l>>2]|=(n[a>>>2]>>>24-a%4*8&255)<<24-(r+a)%4*8;else if(65535>>2]=n[a>>>2];else t.push.apply(t,n);return this.sigBytes+=e,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=i.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var n=[],r=0;r>>2]>>>24-r%4*8&255;n.push((a>>>4).toString(16)),n.push((15&a).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new o.init(n,t/2)}},l=s.Latin1={stringify:function(e){var t=e.words;e=e.sigBytes;for(var n=[],r=0;r>>2]>>>24-r%4*8&255));return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new o.init(n,t)}},c=s.Utf8={stringify:function(e){try{return decodeURIComponent(escape(l.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return l.parse(unescape(encodeURIComponent(e)))}},f=r.BufferedBlockAlgorithm=i.extend({reset:function(){this._data=new o.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=c.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n=this._data,r=n.words,a=n.sigBytes,i=this.blockSize,s=a/(4*i);if(t=(s=t?e.ceil(s):e.max((0|s)-this._minBufferSize,0))*i,a=e.min(4*t,a),t){for(var u=0;ul;l++)s[l]=e();i=i.SHA512=n.extend({_doReset:function(){this._hash=new a.init([new r.init(1779033703,4089235720),new r.init(3144134277,2227873595),new r.init(1013904242,4271175723),new r.init(2773480762,1595750129),new r.init(1359893119,2917565137),new r.init(2600822924,725511199),new r.init(528734635,4215389547),new r.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var n=(f=this._hash.words)[0],r=f[1],a=f[2],i=f[3],u=f[4],l=f[5],c=f[6],f=f[7],d=n.high,p=n.low,h=r.high,m=r.low,v=a.high,g=a.low,y=i.high,b=i.low,k=u.high,w=u.low,x=l.high,S=l.low,_=c.high,E=c.low,C=f.high,I=f.low,R=d,D=p,F=h,A=m,O=v,M=g,T=y,P=b,N=k,L=w,j=x,B=S,z=_,U=E,H=C,W=I,K=0;80>K;K++){var V=s[K];if(16>K)var q=V.high=0|e[t+2*K],$=V.low=0|e[t+2*K+1];else{q=(($=(q=s[K-15]).high)>>>1|(J=q.low)<<31)^($>>>8|J<<24)^$>>>7;var J=(J>>>1|$<<31)^(J>>>8|$<<24)^(J>>>7|$<<25),Q=(($=(Q=s[K-2]).high)>>>19|(G=Q.low)<<13)^($<<3|G>>>29)^$>>>6,G=(G>>>19|$<<13)^(G<<3|$>>>29)^(G>>>6|$<<26),Y=($=s[K-7]).high,X=(Z=s[K-16]).high,Z=Z.low;q=(q=(q=q+Y+(($=J+$.low)>>>0>>0?1:0))+Q+(($+=G)>>>0>>0?1:0))+X+(($+=Z)>>>0>>0?1:0),V.high=q,V.low=$}Y=N&j^~N&z,Z=L&B^~L&U,V=R&F^R&O^F&O;var ee=D&A^D&M^A&M,te=(J=(R>>>28|D<<4)^(R<<30|D>>>2)^(R<<25|D>>>7),Q=(D>>>28|R<<4)^(D<<30|R>>>2)^(D<<25|R>>>7),(G=o[K]).high),ne=G.low;X=H+((N>>>14|L<<18)^(N>>>18|L<<14)^(N<<23|L>>>9))+((G=W+((L>>>14|N<<18)^(L>>>18|N<<14)^(L<<23|N>>>9)))>>>0>>0?1:0),H=z,W=U,z=j,U=B,j=N,B=L,N=T+(X=(X=(X=X+Y+((G+=Z)>>>0>>0?1:0))+te+((G+=ne)>>>0>>0?1:0))+q+((G+=$)>>>0<$>>>0?1:0))+((L=P+G|0)>>>0

    >>0?1:0)|0,T=O,P=M,O=F,M=A,F=R,A=D,R=X+(V=J+V+(($=Q+ee)>>>0>>0?1:0))+((D=G+$|0)>>>0>>0?1:0)|0}p=n.low=p+D,n.high=d+R+(p>>>0>>0?1:0),m=r.low=m+A,r.high=h+F+(m>>>0>>0?1:0),g=a.low=g+M,a.high=v+O+(g>>>0>>0?1:0),b=i.low=b+P,i.high=y+T+(b>>>0

    >>0?1:0),w=u.low=w+L,u.high=k+N+(w>>>0>>0?1:0),S=l.low=S+B,l.high=x+j+(S>>>0>>0?1:0),E=c.low=E+U,c.high=_+z+(E>>>0>>0?1:0),I=f.low=I+W,f.high=C+H+(I>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[30+(r+128>>>10<<5)]=Math.floor(n/4294967296),t[31+(r+128>>>10<<5)]=n,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32}),t.SHA512=n._createHelper(i),t.HmacSHA512=n._createHmacHelper(i)}(),s=(o=u).enc.Utf8,o.algo.HMAC=o.lib.Base.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=s.parse(t));var n=e.blockSize,r=4*n;t.sigBytes>r&&(t=e.finalize(t)),t.clamp();for(var a=this._oKey=t.clone(),i=this._iKey=t.clone(),o=a.words,u=i.words,l=0;l>>2]|=(n[a>>>2]>>>24-a%4*8&255)<<24-(r+a)%4*8;else if(65535>>2]=n[a>>>2];else t.push.apply(t,n);return this.sigBytes+=e,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=i.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var n=[],r=0;r>>2]>>>24-r%4*8&255;n.push((a>>>4).toString(16)),n.push((15&a).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new o.init(n,t/2)}},l=s.Latin1={stringify:function(e){var t=e.words;e=e.sigBytes;for(var n=[],r=0;r>>2]>>>24-r%4*8&255));return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new o.init(n,t)}},c=s.Utf8={stringify:function(e){try{return decodeURIComponent(escape(l.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return l.parse(unescape(encodeURIComponent(e)))}},f=r.BufferedBlockAlgorithm=i.extend({reset:function(){this._data=new o.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=c.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n=this._data,r=n.words,a=n.sigBytes,i=this.blockSize,s=a/(4*i);if(t=(s=t?e.ceil(s):e.max((0|s)-this._minBufferSize,0))*i,a=e.min(4*t,a),t){for(var u=0;ul;l++){if(16>l)r[l]=0|e[t+l];else{var c=r[l-3]^r[l-8]^r[l-14]^r[l-16];r[l]=c<<1|c>>>31}c=(a<<5|a>>>27)+u+r[l],c=20>l?c+(1518500249+(i&o|~i&s)):40>l?c+(1859775393+(i^o^s)):60>l?c+((i&o|i&s|o&s)-1894007588):c+((i^o^s)-899497514),u=s,s=o,o=i<<30|i>>>2,i=a,a=c}n[0]=n[0]+a|0,n[1]=n[1]+i|0,n[2]=n[2]+o|0,n[3]=n[3]+s|0,n[4]=n[4]+u|0},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[14+(r+64>>>9<<4)]=Math.floor(n/4294967296),t[15+(r+64>>>9<<4)]=n,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});e.SHA1=n._createHelper(a),e.HmacSHA1=n._createHmacHelper(a)}(),function(){var e=u,t=e.enc.Utf8;e.algo.HMAC=e.lib.Base.extend({init:function(e,n){e=this._hasher=new e.init,"string"==typeof n&&(n=t.parse(n));var r=e.blockSize,a=4*r;n.sigBytes>a&&(n=e.finalize(n)),n.clamp();for(var i=this._oKey=n.clone(),o=this._iKey=n.clone(),s=i.words,u=o.words,l=0;l>>2]|=(n[a>>>2]>>>24-a%4*8&255)<<24-(r+a)%4*8;else if(65535>>2]=n[a>>>2];else t.push.apply(t,n);return this.sigBytes+=e,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=i.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var n=[],r=0;r>>2]>>>24-r%4*8&255;n.push((a>>>4).toString(16)),n.push((15&a).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new o.init(n,t/2)}},l=s.Latin1={stringify:function(e){var t=e.words;e=e.sigBytes;for(var n=[],r=0;r>>2]>>>24-r%4*8&255));return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new o.init(n,t)}},c=s.Utf8={stringify:function(e){try{return decodeURIComponent(escape(l.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return l.parse(unescape(encodeURIComponent(e)))}},f=r.BufferedBlockAlgorithm=i.extend({reset:function(){this._data=new o.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=c.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n=this._data,r=n.words,a=n.sigBytes,i=this.blockSize,s=a/(4*i);if(t=(s=t?e.ceil(s):e.max((0|s)-this._minBufferSize,0))*i,a=e.min(4*t,a),t){for(var u=0;ul;l++){if(16>l)r[l]=0|e[t+l];else{var c=r[l-3]^r[l-8]^r[l-14]^r[l-16];r[l]=c<<1|c>>>31}c=(a<<5|a>>>27)+u+r[l],c=20>l?c+(1518500249+(i&o|~i&s)):40>l?c+(1859775393+(i^o^s)):60>l?c+((i&o|i&s|o&s)-1894007588):c+((i^o^s)-899497514),u=s,s=o,o=i<<30|i>>>2,i=a,a=c}n[0]=n[0]+a|0,n[1]=n[1]+i|0,n[2]=n[2]+o|0,n[3]=n[3]+s|0,n[4]=n[4]+u|0},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[14+(r+64>>>9<<4)]=Math.floor(n/4294967296),t[15+(r+64>>>9<<4)]=n,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});e.SHA1=n._createHelper(a),e.HmacSHA1=n._createHmacHelper(a)}(),Object.defineProperty(r,"__esModule",{value:!0}),r.StandardFile=r.SFItemTransformer=r.SFCryptoWeb=r.SFCryptoJS=r.SFAbstractCrypto=r.SFItemHistoryEntry=r.SFItemHistory=r.SFHistorySession=r.SFPrivileges=r.SFPredicate=r.SFItemParams=r.SFItem=r.SFSyncManager=r.SFStorageManager=r.SFSingletonManager=r.SFSessionHistoryManager=r.SFPrivilegesManager=r.SFModelManager=r.SFMigrationManager=r.SFHttpManager=r.SFAuthManager=r.SFAlertManager=void 0;var E=function(){function e(){w(this,e)}return S(e,[{key:"alert",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){window.alert(t.text),e()})));case 1:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"confirm",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){window.confirm(t.text)?e():n()})));case 1:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()}]),e}();r.SFAlertManager=E;var C=function(){function e(t,n,r,a){w(this,e),e.DidSignOutEvent="DidSignOutEvent",e.WillSignInEvent="WillSignInEvent",e.DidSignInEvent="DidSignInEvent",this.httpManager=n,this.storageManager=t,this.alertManager=r||new E,this.$timeout=a||setTimeout.bind(window),this.eventHandlers=[]}return S(e,[{key:"addEventHandler",value:function(e){return this.eventHandlers.push(e),e}},{key:"removeEventHandler",value:function(e){_.pull(this.eventHandlers,e)}},{key:"notifyEvent",value:function(e,t){var n=!0,r=!1,a=void 0;try{for(var i,o=this.eventHandlers[Symbol.iterator]();!(n=(i=o.next()).done);n=!0)(0,i.value)(e,t||{})}catch(e){r=!0,a=e}finally{try{n||null==o.return||o.return()}finally{if(r)throw a}}}},{key:"saveKeys",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this._keys=t,e.next=3,this.storageManager.setItem("mk",t.mk);case 3:return e.next=5,this.storageManager.setItem("ak",t.ak);case 5:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"signout",value:function(){var t=k(regeneratorRuntime.mark((function t(n){var r=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this._keys=null,this._authParams=null,!n){t.next=6;break}return t.abrupt("return",this.storageManager.clearAllData().then((function(){r.notifyEvent(e.DidSignOutEvent)})));case 6:this.notifyEvent(e.DidSignOutEvent);case 7:case"end":return t.stop()}}),t,this)})));function n(e){return t.apply(this,arguments)}return n}()},{key:"keys",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._keys){e.next=11;break}return e.next=3,this.storageManager.getItem("mk");case 3:if(t=e.sent){e.next=6;break}return e.abrupt("return",null);case 6:return e.t0=t,e.next=9,this.storageManager.getItem("ak");case 9:e.t1=e.sent,this._keys={mk:e.t0,ak:e.t1};case 11:return e.abrupt("return",this._keys);case 12:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"getAuthParams",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._authParams){e.next=5;break}return e.next=3,this.storageManager.getItem("auth_params");case 3:t=e.sent,this._authParams=JSON.parse(t);case 5:if(!this._authParams||this._authParams.version){e.next=9;break}return e.next=8,this.defaultProtocolVersion();case 8:this._authParams.version=e.sent;case 9:return e.abrupt("return",this._authParams);case 10:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"defaultProtocolVersion",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.keys();case 2:if(!(t=e.sent)||!t.ak){e.next=7;break}return e.abrupt("return","002");case 7:return e.abrupt("return","001");case 8:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"protocolVersion",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getAuthParams();case 2:if(!(t=e.sent)||!t.version){e.next=5;break}return e.abrupt("return",t.version);case 5:return e.abrupt("return",this.defaultProtocolVersion());case 6:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"getAuthParamsForEmail",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r){var a,i=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return(a=_.merge({email:n},r)).api=R.getApiVersion(),e.abrupt("return",new Promise((function(e,n){var r=t+"/auth/params";i.httpManager.getAbsolute(r,a,(function(t){e(t)}),(function(t){console.error("Error getting auth params",t),"object"!==y(t)&&(t={error:{message:"A server error occurred while trying to sign in. Please try again."}}),e(t)}))})));case 3:case"end":return e.stop()}}),e)})));function t(t,n,r){return e.apply(this,arguments)}return t}()},{key:"lock",value:function(){this.locked=!0}},{key:"unlock",value:function(){this.locked=!1}},{key:"isLocked",value:function(){return 1==this.locked}},{key:"unlockAndResolve",value:function(e,t){this.unlock(),e(t)}},{key:"login",value:function(){var t=k(regeneratorRuntime.mark((function t(n,r,a,i,o){var s=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",new Promise(function(){var t=k(regeneratorRuntime.mark((function t(u,l){var c,f,d,p,h,m,v,g,b,w,x,S;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,s.keys();case 2:if(null==t.sent){t.next=6;break}return u({error:{message:"Cannot log in because already signed in."}}),t.abrupt("return");case 6:if(!s.isLocked()){t.next=9;break}return u({error:{message:"Login already in progress."}}),t.abrupt("return");case 9:return s.lock(),s.notifyEvent(e.WillSignInEvent),t.next=13,s.getAuthParamsForEmail(n,r,o);case 13:if((c=t.sent).identifier=r,!c.error){t.next=18;break}return s.unlockAndResolve(u,c),t.abrupt("return");case 18:if(c&&c.pw_cost){t.next=21;break}return s.unlockAndResolve(u,{error:{message:"Invalid email or password."}}),t.abrupt("return");case 21:if(SFJS.supportedVersions().includes(c.version)){t.next=25;break}return f=SFJS.isVersionNewerThanLibraryVersion(c.version)?"This version of the application does not support your newer account type. Please upgrade to the latest version of Standard Notes to sign in.":"The protocol version associated with your account is outdated and no longer supported by this application. Please visit standardnotes.org/help/security for more information.",s.unlockAndResolve(u,{error:{message:f}}),t.abrupt("return");case 25:if(!SFJS.isProtocolVersionOutdated(c.version)){t.next=32;break}return d="The encryption version for your account, ".concat(c.version,", is outdated and requires upgrade. You may proceed with login, but are advised to perform a security update using the web or desktop application. Please visit standardnotes.org/help/security for more information."),p=!1,t.next=30,s.alertManager.confirm({title:"Update Needed",text:d,confirmButtonText:"Sign In"}).catch((function(){s.unlockAndResolve(u,{error:{}}),p=!0}));case 30:if(!p){t.next=32;break}return t.abrupt("return");case 32:if(SFJS.supportsPasswordDerivationCost(c.pw_cost)){t.next=36;break}return h="Your account was created on a platform with higher security capabilities than this browser supports. If we attempted to generate your login keys here, it would take hours. Please use a browser with more up to date security capabilities, like Google Chrome or Firefox, to log in.",s.unlockAndResolve(u,{error:{message:h}}),t.abrupt("return");case 36:if(m=SFJS.costMinimumForVersion(c.version),!(c.pw_cost5&&void 0!==u[5]&&u[5],e.abrupt("return",new Promise(function(){var e=k(regeneratorRuntime.mark((function e(u,l){var c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((c=new XMLHttpRequest).onreadystatechange=function(){if(4==c.readyState){var e=c.responseText;if(e)try{e=JSON.parse(e)}catch(e){}c.status>=200&&c.status<=299?s.$timeout((function(){a(e),u(e)})):(console.error("Request error:",e),s.$timeout((function(){i(e,c.status),l(e)})))}},"get"==t&&Object.keys(r).length>0&&(n=s.urlForUrlAndParams(n,r)),c.open(t,n,!0),c.setRequestHeader("Content-type","application/json"),!o){e.next=8;break}return e.next=8,s.setAuthHeadersForRequest(c);case 8:"post"==t||"patch"==t?c.send(JSON.stringify(r)):c.send();case 9:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()));case 2:case"end":return e.stop()}}),e)})));function t(t,n,r,a,i){return e.apply(this,arguments)}return t}()},{key:"urlForUrlAndParams",value:function(e,t){var n=Object.keys(t).map((function(e){return e+"="+encodeURIComponent(t[e])})).join("&");return e.includes("?")?e+"&"+n:e+"?"+n}}]),e}();r.SFHttpManager=R;var D=function(){function e(t,n,r,a){var i=this;w(this,e),this.modelManager=t,this.syncManager=n,this.storageManager=r,this.completionHandlers=[],this.loadMigrations();var o=!1,s=a.addEventHandler((function(e){e==C.DidSignInEvent&&(o=!0)}));this.receivedLocalDataEvent=n.initialDataLoaded(),this.syncManager.addEventHandler(function(){var e=k(regeneratorRuntime.mark((function e(t,n){var r,u,l,c,f,d,p,h,m;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(u="sync:completed"==t,!(r="local-data-loaded"==t)&&!u){e.next=40;break}if(r?i.receivedLocalDataEvent=!0:u&&(i.receivedSyncCompletedEvent=!0),!i.receivedLocalDataEvent||!i.receivedSyncCompletedEvent){e.next=40;break}if(!o){e.next=39;break}return o=!1,a.removeEventHandler(s),e.next=10,i.getCompletedMigrations();case 10:l=e.sent.slice(),c=!0,f=!1,d=void 0,e.prev=14,p=l[Symbol.iterator]();case 16:if(c=(h=p.next()).done){e.next=25;break}return m=h.value,e.next=20,i.migrationForEncodedName(m);case 20:e.sent.runOnlyOnce||_.pull(i._completed,m);case 22:c=!0,e.next=16;break;case 25:e.next=31;break;case 27:e.prev=27,e.t0=e.catch(14),f=!0,d=e.t0;case 31:e.prev=31,e.prev=32,c||null==p.return||p.return();case 34:if(e.prev=34,!f){e.next=37;break}throw d;case 37:return e.finish(34);case 38:return e.finish(31);case 39:i.runPendingMigrations();case 40:case"end":return e.stop()}}),e,null,[[14,27,31,39],[32,,34,38]])})));return function(t,n){return e.apply(this,arguments)}}())}return S(e,[{key:"addCompletionHandler",value:function(e){this.completionHandlers.push(e)}},{key:"removeCompletionHandler",value:function(e){_.pull(this.completionHandlers,e)}},{key:"migrationForEncodedName",value:function(){var e=k(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.decode(t);case 2:return n=e.sent,e.abrupt("return",this.migrations.find((function(e){return e.name==n})));case 4:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"loadMigrations",value:function(){this.migrations=this.registeredMigrations()}},{key:"registeredMigrations",value:function(){}},{key:"runPendingMigrations",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t,n,r,a,i,o,s,u,l,c,f,d,p,h,m,v,g,y,b,k,w,x,S,_,E,C,I,R;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getPendingMigrations();case 2:for(t=e.sent,n=!0,r=!1,a=void 0,e.prev=6,i=t[Symbol.iterator]();!(n=(o=i.next()).done);n=!0)(s=o.value).items=[];e.next=14;break;case 10:e.prev=10,e.t0=e.catch(6),r=!0,a=e.t0;case 14:e.prev=14,e.prev=15,n||null==i.return||i.return();case 17:if(e.prev=17,!r){e.next=20;break}throw a;case 20:return e.finish(17);case 21:return e.finish(14);case 22:u=!0,l=!1,c=void 0,e.prev=25,f=this.modelManager.allNondummyItems[Symbol.iterator]();case 27:if(u=(d=f.next()).done){e.next=51;break}for(p=d.value,h=!0,m=!1,v=void 0,e.prev=32,g=t[Symbol.iterator]();!(h=(y=g.next()).done);h=!0)s=y.value,p.content_type==s.content_type&&s.items.push(p);e.next=40;break;case 36:e.prev=36,e.t1=e.catch(32),m=!0,v=e.t1;case 40:e.prev=40,e.prev=41,h||null==g.return||g.return();case 43:if(e.prev=43,!m){e.next=46;break}throw v;case 46:return e.finish(43);case 47:return e.finish(40);case 48:u=!0,e.next=27;break;case 51:e.next=57;break;case 53:e.prev=53,e.t2=e.catch(25),l=!0,c=e.t2;case 57:e.prev=57,e.prev=58,u||null==f.return||f.return();case 60:if(e.prev=60,!l){e.next=63;break}throw c;case 63:return e.finish(60);case 64:return e.finish(57);case 65:b=!0,k=!1,w=void 0,e.prev=68,x=t[Symbol.iterator]();case 70:if(b=(S=x.next()).done){e.next=81;break}if(!((s=S.value).items&&s.items.length>0||s.customHandler)){e.next=77;break}return e.next=75,this.runMigration(s,s.items);case 75:e.next=78;break;case 77:this.markMigrationCompleted(s);case 78:b=!0,e.next=70;break;case 81:e.next=87;break;case 83:e.prev=83,e.t3=e.catch(68),k=!0,w=e.t3;case 87:e.prev=87,e.prev=88,b||null==x.return||x.return();case 90:if(e.prev=90,!k){e.next=93;break}throw w;case 93:return e.finish(90);case 94:return e.finish(87);case 95:for(_=!0,E=!1,C=void 0,e.prev=98,I=this.completionHandlers[Symbol.iterator]();!(_=(R=I.next()).done);_=!0)(0,R.value)();e.next=106;break;case 102:e.prev=102,e.t4=e.catch(98),E=!0,C=e.t4;case 106:e.prev=106,e.prev=107,_||null==I.return||I.return();case 109:if(e.prev=109,!E){e.next=112;break}throw C;case 112:return e.finish(109);case 113:return e.finish(106);case 114:case"end":return e.stop()}}),e,this,[[6,10,14,22],[15,,17,21],[25,53,57,65],[32,36,40,48],[41,,43,47],[58,,60,64],[68,83,87,95],[88,,90,94],[98,102,106,114],[107,,109,113]])})));function t(){return e.apply(this,arguments)}return t}()},{key:"encode",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",window.btoa(t));case 1:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"decode",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",window.atob(t));case 1:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"getCompletedMigrations",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._completed){e.next=5;break}return e.next=3,this.storageManager.getItem("migrations");case 3:t=e.sent,this._completed=t?JSON.parse(t):[];case 5:return e.abrupt("return",this._completed);case 6:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"getPendingMigrations",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t,n,r,a,i,o,s,u;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getCompletedMigrations();case 2:t=e.sent,n=[],r=!0,a=!1,i=void 0,e.prev=7,o=this.migrations[Symbol.iterator]();case 9:if(r=(s=o.next()).done){e.next=22;break}return u=s.value,e.t0=t,e.next=14,this.encode(u.name);case 14:if(e.t1=e.sent,e.t2=e.t0.indexOf.call(e.t0,e.t1),e.t3=-1,e.t2!=e.t3){e.next=19;break}n.push(u);case 19:r=!0,e.next=9;break;case 22:e.next=28;break;case 24:e.prev=24,e.t4=e.catch(7),a=!0,i=e.t4;case 28:e.prev=28,e.prev=29,r||null==o.return||o.return();case 31:if(e.prev=31,!a){e.next=34;break}throw i;case 34:return e.finish(31);case 35:return e.finish(28);case 36:return e.abrupt("return",n);case 37:case"end":return e.stop()}}),e,this,[[7,24,28,36],[29,,31,35]])})));function t(){return e.apply(this,arguments)}return t}()},{key:"markMigrationCompleted",value:function(){var e=k(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getCompletedMigrations();case 2:return n=e.sent,e.t0=n,e.next=6,this.encode(t.name);case 6:e.t1=e.sent,e.t0.push.call(e.t0,e.t1),this.storageManager.setItem("migrations",JSON.stringify(n)),t.running=!1;case 10:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"runMigration",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n){var r=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t.running){e.next=2;break}return e.abrupt("return");case 2:if(console.log("Running migration:",t.name),t.running=!0,!t.customHandler){e.next=8;break}return e.abrupt("return",t.customHandler().then((function(){r.markMigrationCompleted(t)})));case 8:return e.abrupt("return",t.handler(n).then((function(){r.markMigrationCompleted(t)})));case 9:case"end":return e.stop()}}),e)})));function t(t,n){return e.apply(this,arguments)}return t}()}]),e}();r.SFMigrationManager=D;var F=function(){function e(t){w(this,e),e.MappingSourceRemoteRetrieved="MappingSourceRemoteRetrieved",e.MappingSourceRemoteSaved="MappingSourceRemoteSaved",e.MappingSourceLocalSaved="MappingSourceLocalSaved",e.MappingSourceLocalRetrieved="MappingSourceLocalRetrieved",e.MappingSourceLocalDirtied="MappingSourceLocalDirtied",e.MappingSourceComponentRetrieved="MappingSourceComponentRetrieved",e.MappingSourceDesktopInstalled="MappingSourceDesktopInstalled",e.MappingSourceRemoteActionRetrieved="MappingSourceRemoteActionRetrieved",e.MappingSourceFileImport="MappingSourceFileImport",e.isMappingSourceRetrieved=function(t){return[e.MappingSourceRemoteRetrieved,e.MappingSourceComponentRetrieved,e.MappingSourceRemoteActionRetrieved].includes(t)},this.$timeout=t||setTimeout.bind(window),this.itemSyncObservers=[],this.items=[],this.itemsHash={},this.missedReferences={},this.uuidChangeObservers=[]}return S(e,[{key:"handleSignout",value:function(){this.items.length=0,this.itemsHash={},this.missedReferences={}}},{key:"addModelUuidChangeObserver",value:function(e,t){this.uuidChangeObservers.push({id:e,callback:t})}},{key:"notifyObserversOfUuidChange",value:function(e,t){var n=!0,r=!1,a=void 0;try{for(var i,o=this.uuidChangeObservers[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;try{s.callback(e,t)}catch(e){console.error("Notify observers of uuid change exception:",e)}}}catch(e){r=!0,a=e}finally{try{n||null==o.return||o.return()}finally{if(r)throw a}}}},{key:"alternateUUIDForItem",value:function(){var t=k(regeneratorRuntime.mark((function t(n){var r,a,i,o,s,u,l;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=this.createItem(n),t.next=3,SFJS.crypto.generateUUID();case 3:for(r.uuid=t.sent,r.informReferencesOfUUIDChange(n.uuid,r.uuid),this.informModelsOfUUIDChangeForItem(r,n.uuid,r.uuid),a=!0,i=!1,o=void 0,t.prev=9,s=n.referencingObjects[Symbol.iterator]();!(a=(u=s.next()).done);a=!0)(l=u.value).setIsNoLongerBeingReferencedBy(n),n.setIsNoLongerBeingReferencedBy(l),l.addItemAsRelationship(r);t.next=17;break;case 13:t.prev=13,t.t0=t.catch(9),i=!0,o=t.t0;case 17:t.prev=17,t.prev=18,a||null==s.return||s.return();case 20:if(t.prev=20,!i){t.next=23;break}throw o;case 23:return t.finish(20);case 24:return t.finish(17);case 25:return this.setItemsDirty(n.referencingObjects,!0),this.resolveReferencesForItem(r),this.loggingEnabled&&console.log(n.uuid,"--\x3e",r.uuid),n.deleted=!0,n.content.references=[],this.setItemDirty(n,!1,!1,e.MappingSourceLocalSaved),t.next=33,this.mapResponseItemsToLocalModels([n],e.MappingSourceLocalSaved);case 33:return this.addItem(r),this.setItemDirty(r,!0,!0,e.MappingSourceLocalSaved),this.notifyObserversOfUuidChange(n,r),t.abrupt("return",r);case 37:case"end":return t.stop()}}),t,this,[[9,13,17,25],[18,,20,24]])})));function n(e){return t.apply(this,arguments)}return n}()},{key:"informModelsOfUUIDChangeForItem",value:function(e,t,n){var r=!0,a=!1,i=void 0;try{for(var o,s=this.items[Symbol.iterator]();!(r=(o=s.next()).done);r=!0)o.value.potentialItemOfInterestHasChangedItsUUID(e,t,n)}catch(e){a=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(a)throw i}}}},{key:"didSyncModelsOffline",value:function(t){this.notifySyncObserversOfModels(t,e.MappingSourceLocalSaved)}},{key:"mapResponseItemsToLocalModels",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.mapResponseItemsToLocalModelsWithOptions({items:t,source:n,sourceKey:r}));case 1:case"end":return e.stop()}}),e,this)})));function t(t,n,r){return e.apply(this,arguments)}return t}()},{key:"mapResponseItemsToLocalModelsOmittingFields",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r,a){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.mapResponseItemsToLocalModelsWithOptions({items:t,omitFields:n,source:r,sourceKey:a}));case 1:case"end":return e.stop()}}),e,this)})));function t(t,n,r,a){return e.apply(this,arguments)}return t}()},{key:"mapResponseItemsToLocalModelsWithOptions",value:function(){var e=k(regeneratorRuntime.mark((function e(t){var n,r,a,i,o,s,u,l,c,f,d,p,m,v,g,y,b,k,w,x,S,_,E,C,I,R,D,F,A,O,M,T,P,N,L,j,B,z,U;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=t.items,r=t.omitFields,a=t.source,i=t.sourceKey,t.options,o=[],s=[],u=[],l=!0,c=!1,f=void 0,e.prev=5,d=n[Symbol.iterator]();case 7:if(l=(p=d.next()).done){e.next=58;break}if(m=p.value){e.next=11;break}return e.abrupt("continue",55);case 11:if(v=!m.content&&!m.errorDecrypting,m.content_type&&m.uuid&&!v||m.deleted){e.next=16;break}return console.error("Server response item is corrupt:",m),e.abrupt("continue",55);case 16:if(!Array.isArray(r)){e.next=36;break}for(g=!0,y=!1,b=void 0,e.prev=20,k=r[Symbol.iterator]();!(g=(w=k.next()).done);g=!0)x=w.value,delete m[x];e.next=28;break;case 24:e.prev=24,e.t0=e.catch(20),y=!0,b=e.t0;case 28:e.prev=28,e.prev=29,g||null==k.return||k.return();case 31:if(e.prev=31,!y){e.next=34;break}throw b;case 34:return e.finish(31);case 35:return e.finish(28);case 36:if((S=this.findItem(m.uuid))&&(S.updateFromJSON(m),S.dummy=!1),_=m.content_type||S&&S.content_type,!this.acceptableContentTypes||this.acceptableContentTypes.includes(_)){e.next=42;break}return e.abrupt("continue",55);case 42:if(E=!1,1!=m.deleted){e.next=50;break}if(!m.dirty){e.next=48;break}E=!0,e.next=50;break;case 48:return S&&(o.push(S),u.push(S),this.removeItemLocally(S)),e.abrupt("continue",55);case 50:S||(S=this.createItem(m)),this.addItem(S,E),S.errorDecrypting||u.push(S),o.push(S),s.push(m);case 55:l=!0,e.next=7;break;case 58:e.next=64;break;case 60:e.prev=60,e.t1=e.catch(5),c=!0,f=e.t1;case 64:e.prev=64,e.prev=65,l||null==d.return||d.return();case 67:if(e.prev=67,!c){e.next=70;break}throw f;case 70:return e.finish(67);case 71:return e.finish(64);case 72:for(C=!0,I=!1,R=void 0,e.prev=75,D=s.entries()[Symbol.iterator]();!(C=(F=D.next()).done);C=!0)A=h(F.value,2),O=A[0],M=A[1],T=o[O],M.content&&this.resolveReferencesForItem(T),T.didFinishSyncing();e.next=83;break;case 79:e.prev=79,e.t2=e.catch(75),I=!0,R=e.t2;case 83:e.prev=83,e.prev=84,C||null==D.return||D.return();case 86:if(e.prev=86,!I){e.next=89;break}throw R;case 89:return e.finish(86);case 90:return e.finish(83);case 91:for(P=this.popMissedReferenceStructsForObjects(s),N=!0,L=!1,j=void 0,e.prev=95,B=function(){var e=U.value,t=o.find((function(t){return t.uuid==e.reference_uuid}));t&&e.for_item.addItemAsRelationship(t)},z=P[Symbol.iterator]();!(N=(U=z.next()).done);N=!0)B();e.next=104;break;case 100:e.prev=100,e.t3=e.catch(95),L=!0,j=e.t3;case 104:e.prev=104,e.prev=105,N||null==z.return||z.return();case 107:if(e.prev=107,!L){e.next=110;break}throw j;case 110:return e.finish(107);case 111:return e.finish(104);case 112:return e.next=114,this.notifySyncObserversOfModels(u,a,i);case 114:return e.abrupt("return",o);case 115:case"end":return e.stop()}}),e,this,[[5,60,64,72],[20,24,28,36],[29,,31,35],[65,,67,71],[75,79,83,91],[84,,86,90],[95,100,104,112],[105,,107,111]])})));function t(t){return e.apply(this,arguments)}return t}()},{key:"missedReferenceBuildKey",value:function(e,t){return"".concat(e,":").concat(t)}},{key:"popMissedReferenceStructsForObjects",value:function(e){if(!e||0==e.length)return[];for(var t=[],n=[],r=e.map((function(e){return e.uuid})),a=r[0].length,i=0,o=Object.keys(this.missedReferences);i1&&void 0!==arguments[1]&&arguments[1];if(!e.errorDecrypting){var n=e.contentObject;if(e.updateLocalRelationships(),n.references){var r=n.references.slice().map((function(e){return e.uuid})),a=!0,i=this.findItems(r,a),o=!0,s=!1,u=void 0;try{for(var l,c=i.entries()[Symbol.iterator]();!(o=(l=c.next()).done);o=!0){var f=h(l.value,2),d=f[0],p=f[1];if(p)e.addItemAsRelationship(p),t&&this.setItemDirty(p,!0);else{var m=r[d],v=this.missedReferenceBuildKey(m,e.uuid);if(!this.missedReferences[v]){var g={reference_uuid:m,for_item:e};this.missedReferences[v]=g}}}}catch(e){s=!0,u=e}finally{try{o||null==c.return||c.return()}finally{if(s)throw u}}}}}},{key:"notifySyncObserversOfModels",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r){var a,i,o,s,u,l,c,f=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:a=this.itemSyncObservers.sort((function(e,t){return e.priority0)){e.next=25;break}return e.next=25,f._callSyncObserverCallbackWithTimeout(a,i,o,s,n,r);case 25:case"end":return e.stop()}}),e,null,[[6,10,14,22],[15,,17,21]])})),l=a[Symbol.iterator]();case 7:if(i=(c=l.next()).done){e.next=12;break}return e.delegateYield(u(),"t0",9);case 9:i=!0,e.next=7;break;case 12:e.next=18;break;case 14:e.prev=14,e.t1=e.catch(4),o=!0,s=e.t1;case 18:e.prev=18,e.prev=19,i||null==l.return||l.return();case 21:if(e.prev=21,!o){e.next=24;break}throw s;case 24:return e.finish(21);case 25:return e.finish(18);case 26:case"end":return e.stop()}}),e,this,[[4,14,18,26],[19,,21,25]])})));function t(t,n,r){return e.apply(this,arguments)}return t}()},{key:"_callSyncObserverCallbackWithTimeout",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r,a,i,o){var s=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,u){s.$timeout((function(){try{t.callback(n,r,a,i,o)}catch(e){console.error("Sync observer exception",e)}finally{e()}}))})));case 1:case"end":return e.stop()}}),e)})));function t(t,n,r,a,i,o){return e.apply(this,arguments)}return t}()},{key:"setItemDirty",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0,a=arguments.length>4?arguments[4]:void 0;this.setItemsDirty([e],t,n,r,a)}},{key:"setItemsDirty",value:function(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=arguments.length>2?arguments[2]:void 0,a=arguments.length>3?arguments[3]:void 0,i=arguments.length>4?arguments[4]:void 0,o=!0,s=!1,u=void 0;try{for(var l,c=t[Symbol.iterator]();!(o=(l=c.next()).done);o=!0)l.value.setDirty(n,r)}catch(e){s=!0,u=e}finally{try{o||null==c.return||c.return()}finally{if(s)throw u}}this.notifySyncObserversOfModels(t,a||e.MappingSourceLocalDirtied,i)}},{key:"createItem",value:function(t){var n=e.ContentTypeClassMapping&&e.ContentTypeClassMapping[t.content_type];return n||(n=z),new n(t)}},{key:"createDuplicateItemFromResponseItem",value:function(){var e=k(regeneratorRuntime.mark((function e(t){var n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("function"!=typeof t.setDirty){e.next=3;break}return console.error("Attempting to create conflicted copy of non-response item."),e.abrupt("return",null);case 3:return n=JSON.parse(JSON.stringify(t)),e.next=6,SFJS.crypto.generateUUID();case 6:return n.uuid=e.sent,r=this.createItem(n),e.abrupt("return",r);case 9:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"duplicateItemAndAddAsConflict",value:function(e){return this.duplicateItemWithCustomContentAndAddAsConflict({content:e.content,duplicateOf:e})}},{key:"duplicateItemWithCustomContentAndAddAsConflict",value:function(e){var t=e.content,n=e.duplicateOf,r=this.duplicateItemWithCustomContent({content:t,duplicateOf:n});return this.addDuplicatedItemAsConflict({duplicate:r,duplicateOf:n}),r}},{key:"addDuplicatedItemAsConflict",value:function(e){var t=e.duplicate,n=e.duplicateOf;this.addDuplicatedItem(t,n),t.content.conflict_of=n.uuid}},{key:"duplicateItemWithCustomContent",value:function(e){var t=e.content,n=e.duplicateOf,r=new n.constructor({content:t});return r.created_at=n.created_at,r.content_type||(r.content_type=n.content_type),r}},{key:"duplicateItemAndAdd",value:function(e){var t=this.duplicateItemWithoutAdding(e);return this.addDuplicatedItem(t,e),t}},{key:"duplicateItemWithoutAdding",value:function(e){var t=new e.constructor({content:e.content});return t.created_at=e.created_at,t.content_type||(t.content_type=e.content_type),t}},{key:"addDuplicatedItem",value:function(e,t){this.addItem(e);var n=!0,r=!1,a=void 0;try{for(var i,o=t.referencingObjects[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;s.addItemAsRelationship(e),this.setItemDirty(s,!0)}}catch(e){r=!0,a=e}finally{try{n||null==o.return||o.return()}finally{if(r)throw a}}this.resolveReferencesForItem(e),this.setItemDirty(e,!0)}},{key:"addItem",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.addItems([e],t)}},{key:"addItems",value:function(e){var t=this;e.forEach((function(e){t.itemsHash[e.uuid]||(t.itemsHash[e.uuid]=e,t.items.push(e))}))}},{key:"addItemSyncObserver",value:function(e,t,n){this.addItemSyncObserverWithPriority({id:e,types:t,callback:n,priority:1})}},{key:"addItemSyncObserverWithPriority",value:function(e){var t=e.id,n=e.priority,r=e.types,a=e.callback;Array.isArray(r)||(r=[r]),this.itemSyncObservers.push({id:t,types:r,priority:n,callback:a})}},{key:"removeItemSyncObserver",value:function(e){_.remove(this.itemSyncObservers,_.find(this.itemSyncObservers,{id:e}))}},{key:"getDirtyItems",value:function(){return this.items.filter((function(e){return 1==e.dirty&&!e.dummy&&(!e.errorDecrypting||e.deleted)}))}},{key:"clearDirtyItems",value:function(e){var t=!0,n=!1,r=void 0;try{for(var a,i=e[Symbol.iterator]();!(t=(a=i.next()).done);t=!0)a.value.setDirty(!1)}catch(e){n=!0,r=e}finally{try{t||null==i.return||i.return()}finally{if(n)throw r}}}},{key:"removeAndDirtyAllRelationshipsForItem",value:function(e){if(!e.errorDecrypting){var t=!0,n=!1,r=void 0;try{for(var a,i=e.content.references[Symbol.iterator]();!(t=(a=i.next()).done);t=!0){var o=a.value,s=this.findItem(o.uuid);s&&(e.removeItemAsRelationship(s),s.hasRelationshipWithItem(e)&&(s.removeItemAsRelationship(e),this.setItemDirty(s,!0)))}}catch(e){n=!0,r=e}finally{try{t||null==i.return||i.return()}finally{if(n)throw r}}}var u=!0,l=!1,c=void 0;try{for(var f,d=e.referencingObjects[Symbol.iterator]();!(u=(f=d.next()).done);u=!0){var p=f.value;p.removeItemAsRelationship(e),this.setItemDirty(p,!0)}}catch(e){l=!0,c=e}finally{try{u||null==d.return||d.return()}finally{if(l)throw c}}e.referencingObjects=[]}},{key:"setAllItemsDirty",value:function(){var e=this.allItems;this.setItemsDirty(e,!0)}},{key:"setItemToBeDeleted",value:function(e){e.deleted=!0,e.dummy||this.setItemDirty(e,!0),this.removeAndDirtyAllRelationshipsForItem(e)}},{key:"removeItemLocally",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:_.remove(this.items,{uuid:t.uuid}),delete this.itemsHash[t.uuid],t.isBeingRemovedLocally();case 3:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"allItemsMatchingTypes",value:function(e){return this.allItems.filter((function(t){return(_.includes(e,t.content_type)||_.includes(e,"*"))&&!t.dummy}))}},{key:"invalidItems",value:function(){return this.allItems.filter((function(e){return e.errorDecrypting}))}},{key:"validItemsForContentType",value:function(e){return this.allItems.filter((function(t){return t.content_type==e&&!t.errorDecrypting}))}},{key:"findItem",value:function(e){return this.itemsHash[e]}},{key:"findItems",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=[],r=!0,a=!1,i=void 0;try{for(var o,s=e[Symbol.iterator]();!(r=(o=s.next()).done);r=!0){var u=o.value,l=this.itemsHash[u];(l||t)&&n.push(l)}}catch(e){a=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(a)throw i}}return n}},{key:"itemsMatchingPredicate",value:function(e){return this.itemsMatchingPredicates([e])}},{key:"itemsMatchingPredicates",value:function(e){return this.filterItemsWithPredicates(this.allItems,e)}},{key:"filterItemsWithPredicates",value:function(e,t){return e.filter((function(e){var n=!0,r=!1,a=void 0;try{for(var i,o=t[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;if(!e.satisfiesPredicate(s))return!1}}catch(e){r=!0,a=e}finally{try{n||null==o.return||o.return()}finally{if(r)throw a}}return!0}))}},{key:"importItems",value:function(){var t=k(regeneratorRuntime.mark((function t(n){var r,a,i,o,s,u,l,c,f,d,p,h,m,v,g,y,b,k,w,x,S,_,E,C,I,R,D;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:r=[],a={},i=!0,o=!1,s=void 0,t.prev=5,u=n[Symbol.iterator]();case 7:if(i=(l=u.next()).done){t.next=18;break}if(c=l.value,f=this.findItem(c.uuid)){t.next=13;break}return a[c.uuid]={},t.abrupt("continue",15);case 13:d=this.duplicateItemWithoutAdding(f),a[c.uuid]={frozenValue:d,itemRef:f};case 15:i=!0,t.next=7;break;case 18:t.next=24;break;case 20:t.prev=20,t.t0=t.catch(5),o=!0,s=t.t0;case 24:t.prev=24,t.prev=25,i||null==u.return||u.return();case 27:if(t.prev=27,!o){t.next=30;break}throw s;case 30:return t.finish(27);case 31:return t.finish(24);case 32:p=!0,h=!1,m=void 0,t.prev=35,v=n[Symbol.iterator]();case 37:if(p=(g=v.next()).done){t.next=52;break}if(y=g.value,b=a[y.uuid],k=b.frozenValue,w=b.itemRef,!k||w.errorDecrypting){t.next=47;break}return t.next=43,this.createDuplicateItemFromResponseItem(y);case 43:x=t.sent,y.deleted||k.isItemContentEqualWith(x)||(this.addDuplicatedItemAsConflict({duplicate:x,duplicateOf:w}),r.push(x)),t.next=49;break;case 47:r.push(y),w&&w.errorDecrypting&&(w.errorDecrypting=!1);case 49:p=!0,t.next=37;break;case 52:t.next=58;break;case 54:t.prev=54,t.t1=t.catch(35),h=!0,m=t.t1;case 58:t.prev=58,t.prev=59,p||null==v.return||v.return();case 61:if(t.prev=61,!h){t.next=64;break}throw m;case 64:return t.finish(61);case 65:return t.finish(58);case 66:return t.next=68,this.mapResponseItemsToLocalModels(r,e.MappingSourceFileImport);case 68:for(S=t.sent,_=!0,E=!1,C=void 0,t.prev=72,I=S[Symbol.iterator]();!(_=(R=I.next()).done);_=!0)D=R.value,this.setItemDirty(D,!0,!1),D.deleted=!1;t.next=80;break;case 76:t.prev=76,t.t2=t.catch(72),E=!0,C=t.t2;case 80:t.prev=80,t.prev=81,_||null==I.return||I.return();case 83:if(t.prev=83,!E){t.next=86;break}throw C;case 86:return t.finish(83);case 87:return t.finish(80);case 88:return t.abrupt("return",S);case 89:case"end":return t.stop()}}),t,this,[[5,20,24,32],[25,,27,31],[35,54,58,66],[59,,61,65],[72,76,80,88],[81,,83,87]])})));function n(e){return t.apply(this,arguments)}return n}()},{key:"getAllItemsJSONData",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.getJSONDataForItems(this.allItems,t,n,r));case 1:case"end":return e.stop()}}),e,this)})));function t(t,n,r){return e.apply(this,arguments)}return t}()},{key:"getJSONDataForItems",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r,a){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",Promise.all(t.map((function(e){return new U(e,n,r).paramsForExportFile()}))).then((function(e){if(a&&0==e.length)return null;var t={items:e};return n&&(t.auth_params=r),JSON.stringify(t,null,2)})));case 1:case"end":return e.stop()}}),e)})));function t(t,n,r,a){return e.apply(this,arguments)}return t}()},{key:"computeDataIntegrityHash",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t,n,r,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,t=this.allNondummyItems.sort((function(e,t){return t.updated_at-e.updated_at})),n=t.map((function(e){return e.updatedAtTimestamp()})),r=n.join(","),e.next=6,SFJS.crypto.sha256(r);case 6:return a=e.sent,e.abrupt("return",a);case 10:return e.prev=10,e.t0=e.catch(0),console.error("Error computing data integrity hash",e.t0),e.abrupt("return",null);case 14:case"end":return e.stop()}}),e,this,[[0,10]])})));function t(){return e.apply(this,arguments)}return t}()},{key:"allItems",get:function(){return this.items.slice()}},{key:"allNondummyItems",get:function(){return this.items.filter((function(e){return!e.dummy}))}}]),e}();r.SFModelManager=F;var A=function(){function e(t,n,r){w(this,e),this.modelManager=t,this.syncManager=n,this.singletonManager=r,this.loadPrivileges(),e.CredentialAccountPassword="CredentialAccountPassword",e.CredentialLocalPasscode="CredentialLocalPasscode",e.ActionManageExtensions="ActionManageExtensions",e.ActionManageBackups="ActionManageBackups",e.ActionViewProtectedNotes="ActionViewProtectedNotes",e.ActionManagePrivileges="ActionManagePrivileges",e.ActionManagePasscode="ActionManagePasscode",e.ActionDeleteNote="ActionDeleteNote",e.SessionExpiresAtKey="SessionExpiresAtKey",e.SessionLengthKey="SessionLengthKey",e.SessionLengthNone=0,e.SessionLengthFiveMinutes=300,e.SessionLengthOneHour=3600,e.SessionLengthOneWeek=604800,this.availableActions=[e.ActionViewProtectedNotes,e.ActionDeleteNote,e.ActionManagePasscode,e.ActionManageBackups,e.ActionManageExtensions,e.ActionManagePrivileges],this.availableCredentials=[e.CredentialAccountPassword,e.CredentialLocalPasscode],this.sessionLengths=[e.SessionLengthNone,e.SessionLengthFiveMinutes,e.SessionLengthOneHour,e.SessionLengthOneWeek,e.SessionLengthIndefinite]}return S(e,[{key:"setDelegate",value:function(e){this.delegate=e}},{key:"getAvailableActions",value:function(){return this.availableActions}},{key:"getAvailableCredentials",value:function(){return this.availableCredentials}},{key:"netCredentialsForAction",value:function(){var t=k(regeneratorRuntime.mark((function t(n){var r,a,i,o,s,u,l,c;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getPrivileges();case 2:t.t0=n,r=t.sent.getCredentialsForAction(t.t0),a=[],i=!0,o=!1,s=void 0,t.prev=8,u=r[Symbol.iterator]();case 10:if(i=(l=u.next()).done){t.next=27;break}if((c=l.value)!=e.CredentialAccountPassword){t.next=19;break}return t.next=15,this.delegate.isOffline();case 15:t.sent||a.push(c),t.next=24;break;case 19:if(c!=e.CredentialLocalPasscode){t.next=24;break}return t.next=22,this.delegate.hasLocalPasscode();case 22:t.sent&&a.push(c);case 24:i=!0,t.next=10;break;case 27:t.next=33;break;case 29:t.prev=29,t.t1=t.catch(8),o=!0,s=t.t1;case 33:t.prev=33,t.prev=34,i||null==u.return||u.return();case 36:if(t.prev=36,!o){t.next=39;break}throw s;case 39:return t.finish(36);case 40:return t.finish(33);case 41:return t.abrupt("return",a);case 42:case"end":return t.stop()}}),t,this,[[8,29,33,41],[34,,36,40]])})));function n(e){return t.apply(this,arguments)}return n}()},{key:"loadPrivileges",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.loadPromise){e.next=2;break}return e.abrupt("return",this.loadPromise);case 2:return this.loadPromise=new Promise((function(e,n){var r=W.contentType(),a=new H("content_type","=",r);t.singletonManager.registerSingleton([a],(function(n){t.privileges=n,e(n)}),function(){var n=k(regeneratorRuntime.mark((function n(a){var i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(i=new W({content_type:r}),SFJS.crypto.generateUUIDSync){n.next=4;break}return n.next=4,i.initUUID();case 4:t.modelManager.addItem(i),t.modelManager.setItemDirty(i,!0),t.syncManager.sync(),a(i),e(i);case 9:case"end":return n.stop()}}),n)})));return function(e){return n.apply(this,arguments)}}())})),e.abrupt("return",this.loadPromise);case 4:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"getPrivileges",value:function(){var e=k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.privileges){e.next=4;break}return e.abrupt("return",this.privileges);case 4:return e.abrupt("return",this.loadPrivileges());case 5:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"displayInfoForCredential",value:function(t){var n={};return n[e.CredentialAccountPassword]={label:"Account Password",prompt:"Please enter your account password."},n[e.CredentialLocalPasscode]={label:"Local Passcode",prompt:"Please enter your local passcode."},n[t]}},{key:"displayInfoForAction",value:function(t){var n={};return n[e.ActionManageExtensions]={label:"Manage Extensions"},n[e.ActionManageBackups]={label:"Download/Import Backups"},n[e.ActionViewProtectedNotes]={label:"View Protected Notes"},n[e.ActionManagePrivileges]={label:"Manage Privileges"},n[e.ActionManagePasscode]={label:"Manage Passcode"},n[e.ActionDeleteNote]={label:"Delete Notes"},n[t]}},{key:"getSessionLengthOptions",value:function(){return[{value:e.SessionLengthNone,label:"Don't Remember"},{value:e.SessionLengthFiveMinutes,label:"5 Minutes"},{value:e.SessionLengthOneHour,label:"1 Hour"},{value:e.SessionLengthOneWeek,label:"1 Week"}]}},{key:"setSessionLength",value:function(){var t=k(regeneratorRuntime.mark((function t(n){var r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=n,i=void 0,(i=new Date).setSeconds(i.getSeconds()+a),r=i,t.abrupt("return",Promise.all([this.delegate.saveToStorage(e.SessionExpiresAtKey,JSON.stringify(r)),this.delegate.saveToStorage(e.SessionLengthKey,JSON.stringify(n))]));case 3:case"end":return t.stop()}var a,i}),t,this)})));function n(e){return t.apply(this,arguments)}return n}()},{key:"clearSession",value:function(){var t=k(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this.setSessionLength(e.SessionLengthNone));case 1:case"end":return t.stop()}}),t,this)})));function n(){return t.apply(this,arguments)}return n}()},{key:"getSelectedSessionLength",value:function(){var t=k(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.delegate.getFromStorage(e.SessionLengthKey);case 2:if(!(n=t.sent)){t.next=7;break}return t.abrupt("return",JSON.parse(n));case 7:return t.abrupt("return",e.SessionLengthNone);case 8:case"end":return t.stop()}}),t,this)})));function n(){return t.apply(this,arguments)}return n}()},{key:"getSessionExpirey",value:function(){var t=k(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.delegate.getFromStorage(e.SessionExpiresAtKey);case 2:if(!(n=t.sent)){t.next=7;break}return t.abrupt("return",new Date(JSON.parse(n)));case 7:return t.abrupt("return",new Date);case 8:case"end":return t.stop()}}),t,this)})));function n(){return t.apply(this,arguments)}return n}()},{key:"actionHasPrivilegesConfigured",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.netCredentialsForAction(t);case 2:return e.t0=e.sent.length,e.abrupt("return",e.t0>0);case 4:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"actionRequiresPrivilege",value:function(){var e=k(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getSessionExpirey();case 2:if(!(e.sent>new Date)){e.next=5;break}return e.abrupt("return",!1);case 5:return e.next=7,this.netCredentialsForAction(t);case 7:return n=e.sent,e.abrupt("return",n.length>0);case 9:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"savePrivileges",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getPrivileges();case 2:t=e.sent,this.modelManager.setItemDirty(t,!0),this.syncManager.sync();case 5:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"authenticateAction",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n){var r,a,i,o,s,u,l,c,f;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.netCredentialsForAction(t);case 2:r=e.sent,a=[],i=[],o=!0,s=!1,u=void 0,e.prev=7,l=r[Symbol.iterator]();case 9:if(o=(c=l.next()).done){e.next=18;break}return f=c.value,e.next=13,this._verifyAuthenticationParameters(f,n[f]);case 13:e.sent?a.push(f):i.push(f);case 15:o=!0,e.next=9;break;case 18:e.next=24;break;case 20:e.prev=20,e.t0=e.catch(7),s=!0,u=e.t0;case 24:e.prev=24,e.prev=25,o||null==l.return||l.return();case 27:if(e.prev=27,!s){e.next=30;break}throw u;case 30:return e.finish(27);case 31:return e.finish(24);case 32:return e.abrupt("return",{success:0==i.length,successfulCredentials:a,failedCredentials:i});case 33:case"end":return e.stop()}}),e,this,[[7,20,24,32],[25,,27,31]])})));function t(t,n){return e.apply(this,arguments)}return t}()},{key:"_verifyAuthenticationParameters",value:function(){var t=k(regeneratorRuntime.mark((function t(n,r){var a,i,o=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(a=function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",o.delegate.verifyAccountPassword(t));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),i=function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",o.delegate.verifyLocalPasscode(t));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),n!=e.CredentialAccountPassword){t.next=6;break}return t.abrupt("return",a(r));case 6:if(n!=e.CredentialLocalPasscode){t.next=8;break}return t.abrupt("return",i(r));case 8:case"end":return t.stop()}}),t)})));function n(e,n){return t.apply(this,arguments)}return n}()}]),e}();r.SFPrivilegesManager=A;var O="sessionHistory_persist",M="sessionHistory_revisions",T="sessionHistory_autoOptimize",P=function(){function e(t,n,r,a,i){var o=this;w(this,e),this.modelManager=t,this.storageManager=n,this.$timeout=i||setTimeout.bind(window),this.keyRequestHandler=r,this.loadFromDisk().then((function(){o.modelManager.addItemSyncObserver("session-history",a,(function(e,t,n,r,a){if(r!==F.MappingSourceLocalDirtied){var i=!0,s=!1,u=void 0;try{for(var l,c=e[Symbol.iterator]();!(i=(l=c.next()).done);i=!0){var f=l.value;try{o.addHistoryEntryForItem(f)}catch(e){console.log("Caught exception while trying to add item history entry",e)}}}catch(e){s=!0,u=e}finally{try{i||null==c.return||c.return()}finally{if(s)throw u}}}}))}))}return S(e,[{key:"encryptionParams",value:function(){var e=k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.keyRequestHandler());case 1:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"addHistoryEntryForItem",value:function(e){var t=this,n={uuid:e.uuid,content_type:e.content_type,updated_at:e.updated_at,content:e.getContentCopy()},r=this.historySession.addEntryForItem(n);this.autoOptimize&&this.historySession.optimizeHistoryForItem(e),r&&this.diskEnabled&&(this.diskTimeout&&(this.$timeout.hasOwnProperty("cancel")?this.$timeout.cancel(this.diskTimeout):clearTimeout(this.diskTimeout)),this.diskTimeout=this.$timeout((function(){t.saveToDisk()}),2e3))}},{key:"historyForItem",value:function(e){return this.historySession.historyForItem(e)}},{key:"clearHistoryForItem",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.historySession.clearItemHistory(t),e.abrupt("return",this.saveToDisk());case 2:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"clearAllHistory",value:function(){var e=k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.historySession.clearAllHistory(),e.abrupt("return",this.storageManager.removeItem(M));case 2:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"toggleDiskSaving",value:function(){var e=k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.diskEnabled=!this.diskEnabled,!this.diskEnabled){e.next=6;break}this.storageManager.setItem(O,JSON.stringify(!0)),this.saveToDisk(),e.next=8;break;case 6:return this.storageManager.setItem(O,JSON.stringify(!1)),e.abrupt("return",this.storageManager.removeItem(M));case 8:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"saveToDisk",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t,n=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.diskEnabled){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,this.encryptionParams();case 4:t=e.sent,new U(this.historySession,t.keys,t.auth_params).paramsForSync().then((function(e){n.storageManager.setItem(M,JSON.stringify(e))}));case 7:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"loadFromDisk",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t,n,r,a,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.storageManager.getItem(O);case 2:return(t=e.sent)&&(this.diskEnabled=JSON.parse(t)),e.next=6,this.storageManager.getItem(M);case 6:if(!(n=e.sent)){e.next=18;break}return n=JSON.parse(n),e.next=11,this.encryptionParams();case 11:return r=e.sent,e.next=14,SFJS.itemTransformer.decryptItem(n,r.keys);case 14:a=new K(n),this.historySession=a,e.next=19;break;case 18:this.historySession=new K;case 19:return e.next=21,this.storageManager.getItem(T);case 21:i=e.sent,this.autoOptimize=!i||JSON.parse(i);case 23:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"toggleAutoOptimize",value:function(){var e=k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.autoOptimize=!this.autoOptimize,this.autoOptimize?this.storageManager.setItem(T,JSON.stringify(!0)):this.storageManager.setItem(T,JSON.stringify(!1));case 2:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()}]),e}();r.SFSessionHistoryManager=P;var N=function(){function e(t,n){var r=this;w(this,e),this.syncManager=n,this.modelManager=t,this.singletonHandlers=[],t.addItemSyncObserverWithPriority({id:"sf-singleton-manager",types:"*",priority:-1,callback:function(e,n,a,i,o){i!==F.MappingSourceLocalDirtied&&r.resolveSingletons(t.allNondummyItems,null,!0)}}),n.addEventHandler((function(e,n){if("local-data-loaded"==e)r.resolveSingletons(t.allNondummyItems,null,!0),r.initialDataLoaded=!0;else if("sync:completed"==e){if(!r.initialDataLoaded)return;r.resolveSingletons(n.retrievedItems,n.savedItems)}})),t.addModelUuidChangeObserver("singleton-manager",(function(e,t){var n=!0,a=!1,i=void 0;try{for(var o,s=r.singletonHandlers[Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var u=o.value;u.singleton&&H.ItemSatisfiesPredicates(t,u.predicates)&&(u.singleton=null,r.resolveSingletons([t]))}}catch(e){a=!0,i=e}finally{try{n||null==s.return||s.return()}finally{if(a)throw i}}}))}return S(e,[{key:"registerSingleton",value:function(e,t,n){this.singletonHandlers.push({predicates:e,resolutionCallback:t,createBlock:n})}},{key:"resolveSingletons",value:function(e,t,n){var r=this;e=e||[],t=t||[];var a=!0,i=!1,o=void 0;try{for(var s,u=function(){var a=s.value,i=a.predicates.slice(),o=r.modelManager.filterItemsWithPredicates(e,i),u=function(){a.createBlock&&(a.pendingCreateBlockCallback=!0,a.createBlock((function(e){a.singleton=e,a.pendingCreateBlockCallback=!1,a.resolutionCallback&&a.resolutionCallback(e)})))},l=r.modelManager.filterItemsWithPredicates(t,i).length;if(o.length>0||l>0){var c=r.modelManager.itemsMatchingPredicates(i);if(c.length>=2){var f=c.sort((function(e,t){return e.errorDecrypting?1:t.errorDecrypting||e.created_at=this.MaxDiscordanceBeforeOutOfSync&&(this.outOfSync||(this.outOfSync=!0,this.notifyEvent("enter-out-of-sync"))),e.abrupt("return",!1);case 13:return this.outOfSync&&(this.outOfSync=!1,this.notifyEvent("exit-out-of-sync")),this.syncDiscordance=0,e.abrupt("return",!0);case 16:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"isOutOfSync",value:function(){return this.outOfSync}},{key:"getServerURL",value:function(){var e=k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.storageManager.getItem("server");case 2:if(e.t0=e.sent,e.t0){e.next=5;break}e.t0=window._default_sf_server;case 5:return e.abrupt("return",e.t0);case 6:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"getSyncURL",value:function(){var e=k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getServerURL();case 2:return e.t0=e.sent,e.abrupt("return",e.t0+"/items/sync");case 4:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"registerSyncStatusObserver",value:function(e){var t={key:new Date,callback:e};return this.syncStatusObservers.push(t),t}},{key:"removeSyncStatusObserver",value:function(e){_.pull(this.syncStatusObservers,e)}},{key:"syncStatusDidChange",value:function(){var e=this;this.syncStatusObservers.forEach((function(t){t.callback(e.syncStatus)}))}},{key:"addEventHandler",value:function(e){return this.eventHandlers.push(e),e}},{key:"removeEventHandler",value:function(e){_.pull(this.eventHandlers,e)}},{key:"notifyEvent",value:function(e,t){var n=!0,r=!1,a=void 0;try{for(var i,o=this.eventHandlers[Symbol.iterator]();!(n=(i=o.next()).done);n=!0)(0,i.value)(e,t||{})}catch(e){r=!0,a=e}finally{try{n||null==o.return||o.return()}finally{if(r)throw a}}}},{key:"setKeyRequestHandler",value:function(e){this.keyRequestHandler=e}},{key:"getActiveKeyInfo",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.keyRequestHandler(t));case 1:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"initialDataLoaded",value:function(){return!0===this._initialDataLoaded}},{key:"_sortLocalItems",value:function(e){var t=this;return e.sort((function(e,n){var r=new Date(n.updated_at)-new Date(e.updated_at),a=t.contentTypeLoadPriority,i=0,o=0;return a&&(i=a.indexOf(e.content_type),o=a.indexOf(n.content_type),-1==i&&(i=a.length),-1==o&&(o=a.length)),i==o?r:i0&&void 0!==u[0]?u[0]:{},r=n.incrementalCallback,a=n.batchSize,!(i=n.options)||!i.simulateHighLatency){t.next=5;break}return o=i.simulatedLatency||1e3,t.next=5,this._awaitSleep(o);case 5:if(!this.loadLocalDataPromise){t.next=7;break}return t.abrupt("return",this.loadLocalDataPromise);case 7:return a||(a=100),this.loadLocalDataPromise=this.storageManager.getAllModels().then((function(t){var n=(t=(t=s._sortLocalItems(t)).filter((function(e){var t=s.modelManager.findItem(e.uuid);return!t||new Date(e.dirtiedDate)>t.dirtiedDate}))).length,i=0,o=[],u=function(){var l=k(regeneratorRuntime.mark((function l(){var c,f;return regeneratorRuntime.wrap((function(l){for(;;)switch(l.prev=l.next){case 0:return c=t.slice(i,i+a),l.next=3,s.handleItemsResponse(c,null,F.MappingSourceLocalRetrieved,e.KeyRequestLoadLocal);case 3:if(f=l.sent,o.push(f),!((i+=c.length)0)){t.next=23;break}return t.next=23,Promise.all(u.map(function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.storageManager.deleteModel(t));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 23:return t.next=25,a.getActiveKeyInfo(e.KeyRequestSaveLocal);case 25:if(m=t.sent,!(s.length>0)){t.next=33;break}return t.next=29,Promise.all(s.map(function(){var e=k(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=new U(t,m.keys,m.auth_params),e.next=3,n.paramsForLocalStorage();case 3:return n=e.sent,r&&delete n.dirty,e.abrupt("return",n);case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}())).catch((function(e){return o(e)}));case 29:return v=t.sent,t.next=32,a.storageManager.saveModels(v).catch((function(e){console.error("Error writing items",e),a.syncStatus.localError=e,a.syncStatusDidChange(),o()}));case 32:a.syncStatus.localError&&(a.syncStatus.localError=null,a.syncStatusDidChange());case 33:i();case 34:case"end":return t.stop()}}),t,null,[[4,8,12,20],[13,,15,19]])})));return function(e,n){return t.apply(this,arguments)}}()));case 3:case"end":return t.stop()}}),t)})));function n(e,n){return t.apply(this,arguments)}return n}()},{key:"syncOffline",value:function(){var e=k(regeneratorRuntime.mark((function e(t){var n,r,a,i,o,s=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(n=!0,r=!1,a=void 0,e.prev=3,i=t[Symbol.iterator]();!(n=(o=i.next()).done);n=!0)o.value.updated_at=new Date;e.next=11;break;case 7:e.prev=7,e.t0=e.catch(3),r=!0,a=e.t0;case 11:e.prev=11,e.prev=12,n||null==i.return||i.return();case 14:if(e.prev=14,!r){e.next=17;break}throw a;case 17:return e.finish(14);case 18:return e.finish(11);case 19:return e.abrupt("return",this.writeItemsToLocalStorage(t,!0).then((function(e){var n=!0,r=!1,a=void 0;try{for(var i,o=t[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var u=i.value;u.deleted&&s.modelManager.removeItemLocally(u)}}catch(e){r=!0,a=e}finally{try{n||null==o.return||o.return()}finally{if(r)throw a}}return s.modelManager.clearDirtyItems(t),s.modelManager.didSyncModelsOffline(t),s.notifyEvent("sync:completed",{savedItems:t}),{saved_items:t}})));case 20:case"end":return e.stop()}}),e,this,[[3,7,11,19],[12,,14,18]])})));function t(t){return e.apply(this,arguments)}return t}()},{key:"markAllItemsDirtyAndSaveOffline",value:function(){var e=k(regeneratorRuntime.mark((function e(t){var n,r,a,i,o,s,u,l,c,f,d,p,h;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t){e.next=28;break}n=this.modelManager.allNondummyItems.filter((function(e){return!e.errorDecrypting})).slice(),r=!0,a=!1,i=void 0,e.prev=5,o=n[Symbol.iterator]();case 7:if(r=(s=o.next()).done){e.next=14;break}return u=s.value,e.next=11,this.modelManager.alternateUUIDForItem(u);case 11:r=!0,e.next=7;break;case 14:e.next=20;break;case 16:e.prev=16,e.t0=e.catch(5),a=!0,i=e.t0;case 20:e.prev=20,e.prev=21,r||null==o.return||o.return();case 23:if(e.prev=23,!a){e.next=26;break}throw i;case 26:return e.finish(23);case 27:return e.finish(20);case 28:for(l=this.modelManager.allNondummyItems,c=!0,f=!1,d=void 0,e.prev=32,p=l[Symbol.iterator]();!(c=(h=p.next()).done);c=!0)h.value.setDirty(!0);e.next=40;break;case 36:e.prev=36,e.t1=e.catch(32),f=!0,d=e.t1;case 40:e.prev=40,e.prev=41,c||null==p.return||p.return();case 43:if(e.prev=43,!f){e.next=46;break}throw d;case 46:return e.finish(43);case 47:return e.finish(40);case 48:return e.abrupt("return",this.writeItemsToLocalStorage(l,!1));case 49:case"end":return e.stop()}}),e,this,[[5,16,20,28],[21,,23,27],[32,36,40,48],[41,,43,47]])})));function t(t){return e.apply(this,arguments)}return t}()},{key:"setSyncToken",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this._syncToken=t,e.next=3,this.storageManager.setItem("syncToken",t);case 3:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"getSyncToken",value:function(){var e=k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._syncToken){e.next=4;break}return e.next=3,this.storageManager.getItem("syncToken");case 3:this._syncToken=e.sent;case 4:return e.abrupt("return",this._syncToken);case 5:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"setCursorToken",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._cursorToken=t,!t){e.next=6;break}return e.next=4,this.storageManager.setItem("cursorToken",t);case 4:e.next=8;break;case 6:return e.next=8,this.storageManager.removeItem("cursorToken");case 8:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"getCursorToken",value:function(){var e=k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._cursorToken){e.next=4;break}return e.next=3,this.storageManager.getItem("cursorToken");case 3:this._cursorToken=e.sent;case 4:return e.abrupt("return",this._cursorToken);case 5:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"clearQueuedCallbacks",value:function(){this._queuedCallbacks=[]}},{key:"callQueuedCallbacks",value:function(e){var t=this.queuedCallbacks;if(t.length){var n=!0,r=!1,a=void 0;try{for(var i,o=t[Symbol.iterator]();!(n=(i=o.next()).done);n=!0)(0,i.value)(e)}catch(e){r=!0,a=e}finally{try{n||null==o.return||o.return()}finally{if(r)throw a}}this.clearQueuedCallbacks()}}},{key:"beginCheckingIfSyncIsTakingTooLong",value:function(){this.syncStatus.checker&&this.stopCheckingIfSyncIsTakingTooLong(),this.syncStatus.checker=this.$interval(function(){(new Date-this.syncStatus.syncStart)/1e3>5&&(this.notifyEvent("sync:taking-too-long"),this.stopCheckingIfSyncIsTakingTooLong())}.bind(this),500)}},{key:"stopCheckingIfSyncIsTakingTooLong",value:function(){this.$interval.hasOwnProperty("cancel")?this.$interval.cancel(this.syncStatus.checker):clearInterval(this.syncStatus.checker),this.syncStatus.checker=null}},{key:"lockSyncing",value:function(){this.syncLocked=!0}},{key:"unlockSyncing",value:function(){this.syncLocked=!1}},{key:"sync",value:function(){var t=k(regeneratorRuntime.mark((function t(){var n,r=this,a=arguments;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=a.length>0&&void 0!==a[0]?a[0]:{},!this.syncLocked){t.next=4;break}return console.log("Sync Locked, Returning;"),t.abrupt("return");case 4:return t.abrupt("return",new Promise(function(){var t=k(regeneratorRuntime.mark((function t(a,i){var o,s,u,l,c,f,d,p,h,m,v,g,y,b;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n||(n={}),o=r.modelManager.getDirtyItems(),s=o.filter((function(e){return!r.lastDirtyItemsSave||e.dirtiedDate>r.lastDirtyItemsSave})),t.next=5,r.getActiveKeyInfo(e.KeyRequestLoadSaveAccount);case 5:if(u=t.sent,l=r.syncStatus.syncOpInProgress,c=r.initialDataLoaded(),!l&&c){t.next=16;break}return r.performSyncAgainOnCompletion=!0,r.lastDirtyItemsSave=new Date,t.next=13,r.writeItemsToLocalStorage(s,!1);case 13:return l&&(r.queuedCallbacks.push(a),r.loggingEnabled&&console.warn("Attempting to sync while existing sync is in progress.")),c||(r.loggingEnabled&&console.warn("(1) Attempting to perform online sync before local data has loaded"),a()),t.abrupt("return");case 16:if(r.syncStatus.syncOpInProgress=!0,!u.offline){t.next=19;break}return t.abrupt("return",r.syncOffline(o).then((function(e){r.syncStatus.syncOpInProgress=!1,a(e)})).catch((function(e){r.notifyEvent("sync-exception",e)})));case 19:if(r.initialDataLoaded()){t.next=22;break}return console.error("Attempting to perform online sync before local data has loaded"),t.abrupt("return");case 22:return r.loggingEnabled&&console.log("Syncing online user."),f=r.syncStatus.needsMoreSync,r.syncStatus.syncStart=new Date,r.beginCheckingIfSyncIsTakingTooLong(),d=r.PerSyncItemUploadLimit,(p=o.slice(0,d)).lengthr.syncStatus.total&&(r.syncStatus.total=r.syncStatus.current),r.syncStatusDidChange(),t.next=34,r.writeItemsToLocalStorage(s,!1);case 34:return r.lastDirtyItemsSave=new Date,n.onPreSyncSave&&n.onPreSyncSave(),r.allRetreivedItems||(r.allRetreivedItems=[]),r.allSavedItems||(r.allSavedItems=[]),(h={}).limit=r.ServerItemDownloadLimit,n.performIntegrityCheck&&(h.compute_integrity=!0),t.prev=41,t.next=44,Promise.all(p.map((function(e){var t=new U(e,u.keys,u.auth_params);return t.additionalFields=n.additionalFields,t.paramsForSync()}))).then((function(e){h.items=e}));case 44:t.next=49;break;case 46:t.prev=46,t.t0=t.catch(41),r.notifyEvent("sync-exception",t.t0);case 49:for(m=!0,v=!1,g=void 0,t.prev=52,y=p[Symbol.iterator]();!(m=(b=y.next()).done);m=!0)b.value.dirtyCount=0;t.next=60;break;case 56:t.prev=56,t.t1=t.catch(52),v=!0,g=t.t1;case 60:t.prev=60,t.prev=61,m||null==y.return||y.return();case 63:if(t.prev=63,!v){t.next=66;break}throw g;case 66:return t.finish(63);case 67:return t.finish(60);case 68:return t.next=70,r.getSyncToken();case 70:return h.sync_token=t.sent,t.next=73,r.getCursorToken();case 73:return h.cursor_token=t.sent,h.api=R.getApiVersion(),r.loggingEnabled&&console.log("Syncing with params",h),t.prev=76,t.t2=r.httpManager,t.next=80,r.getSyncURL();case 80:t.t3=t.sent,t.t4=h,t.t5=function(e){r.handleSyncSuccess(p,e,n).then((function(){a(e)})).catch((function(e){console.log("Caught sync success exception:",e),r.handleSyncError(e,null,o).then((function(t){r.notifyEvent("sync-exception",e),a(t)}))}))},t.t6=function(e,t){r.handleSyncError(e,t,o).then((function(e){a(e)}))},t.t2.postAuthenticatedAbsolute.call(t.t2,t.t3,t.t4,t.t5,t.t6),t.next=90;break;case 87:t.prev=87,t.t7=t.catch(76),console.log("Sync exception caught:",t.t7);case 90:case"end":return t.stop()}}),t,null,[[41,46],[52,56,60,68],[61,,63,67],[76,87]])})));return function(e,n){return t.apply(this,arguments)}}()));case 5:case"end":return t.stop()}}),t,this)})));function n(){return t.apply(this,arguments)}return n}()},{key:"_awaitSleep",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return console.warn("Simulating high latency sync request",t),e.abrupt("return",new Promise((function(e,n){setTimeout((function(){e()}),t)})));case 2:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"handleSyncSuccess",value:function(){var t=k(regeneratorRuntime.mark((function t(n,r,a){var i,o,s,u,l,c,f,d,p,h,m,v,g,y,b,k,w=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!a.simulateHighLatency){t.next=4;break}return i=a.simulatedLatency||1e3,t.next=4,this._awaitSleep(i);case 4:for(this.syncStatus.error=null,this.loggingEnabled&&console.log("Sync response",r),o=this.allSavedItems.map((function(e){return e.uuid})),s=r.saved_items.map((function(e){return e.uuid})),r.retrieved_items=r.retrieved_items.filter((function(e){var t=o.includes(e.uuid),n=s.includes(e.uuid);if(t||n)return!1;var r=w.modelManager.findItem(e.uuid);return!r||!r.dirty})),u=[],l=!0,c=!1,f=void 0,t.prev=13,d=n[Symbol.iterator]();!(l=(p=d.next()).done);l=!0)0==(h=p.value).dirtyCount&&u.push(h);t.next=21;break;case 17:t.prev=17,t.t0=t.catch(13),c=!0,f=t.t0;case 21:t.prev=21,t.prev=22,l||null==d.return||d.return();case 24:if(t.prev=24,!c){t.next=27;break}throw f;case 27:return t.finish(24);case 28:return t.finish(21);case 29:return this.modelManager.clearDirtyItems(u),t.next=32,this.handleItemsResponse(r.retrieved_items,null,F.MappingSourceRemoteRetrieved,e.KeyRequestLoadSaveAccount);case 32:return m=t.sent,this.allRetreivedItems=this.allRetreivedItems.concat(m),this.syncStatus.retrievedCount=this.allRetreivedItems.length,v=["content","auth_hash"],t.next=38,this.handleItemsResponse(r.saved_items,v,F.MappingSourceRemoteSaved,e.KeyRequestLoadSaveAccount);case 38:return g=t.sent,this.allSavedItems=this.allSavedItems.concat(g),y=r.unsaved,t.next=43,this.deprecated_handleUnsavedItemsResponse(y);case 43:return t.next=45,this.handleConflictsResponse(r.conflicts);case 45:if(b=t.sent,k=b&&b.length>0,!b){t.next=50;break}return t.next=50,this.writeItemsToLocalStorage(b,!1);case 50:return t.next=52,this.writeItemsToLocalStorage(g,!1);case 52:return t.next=54,this.writeItemsToLocalStorage(m,!1);case 54:if(!r.integrity_hash||r.cursor_token){t.next=59;break}return t.next=57,this.handleServerIntegrityHash(r.integrity_hash);case 57:t.sent||this.syncDiscordance=this.majorDataChangeThreshold||g.length>=this.majorDataChangeThreshold||y&&y.length>=this.majorDataChangeThreshold||b&&b.length>=this.majorDataChangeThreshold)&&this.notifyEvent("major-data-change"),this.callQueuedCallbacks(r),this.notifyEvent("sync:completed",{retrievedItems:this.allRetreivedItems,savedItems:this.allSavedItems}),this.allRetreivedItems=[],this.allSavedItems=[],this.performSyncAgainOnCompletion&&(this.performSyncAgainOnCompletion=!1,setTimeout((function(){w.sync(a)}),10)),t.abrupt("return",r);case 88:case"end":return t.stop()}}),t,this,[[13,17,21,29],[22,,24,28]])})));function n(e,n,r){return t.apply(this,arguments)}return n}()},{key:"handleSyncError",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return console.log("Sync error: ",t),401==n&&this.notifyEvent("sync-session-invalid"),t?"string"==typeof t&&(t={error:{message:t}}):t={error:{message:"Could not connect to server."}},this.syncStatus.syncOpInProgress=!1,this.syncStatus.error=t.error,this.syncStatusDidChange(),this.writeItemsToLocalStorage(r,!1),this.modelManager.didSyncModelsOffline(r),this.stopCheckingIfSyncIsTakingTooLong(),this.notifyEvent("sync:error",t.error),this.callQueuedCallbacks({error:"Sync error"}),e.abrupt("return",t);case 12:case"end":return e.stop()}}),e,this)})));function t(t,n,r){return e.apply(this,arguments)}return t}()},{key:"handleItemsResponse",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r,a){var i,o,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getActiveKeyInfo(a);case 2:return i=e.sent.keys,e.next=5,SFJS.itemTransformer.decryptMultipleItems(t,i);case 5:return e.next=7,this.modelManager.mapResponseItemsToLocalModelsOmittingFields(t,n,r);case 7:return o=e.sent,(s=o.filter((function(e){var t=e.errorDecryptingValueChanged;return e.errorDecryptingValueChanged=!1,t}))).length>0&&this.writeItemsToLocalStorage(s,!1),e.abrupt("return",o);case 11:case"end":return e.stop()}}),e,this)})));function t(t,n,r,a){return e.apply(this,arguments)}return t}()},{key:"refreshErroredItems",value:function(){var t=k(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!((n=this.modelManager.allNondummyItems.filter((function(e){return 1==e.errorDecrypting}))).length>0)){t.next=3;break}return t.abrupt("return",this.handleItemsResponse(n,null,F.MappingSourceLocalRetrieved,e.KeyRequestLoadSaveAccount));case 3:case"end":return t.stop()}}),t,this)})));function n(){return t.apply(this,arguments)}return n}()},{key:"handleConflictsResponse",value:function(){var t=k(regeneratorRuntime.mark((function t(n){var r,a,i,o,s,u,l,c,f,d,p,h,m,v,g,y,b,k,w,x,S,_,E,C,I,R,D,A,O,M,T,P;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n&&0!=n.length){t.next=2;break}return t.abrupt("return");case 2:this.loggingEnabled&&console.log("Handle Conflicted Items:",n),r={},a=!0,i=!1,o=void 0,t.prev=7,s=n[Symbol.iterator]();case 9:if(a=(u=s.next()).done){t.next=21;break}if(l=u.value,c=l.server_item||l.unsaved_item,f=this.modelManager.findItem(c.uuid)){t.next=16;break}return r[c.uuid]={},t.abrupt("continue",18);case 16:d=f.getContentCopy(),r[c.uuid]={frozenContent:d,itemRef:f};case 18:a=!0,t.next=9;break;case 21:t.next=27;break;case 23:t.prev=23,t.t0=t.catch(7),i=!0,o=t.t0;case 27:t.prev=27,t.prev=28,a||null==s.return||s.return();case 30:if(t.prev=30,!i){t.next=33;break}throw o;case 33:return t.finish(30);case 34:return t.finish(27);case 35:p=[],h=!0,m=!1,v=void 0,t.prev=39,g=n[Symbol.iterator]();case 41:if(h=(y=g.next()).done){t.next=91;break}return b=y.value,k=b.server_item||b.unsaved_item,t.t1=SFJS.itemTransformer,t.t2=[k],t.next=48,this.getActiveKeyInfo(e.KeyRequestLoadSaveAccount);case 48:return t.t3=t.sent.keys,t.next=51,t.t1.decryptMultipleItems.call(t.t1,t.t2,t.t3);case 51:if(w=r[k.uuid],x=w.frozenContent,S=w.itemRef){t.next=54;break}return t.abrupt("continue",88);case 54:if(p.push(S),"uuid_conflict"!==b.type){t.next=62;break}return t.next=58,this.modelManager.alternateUUIDForItem(S);case 58:_=t.sent,p.push(_),t.next=88;break;case 62:if("sync_conflict"!==b.type){t.next=86;break}return t.next=65,this.modelManager.createDuplicateItemFromResponseItem(k);case 65:if(E=t.sent,C=this.modelManager.duplicateItemWithCustomContent({content:x,duplicateOf:S}),I=!C.isItemContentEqualWith(E),R=!S.isItemContentEqualWith(E),D=!1,A=!1,O=!1,M=!1,k.deleted||S.deleted?M=!0:I?(T=20,(new Date-S.client_updated_at)/1e30&&void 0!==arguments[0]?arguments[0]:{};return new Promise(function(){var r=k(regeneratorRuntime.mark((function r(a,i){var o;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return o={limit:n.limit||500,sync_token:n.syncToken,cursor_token:n.cursorToken,content_type:n.contentType,event:n.event,api:R.getApiVersion()},r.prev=1,r.t0=t.httpManager,r.next=5,t.getSyncURL();case 5:r.t1=r.sent,r.t2=o,r.t3=function(){var r=k(regeneratorRuntime.mark((function r(i){var o,s;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return n.retrievedItems||(n.retrievedItems=[]),o=i.retrieved_items,r.next=4,t.getActiveKeyInfo(e.KeyRequestLoadSaveAccount);case 4:return s=r.sent.keys,r.next=7,SFJS.itemTransformer.decryptMultipleItems(o,s);case 7:n.retrievedItems=n.retrievedItems.concat(o.map((function(e){return t.modelManager.createItem(e)}))),n.syncToken=i.sync_token,n.cursorToken=i.cursor_token,n.cursorToken?t.stateless_downloadAllItems(n).then(a):a(n.retrievedItems);case 11:case"end":return r.stop()}}),r)})));return function(e){return r.apply(this,arguments)}}(),r.t4=function(e,t){i(e)},r.t0.postAuthenticatedAbsolute.call(r.t0,r.t1,r.t2,r.t3,r.t4),r.next=16;break;case 12:r.prev=12,r.t5=r.catch(1),console.log("Download all items exception caught:",r.t5),i(r.t5);case 16:case"end":return r.stop()}}),r,null,[[1,12]])})));return function(e,t){return r.apply(this,arguments)}}())}},{key:"resolveOutOfSync",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.stateless_downloadAllItems({event:"resolve-out-of-sync"}).then(function(){var e=k(regeneratorRuntime.mark((function e(n){var r,a,i,o,s,u,l,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=[],a=!0,i=!1,o=void 0,e.prev=4,s=n[Symbol.iterator]();case 6:if(a=(u=s.next()).done){e.next=18;break}if(l=u.value,!(c=t.modelManager.findItem(l.uuid))){e.next=14;break}if(l.isItemContentEqualWith(c)){e.next=14;break}return e.next=14,t.modelManager.duplicateItemAndAddAsConflict(c);case 14:r.push(l);case 15:a=!0,e.next=6;break;case 18:e.next=24;break;case 20:e.prev=20,e.t0=e.catch(4),i=!0,o=e.t0;case 24:e.prev=24,e.prev=25,a||null==s.return||s.return();case 27:if(e.prev=27,!i){e.next=30;break}throw o;case 30:return e.finish(27);case 31:return e.finish(24);case 32:return e.next=34,t.modelManager.mapResponseItemsToLocalModelsWithOptions({items:r,source:F.MappingSourceRemoteRetrieved});case 34:return e.next=36,t.writeItemsToLocalStorage(t.modelManager.allNondummyItems);case 36:return e.abrupt("return",t.sync({performIntegrityCheck:!0}));case 37:case"end":return e.stop()}}),e,null,[[4,20,24,32],[25,,27,31]])})));return function(t){return e.apply(this,arguments)}}()));case 1:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"handleSignout",value:function(){var e=k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.outOfSync=!1,this.loadLocalDataPromise=null,this.performSyncAgainOnCompletion=!1,this.syncStatus.syncOpInProgress=!1,this._queuedCallbacks=[],this.syncStatus={},e.abrupt("return",this.clearSyncToken());case 7:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"clearSyncToken",value:function(){var e=k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this._syncToken=null,this._cursorToken=null,e.abrupt("return",this.storageManager.removeItem("syncToken"));case 3:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"__setLocalDataNotLoaded",value:function(){this.loadLocalDataPromise=null,this._initialDataLoaded=!1}},{key:"queuedCallbacks",get:function(){return this._queuedCallbacks||(this._queuedCallbacks=[]),this._queuedCallbacks}}]),e}();r.SFSyncManager=B;var z=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};w(this,e),this.content={},this.referencingObjects=[],this.updateFromJSON(t),this.uuid||"undefined"!=typeof SFJS&&SFJS.crypto.generateUUIDSync&&(this.uuid=SFJS.crypto.generateUUIDSync()),"object"!==y(this.content)||this.content.references||(this.content.references=[])}return S(e,[{key:"initUUID",value:function(){var e=k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.uuid){e.next=4;break}return e.next=3,SFJS.crypto.generateUUID();case 3:this.uuid=e.sent;case 4:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"updateFromJSON",value:function(t){if(t){this.deleted=t.deleted,this.uuid=t.uuid,this.enc_item_key=t.enc_item_key,this.auth_hash=t.auth_hash,this.auth_params=t.auth_params;for(var n=0,r=["errorDecrypting","dirty","dirtyCount","dirtiedDate","dummy"];n"==n.operator?m>h:"<="==n.operator?m<=h:">="==n.operator?m>=h:"startsWith"==n.operator?m.startsWith(h):"in"==n.operator?-1!=h.indexOf(m):"includes"==n.operator?this.resolveIncludesPredicate(m,h):"matches"==n.operator&&new RegExp(h).test(m)}},{key:"resolveIncludesPredicate",value:function(t,n){if("string"==typeof n)return t.includes(n);var r;r=Array.isArray(n)?e.fromArray(n):n;var a=!0,i=!1,o=void 0;try{for(var s,u=t[Symbol.iterator]();!(a=(s=u.next()).done);a=!0){var l=s.value;if(this.ObjectSatisfiesPredicate(l,r))return!0}}catch(e){i=!0,o=e}finally{try{a||null==u.return||u.return()}finally{if(i)throw o}}return!1}},{key:"ItemSatisfiesPredicate",value:function(t,n){return Array.isArray(n)&&(n=e.fromArray(n)),this.ObjectSatisfiesPredicate(t,n)}},{key:"ItemSatisfiesPredicates",value:function(e,t){var n=!0,r=!1,a=void 0;try{for(var i,o=t[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;if(!this.ItemSatisfiesPredicate(e,s))return!1}}catch(e){r=!0,a=e}finally{try{n||null==o.return||o.return()}finally{if(r)throw a}}return!0}},{key:"DateFromString",value:function(e){var t=e.split("."),n=t[1],r=new Date,a=parseInt(t[0]);return"days"==n?r.setDate(r.getDate()-a):"hours"==n&&r.setHours(r.getHours()-a),r}},{key:"IsRecursiveOperator",value:function(e){return["and","or"].includes(e)}}]),e}();r.SFPredicate=H;var W=function(e){function t(e){var n;return w(this,t),(n=l(this,f(t).call(this,e))).content.desktopPrivileges||(n.content.desktopPrivileges={}),n}return d(t,e),S(t,null,[{key:"contentType",value:function(){return"SN|Privileges"}}]),S(t,[{key:"setCredentialsForAction",value:function(e,t){this.content.desktopPrivileges[e]=t}},{key:"getCredentialsForAction",value:function(e){return this.content.desktopPrivileges[e]||[]}},{key:"toggleCredentialForAction",value:function(e,t){this.isCredentialRequiredForAction(e,t)?this.removeCredentialForAction(e,t):this.addCredentialForAction(e,t)}},{key:"removeCredentialForAction",value:function(e,t){_.pull(this.content.desktopPrivileges[e],t)}},{key:"addCredentialForAction",value:function(e,t){var n=this.getCredentialsForAction(e);n.push(t),this.setCredentialsForAction(e,n)}},{key:"isCredentialRequiredForAction",value:function(e,t){return this.getCredentialsForAction(e).includes(t)}}]),t}(z);r.SFPrivileges=W;var K=function(e){function t(e){var n;return w(this,t),(n=l(this,f(t).call(this,e))).content.itemUUIDToItemHistoryMapping||(n.content.itemUUIDToItemHistoryMapping={}),Object.keys(n.content.itemUUIDToItemHistoryMapping).forEach((function(e){var t=n.content.itemUUIDToItemHistoryMapping[e];n.content.itemUUIDToItemHistoryMapping[e]=new V(t)})),n}return d(t,e),S(t,[{key:"addEntryForItem",value:function(e){return this.historyForItem(e).addHistoryEntryForItem(e)}},{key:"historyForItem",value:function(e){var t=this.content.itemUUIDToItemHistoryMapping[e.uuid];return t||(t=this.content.itemUUIDToItemHistoryMapping[e.uuid]=new V),t}},{key:"clearItemHistory",value:function(e){this.historyForItem(e).clear()}},{key:"clearAllHistory",value:function(){this.content.itemUUIDToItemHistoryMapping={}}},{key:"optimizeHistoryForItem",value:function(e){var n=this.historyForItem(e);n.entries.length>t.LargeItemEntryAmountThreshold&&n.optimize()}}]),t}(z);r.SFHistorySession=K,K.LargeItemEntryAmountThreshold=60;var V=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(w(this,e),this.entries||(this.entries=[]),t.entries){var n=!0,r=!1,a=void 0;try{for(var i,o=t.entries[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value,u=this.createEntryForItem(s.item);u.setPreviousEntry(this.getLastEntry()),this.entries.push(u)}}catch(e){r=!0,a=e}finally{try{n||null==o.return||o.return()}finally{if(r)throw a}}}}return S(e,[{key:"createEntryForItem",value:function(t){var n=e.HistoryEntryClassMapping&&e.HistoryEntryClassMapping[t.content_type];return n||(n=q),new n(t)}},{key:"getLastEntry",value:function(){return this.entries[this.entries.length-1]}},{key:"addHistoryEntryForItem",value:function(e){var t=this.createEntryForItem(e),n=this.getLastEntry();if(t.setPreviousEntry(n),!t.isSameAsEntry(n))return this.entries.push(t),t}},{key:"clear",value:function(){this.entries.length=0}},{key:"optimize",value:function(){var t=this,n=[],r=function(t){return t.deltaSize()>e.LargeEntryDeltaThreshold},a=function(e,a,i){if(i?n.push(e):-1!==(a=n.indexOf(e))&&n.splice(a,1),i&&r(e)&&-1==e.operationVector()){var o=t.entries[a-1];o&&n.push(o)}};this.entries.forEach((function(e,n){if(0==n||n==t.entries.length-1)a(e,n,!0);else{var i=r(e);a(e,n,i)}})),this.entries=this.entries.filter((function(e,t){return-1!==n.indexOf(e)}))}}]),e}();r.SFItemHistory=V,V.LargeEntryDeltaThreshold=15;var q=function(){function e(t){w(this,e),this.item=z.deepMerge({},t),this.defaultContentKeyToDiffOn="text",this.textCharDiffLength=0,"string"==typeof this.item.updated_at&&(this.item.updated_at=new Date(this.item.updated_at))}return S(e,[{key:"setPreviousEntry",value:function(e){this.hasPreviousEntry=null!=e,this.item.content[this.defaultContentKeyToDiffOn]&&(this.textCharDiffLength=e?this.item.content[this.defaultContentKeyToDiffOn].length-e.item.content[this.defaultContentKeyToDiffOn].length:this.item.content[this.defaultContentKeyToDiffOn].length)}},{key:"operationVector",value:function(){return null!=this.textCharDiffLength?this.hasPreviousEntry&&0!=this.textCharDiffLength?this.textCharDiffLength<0?-1:1:0:1}},{key:"deltaSize",value:function(){return null!=this.textCharDiffLength?Math.abs(this.textCharDiffLength):1}},{key:"isSameAsEntry",value:function(e){if(!e)return!1;var t=new z(this.item),n=new z(e.item);return t.isItemContentEqualWith(n)}}]),e}();r.SFItemHistoryEntry=q,I="undefined"!=typeof window?window:void 0!==e?e:null;var $=function(){function e(){w(this,e),this.DefaultPBKDF2Length=768}return S(e,[{key:"generateUUIDSync",value:function(){var e=I.crypto||I.msCrypto;if(e){var t=new Uint32Array(4);e.getRandomValues(t);var n=-1;return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){n++;var r=t[n>>3]>>n%8*4&15;return("x"==e?r:3&r|8).toString(16)}))}var r=(new Date).getTime();return I.performance&&"function"==typeof I.performance.now&&(r+=performance.now()),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=(r+16*Math.random())%16|0;return r=Math.floor(r/16),("x"==e?t:3&t|8).toString(16)}))}},{key:"generateUUID",value:function(){var e=k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.generateUUIDSync());case 1:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"timingSafeEqual",value:function(e,t){var n=String(e),r=String(t),a=n.length,i=0;a!==r.length&&(r=n,i=1);for(var o=0;o0&&void 0!==p[0]?p[0]:{},n=t.ciphertextToAuth,r=t.contentCiphertext,a=t.encryptionKey,i=t.iv,o=t.authHash,s=t.authKey,!(p.length>1?p[1]:void 0)||o){e.next=5;break}return console.error("Auth hash is required."),e.abrupt("return");case 5:if(!o){e.next=12;break}return e.next=8,this.hmac256(n,s);case 8:if(l=e.sent,!1!==this.timingSafeEqual(o,l)){e.next=12;break}return console.error("Auth hash does not match, returning null."),e.abrupt("return",null);case 12:return c=u.enc.Hex.parse(a),f=u.enc.Hex.parse(i||""),d=u.AES.decrypt(r,c,{iv:f,mode:u.mode.CBC,padding:u.pad.Pkcs7}),e.abrupt("return",d.toString(u.enc.Utf8));case 16:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"encryptText",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r){var a,i,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=u.enc.Hex.parse(n),i=u.enc.Hex.parse(r||""),o=u.AES.encrypt(t,a,{iv:i,mode:u.mode.CBC,padding:u.pad.Pkcs7}),e.abrupt("return",o.toString());case 4:case"end":return e.stop()}}),e)})));function t(t,n,r){return e.apply(this,arguments)}return t}()},{key:"generateRandomKey",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",u.lib.WordArray.random(t/8).toString());case 1:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"generateItemEncryptionKey",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t,n,r,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=512,n=1,e.next=4,this.generateRandomKey(t);case 4:return r=e.sent,e.next=7,this.generateRandomKey(t);case 7:return a=e.sent,e.abrupt("return",this.pbkdf2(a,r,n,t));case 9:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"firstHalfOfKey",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",t.substring(0,t.length/2));case 1:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"secondHalfOfKey",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",t.substring(t.length/2,t.length));case 1:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"base64",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",I.btoa(encodeURIComponent(t).replace(/%([0-9A-F]{2})/g,(function(e,t){return String.fromCharCode("0x"+t)}))));case 1:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"base64Decode",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",I.atob(t));case 1:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"sha256",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",u.SHA256(t).toString());case 1:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"hmac256",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n){var r,a,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=u.enc.Hex.parse(n),a=u.enc.Utf8.parse(t),i=u.HmacSHA256(a,r).toString(),e.abrupt("return",i);case 4:case"end":return e.stop()}}),e)})));function t(t,n){return e.apply(this,arguments)}return t}()},{key:"generateSalt",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r,a){var i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sha256([t,"SF",n,r,a].join(":"));case 2:return i=e.sent,e.abrupt("return",i);case 4:case"end":return e.stop()}}),e,this)})));function t(t,n,r,a){return e.apply(this,arguments)}return t}()},{key:"generateSymmetricKeyPair",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t,n,r,a,i,o,s,u,l,c,f=arguments;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=f.length>0&&void 0!==f[0]?f[0]:{},n=t.password,r=t.pw_salt,a=t.pw_cost,e.next=3,this.pbkdf2(n,r,a,this.DefaultPBKDF2Length);case 3:return i=e.sent,o=i.length,s=o/3,u=i.slice(0,s),l=i.slice(s,2*s),c=i.slice(2*s,3*s),e.abrupt("return",[u,l,c]);case 10:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"computeEncryptionKeysForUser",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n){var r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("003"!=n.version){e.next=9;break}if(n.identifier){e.next=4;break}return console.error("authParams is missing identifier."),e.abrupt("return");case 4:return e.next=6,this.generateSalt(n.identifier,n.version,n.pw_cost,n.pw_nonce);case 6:r=e.sent,e.next=10;break;case 9:r=n.pw_salt;case 10:return e.abrupt("return",this.generateSymmetricKeyPair({password:t,pw_salt:r,pw_cost:n.pw_cost}).then((function(e){return{pw:e[0],mk:e[1],ak:e[2]}})));case 11:case"end":return e.stop()}}),e,this)})));function t(t,n){return e.apply(this,arguments)}return t}()},{key:"generateInitialKeysAndAuthParamsForUser",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n){var r,a,i,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=this.SFJS.version,a=this.SFJS.defaultPasswordGenerationCost,e.next=4,this.generateRandomKey(256);case 4:return i=e.sent,e.next=7,this.generateSalt(t,r,a,i);case 7:return o=e.sent,e.abrupt("return",this.generateSymmetricKeyPair({password:n,pw_salt:o,pw_cost:a}).then((function(e){var n={pw_nonce:i,pw_cost:a,identifier:t,version:r};return{keys:{pw:e[0],mk:e[1],ak:e[2]},authParams:n}})));case 9:case"end":return e.stop()}}),e,this)})));function t(t,n){return e.apply(this,arguments)}return t}()}]),e}();r.SFAbstractCrypto=$;var J=function(e){function t(){return w(this,t),l(this,f(t).apply(this,arguments))}return d(t,e),S(t,[{key:"pbkdf2",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r,a){var i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i={keySize:a/32,hasher:u.algo.SHA512,iterations:r},e.abrupt("return",u.PBKDF2(t,n,i).toString());case 2:case"end":return e.stop()}}),e)})));function t(t,n,r,a){return e.apply(this,arguments)}return t}()}]),t}($);r.SFCryptoJS=J;var Q=(I="undefined"!=typeof window?window:void 0!==e?e:null).crypto?I.crypto.subtle:null,G=function(e){function t(){return w(this,t),l(this,f(t).apply(this,arguments))}return d(t,e),S(t,[{key:"pbkdf2",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r,a){var i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.webCryptoImportKey(t,"PBKDF2",["deriveBits"]);case 2:if(i=e.sent){e.next=6;break}return console.log("Key is null, unable to continue"),e.abrupt("return",null);case 6:return e.abrupt("return",this.webCryptoDeriveBits(i,n,r,a));case 7:case"end":return e.stop()}}),e,this)})));function t(t,n,r,a){return e.apply(this,arguments)}return t}()},{key:"generateRandomKey",value:function(){var e=k(regeneratorRuntime.mark((function e(t){var n,r=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=!0,e.abrupt("return",Q.generateKey({name:"AES-CBC",length:t},n,["encrypt","decrypt"]).then((function(e){return Q.exportKey("raw",e).then(function(){var e=k(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,r.arrayBufferToHexString(new Uint8Array(t));case 2:return n=e.sent,e.abrupt("return",n);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()).catch((function(e){console.error("Error exporting key",e)}))})).catch((function(e){console.error("Error generating key",e)})));case 2:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"generateItemEncryptionKey",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=256,e.abrupt("return",Promise.all([this.generateRandomKey(t),this.generateRandomKey(t)]).then((function(e){return e.join("")})));case 2:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"encryptText",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r){var a,i,o,s,u,l=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!r){e.next=6;break}return e.next=3,this.hexStringToArrayBuffer(r);case 3:e.t0=e.sent,e.next=7;break;case 6:e.t0=new ArrayBuffer(16);case 7:return a=e.t0,i={name:"AES-CBC",iv:a},e.next=11,this.hexStringToArrayBuffer(n);case 11:return o=e.sent,e.next=14,this.webCryptoImportKey(o,i.name,["encrypt"]);case 14:return s=e.sent,e.next=17,this.stringToArrayBuffer(t);case 17:return u=e.sent,e.abrupt("return",crypto.subtle.encrypt(i,s,u).then(function(){var e=k(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,l.arrayBufferToBase64(t);case 2:return n=e.sent,e.abrupt("return",n);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 19:case"end":return e.stop()}}),e,this)})));function t(t,n,r){return e.apply(this,arguments)}return t}()},{key:"decryptText",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t,n,r,a,i,o,s,u,l,c,f,d,p,h=this,m=arguments;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=m.length>0&&void 0!==m[0]?m[0]:{},n=t.ciphertextToAuth,r=t.contentCiphertext,a=t.encryptionKey,i=t.iv,o=t.authHash,s=t.authKey,!(m.length>1?m[1]:void 0)||o){e.next=5;break}return console.error("Auth hash is required."),e.abrupt("return");case 5:if(!o){e.next=12;break}return e.next=8,this.hmac256(n,s);case 8:if(u=e.sent,!1!==this.timingSafeEqual(o,u)){e.next=12;break}return console.error("Auth hash does not match, returning null. ".concat(o," != ").concat(u)),e.abrupt("return",null);case 12:if(!i){e.next=18;break}return e.next=15,this.hexStringToArrayBuffer(i);case 15:e.t0=e.sent,e.next=19;break;case 18:e.t0=new ArrayBuffer(16);case 19:return l=e.t0,c={name:"AES-CBC",iv:l},e.next=23,this.hexStringToArrayBuffer(a);case 23:return f=e.sent,e.next=26,this.webCryptoImportKey(f,c.name,["decrypt"]);case 26:return d=e.sent,e.next=29,this.base64ToArrayBuffer(r);case 29:return p=e.sent,e.abrupt("return",crypto.subtle.decrypt(c,d,p).then(function(){var e=k(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,h.arrayBufferToString(t);case 2:return n=e.sent,e.abrupt("return",n);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()).catch((function(e){console.error("Error decrypting:",e)})));case 31:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"hmac256",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n){var r,a,i,o=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.hexStringToArrayBuffer(n);case 2:return r=e.sent,e.next=5,this.webCryptoImportKey(r,"HMAC",["sign"],{name:"SHA-256"});case 5:return a=e.sent,e.next=8,this.stringToArrayBuffer(t);case 8:return i=e.sent,e.abrupt("return",crypto.subtle.sign({name:"HMAC"},a,i).then(function(){var e=k(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.arrayBufferToHexString(t);case 2:return n=e.sent,e.abrupt("return",n);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()).catch((function(e){console.error("Error computing hmac",e)})));case 10:case"end":return e.stop()}}),e,this)})));function t(t,n){return e.apply(this,arguments)}return t}()},{key:"webCryptoImportKey",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r,a){var i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("string"!=typeof t){e.next=6;break}return e.next=3,this.stringToArrayBuffer(t);case 3:e.t0=e.sent,e.next=7;break;case 6:e.t0=t;case 7:return i=e.t0,e.abrupt("return",Q.importKey("raw",i,{name:n,hash:a},!1,r).then((function(e){return e})).catch((function(e){return console.error(e),null})));case 9:case"end":return e.stop()}}),e,this)})));function t(t,n,r,a){return e.apply(this,arguments)}return t}()},{key:"webCryptoDeriveBits",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r,a){var i,o=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.stringToArrayBuffer(n);case 2:return e.t0=e.sent,e.t1=r,e.t2={name:"SHA-512"},i={name:"PBKDF2",salt:e.t0,iterations:e.t1,hash:e.t2},e.abrupt("return",Q.deriveBits(i,t,a).then(function(){var e=k(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.arrayBufferToHexString(new Uint8Array(t));case 2:return n=e.sent,e.abrupt("return",n);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()).catch((function(e){return console.error(e),null})));case 7:case"end":return e.stop()}}),e,this)})));function t(t,n,r,a){return e.apply(this,arguments)}return t}()},{key:"stringToArrayBuffer",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){var r=new Blob([t]),a=new FileReader;a.onload=function(t){e(t.target.result)},a.readAsArrayBuffer(r)})));case 1:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"arrayBufferToString",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){var r=new Blob([t]),a=new FileReader;a.onload=function(t){e(t.target.result)},a.readAsText(r)})));case 1:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"arrayBufferToHexString",value:function(){var e=k(regeneratorRuntime.mark((function e(t){var n,r,a,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(n=new Uint8Array(t),r="",i=0;i5e3)||this.crypto instanceof G}},{key:"supportedVersions",value:function(){return["001","002","003"]}},{key:"isVersionNewerThanLibraryVersion",value:function(e){var t=this.version();return parseInt(e)>parseInt(t)}},{key:"isProtocolVersionOutdated",value:function(e){var t={"001":Date.parse("2018-01-01"),"002":Date.parse("2020-01-01")}[e];return!!t&&new Date>t}},{key:"costMinimumForVersion",value:function(e){return{"001":3e3,"002":3e3,"003":11e4}[e]}},{key:"defaultPasswordGenerationCost",value:function(){return this.costMinimumForVersion(this.version())}}]),e}();if(r.StandardFile=X,I)try{I.StandardFile=X,I.SFJS=new X,I.SFCryptoWeb=G,I.SFCryptoJS=J,I.SFItemTransformer=Y,I.SFModelManager=F,I.SFItem=z,I.SFItemParams=U,I.SFHttpManager=R,I.SFStorageManager=L,I.SFSyncManager=B,I.SFAuthManager=C,I.SFMigrationManager=D,I.SFAlertManager=E,I.SFPredicate=H,I.SFHistorySession=K,I.SFSessionHistoryManager=P,I.SFItemHistory=V,I.SFItemHistoryEntry=q,I.SFPrivilegesManager=A,I.SFPrivileges=W,I.SFSingletonManager=N}catch(e){console.log("Exception while exporting window variables",e)}}).call(this,void 0!==t?t:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1])(1)}).call(t,n(3))},function(e,t){!function(t){"use strict";var n,r=Object.prototype,a=r.hasOwnProperty,i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",u=i.toStringTag||"@@toStringTag",l="object"==typeof e,c=t.regeneratorRuntime;if(c)l&&(e.exports=c);else{(c=t.regeneratorRuntime=l?e.exports:{}).wrap=k;var f="suspendedStart",d="suspendedYield",p="executing",h="completed",m={},v={};v[o]=function(){return this};var g=Object.getPrototypeOf,y=g&&g(g(A([])));y&&y!==r&&a.call(y,o)&&(v=y);var b=_.prototype=x.prototype=Object.create(v);S.prototype=b.constructor=_,_.constructor=S,_[u]=S.displayName="GeneratorFunction",c.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===S||"GeneratorFunction"===(t.displayName||t.name))},c.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,_):(e.__proto__=_,u in e||(e[u]="GeneratorFunction")),e.prototype=Object.create(b),e},c.awrap=function(e){return{__await:e}},E(C.prototype),C.prototype[s]=function(){return this},c.AsyncIterator=C,c.async=function(e,t,n,r){var a=new C(k(e,t,n,r));return c.isGeneratorFunction(t)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},E(b),b[u]="Generator",b[o]=function(){return this},b.toString=function(){return"[object Generator]"},c.keys=function(e){var t=[];for(var n in e)t.push(n);return t.reverse(),function n(){for(;t.length;){var r=t.pop();if(r in e)return n.value=r,n.done=!1,n}return n.done=!0,n}},c.values=A,F.prototype={constructor:F,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(D),!e)for(var t in this)"t"===t.charAt(0)&&a.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=n)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(r,a){return s.type="throw",s.arg=e,t.next=r,a&&(t.method="next",t.arg=n),!!a}for(var i=this.tryEntries.length-1;i>=0;--i){var o=this.tryEntries[i],s=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var u=a.call(o,"catchLoc"),l=a.call(o,"finallyLoc");if(u&&l){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&a.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),D(n),m}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;D(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:A(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=n),m}}}function k(e,t,n,r){var a=t&&t.prototype instanceof x?t:x,i=Object.create(a.prototype),o=new F(r||[]);return i._invoke=function(e,t,n){var r=f;return function(a,i){if(r===p)throw new Error("Generator is already running");if(r===h){if("throw"===a)throw i;return O()}for(n.method=a,n.arg=i;;){var o=n.delegate;if(o){var s=I(o,n);if(s){if(s===m)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===f)throw r=h,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=p;var u=w(e,t,n);if("normal"===u.type){if(r=n.done?h:d,u.arg===m)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(r=h,n.method="throw",n.arg=u.arg)}}}(e,n,o),i}function w(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}function x(){}function S(){}function _(){}function E(e){["next","throw","return"].forEach((function(t){e[t]=function(e){return this._invoke(t,e)}}))}function C(e){function t(n,r,i,o){var s=w(e[n],e,r);if("throw"!==s.type){var u=s.arg,l=u.value;return l&&"object"==typeof l&&a.call(l,"__await")?Promise.resolve(l.__await).then((function(e){t("next",e,i,o)}),(function(e){t("throw",e,i,o)})):Promise.resolve(l).then((function(e){u.value=e,i(u)}),o)}o(s.arg)}var n;this._invoke=function(e,r){function a(){return new Promise((function(n,a){t(e,r,n,a)}))}return n=n?n.then(a,a):a()}}function I(e,t){var r=e.iterator[t.method];if(r===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=n,I(e,t),"throw"===t.method))return m;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return m}var a=w(r,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,m;var i=a.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=n),t.delegate=null,m):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,m)}function R(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function D(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function F(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(R,this),this.reset(!0)}function A(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,i=function t(){for(;++r=0?this.items[l]=u:this.items.push(u);case 15:n=!0,c.next=5;break;case 18:c.next=24;break;case 20:c.prev=20,c.t0=c.catch(3),r=!0,a=c.t0;case 24:c.prev=24,c.prev=25,n||null==o.return||o.return();case 27:if(c.prev=27,!r){c.next=30;break}throw a;case 30:return c.finish(27);case 31:return c.finish(24);case 32:this.notifyObserversOfEvent(e.BridgeEventReceivedItems);case 33:case"end":return c.stop()}}),null,this,[[3,20,24,32],[25,,27,31]])}},{key:"indexOfItem",value:function(e){for(var t in this.items)if(this.items[t].uuid==e.uuid)return t;return-1}},{key:"removeItemFromItems",value:function(e){this.items=this.items.filter((function(t){return t.uuid!==e.uuid}))}},{key:"createItem",value:function(e,t){this.createItems([e],t)}},{key:"createItems",value:function(e,t){this.componentManager.createItems(e,(function(e){t&&t(e.map((function(e){return new i.SFItem(e)})))}))}},{key:"saveItem",value:function(e){return regeneratorRuntime.async((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this.saveItems([e]));case 1:case"end":return t.stop()}}),null,this)}},{key:"saveItems",value:function(t){var n=this;return regeneratorRuntime.async((function(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",new Promise((function(r,a){n.componentManager.saveItems(t,(function(t){r(t),n.notifyObserversOfEvent(e.BridgeEventSavedItem)}))})));case 1:case"end":return r.stop()}}))}},{key:"indexOfItem",value:function(e){for(var t in this.items)if(this.items[t].uuid==e.uuid)return t;return-1}},{key:"deleteItem",value:function(e,t){this.deleteItems([e],t)}},{key:"deleteItems",value:function(e,t){this.componentManager.deleteItems(e,t)}},{key:"removeItemFromItems",value:function(e){this.items=this.items.filter((function(t){return t.uuid!==e.uuid}))}}])&&o(t.prototype,n),r&&o(t,r),e}();s(u,"FileItemContentTypeKey","SN|FileSafe|File"),s(u,"FileSafeCredentialsContentType","SN|FileSafe|Credentials"),s(u,"FileDescriptorContentTypeKey","SN|FileSafe|FileMetadata"),s(u,"FileSafeIntegrationContentTypeKey","SN|FileSafe|Integration"),s(u,"BridgeEventLoadedCredentials","BridgeEventLoadedCredentials"),s(u,"BridgeEventReceivedItems","BridgeEventReceivedItems"),s(u,"BridgeEventSavedItem","BridgeEventSavedItem")},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n.d(t,"default",(function(){return d}));var r=n(2),a=n(7),i=n(8),o=n(9),s=n(10),u=n(12),l=n(0);n.n(l);function c(e,t){for(var n=0;n(t=$(t,e)).length)n=e;else{var r=0,a=-1,i=-1,o=(n=t).length;for(0>r&&(r=-r>o?0:o+r),0>(a=a>o?o:a)&&(a+=o),o=r>a?0:a-r>>>0,r>>>=0,a=Array(o);++ii?Ge:o,i=1),t=Object(t);++as))return!1;if((u=i.get(e))&&i.get(t))return u==t;var u=-1,l=!0,c=2&n?new E:Ge;for(i.set(e,t),i.set(t,e);++u(n=null==n?0:Te(n))&&(n=$t(r+n,0)),h(e,ie(t,3),n)):-1}function be(e){return null!=e&&e.length?T(e,1):[]}function ke(e){var t=null==e?0:e.length;return t?e[t-1]:Ge}function we(e,t){var n;if(e&&e.length&&t&&t.length){var r=m,a=-1,i=(n=t).length;for(e===n&&(n=Y(n));++a=e}function Re(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function De(e){return null!=e&&"object"==typeof e}function Fe(e){return!(!De(e)||"[object Object]"!=L(e))&&(null===(e=Nt(e))||"function"==typeof(e=It.call(e,"constructor")&&e.constructor)&&e instanceof e&&Ct.call(e)==Ft)}function Ae(e){return"string"==typeof e||!_n(e)&&De(e)&&"[object String]"==L(e)}function Oe(e){return"symbol"==typeof e||De(e)&&"[object Symbol]"==L(e)}function Me(e){return e?(e=Pe(e))===Ye||e===-Ye?17976931348623157e292*(0>e?-1:1):e==e?e:0:0===e?e:0}function Te(e){var t=(e=Me(e))%1;return e==e?t?e-t:e:0}function Pe(e){if("number"==typeof e)return e;if(Oe(e))return Xe;if(Re(e)&&(e=Re(e="function"==typeof e.valueOf?e.valueOf():e)?e+"":e),"string"!=typeof e)return 0===e?e:+e;e=e.replace(rt,"");var t=st.test(e);return t||lt.test(e)?ht(e.slice(2),t?2:8):ot.test(e)?Xe:+e}function Ne(e){return X(e,Ue(e))}function Le(e){return null==e?"":V(e)}function je(e,t,n){return(e=null==e?Ge:P(e,t))===Ge?n:e}function Be(e,t){var n;if(n=null!=e){for(var r,a=-1,i=(r=$(t,n=e)).length,o=!1;++a(e=F(t,e))||(e==t.length-1?t.pop():Bt.call(t,e,1),--this.size,0))},S.prototype.get=function(e){var t=this.__data__;return 0>(e=F(t,e))?Ge:t[e][1]},S.prototype.has=function(e){return-1r?(++this.size,n.push([e,t])):n[r][1]=t,this},_.prototype.clear=function(){this.size=0,this.__data__={hash:new x,map:new(Yt||S),string:new x}},_.prototype.delete=function(e){return e=oe(this,e).delete(e),this.size-=e?1:0,e},_.prototype.get=function(e){return oe(this,e).get(e)},_.prototype.has=function(e){return oe(this,e).has(e)},_.prototype.set=function(e,t){var n=oe(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},E.prototype.add=E.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},E.prototype.has=function(e){return this.__data__.has(e)},C.prototype.clear=function(){this.__data__=new S,this.size=0},C.prototype.delete=function(e){var t=this.__data__;return e=t.delete(e),this.size=t.size,e},C.prototype.get=function(e){return this.__data__.get(e)},C.prototype.has=function(e){return this.__data__.has(e)},C.prototype.set=function(e,t){var n=this.__data__;if(n instanceof S){var r=n.__data__;if(!Yt||199>r.length)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new _(r)}return n.set(e,t),this.size=n.size,this};var dn=function(e,t){if(null==e)return e;if(!_e(e))return function(e,t){return e&&pn(e,t,ze)}(e,t);for(var n=e.length,r=-1,a=Object(e);++rn&&(n=$t(r+n,0)),Ae(e)?n<=r&&-10){var a=!0,i=!1,o=void 0;try{for(var s,u=t.integrations[Symbol.iterator]();!(a=(s=u.next()).done);a=!0){var l=s.value;if(l!=e){t.setIntegrationAsDefault(l);break}}}catch(e){i=!0,o=e}finally{try{a||null==u.return||u.return()}finally{if(i)throw o}}}}))}},{key:"integrations",get:function(){return this.extensionBridge.filterItems(i.a.FileSafeIntegrationContentTypeKey)}}])&&o(t.prototype,n),r&&o(t,r),e}()},function(e,t,n){"use strict";n.d(t,"a",(function(){return u}));var r=n(1),a=(n.n(r),n(0)),i=(n.n(a),n(2));function o(e,t){for(var n=0;n0&&(e=n.credentials[0]),e})),s(this,"setCredentialAsDefault",(function(e){var t=n.getDefaultCredentials();t&&(t.content.isDefault=!1),e.content.isDefault=!0,n.extensionBridge.saveItems([t,e])})),s(this,"deleteCredential",(function(e){n.extensionBridge.deleteItem(e)})),this.extensionBridge=r,this.onCredentialLoad=a,this.credentials=[],this.extensionBridge.addEventHandler((function(e){e==i.a.BridgeEventReceivedItems&&n.reloadCredentials()}))}var t,n,r;return t=e,(n=[{key:"reloadCredentials",value:function(){this.credentials=[];var e=this.extensionBridge.filterItems(i.a.FileSafeCredentialsContentType);if(0!=e.length){var t=!0,n=!1,r=void 0;try{for(var a,o=e[Symbol.iterator]();!(t=(a=o.next()).done);t=!0){var s=a.value;this.credentials.find((function(e){return e.uuid==s.uuid}))||this.credentials.push(s)}}catch(e){n=!0,r=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw r}}this.onCredentialLoad(),this.credentials.length>0&&this.didLoadCredentials()}}},{key:"createNewCredentials",value:function(){var e,t,n,r,o;return regeneratorRuntime.async((function(s){for(;;)switch(s.prev=s.next){case 0:return e=256,s.next=3,regeneratorRuntime.awrap(SFJS.crypto.generateRandomKey(e));case 3:return t=s.sent,s.next=6,regeneratorRuntime.awrap(SFJS.crypto.generateRandomKey(e));case 6:return n=s.sent,s.next=9,regeneratorRuntime.awrap(SFJS.crypto.generateInitialKeysAndAuthParamsForUser(t,n));case 9:return(r=s.sent).isDefault=0==this.credentials.length,o=new a.SFItem({content_type:i.a.FileSafeCredentialsContentType,content:r}),this.extensionBridge.saveItem(o),this.didLoadCredentials(),s.abrupt("return",o);case 15:case"end":return s.stop()}}),null,this)}},{key:"didLoadCredentials",value:function(){this.extensionBridge.notifyObserversOfEvent(i.a.BridgeEventLoadedCredentials)}},{key:"credentialForFileDescriptor",value:function(e){return this.credentials.find((function(t){return e.content.references.find((function(e){return e.uuid==t.uuid}))}))}},{key:"getAllCredentials",value:function(){return this.credentials}},{key:"saveCredential",value:function(e){this.extensionBridge.saveItem(e)}}])&&o(t.prototype,n),r&&o(t,r),e}()},function(e,t,n){"use strict";n.d(t,"a",(function(){return c}));var r=n(1),a=(n.n(r),n(0)),i=(n.n(a),n(11)),o=n.n(i),s=n(2);function u(e,t){for(var n=0;n3&&void 0!==arguments[3]&&arguments[3],i=document.createElement("a");i.setAttribute("download",t);var o=this.tempUrlForData(e,n);i.href=o,i.setAttribute("target","_blank"),a?window.location.href=i.href:(document.body.appendChild(i),i.click(),i.remove()),setTimeout((function(){r.revokeTempUrl(o)}),500)}},{key:"tempUrlForData",value:function(e,t){return window.URL.createObjectURL(new Blob([e],{type:t||"text/json"}))}},{key:"revokeTempUrl",value:function(e){window.URL.revokeObjectURL(e)}},{key:"copyTextToClipboard",value:function(e){if(window.clipboardData&&window.clipboardData.setData)return clipboardData.setData("Text",e);var t;if(document.queryCommandSupported&&document.queryCommandSupported("copy"))try{(t=document.createElement("textarea")).setAttribute("readonly",!0),t.setAttribute("contenteditable",!0),t.style.position="fixed",t.value=e,document.body.appendChild(t),t.focus(),t.select();var n=document.createRange();n.selectNodeContents(t);var r=window.getSelection();r.removeAllRanges(),r.addRange(n),t.setSelectionRange(0,t.value.length),document.execCommand("copy")}catch(e){console.error(e)}finally{document.body.removeChild(t)}}}],(n=null)&&r(t.prototype,n),a&&r(t,a),e}()}])},418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;function a(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,i){for(var o,s,u=a(e),l=1;l{"use strict";var r=n(294),a=n(418),i=n(840);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n

    \n `}templateString(){let e,t;return this.buttons?(e=`\n
    \n ${this.buttonsString()}\n
    \n `,t=""):(e="",t='style="padding-bottom: 8px"'),`\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n ${this.title?`
    ${this.title}
    `:""}\n\n
    \n ${this.text?`

    ${this.text}

    `:""}\n
    \n\n ${e}\n
    \n
    \n
    \n
    \n
    \n
    \n `}dismiss(){this.onElement.removeChild(this.element),document.removeEventListener("keyup",this.keyupListener)}primaryButton(){let e=this.buttons.find((e=>!0===e.primary));return e||(e=this.buttons[this.buttons.length-1]),e}present({onElement:e}={}){e||(e=document.body),this.onElement=e,this.element=document.createElement("div"),this.element.className="sn-component",this.element.innerHTML=this.templateString().trim(),this.buttons&&(document.addEventListener("keyup",this.keyupListener),this.buttons.forEach(((e,t)=>{this.element.querySelector(`#button-${t}`).onclick=()=>{e.action&&e.action(),this.dismiss()}}))),e.appendChild(this.element)}}}},t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={exports:{}};return e[r](a,a.exports,n),a.exports}return n.m=e,n.x=e=>{},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e={388:0},t=[[754]],r=e=>{},a=(a,i)=>{for(var o,s,[u,l,c,f]=i,d=0,p=[];d{}),r}i.forEach(a.bind(null,0)),i.push=a.bind(null,i.push.bind(i));var s=n.x;n.x=()=>(n.x=s||(e=>{}),(r=o)())})(),n.x()})()},e.exports=t()}},t={};function n(r){var a=t[r];if(void 0!==a)return a.exports;var i=t[r]={exports:{}};return e[r].call(i.exports,i,i.exports,n),i.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=n(294),t=n(935),r=n(971),a=n.n(r),i=n(33),o=n.n(i),s=n(856),u=n.n(s),l=n(308);n(166);function c(e){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function f(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function d(e){for(var t=1;t=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(s)throw i}}}}function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n{var e={33:(e,t,n)=>{var r;self,e.exports=(r=n(166),(()=>{var e,t,n={968:e=>{self,e.exports=(()=>{"use strict";var e={d:(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};let n,r,a,i;var o;e.d(t,{default:()=>E}),function(e){e.SetSize="set-size",e.StreamItems="stream-items",e.StreamContextItem="stream-context-item",e.SaveItems="save-items",e.SelectItem="select-item",e.AssociateItem="associate-item",e.DeassociateItem="deassociate-item",e.ClearSelection="clear-selection",e.CreateItem="create-item",e.CreateItems="create-items",e.DeleteItems="delete-items",e.SetComponentData="set-component-data",e.InstallLocalComponent="install-local-component",e.ToggleActivateComponent="toggle-activate-component",e.RequestPermissions="request-permissions",e.PresentConflictResolution="present-conflict-resolution",e.DuplicateItem="duplicate-item",e.ComponentRegistered="component-registered",e.ActivateThemes="themes",e.Reply="reply",e.SaveSuccess="save-success",e.SaveError="save-error",e.ThemesActivated="themes-activated",e.KeyDown="key-down",e.KeyUp="key-up",e.Click="click"}(n||(n={})),function(e){e[e.Web=1]="Web",e[e.Desktop=2]="Desktop",e[e.Mobile=3]="Mobile"}(r||(r={})),function(e){e.Any="*",e.Item="SF|Item",e.RootKey="SN|RootKey|NoSync",e.ItemsKey="SN|ItemsKey",e.EncryptedStorage="SN|EncryptedStorage",e.Note="Note",e.Tag="Tag",e.SmartTag="SN|SmartTag",e.Component="SN|Component",e.Editor="SN|Editor",e.ActionsExtension="Extension",e.UserPrefs="SN|UserPreferences",e.HistorySession="SN|HistorySession",e.Theme="SN|Theme",e.Mfa="SF|MFA",e.ServerExtension="SF|Extension",e.FilesafeCredentials="SN|FileSafe|Credentials",e.FilesafeFileMetadata="SN|FileSafe|FileMetadata",e.FilesafeIntegration="SN|FileSafe|Integration",e.ExtensionRepo="SN|ExtensionRepo"}(a||(a={})),function(e){e.Pinned="pinned",e.Archived="archived",e.Locked="locked",e.UserModifiedDate="client_updated_at",e.DefaultEditor="defaultEditor",e.MobileRules="mobileRules",e.NotAvailableOnMobile="notAvailableOnMobile",e.MobileActive="mobileActive",e.LastSize="lastSize",e.PrefersPlainEditor="prefersPlainEditor",e.ComponentInstallError="installError"}(i||(i={}));var s=new Uint8Array(16);function u(){if(!o&&!(o="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return o(s)}const l=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,c=function(e){return"string"==typeof e&&l.test(e)};for(var f=[],d=0;d<256;++d)f.push((d+256).toString(16).substr(1));const p=function(e,t,n){var r=(e=e||{}).random||(e.rng||u)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){n=n||0;for(var a=0;a<16;++a)t[n+a]=r[a];return t}return function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=(f[e[t+0]]+f[e[t+1]]+f[e[t+2]]+f[e[t+3]]+"-"+f[e[t+4]]+f[e[t+5]]+"-"+f[e[t+6]]+f[e[t+7]]+"-"+f[e[t+8]]+f[e[t+9]]+"-"+f[e[t+10]]+f[e[t+11]]+f[e[t+12]]+f[e[t+13]]+f[e[t+14]]+f[e[t+15]]).toLowerCase();if(!c(n))throw TypeError("Stringified UUID is invalid");return n}(r)},h=e=>{var t;const n={[r.Web]:"web",[r.Desktop]:"desktop",[r.Mobile]:"mobile"};return null!==(t=n[e])&&void 0!==t?t:n[r.Web]},m=e=>null!=e,v=()=>{};class g{static get isSupported(){return!(!window.console&&!console)}static get info(){return g.isSupported&&this.enabled?console.log.bind(console):v}static get error(){return g.isSupported?console.error.bind(console):v}}var y,b,k,w;function x(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function S(e){for(var t=1;t0&&(this.initialPermissions=n),m(null==r?void 0:r.coallesedSaving)&&(this.coallesedSaving=r.coallesedSaving),m(null==r?void 0:r.coallesedSavingDelay)&&(this.coallesedSavingDelay=r.coallesedSavingDelay),m(null==r?void 0:r.acceptsThemes)&&(this.component.acceptsThemes=null===(o=null==r?void 0:r.acceptsThemes)||void 0===o||o),m(a)&&(this.onReadyCallback=a),m(i)&&(this.onThemesChangeCallback=i),g.enabled=null!==(t=null==r?void 0:r.debug)&&void 0!==t&&t}deinit(){this.onReadyCallback=void 0,this.component={acceptsThemes:!0,activeThemes:[]},this.messageQueue=[],this.sentMessages=[],this.lastStreamedItem=void 0,this.pendingSaveItems=void 0,this.pendingSaveTimeout=void 0,this.pendingSaveParams=void 0,this.messageHandler&&(this.contentWindow.document.removeEventListener("message",this.messageHandler),this.contentWindow.removeEventListener("message",this.messageHandler)),this.keyDownEventListener&&this.contentWindow.removeEventListener("keydown",this.keyDownEventListener),this.keyUpEventListener&&this.contentWindow.removeEventListener("keyup",this.keyUpEventListener),this.clickEventListener&&this.contentWindow.removeEventListener("click",this.clickEventListener)}registerMessageHandler(){this.messageHandler=e=>{if(g.info("Components API Message received:",e.data),document.referrer&&new URL(document.referrer).origin!==new URL(e.origin).origin)return;const{data:t}=e,r=(e=>{if("string"!=typeof e)return!1;try{const t=JSON.parse(e),n=Object.prototype.toString.call(t);return"[object Object]"===n||"[object Array]"===n}catch(e){return!1}})(t)?JSON.parse(t):t;if(r){if(void 0===this.component.origin&&r.action===n.ComponentRegistered)this.component.origin=e.origin;else if(e.origin!==this.component.origin)return;this.handleMessage(r)}else g.error("Invalid data received. Skipping...")},this.contentWindow.document.addEventListener("message",this.messageHandler,!1),this.contentWindow.addEventListener("message",this.messageHandler,!1),g.info("Waiting for messages...")}registerKeyboardEventListeners(){this.keyDownEventListener=e=>{g.info("A key has been pressed: ".concat(e.key)),e.ctrlKey?this.keyDownEvent(w.Ctrl):e.shiftKey?this.keyDownEvent(w.Shift):(e.metaKey||"Meta"===e.key)&&this.keyDownEvent(w.Meta)},this.keyUpEventListener=e=>{g.info("A key has been released: ".concat(e.key)),"Control"===e.key?this.keyUpEvent(w.Ctrl):"Shift"===e.key?this.keyUpEvent(w.Shift):"Meta"===e.key&&this.keyUpEvent(w.Meta)},this.contentWindow.addEventListener("keydown",this.keyDownEventListener,!1),this.contentWindow.addEventListener("keyup",this.keyUpEventListener,!1)}registerMouseEventListeners(){this.clickEventListener=e=>{g.info("A click has been performed."),this.mouseClickEvent()},this.contentWindow.addEventListener("click",this.clickEventListener,!1)}handleMessage(e){switch(e.action){case n.ComponentRegistered:this.component.sessionKey=e.sessionKey,e.componentData&&(this.component.data=e.componentData),this.onReady(e.data),g.info("Component successfully registered with payload:",e);break;case n.ActivateThemes:this.activateThemes(e.data.themes);break;default:{var t,r;if(!e.original)return;const n=null===(t=this.sentMessages)||void 0===t?void 0:t.filter((t=>{var n;return t.messageId===(null===(n=e.original)||void 0===n?void 0:n.messageId)}))[0];if(!n){const e=this.contentWindow.document.title,t=("The extension '".concat(e,"' is attempting to communicate with Standard Notes, ")+"but an error is preventing it from doing so. Please restart this extension and try again.").replace(" "," ");return void g.info(t)}null==n||null===(r=n.callback)||void 0===r||r.call(n,e.data);break}}}onReady(e){this.component.environment=e.environment,this.component.platform=e.platform,this.component.uuid=e.uuid,this.initialPermissions&&this.initialPermissions.length>0&&this.requestPermissions(this.initialPermissions);for(const e of this.messageQueue)this.postMessage(e.action,e.data,e.callback);this.messageQueue=[],g.info("Data passed to onReady:",e),this.activateThemes(e.activeThemeUrls||[]),this.postMessage(n.ThemesActivated,{}),this.onReadyCallback&&this.onReadyCallback()}getSelfComponentUUID(){return this.component.uuid}isRunningInDesktopApplication(){return this.component.environment===h(r.Desktop)}isRunningInMobileApplication(){return this.component.environment===h(r.Mobile)}getComponentDataValueForKey(e){if(this.component.data)return this.component.data[e]}setComponentDataValueForKey(e,t){if(!this.component.data)throw new Error("The component has not been initialized.");if(!e||e&&0===e.length)throw new Error("The key for the data value should be a valid string.");this.component.data=S(S({},this.component.data),{},{[e]:t}),this.postMessage(n.SetComponentData,{componentData:this.component.data})}clearComponentData(){this.component.data={},this.postMessage(n.SetComponentData,{componentData:this.component.data})}postMessage(e,t,n){if(!this.component.sessionKey)return void this.messageQueue.push({action:e,data:t,api:k.Component,callback:n});const r={action:e,data:t,messageId:this.generateUUID(),sessionKey:this.component.sessionKey,api:k.Component},a=JSON.parse(JSON.stringify(r));let i;a.callback=n,this.sentMessages.push(a),i=this.isRunningInMobileApplication()?JSON.stringify(r):r,g.info("Posting message:",i),this.contentWindow.parent.postMessage(i,this.component.origin)}requestPermissions(e,t){this.postMessage(n.RequestPermissions,{permissions:e},(()=>{t&&t()}))}activateThemes(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(!this.component.acceptsThemes)return;g.info("Incoming themes:",e);const{activeThemes:t}=this.component;if(t&&t.sort().toString()==e.sort().toString())return;let n=e;const r=[];for(const a of t)e.includes(a)?n=n.filter((e=>e!==a)):r.push(a);g.info("Deactivating themes:",r),g.info("Activating themes:",n);for(const e of r)this.deactivateTheme(e);this.component.activeThemes=e;for(const e of n){if(!e)continue;const t=this.contentWindow.document.createElement("link");t.id=btoa(e),t.href=e,t.type="text/css",t.rel="stylesheet",t.media="screen,print",t.className="custom-theme",this.contentWindow.document.getElementsByTagName("head")[0].appendChild(t)}this.onThemesChangeCallback&&this.onThemesChangeCallback()}themeElementForUrl(e){return Array.from(this.contentWindow.document.getElementsByClassName("custom-theme")).slice().find((t=>t.id==btoa(e)))}deactivateTheme(e){const t=this.themeElementForUrl(e);t&&t.parentNode&&(t.setAttribute("disabled","true"),t.parentNode.removeChild(t))}generateUUID(){return p()}get platform(){return this.component.platform}get environment(){return this.component.environment}streamItems(e,t){this.postMessage(n.StreamItems,{content_types:e},(e=>{t(e.items)}))}streamContextItem(e){this.postMessage(n.StreamContextItem,{},(t=>{const{item:n}=t;(!this.lastStreamedItem||this.lastStreamedItem.uuid!==n.uuid)&&this.pendingSaveTimeout&&(clearTimeout(this.pendingSaveTimeout),this.performSavingOfItems(this.pendingSaveParams),this.pendingSaveTimeout=void 0,this.pendingSaveParams=void 0),this.lastStreamedItem=n,e(this.lastStreamedItem)}))}selectItem(e){this.postMessage(n.SelectItem,{item:this.jsonObjectForItem(e)})}clearSelection(){this.postMessage(n.ClearSelection,{content_type:a.Tag})}createItem(e,t){this.postMessage(n.CreateItem,{item:this.jsonObjectForItem(e)},(e=>{let{item:n}=e;!n&&e.items&&e.items.length>0&&(n=e.items[0]),this.associateItem(n),t&&t(n)}))}createItems(e,t){const r=e.map((e=>this.jsonObjectForItem(e)));this.postMessage(n.CreateItems,{items:r},(e=>{t&&t(e.items)}))}associateItem(e){this.postMessage(n.AssociateItem,{item:this.jsonObjectForItem(e)})}deassociateItem(e){this.postMessage(n.DeassociateItem,{item:this.jsonObjectForItem(e)})}deleteItem(e,t){this.deleteItems([e],t)}deleteItems(e,t){const r={items:e.map((e=>this.jsonObjectForItem(e)))};this.postMessage(n.DeleteItems,r,(e=>{t&&t(e)}))}sendCustomEvent(e,t,n){this.postMessage(e,t,(e=>{n&&n(e)}))}saveItem(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.saveItems([e],t,n)}saveItemWithPresave(e,t,n){this.saveItemsWithPresave([e],t,n)}saveItemsWithPresave(e,t,n){this.saveItems(e,n,!1,t)}performSavingOfItems(e){let{items:t,presave:r,callback:a}=e;const i=setTimeout((()=>{this.concernTimeouts.forEach((e=>clearTimeout(e))),alert("This editor is unable to communicate with Standard Notes. Your changes may not be saved. Please backup your changes, then restart the application and try again.")}),5e3);this.concernTimeouts.push(i),r&&r();const o=[];for(const e of t)o.push(this.jsonObjectForItem(e));this.postMessage(n.SaveItems,{items:o},(()=>{this.concernTimeouts.forEach((e=>clearTimeout(e))),null==a||a()}))}saveItems(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3?arguments[3]:void 0;if(this.pendingSaveItems||(this.pendingSaveItems=[]),this.coallesedSaving&&!n){this.pendingSaveTimeout&&clearTimeout(this.pendingSaveTimeout);const n=e.map((e=>e.uuid)),a=this.pendingSaveItems.filter((e=>!n.includes(e.uuid)));this.pendingSaveItems=a.concat(e),this.pendingSaveParams={items:this.pendingSaveItems,presave:r,callback:t},this.pendingSaveTimeout=setTimeout((()=>{this.performSavingOfItems(this.pendingSaveParams),this.pendingSaveItems=[],this.pendingSaveTimeout=void 0,this.pendingSaveParams=null}),this.coallesedSavingDelay)}else this.performSavingOfItems({items:e,presave:r,callback:t})}setSize(e,t){this.postMessage(n.SetSize,{type:"container",width:e,height:t})}keyDownEvent(e){this.postMessage(n.KeyDown,{keyboardModifier:e})}keyUpEvent(e){this.postMessage(n.KeyUp,{keyboardModifier:e})}mouseClickEvent(){this.postMessage(n.Click,{})}jsonObjectForItem(e){const t=Object.assign({},e);return t.children=null,t.parent=null,t}getItemAppDataValue(e,t){var n,r;return null==e||null===(n=e.content)||void 0===n||null===(r=n.appData)||void 0===r?void 0:r["org.standardnotes.sn"][t]}}return t.default})()},695:e=>{"use strict";e.exports=r}},a={};function i(e){var t=a[e];if(void 0!==t)return t.exports;var r=a[e]={exports:{}};return n[e](r,r.exports,i),r.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(n,r){if(1&r&&(n=this(n)),8&r)return n;if("object"==typeof n&&n){if(4&r&&n.__esModule)return n;if(16&r&&"function"==typeof n.then)return n}var a=Object.create(null);i.r(a);var o={};e=e||[null,t({}),t([]),t(t)];for(var s=2&r&&n;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>o[e]=()=>n[e]));return o.default=()=>n,i.d(a,o),a},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{"use strict";i.d(o,{default:()=>h});var e=i(968),t=i.n(e);const n=async e=>{await new Promise((t=>setTimeout(t,1e3*e)))};function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class a{constructor(e){this.options=e,r(this,"uuidToFileTempUrlAndTypeMapping",{}),r(this,"currentlyLoadingIds",[]),r(this,"statusElementMapping",{}),r(this,"fileTypeToElementType",{"image/png":"img","image/jpg":"img","image/jpeg":"img","image/gif":"img","image/tiff":"img","image/bmp":"img","video/mp4":"video","audio/mpeg":"audio","audio/mp3":"audio"})}fileTypeForElementType(e){return this.fileTypeToElementType[e.toLowerCase()]}loadFileSafeElements(){const e=this.options.getElementsBySelector("*[fsplaceholder]");for(const t of e)this.loadFileSafeElement(t)}async loadFileSafeElement(e){var t;const{fileSafeInstance:r}=this.options,a=e.getAttribute("fsid"),i=null!==(t=e.getAttribute("fsName"))&&void 0!==t?t:"",o=i&&"undefined"!=i?i:"file";if(!a)return!1;const s=this.uuidToFileTempUrlAndTypeMapping[a];if(s)return this.insertMediaElement({fsid:a,fsElement:e,url:s.url,fileType:s.fileType,fsName:s.fsName}),!1;if(this.currentlyLoadingIds.includes(a))return!1;const u=r.findFileDescriptor(a);if(!u)return this.setStatus({fsElement:e,fsid:a,status:"Unable to find ".concat(o," ").concat(a,"."),removable:!0}),!1;const l='[fsid="'.concat(u.uuid,'"][fscollapsable]');if(document.querySelectorAll("img".concat(l,", figure").concat(l,", video").concat(l,", audio").concat(l)).length>0)return!1;this.currentlyLoadingIds.push(a),this.setStatus({fsElement:e,fsid:a,status:"Downloading ".concat(o,"...")}),await n(.05);const c=await r.downloadFileFromDescriptor(u).catch((()=>{this.setStatus({fsElement:e,fsid:a,status:"Unable to download ".concat(o," ").concat(a,".")})}));if(!c)return!1;this.setStatus({fsElement:e,fsid:a,status:"Decrypting ".concat(o,"...")}),await n(.05);const f=await r.decryptFile({fileDescriptor:u,fileItem:c}).catch((()=>{this.setStatus({fsElement:e,fsid:a,status:"Unable to decrypt ".concat(o," ").concat(a,".")})}));if(!f)return!1;this.setStatus({fsElement:e,fsid:a}),await n(.05);const d=u.content.fileType,p=r.createTemporaryFileUrl({base64Data:f.decryptedData,dataType:d});return this.insertMediaElement({fsid:a,fileType:d,fsName:i,fsElement:e,url:p}),(()=>{this.currentlyLoadingIds.splice(this.currentlyLoadingIds.indexOf(a),1)})(),this.uuidToFileTempUrlAndTypeMapping[a]={fileType:d,url:p,fsName:i},!0}insertMediaElement(e){let t,{url:n,fsid:r,fsName:a,fileType:i,fsElement:o}=e;switch(this.fileTypeForElementType(i)){case"img":t=this.createImageElement({url:n,fsid:r,fsName:a,fsElement:o});break;case"video":t=this.createVideoElement({url:n,fsid:r,fileType:i,fsName:a,fsElement:o});break;case"audio":t=this.createAudioElement({url:n,fsid:r,fsName:a});break;default:t=this.createDownloadElement({url:n,fsid:r,fsName:a})}this.insertElementNearElement(t,o),o.remove()}wrapElementInTag(e){let{element:t,tagName:n,fsid:r,fsName:a}=e;const i=document.createElement(n);return i.setAttribute("fsid",r),i.setAttribute("fsName",a),i.setAttribute("fscollapsable","true"),i.setAttribute("contenteditable","true"),i.append(t),i}createImageElement(e){let{url:t,fsid:n,fsName:r,fsElement:a}=e;const i=document.createElement("img");i.setAttribute("src",t),i.setAttribute("srcset","".concat(t," 2x")),i.setAttribute("fsid",n),i.setAttribute("fsName",r),i.setAttribute("fscollapsable","true");const o=a.getAttribute("width");o&&i.setAttribute("width",o);const s=a.getAttribute("height");return s&&i.setAttribute("height",s),i}createVideoElement(e){let{url:t,fsid:n,fileType:r,fsName:a,fsElement:i}=e;const o=document.createElement("video");o.setAttribute("controls","true"),o.setAttribute("fsid",n),o.setAttribute("fsName",a),o.setAttribute("fscollapsable","true");const s=i.getAttribute("width");s&&o.setAttribute("width",s);const u=i.getAttribute("height");u&&o.setAttribute("height",u);const l=document.createElement("source");return l.setAttribute("src",t),l.setAttribute("type",r),o.append(l),this.wrapElementInTag({fsid:n,fsName:a,element:o,tagName:"p"})}createDownloadElement(e){let{url:t,fsid:n,fsName:r}=e;const a=document.createElement("a");return a.setAttribute("fsid",n),a.setAttribute("fsName",r),a.setAttribute("ghost","true"),a.setAttribute("fscollapsable","true"),a.setAttribute("href",t),a.textContent="".concat(r),a}createAudioElement(e){let{url:t,fsid:n,fsName:r}=e;const a=document.createElement("audio");return a.setAttribute("src",t),a.setAttribute("controls","true"),a.setAttribute("fsid",n),a.setAttribute("fsName",r),a.setAttribute("fscollapsable","true"),this.wrapElementInTag({fsid:n,fsName:r,element:a,tagName:"p"})}setStatus(e){let{status:t,fsElement:n,fsid:r,removable:a=!1}=e;if(r){const e=this.statusElementMapping[r];e&&(e.remove(),delete this.statusElementMapping[r])}if(t){let e=document.createElement("label");return e.setAttribute("id",r),e.setAttribute("ghost","true"),e.setAttribute("contenteditable","false"),e.style.fontWeight="bold",e.textContent=t,a&&(e.style.userSelect="all"),e=this.insertElementNearElement(e,n),r&&(this.statusElementMapping[r]=e),e}}insertStatusAtCursor(e){const t=Math.random().toString(36).substring(7);return this.setStatus({status:e,fsid:t,fsElement:null}),t}removeCursorStatus(e){const t=this.options.getElementsBySelector("#".concat(e));t.length>0&&t[0].remove()}insertElementNearElement(e,t){const n=this.options.preprocessElement(e);let r="child";if(t&&"figure"==n.tagName.toLowerCase()){const e=t.closest("p");e&&(t=e,r="afterend")}return this.options.insertElement(n,t,r),n}}class s{constructor(e){this.options=e}onKeyUp(e){let{isEnter:t,isPaste:n,isSpace:r}=e;(t||n||r)&&this.searchPatterns({searchPreviousLine:null!=t&&t})}searchPatterns(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{searchPreviousLine:!1};const t=e.searchPreviousLine?this.options.getPreviousLineText():this.options.getCurrentLineText();for(const n of this.options.patterns){const r=n.regex.exec(t);if(!r)continue;const a=r[0];if(a){const t=n.callback(a);this.replaceSelection(n.regex,t,e.searchPreviousLine)}}}replaceSelection(e,t,n){var r,a,i;null!==(r=this.options)&&void 0!==r&&r.beforeExpand&&this.options.beforeExpand(),this.options.replaceText({regex:e,replacement:t,searchPreviousLine:n}),null!==(a=this.options)&&void 0!==a&&a.afterExpand&&(null===(i=this.options)||void 0===i||i.afterExpand())}}const u=/(

    )?\[FileSafe[^\]]*\](<\/p>)?/g,l=e=>e.replace(u,(e=>f(e))),c=e=>"[FileSafe:".concat(e.uuid,":").concat(e.content.fileName,"]"),f=e=>{const t=(e=(e=(e=e.replace("

    ","")).replace("

    ","")).replace("[","").replace("]","")).split(":"),n=t[1],r=t[2],a=t[3];let i="";if(a){const e=a.split("x");i="width=".concat(e[0]," height=").concat(e[1])}return"

    ")};function d(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let p;!function(e){e.PlainText="plaintext",e.Html="html",e.Markdown="markdown",e.Json="json"}(p||(p={}));class h{constructor(e,t){this.delegate=e,this.options=t,d(this,"fileIdsPendingAssociation",[]),d(this,"componentRelay",void 0),d(this,"fileLoader",void 0),d(this,"textExpander",void 0),d(this,"fileSafeLoading",void 0),d(this,"fileSafeClass",void 0),d(this,"fileSafeInstance",void 0),d(this,"note",void 0),d(this,"ignoreNextTextChange",void 0),d(this,"needsFileSafeElementLoad",void 0),d(this,"previousText",void 0),this.connectToBridge(),this.options.supportsFileSafe&&(this.fileSafeLoading=this.importFileSafe())}connectToBridge(){const{coallesedSaving:e,coallesedSavingDelay:n,mode:r,supportsFileSafe:a}=this.options;this.componentRelay=new(t())({targetWindow:window,options:{coallesedSaving:e,coallesedSavingDelay:n},onReady:()=>{const{platform:e}=this.componentRelay;e&&document.documentElement.classList.add(e)},onThemesChange:this.delegate.onThemesChange}),this.componentRelay.streamContextItem((async e=>{let t=!0;this.note&&this.note.uuid==e.uuid&&(t=!1);const n=this.note;if(a){const t=this.fileSafeClass.getSFItemClass();this.note=new t(e),this.fileSafeInstance.setCurrentNote(this.note)}else this.note=e;if(e.isMetadataUpdate)return;let i=e.content.text;if(r===p.Html&&t&&(/<[a-z][\s\S]*>/i.test(i)||(this.ignoreNextTextChange=!0)),this.previousText=i,a&&(this.needsFileSafeElementLoad=!0,i=l(i)),this.delegate.onNoteValueChange&&await this.delegate.onNoteValueChange(e),this.delegate.setEditorRawText(i),this.delegate.onNoteLockToggle){var o,s;const e=null!==(o=this.componentRelay.getItemAppDataValue(n,"locked"))&&void 0!==o&&o,t=null!==(s=this.componentRelay.getItemAppDataValue(this.note,"locked"))&&void 0!==s&&s;e!==t&&this.delegate.onNoteLockToggle(t)}var u,c;t&&(null===(u=(c=this.delegate).clearUndoHistory)||void 0===u||u.call(c))}))}async importFileSafe(){return Promise.resolve().then(i.t.bind(i,695,23)).then((e=>(this.fileSafeClass=e.default,this.configureFileSafe(),this.fileSafeInstance)))}configureFileSafe(){const e=["getCurrentLineText","getPreviousLineText","replaceText","getElementsBySelector","insertElement","preprocessElement","insertRawText"];for(const t of e)if(!this.delegate[t])throw Error("Missing ".concat(t," delegate function."));this.fileSafeInstance=new this.fileSafeClass({componentManager:this.componentRelay}),this.fileSafeInstance.addDataChangeObserver((()=>{const e=this.fileSafeInstance.getAllFileDescriptors();if(this.note&&this.fileIdsPendingAssociation.length>0){let t=!1;for(const n of this.fileIdsPendingAssociation.slice()){const r=e.find((e=>e.uuid==n));if(!r)continue;t=!0,this.fileIdsPendingAssociation.splice(this.fileIdsPendingAssociation.indexOf(n),1);const a=c(r);this.delegate.insertRawText(a)}t&&this.textExpander.searchPatterns()}e.length>0&&this.fileLoader.loadFileSafeElements()})),this.fileSafeInstance.addNewFileDescriptorHandler((e=>{this.fileIdsPendingAssociation.push(e.uuid)})),this.fileLoader=new a({fileSafeInstance:this.fileSafeInstance,getElementsBySelector:this.delegate.getElementsBySelector,insertElement:this.delegate.insertElement,preprocessElement:this.delegate.preprocessElement}),this.textExpander=new s({afterExpand:()=>this.fileLoader.loadFileSafeElements(),getCurrentLineText:this.delegate.getCurrentLineText,getPreviousLineText:this.delegate.getPreviousLineText,replaceText:this.delegate.replaceText,patterns:[{regex:u,callback:e=>l(e)}]})}async getFileSafe(){return!this.fileSafeInstance&&this.fileSafeLoading?this.fileSafeLoading:this.importFileSafe()}onEditorKeyUp(e){let{isSpace:t,isEnter:n}=e;this.textExpander.onKeyUp({isSpace:t,isEnter:n})}onEditorPaste(){this.textExpander.onKeyUp({isPaste:!0})}onEditorValueChanged(e){const{mode:t,supportsFileSafe:n}=this.options;if(this.needsFileSafeElementLoad&&(this.needsFileSafeElementLoad=!1,this.fileLoader.loadFileSafeElements()),this.ignoreNextTextChange)return void(this.ignoreNextTextChange=!1);if(n&&(e=(e=>{const t=(new DOMParser).parseFromString(e,"text/html"),n=t.querySelectorAll("*[fscollapsable]");for(const e of n){const t=e.getAttribute("fsid"),n=e.getAttribute("fsname"),r=e.getAttribute("width"),a=e.getAttribute("height"),i=["FileSafe",t,n];if(r&&a){const e="".concat(r,"x").concat(a);i.push(e)}const o="

    [".concat(i.join(":"),"]

    ");e.insertAdjacentHTML("afterend",o),e.remove()}return t.querySelectorAll("*[ghost]").forEach((e=>e.remove())),t.body.innerHTML})(e),this.previousText==e))return;if(this.previousText=e,!this.note)return;const r=this.note;this.componentRelay.saveItemWithPresave(r,(()=>{if(r.content.text=e,this.delegate.generateCustomPreview){var n;const t=this.delegate.generateCustomPreview(e);r.content.preview_plain=null!==(n=t.plain)&&void 0!==n?n:" ",r.content.preview_html=t.html}else{if(t===p.Html){let t=e.replace(u,(e=>""));t=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:90;return e.length<=t?e:e.substring(0,t)+"..."}((e=>{const t=document.implementation.createHTMLDocument().body;return t.innerHTML=e,t.textContent||t.innerText||""})(t)),r.content.preview_plain=t.length>0?t:" "}else r.content.preview_plain=e;r.content.preview_html=null}}))}canUploadFiles(){const e=this.fileSafeInstance.getAllCredentials(),t=this.fileSafeInstance.getAllIntegrations();return e.length>0&&t.length>0}async uploadJSFileObject(e){const t=this.fileLoader.insertStatusAtCursor("Processing file...");return this.fileSafeInstance.encryptAndUploadJavaScriptFileObject(e).then((()=>{this.fileLoader.removeCursorStatus(t)}))}saveItemWithPresave(e,t){this.componentRelay.saveItemWithPresave(e,t)}get platform(){return this.componentRelay.platform}get environment(){return this.componentRelay.environment}}})(),o.default})())},856:function(e){e.exports=function(){"use strict";function e(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t1?n-1:0),a=1;a/gm),z=s(/^data-[\-\w.\u00B7-\uFFFF]/),U=s(/^aria-[\-\w]+$/),H=s(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),W=s(/^(?:\w+script|data):/i),K=s(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),V="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function q(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:$(),t=function(e){return Q(e)};if(t.version="2.2.9",t.removed=[],!e||!e.document||9!==e.document.nodeType)return t.isSupported=!1,t;var n=e.document,r=e.document,a=e.DocumentFragment,i=e.HTMLTemplateElement,s=e.Node,u=e.Element,l=e.NodeFilter,c=e.NamedNodeMap,f=void 0===c?e.NamedNodeMap||e.MozNamedAttrMap:c,x=e.Text,S=e.Comment,G=e.DOMParser,Y=e.trustedTypes,X=u.prototype,Z=C(X,"cloneNode"),ee=C(X,"nextSibling"),te=C(X,"childNodes"),ne=C(X,"parentNode");if("function"==typeof i){var re=r.createElement("template");re.content&&re.content.ownerDocument&&(r=re.content.ownerDocument)}var ae=J(Y,n),ie=ae&&Ne?ae.createHTML(""):"",oe=r,se=oe.implementation,ue=oe.createNodeIterator,le=oe.createDocumentFragment,ce=n.importNode,fe={};try{fe=E(r).documentMode?r.documentMode:{}}catch(e){}var de={};t.isSupported="function"==typeof ne&&se&&void 0!==se.createHTMLDocument&&9!==fe;var pe=j,he=B,me=z,ve=U,ge=W,ye=K,be=H,ke=null,we=_({},[].concat(q(I),q(R),q(D),q(F),q(T))),xe=null,Se=_({},[].concat(q(M),q(P),q(N),q(L))),_e=null,Ee=null,Ce=!0,Ie=!0,Re=!1,De=!1,Ae=!1,Fe=!1,Oe=!1,Te=!1,Me=!1,Pe=!0,Ne=!1,Le=!0,je=!0,Be=!1,ze={},Ue=_({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),He=null,We=_({},["audio","video","img","source","image","track"]),Ke=null,Ve=_({},["alt","class","for","id","label","name","pattern","placeholder","summary","title","value","style","xmlns"]),qe="http://www.w3.org/1998/Math/MathML",$e="http://www.w3.org/2000/svg",Je="http://www.w3.org/1999/xhtml",Qe=Je,Ge=!1,Ye=null,Xe=r.createElement("form"),Ze=function(e){Ye&&Ye===e||(e&&"object"===(void 0===e?"undefined":V(e))||(e={}),e=E(e),ke="ALLOWED_TAGS"in e?_({},e.ALLOWED_TAGS):we,xe="ALLOWED_ATTR"in e?_({},e.ALLOWED_ATTR):Se,Ke="ADD_URI_SAFE_ATTR"in e?_(E(Ve),e.ADD_URI_SAFE_ATTR):Ve,He="ADD_DATA_URI_TAGS"in e?_(E(We),e.ADD_DATA_URI_TAGS):We,_e="FORBID_TAGS"in e?_({},e.FORBID_TAGS):{},Ee="FORBID_ATTR"in e?_({},e.FORBID_ATTR):{},ze="USE_PROFILES"in e&&e.USE_PROFILES,Ce=!1!==e.ALLOW_ARIA_ATTR,Ie=!1!==e.ALLOW_DATA_ATTR,Re=e.ALLOW_UNKNOWN_PROTOCOLS||!1,De=e.SAFE_FOR_TEMPLATES||!1,Ae=e.WHOLE_DOCUMENT||!1,Te=e.RETURN_DOM||!1,Me=e.RETURN_DOM_FRAGMENT||!1,Pe=!1!==e.RETURN_DOM_IMPORT,Ne=e.RETURN_TRUSTED_TYPE||!1,Oe=e.FORCE_BODY||!1,Le=!1!==e.SANITIZE_DOM,je=!1!==e.KEEP_CONTENT,Be=e.IN_PLACE||!1,be=e.ALLOWED_URI_REGEXP||be,Qe=e.NAMESPACE||Je,De&&(Ie=!1),Me&&(Te=!0),ze&&(ke=_({},[].concat(q(T))),xe=[],!0===ze.html&&(_(ke,I),_(xe,M)),!0===ze.svg&&(_(ke,R),_(xe,P),_(xe,L)),!0===ze.svgFilters&&(_(ke,D),_(xe,P),_(xe,L)),!0===ze.mathMl&&(_(ke,F),_(xe,N),_(xe,L))),e.ADD_TAGS&&(ke===we&&(ke=E(ke)),_(ke,e.ADD_TAGS)),e.ADD_ATTR&&(xe===Se&&(xe=E(xe)),_(xe,e.ADD_ATTR)),e.ADD_URI_SAFE_ATTR&&_(Ke,e.ADD_URI_SAFE_ATTR),je&&(ke["#text"]=!0),Ae&&_(ke,["html","head","body"]),ke.table&&(_(ke,["tbody"]),delete _e.tbody),o&&o(e),Ye=e)},et=_({},["mi","mo","mn","ms","mtext"]),tt=_({},["foreignobject","desc","title","annotation-xml"]),nt=_({},R);_(nt,D),_(nt,A);var rt=_({},F);_(rt,O);var at=function(e){var t=ne(e);t&&t.tagName||(t={namespaceURI:Je,tagName:"template"});var n=m(e.tagName),r=m(t.tagName);if(e.namespaceURI===$e)return t.namespaceURI===Je?"svg"===n:t.namespaceURI===qe?"svg"===n&&("annotation-xml"===r||et[r]):Boolean(nt[n]);if(e.namespaceURI===qe)return t.namespaceURI===Je?"math"===n:t.namespaceURI===$e?"math"===n&&tt[r]:Boolean(rt[n]);if(e.namespaceURI===Je){if(t.namespaceURI===$e&&!tt[r])return!1;if(t.namespaceURI===qe&&!et[r])return!1;var a=_({},["title","style","font","a","script"]);return!rt[n]&&(a[n]||!nt[n])}return!1},it=function(e){h(t.removed,{element:e});try{e.parentNode.removeChild(e)}catch(t){try{e.outerHTML=ie}catch(t){e.remove()}}},ot=function(e,n){try{h(t.removed,{attribute:n.getAttributeNode(e),from:n})}catch(e){h(t.removed,{attribute:null,from:n})}if(n.removeAttribute(e),"is"===e&&!xe[e])if(Te||Me)try{it(n)}catch(e){}else try{n.setAttribute(e,"")}catch(e){}},st=function(e){var t=void 0,n=void 0;if(Oe)e=""+e;else{var a=v(e,/^[\r\n\t ]+/);n=a&&a[0]}var i=ae?ae.createHTML(e):e;if(Qe===Je)try{t=(new G).parseFromString(i,"text/html")}catch(e){}if(!t||!t.documentElement){t=se.createDocument(Qe,"template",null);try{t.documentElement.innerHTML=Ge?"":i}catch(e){}}var o=t.body||t.documentElement;return e&&n&&o.insertBefore(r.createTextNode(n),o.childNodes[0]||null),Ae?t.documentElement:o},ut=function(e){return ue.call(e.ownerDocument||e,e,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT,null,!1)},lt=function(e){return!(e instanceof x||e instanceof S||"string"==typeof e.nodeName&&"string"==typeof e.textContent&&"function"==typeof e.removeChild&&e.attributes instanceof f&&"function"==typeof e.removeAttribute&&"function"==typeof e.setAttribute&&"string"==typeof e.namespaceURI&&"function"==typeof e.insertBefore)},ct=function(e){return"object"===(void 0===s?"undefined":V(s))?e instanceof s:e&&"object"===(void 0===e?"undefined":V(e))&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName},ft=function(e,n,r){de[e]&&d(de[e],(function(e){e.call(t,n,r,Ye)}))},dt=function(e){var n=void 0;if(ft("beforeSanitizeElements",e,null),lt(e))return it(e),!0;if(v(e.nodeName,/[\u0080-\uFFFF]/))return it(e),!0;var r=m(e.nodeName);if(ft("uponSanitizeElement",e,{tagName:r,allowedTags:ke}),!ct(e.firstElementChild)&&(!ct(e.content)||!ct(e.content.firstElementChild))&&k(/<[/\w]/g,e.innerHTML)&&k(/<[/\w]/g,e.textContent))return it(e),!0;if(!ke[r]||_e[r]){if(je&&!Ue[r]){var a=ne(e)||e.parentNode,i=te(e)||e.childNodes;if(i&&a)for(var o=i.length-1;o>=0;--o)a.insertBefore(Z(i[o],!0),ee(e))}return it(e),!0}return e instanceof u&&!at(e)?(it(e),!0):"noscript"!==r&&"noembed"!==r||!k(/<\/no(script|embed)/i,e.innerHTML)?(De&&3===e.nodeType&&(n=e.textContent,n=g(n,pe," "),n=g(n,he," "),e.textContent!==n&&(h(t.removed,{element:e.cloneNode()}),e.textContent=n)),ft("afterSanitizeElements",e,null),!1):(it(e),!0)},pt=function(e,t,n){if(Le&&("id"===t||"name"===t)&&(n in r||n in Xe))return!1;if(Ie&&k(me,t));else if(Ce&&k(ve,t));else{if(!xe[t]||Ee[t])return!1;if(Ke[t]);else if(k(be,g(n,ye,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==y(n,"data:")||!He[e])if(Re&&!k(ge,g(n,ye,"")));else if(n)return!1}return!0},ht=function(e){var n=void 0,r=void 0,a=void 0,i=void 0;ft("beforeSanitizeAttributes",e,null);var o=e.attributes;if(o){var s={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:xe};for(i=o.length;i--;){var u=n=o[i],l=u.name,c=u.namespaceURI;if(r=b(n.value),a=m(l),s.attrName=a,s.attrValue=r,s.keepAttr=!0,s.forceKeepAttr=void 0,ft("uponSanitizeAttribute",e,s),r=s.attrValue,!s.forceKeepAttr&&(ot(l,e),s.keepAttr))if(k(/\/>/i,r))ot(l,e);else{De&&(r=g(r,pe," "),r=g(r,he," "));var f=e.nodeName.toLowerCase();if(pt(f,a,r))try{c?e.setAttributeNS(c,l,r):e.setAttribute(l,r),p(t.removed)}catch(e){}}}ft("afterSanitizeAttributes",e,null)}},mt=function e(t){var n=void 0,r=ut(t);for(ft("beforeSanitizeShadowDOM",t,null);n=r.nextNode();)ft("uponSanitizeShadowNode",n,null),dt(n)||(n.content instanceof a&&e(n.content),ht(n));ft("afterSanitizeShadowDOM",t,null)};return t.sanitize=function(r,i){var o=void 0,u=void 0,l=void 0,c=void 0,f=void 0;if((Ge=!r)&&(r="\x3c!--\x3e"),"string"!=typeof r&&!ct(r)){if("function"!=typeof r.toString)throw w("toString is not a function");if("string"!=typeof(r=r.toString()))throw w("dirty is not a string, aborting")}if(!t.isSupported){if("object"===V(e.toStaticHTML)||"function"==typeof e.toStaticHTML){if("string"==typeof r)return e.toStaticHTML(r);if(ct(r))return e.toStaticHTML(r.outerHTML)}return r}if(Fe||Ze(i),t.removed=[],"string"==typeof r&&(Be=!1),Be);else if(r instanceof s)1===(u=(o=st("\x3c!----\x3e")).ownerDocument.importNode(r,!0)).nodeType&&"BODY"===u.nodeName||"HTML"===u.nodeName?o=u:o.appendChild(u);else{if(!Te&&!De&&!Ae&&-1===r.indexOf("<"))return ae&&Ne?ae.createHTML(r):r;if(!(o=st(r)))return Te?null:ie}o&&Oe&&it(o.firstChild);for(var d=ut(Be?r:o);l=d.nextNode();)3===l.nodeType&&l===c||dt(l)||(l.content instanceof a&&mt(l.content),ht(l),c=l);if(c=null,Be)return r;if(Te){if(Me)for(f=le.call(o.ownerDocument);o.firstChild;)f.appendChild(o.firstChild);else f=o;return Pe&&(f=ce.call(n,f,!0)),f}var p=Ae?o.outerHTML:o.innerHTML;return De&&(p=g(p,pe," "),p=g(p,he," ")),ae&&Ne?ae.createHTML(p):p},t.setConfig=function(e){Ze(e),Fe=!0},t.clearConfig=function(){Ye=null,Fe=!1},t.isValidAttribute=function(e,t,n){Ye||Ze({});var r=m(e),a=m(t);return pt(r,a,n)},t.addHook=function(e,t){"function"==typeof t&&(de[e]=de[e]||[],h(de[e],t))},t.removeHook=function(e){de[e]&&p(de[e])},t.removeHooks=function(e){de[e]&&(de[e]=[])},t.removeAllHooks=function(){de={}},t}return Q()}()},971:(e,t,n)=>{e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=13)}([function(e,t){e.exports=n(294)},function(e,t){e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},function(e,t){e.exports=function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}},function(e,t,n){e.exports=n(12)},function(e,t){function n(e,t){for(var n=0;n=0;--i){var o=this.tryEntries[i],s=o.completion;if("root"===o.tryLoc)return a("end");if(o.tryLoc<=this.prev){var u=r.call(o,"catchLoc"),l=r.call(o,"finallyLoc");if(u&&l){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),C(n),h}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;C(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,r){return this.delegate={iterator:R(e),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=t),h}},e}(e.exports);try{regeneratorRuntime=r}catch(e){Function("r","regeneratorRuntime = r")(r)}},function(e,t,n){"use strict";n.r(t);var r=n(0),a=n.n(r),i=n(9),o=n.n(i),s=n(5),u=n.n(s),l=n(6),c=n.n(l),f=n(7),d=n.n(f),p=n(4),h=n.n(p),m=n(8),v=n.n(m),g=n(2),y=n.n(g),b=n(1),k=n.n(b),w=function(){function e(){u()(this,e),this.unloadHandlers=[],this.dataChangeObservers=[]}return h()(e,null,[{key:"get",value:function(){return null==this.instance&&(this.instance=new e),this.instance}}]),h()(e,[{key:"setFilesafeInstance",value:function(e){var t=this;this.filesafe=e,this.fsObserver=e.addDataChangeObserver((function(){var e=!0,n=!1,r=void 0;try{for(var a,i=t.dataChangeObservers[Symbol.iterator]();!(e=(a=i.next()).done);e=!0)(0,a.value)()}catch(e){n=!0,r=e}finally{try{e||null==i.return||i.return()}finally{if(n)throw r}}}))}},{key:"setDelegate",value:function(e){this.delegate=e}},{key:"getDelegate",value:function(){return this.delegate||{}}},{key:"addDataChangeObserver",value:function(e){this.dataChangeObservers.push(e)}},{key:"addUnloadHandler",value:function(e){this.unloadHandlers.push(e)}},{key:"unload",value:function(){var t=!0,n=!1,r=void 0;try{for(var a,i=this.unloadHandlers[Symbol.iterator]();!(t=(a=i.next()).done);t=!0)(0,a.value)()}catch(e){n=!0,r=e}finally{try{t||null==i.return||i.return()}finally{if(n)throw r}}this.dataChangeObservers=[],this.filesafe&&this.filesafe.removeDataChangeObserver(this.fsObserver),e.instance=null}},{key:"defaultRelayServerUrl",value:function(){return window.default_fs_relay_server_url||"https://filesafe.standardnotes.org"}}]),e}();k()(w,"instance",null);var x=function(e){function t(e){var n;return u()(this,t),n=c()(this,d()(t).call(this,e)),k()(y()(n),"exportCredential",(function(e){var t=btoa(JSON.stringify(e,null,2));w.get().filesafe.downloadBase64Data({base64Data:t,fileName:"sn-filesafe-keys-".concat(e.created_at.toISOString(),".json"),fileType:"text/json"})})),k()(y()(n),"deleteCredential",(function(e){0==n.numFilesForCredential(e)?w.get().filesafe.deleteCredential(e):alert("This key has files encrypted with it and cannot be deleted. First delete any associated files, then try again.")})),k()(y()(n),"createNewKeys",(function(){w.get().filesafe.createNewCredentials()})),k()(y()(n),"labelForCredential",(function(e){return e.created_at.toLocaleString()})),k()(y()(n),"numFilesForCredential",(function(e){return w.get().filesafe.numberOfFilesEncryptedWithCredential(e)})),k()(y()(n),"setCredentialAsDefault",(function(e){w.get().filesafe.setCredentialAsDefault(e)})),n.state={credentials:w.get().filesafe.getAllCredentials()||[]},w.get().addDataChangeObserver((function(){n.setState({credentials:w.get().filesafe.getAllCredentials()})})),n}return v()(t,e),h()(t,[{key:"render",value:function(){var e=this;return a.a.createElement("div",null,a.a.createElement("div",{className:"sk-panel-row"},a.a.createElement("div",{className:"sk-h2 sk-bold"},"Keys"),a.a.createElement("div",{className:"sk-button info no-border",onClick:this.createNewKeys},a.a.createElement("div",{className:"sk-label"},"Create New"))),a.a.createElement("div",{className:"list-container"},this.state.credentials.map((function(t){return a.a.createElement("div",{className:"list-item sk-horizontal-group top"},a.a.createElement("div",{className:"sk-circle x-small "+(t.content.isDefault?"info":"sk-secondary-contrast")}),a.a.createElement("div",null,a.a.createElement("div",{className:"sk-panel-row condensed sk-bold"},e.labelForCredential(t)),a.a.createElement("div",{style:{marginTop:3},className:"sk-panel-row condensed"},e.numFilesForCredential(t)," encrypted files"),a.a.createElement("div",{className:"sk-panel-row condensed"},a.a.createElement("div",{className:"sk-horizontal-group"},e.state.credentials.length>1&&!t.content.isDefault&&a.a.createElement("a",{className:"info",onClick:function(){e.setCredentialAsDefault(t)}},"Make Default"),a.a.createElement("a",{className:"info",onClick:function(){e.exportCredential(t)}},"Export"),a.a.createElement("a",{className:"danger",onClick:function(){e.deleteCredential(t)}},"Delete")))))}))))}}]),t}(a.a.Component),S=n(3),_=n.n(S),E=function(){function e(t){var n=t.credentialManager,r=t.integrationManager;u()(this,e),this.credentialManager=n,this.integrationManager=r}return h()(e,[{key:"getMessages",value:function(){var e,t;return _.a.async((function(n){for(;;)switch(n.prev=n.next){case 0:return e=[],n.next=3,_.a.awrap(this.credentialManager.getDefaultCredentials());case 3:return n.sent||e.push({message:"Create keys by selecting Create New under Keys.",css:"sk-base"}),(t=this.integrationManager.integrations)&&0!=t.length||e.push({message:"Add a new integration by selecting Add New under Integrations",css:"sk-base"}),n.abrupt("return",e);case 8:case"end":return n.stop()}}),null,this)}}]),e}(),C=function(e){function t(e){var n;return u()(this,t),(n=c()(this,d()(t).call(this,e))).state={},n}return v()(t,e),h()(t,[{key:"render",value:function(){return a.a.createElement("div",{id:"messages"},a.a.createElement("div",{className:"title"},"Complete the following steps before uploading your first file:"),a.a.createElement("ul",null,this.props.messages.map((function(e){return a.a.createElement("li",{dangerouslySetInnerHTML:{__html:e.message},className:e.css})}))))}}]),t}(a.a.Component),I=function(e){function t(e){var n;return u()(this,t),n=c()(this,d()(t).call(this,e)),k()(y()(n),"setStatusForFile",(function(e,t,r){n.setState({fileStatusFile:e,fileStatus:t,hasStatusSpinner:r})})),k()(y()(n),"decryptFileDescriptor",(function(e){var t,r;return _.a.async((function(a){for(;;)switch(a.prev=a.next){case 0:if(t=w.get().filesafe.integrationForFileDescriptor(e)){a.next=4;break}return alert("Unable to find integration for file. If you have deleted the integration, please re-add it and try again."),a.abrupt("return");case 4:return r=w.get().filesafe.displayStringForIntegration(t),n.setStatusForFile(e,"Downloading from ".concat(r,"..."),!0),a.abrupt("return",w.get().filesafe.downloadFileFromDescriptor(e).then((function(t){return n.setStatusForFile(e,"Decrypting...",!0),w.get().filesafe.decryptFile({fileDescriptor:e,fileItem:t}).then((function(t){return{base64Data:t.decryptedData,fileName:e.content.fileName,fileType:e.content.fileType}})).catch((function(t){console.error("filesafe-embed | error decrypting file:",t),n.flashErrorForFileDescriptor(e,"Error decrypting file.")}))})).catch((function(t){console.error("Error downloading file",t),n.flashErrorForFileDescriptor(e,"Error downloading file.")})));case 7:case"end":return a.stop()}}))})),k()(y()(n),"downloadFile",(function(e){var t,r;return _.a.async((function(a){for(;;)switch(a.prev=a.next){case 0:if(!n.isMobile){a.next=5;break}return t=w.get().filesafe.getPlatform(),alert("Downloading files is not currently supported on ".concat("ios"==t?"iOS":"Android",".")),a.abrupt("return");case 5:return a.next=7,_.a.awrap(n.decryptFileDescriptor(e));case 7:if(r=a.sent){a.next=11;break}return console.error("decryptFile returned nil data"),a.abrupt("return");case 11:w.get().filesafe.downloadBase64Data(r),n.setStatusForFile(e,null);case 13:case"end":return a.stop()}}))})),k()(y()(n),"previewFile",(function(e){var t,r;return _.a.async((function(a){for(;;)switch(a.prev=a.next){case 0:return a.next=2,_.a.awrap(n.decryptFileDescriptor(e));case 2:t=a.sent,r=w.get().filesafe.createTemporaryFileUrl({base64Data:t.base64Data,dataType:t.fileType}),n.setStatusForFile(e,null),n.setState({previewUrl:r,previewingFile:e});case 6:case"end":return a.stop()}}))})),k()(y()(n),"onClickPreview",(function(){setTimeout((function(){n.revokePreview()}),500)})),k()(y()(n),"selectFile",(function(e,t){e.target.focus(),n.state.selectedFile==t?(n.setState({selectedFile:null}),n.delegate.onSelectFile&&n.delegate.onSelectFile(null)):(n.setState({selectedFile:t}),n.delegate.onSelectFile&&n.delegate.onSelectFile(t)),n.revokePreview()})),k()(y()(n),"deleteFile",(function(e){w.get().filesafe.deleteFileFromDescriptor(e)})),k()(y()(n),"copyInsertionLink",(function(e){var t="[FileSafe:".concat(e.uuid,":").concat(e.content.fileName,"]");w.get().filesafe.copyTextToClipboard(t),n.setState({copiedLink:e}),setTimeout((function(){n.setState({copiedLink:null})}),1e3)})),k()(y()(n),"isFileSelected",(function(e){return n.state.selectedFile==e})),k()(y()(n),"elementForFile",(function(e){var t,r=w.get().filesafe.integrationForFileDescriptor(e);t=r?w.get().filesafe.displayStringForIntegration(r):"Integration Not Found";var i=e.content.serverMetadata.file_path,o=n.state.previewUrl&&n.state.previewingFile==e,s=n.state.fileStatusFile==e&&n.state.fileStatus,u=n.state.hasStatusSpinner;return a.a.createElement("div",{className:"file-item-container "+(n.isFileSelected(e)?"expanded":"")},a.a.createElement("div",{onClick:function(t){n.selectFile(t,e)},className:"file-item-button sk-button info "+(n.isFileSelected(e)?"selected":void 0)},a.a.createElement("div",{className:"sk-label"},e.content.fileName),s&&a.a.createElement("div",{className:"file-download-status sk-horizontal-group"},u&&a.a.createElement("div",{className:"sk-spinner x-small"}),a.a.createElement("div",{className:"file-status-label"},n.state.fileStatus)),n.isFileSelected(e)&&a.a.createElement("div",{className:"file-item-options-wrapper"},a.a.createElement("div",{onClick:function(e){e.stopPropagation()},className:"sk-app-bar file-item-options"},a.a.createElement("div",{className:"center"},a.a.createElement("div",{onClick:function(t){t.stopPropagation(),n.downloadFile(e)},className:"sk-app-bar-item"},a.a.createElement("div",{className:"sk-label contrast "+(n.isMobile?"disabled":"")},"Download")),a.a.createElement("div",{className:"sk-app-bar-item border"}),n.supportsPreviews&&o&&a.a.createElement("a",{className:"sk-app-bar-item",href:n.state.previewUrl,onClick:function(e){e.stopPropagation(),n.onClickPreview()},target:"_blank"},a.a.createElement("div",{className:"sk-label contrast"},"Open Preview")),n.supportsPreviews&&!o&&a.a.createElement("div",{onClick:function(t){t.stopPropagation(),n.previewFile(e)},className:"sk-app-bar-item"},a.a.createElement("div",{className:"sk-label contrast "+(n.isMobile?"disabled":"")},"Preview")),n.supportsPreviews&&a.a.createElement("div",{className:"sk-app-bar-item border"}),a.a.createElement("div",{onClick:function(t){t.stopPropagation(),n.copyInsertionLink(e)},className:"sk-app-bar-item"},a.a.createElement("div",{className:"sk-label contrast"},n.state.copiedLink==e?"Copied":"Copy Insert Link")),a.a.createElement("div",{className:"sk-app-bar-item border"}),a.a.createElement("div",{onClick:function(t){t.stopPropagation(),n.deleteFile(e)},className:"sk-app-bar-item"},a.a.createElement("div",{className:"sk-label contrast"},"Delete")))),a.a.createElement("div",{className:"file-location"},a.a.createElement("strong",null,t),a.a.createElement("span",null," ",i)))))})),n.state={},n.delegate=w.get().getDelegate(),n}return v()(t,e),h()(t,[{key:"revokePreview",value:function(){this.state.previewUrl&&w.get().filesafe.revokeTempUrl(this.state.previewUrl),this.setState({previewUrl:null,previewingFile:null})}},{key:"flashErrorForFileDescriptor",value:function(e,t){var n=this;this.setStatusForFile(e,t,!1),setTimeout((function(){n.setStatusForFile(null)}),2500)}},{key:"render",value:function(){var e=this;return this.props.files.map((function(t){return e.elementForFile(t)}))}},{key:"supportsPreviews",get:function(){if(void 0!==this._supportsPreview)return this._supportsPreview;var e=w.get().filesafe.getEnvironment();if(null==e)return!1;this._supportsPreview="web"==e}},{key:"isMobile",get:function(){return w.get().filesafe.isMobile()}}]),t}(a.a.Component),R=function(e){function t(e){var n;return u()(this,t),n=c()(this,d()(t).call(this,e)),k()(y()(n),"event_preventDefaults",(function(e){e.preventDefault(),e.stopPropagation()})),k()(y()(n),"event_highlight",(function(e){n.event_preventDefaults(e),n.rootElement.classList.add("highlight")})),k()(y()(n),"event_unhighlight",(function(e){n.event_preventDefaults(e),n.rootElement.classList.remove("highlight")})),k()(y()(n),"event_drop",(function(e){n.event_unhighlight(e),n.event_preventDefaults(e);var t=e.dataTransfer.files;n.handleDroppedFiles(t)})),k()(y()(n),"handleDroppedFiles",(function(e){var t,r,a,i,o,s;return _.a.async((function(u){for(;;)switch(u.prev=u.next){case 0:if(0!=w.get().filesafe.getAllIntegrations().length){u.next=3;break}return alert("Please set up at least one integration before attempting to upload a file. To do this, press Expand, and select Add New in the Integrations section."),u.abrupt("return");case 3:t=!0,r=!1,a=void 0,u.prev=6,i=e[Symbol.iterator]();case 8:if(t=(o=i.next()).done){u.next=17;break}if(s=o.value){u.next=12;break}return u.abrupt("continue",14);case 12:return u.next=14,_.a.awrap(n.readFile(s));case 14:t=!0,u.next=8;break;case 17:u.next=23;break;case 19:u.prev=19,u.t0=u.catch(6),r=!0,a=u.t0;case 23:u.prev=23,u.prev=24,t||null==i.return||i.return();case 26:if(u.prev=26,!r){u.next=29;break}throw a;case 29:return u.finish(26);case 30:return u.finish(23);case 31:case"end":return u.stop()}}),null,null,[[6,19,23,31],[24,,26,30]])})),n.messagesManager=new E({credentialManager:w.get().filesafe.credentialManager,integrationManager:w.get().filesafe.integrationManager}),n.messagesManager.getMessages().then((function(e){n.setState({messages:e})})),n.state={noteFiles:w.get().filesafe.fileDescriptorsForCurrentNote(),messages:[]},w.get().addDataChangeObserver((function(){n.reload()})),w.get().addUnloadHandler((function(){window.removeEventListener("dragenter",n.event_highlight,!1),window.removeEventListener("dragover",n.event_highlight,!1),window.removeEventListener("dragleave",n.event_unhighlight,!1),window.removeEventListener("drop",n.event_drop,!1)})),n}return v()(t,e),h()(t,[{key:"reload",value:function(){var e;return _.a.async((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,_.a.awrap(this.messagesManager.getMessages());case 2:e=t.sent,this.setState({noteFiles:w.get().filesafe.fileDescriptorsForCurrentNote(),messages:e});case 4:case"end":return t.stop()}}),null,this)}},{key:"componentDidMount",value:function(){this.configureFileForm(),window.addEventListener("dragenter",this.event_highlight,!1),window.addEventListener("dragover",this.event_highlight,!1),window.addEventListener("dragleave",this.event_unhighlight,!1),window.addEventListener("drop",this.event_drop,!1)}},{key:"configureFileForm",value:function(){var e=this,t=this.fileInput;this.dropContainer,t&&(t.onchange=function(t){var n=t.target.files;e.handledFiles||e.handleDroppedFiles(n)})}},{key:"reset",value:function(){this.setState({rawData:null,decryptedItems:null,requestPassword:!1})}},{key:"readFile",value:function(e){var t=this;return _.a.async((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",new Promise((function(n,r){var a=new FileReader,i=!1;a.onload=function(r){var a,o,s,u;return _.a.async((function(l){for(;;)switch(l.prev=l.next){case 0:if(a=r.target.result,!i){l.next=7;break}a=JSON.parse(a),o=a.items[0],t.decryptDraggedFile(o).then(n),l.next=20;break;case 7:if(!((s=a).byteLength>5e7)){l.next=14;break}return alert("The maximum upload size is ".concat(50," megabytes per file.")),t.setState({status:null}),n(),l.abrupt("return");case 14:return l.next=16,_.a.awrap(SFJS.crypto.arrayBufferToBase64(s));case 16:return u=l.sent,l.next=19,_.a.awrap(t.encryptFile(u,e.name,e.type));case 19:n();case 20:case"end":return l.stop()}}))},t.setState({status:"Reading file..."}),e.name.endsWith(".sf")||e.name.endsWith(".json")?(i=!0,a.readAsText(e)):a.readAsArrayBuffer(e)})));case 4:case"end":return n.stop()}}))}},{key:"decryptDraggedFile",value:function(e){var t,n,r,a,i,o,s,u,l=this;return _.a.async((function(c){for(;;)switch(c.prev=c.next){case 0:this.setState({status:"Decrypting..."}),t=w.get().filesafe.getAllCredentials(),n=function(t){return _.a.async((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",new Promise((function(n,r){w.get().filesafe.decryptFile({fileItem:e,credential:t}).then((function(e){var t=e.decryptedItem;w.get().filesafe.downloadBase64Data({base64Data:e.decryptedData,fileName:t.content.fileName,fileType:t.content.fileType}),l.setState({status:null}),n(!0)})).catch((function(e){console.error("Error decrypting:",e),l.flashError("Error decrypting file."),r(!1)}))})));case 1:case"end":return n.stop()}}))},r=!0,a=!1,i=void 0,c.prev=6,o=t[Symbol.iterator]();case 8:if(r=(s=o.next()).done){c.next=18;break}return u=s.value,c.next=12,_.a.awrap(n(u));case 12:if(!c.sent){c.next=15;break}return c.abrupt("return");case 15:r=!0,c.next=8;break;case 18:c.next=24;break;case 20:c.prev=20,c.t0=c.catch(6),a=!0,i=c.t0;case 24:c.prev=24,c.prev=25,r||null==o.return||o.return();case 27:if(c.prev=27,!a){c.next=30;break}throw i;case 30:return c.finish(27);case 31:return c.finish(24);case 32:case"end":return c.stop()}}),null,this,[[6,20,24,32],[25,,27,31]])}},{key:"wait",value:function(e){return _.a.async((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",new Promise((function(t,n){setTimeout((function(){t()}),1e3*e)})));case 1:case"end":return t.stop()}}))}},{key:"encryptFile",value:function(e,t,n){var r,a,i=this;return _.a.async((function(o){for(;;)switch(o.prev=o.next){case 0:if(r=w.get().filesafe.getDefaultCredentials()){o.next=5;break}return this.setState({status:null}),alert("Please set up at least one key before attempting to upload a file. To do this, press Expand, and select Create New in the Keys section."),o.abrupt("return");case 5:if(a=w.get().filesafe.getDefaultIntegration()){o.next=10;break}return this.setState({status:null}),alert("Please set up at least one integration before attempting to upload a file. To do this, press Expand, and select Add New in the Integrations section."),o.abrupt("return");case 10:return this.setState({status:"Encrypting..."}),o.abrupt("return",w.get().filesafe.encryptFile({data:e,inputFileName:t,fileType:n,credential:r}).then((function(e){return _.a.async((function(o){for(;;)switch(o.prev=o.next){case 0:return i.setState({status:"Uploading to ".concat(w.get().filesafe.displayStringForIntegration(a),"...")}),o.next=3,_.a.awrap(i.wait(.5));case 3:return o.abrupt("return",w.get().filesafe.uploadFile({fileItem:e,inputFileName:t,fileType:n,credential:r}).then((function(){i.setState({status:"Upload Success."}),setTimeout((function(){i.setState({status:null})}),2e3)})).catch((function(e){console.error("fs-embed | error uploading file:",e),i.flashError("Error uploading file.")})));case 4:case"end":return o.stop()}}))})));case 12:case"end":return o.stop()}}),null,this)}},{key:"flashError",value:function(e){var t=this;this.setState({status:e,statusClass:"danger"}),setTimeout((function(){t.setState({status:null,statusClass:null})}),2500)}},{key:"render",value:function(){var e=this,t=this.state.statusClass?this.state.statusClass:"info",n="info"==t;return a.a.createElement("div",{className:"sn-component files-view"},a.a.createElement("div",{className:"sk-panel-row align-top"},a.a.createElement("div",{className:"files"},this.state.messages.length>0&&a.a.createElement("div",{id:"messages-container",className:"sk-panel-section"},a.a.createElement(C,{messages:this.state.messages})),this.state.status&&a.a.createElement("div",{id:"file-upload-status",className:"sk-horizontal-group"},n&&a.a.createElement("div",{className:"sk-spinner info small"}),a.a.createElement("div",{className:t},this.state.status)),a.a.createElement("div",{id:"add-file-button-container"},a.a.createElement("div",{className:"file sk-button info"},a.a.createElement("label",{className:"no-style"},a.a.createElement("input",{type:"file",style:{display:"none"},onChange:function(t){e.handleDroppedFiles(t.target.files)}}),a.a.createElement("div",{id:"attach-file-button-label",className:"sk-label"},"Attach File")))),a.a.createElement(I,{files:this.state.noteFiles}))))}},{key:"rootElement",get:function(){return document.getElementById("filesafe-embed")}},{key:"dropContainer",get:function(){return document.getElementById("files-view")}},{key:"fileInput",get:function(){return document.getElementById("file-input")}}]),t}(a.a.Component),D=function(e){function t(e){var n;return u()(this,t),n=c()(this,d()(t).call(this,e)),k()(y()(n),"toggleVisibility",(function(){n.setState({expanded:!n.state.expanded})})),n.state={expanded:!1,files:w.get().filesafe.getAllFileDescriptors()||[]},w.get().addDataChangeObserver((function(){n.setState({files:w.get().filesafe.getAllFileDescriptors()})})),n}return v()(t,e),h()(t,[{key:"render",value:function(){return a.a.createElement("div",{className:"files-view"},a.a.createElement("div",{className:"sk-panel-row justify-left"},a.a.createElement("div",{className:"sk-horizontal-group"},a.a.createElement("div",{className:"sk-panel-section-title"},"All Files ",a.a.createElement("span",{style:{fontWeight:"normal"}},"(",this.state.files.length,")")),a.a.createElement("a",{className:"info",onClick:this.toggleVisibility},this.state.expanded?"Hide":"Show"))),this.state.expanded&&a.a.createElement("div",{className:"sk-panel-row"},a.a.createElement("div",{className:"files"},a.a.createElement(I,{files:this.state.files}))))}}]),t}(a.a.Component),A=function(e){function t(e){var n;return u()(this,t),n=c()(this,d()(t).call(this,e)),k()(y()(n),"handleKeyPress",(function(e){"Enter"===e.key&&n.submitIntegrationCode()})),k()(y()(n),"handleTextChange",(function(e){var t=e.target.value;n.setState({integrationCode:t})})),k()(y()(n),"submitIntegrationCode",(function(){var e=n.state.integrationCode;e&&0!=e.length&&w.get().filesafe.saveIntegrationFromCode(e).then((function(){n.setState({integrationCode:null,showInputForm:!1}),n.reloadIntegrations()})).catch((function(){alert("Invalid integration code. Ensure the correct value is copied and try again.")}))})),k()(y()(n),"addNewIntegrationClicked",(function(){window.open(w.get().defaultRelayServerUrl(),"_blank"),n.setState({showInputForm:!0})})),k()(y()(n),"cancelIntegrationForm",(function(){n.setState({showInputForm:!1})})),k()(y()(n),"deleteIntegration",(function(e){w.get().filesafe.deleteIntegration(e)})),k()(y()(n),"setIntegrationAsDefaultUploadSource",(function(e){w.get().filesafe.setIntegrationAsDefault(e)})),n.state={integrations:w.get().filesafe.getAllIntegrations()||[]},w.get().addDataChangeObserver((function(){n.reloadIntegrations()})),n}return v()(t,e),h()(t,[{key:"reloadIntegrations",value:function(){var e=w.get().filesafe.getAllIntegrations();this.setState({integrations:e})}},{key:"componentDidMount",value:function(){}},{key:"componentWillUnmount",value:function(){}},{key:"displayStringForIntegration",value:function(e){return w.get().filesafe.displayStringForIntegration(e)}},{key:"render",value:function(){var e=this,t=this.state.integrations.length>1;return a.a.createElement("div",null,a.a.createElement("div",{className:"sk-panel-row"},a.a.createElement("div",{className:"sk-h2 sk-bold"},"Integrations"),!this.state.showInputForm&&a.a.createElement("div",{className:"sk-button info no-border",onClick:this.addNewIntegrationClicked},a.a.createElement("div",{className:"sk-label"},"Add New"))),a.a.createElement("div",{id:"integrations"},this.state.showInputForm&&a.a.createElement("div",{className:"sk-notification info"},a.a.createElement("strong",null,"New Integration"),a.a.createElement("p",{className:"sk-p"},"A new browser tab has opened—if not, try ",a.a.createElement("a",{href:w.get().defaultRelayServerUrl(),target:"_blank"},"this link"),". Complete the authentication flow and enter the code you receive below."),a.a.createElement("div",{className:"sk-panel-row"}),a.a.createElement("input",{className:"title sk-input contrast",type:"text",placeholder:"Enter integration code",value:this.state.integrationCode,onChange:this.handleTextChange,onKeyPress:this.handleKeyPress}),a.a.createElement("div",{className:"sk-button-group",style:{marginTop:10}},a.a.createElement("div",{className:"sk-button neutral",onClick:this.cancelIntegrationForm},a.a.createElement("a",{className:"sk-label"},"Cancel")),a.a.createElement("div",{className:"sk-button sk-base",onClick:this.submitIntegrationCode},a.a.createElement("a",{className:"sk-label"},"Submit"))))),a.a.createElement("div",{className:"list-container"},this.state.integrations.map((function(n){return a.a.createElement("div",{className:"list-item sk-horizontal-group top"},a.a.createElement("div",{className:"sk-circle x-small "+(n.content.isDefaultUploadSource?"info":"sk-secondary-contrast")}),a.a.createElement("div",null,a.a.createElement("div",{className:"sk-panel-row condensed sk-bold"},e.displayStringForIntegration(n)),a.a.createElement("div",{className:"sk-panel-row condensed"},a.a.createElement("div",{className:"sk-horizontal-group"},t&&!n.content.isDefaultUploadSource&&a.a.createElement("a",{className:"info",onClick:function(){e.setIntegrationAsDefaultUploadSource(n)}},"Make Default"),a.a.createElement("a",{className:"danger",onClick:function(){e.deleteIntegration(n)}},"Delete")))))}))))}}]),t}(a.a.Component),F=function(e){function t(e){var n;return u()(this,t),(n=c()(this,d()(t).call(this,e))).state={messages:[]},n}return v()(t,e),h()(t,[{key:"render",value:function(){return a.a.createElement("div",{id:"home",className:"sk-panel static"},a.a.createElement("div",{id:"main-content",className:"sk-panel-content"},a.a.createElement("div",{className:"sk-panel-section"},a.a.createElement(R,null)),a.a.createElement("div",{className:"sk-panel-section"},a.a.createElement(A,null)),a.a.createElement("div",{className:"sk-panel-section"},a.a.createElement(x,null)),a.a.createElement("div",{className:"sk-panel-section"},a.a.createElement(D,null))))}}]),t}(a.a.Component),O=function(e){function t(e){return u()(this,t),c()(this,d()(t).call(this,e))}return v()(t,e),h()(t,null,[{key:"renderInElement",value:function(e,n,r){w.get().setFilesafeInstance(n),w.get().setDelegate(r),o.a.render(a.a.createElement(t),e)}},{key:"unload",value:function(e){w.get().unload(),o.a.unmountComponentAtNode(e)}}]),h()(t,[{key:"render",value:function(){return a.a.createElement("div",{id:"filesafe-embed"},a.a.createElement("div",{className:"sn-component"},a.a.createElement(F,null)))}}]),t}(a.a.Component);t.default={FilesafeEmbed:O,React:a.a,ReactDOM:o.a}}])},166:e=>{e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=4)}([function(e,t,n){(function(t){e.exports=function(){function e(t,n,r){function a(o,s){if(!n[o]){if(!t[o]){if(i)return i(o,!0);var u=new Error("Cannot find module '"+o+"'");throw u.code="MODULE_NOT_FOUND",u}var l=n[o]={exports:{}};t[o][0].call(l.exports,(function(e){return a(t[o][1][e]||e)}),l,l.exports,e,t,n,r)}return n[o].exports}for(var i=!1,o=0;o>>2]|=(n[a>>>2]>>>24-a%4*8&255)<<24-(r+a)%4*8;else if(65535>>2]=n[a>>>2];else t.push.apply(t,n);return this.sigBytes+=e,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=i.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var n=[],r=0;r>>2]>>>24-r%4*8&255;n.push((a>>>4).toString(16)),n.push((15&a).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new o.init(n,t/2)}},l=s.Latin1={stringify:function(e){var t=e.words;e=e.sigBytes;for(var n=[],r=0;r>>2]>>>24-r%4*8&255));return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new o.init(n,t)}},c=s.Utf8={stringify:function(e){try{return decodeURIComponent(escape(l.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return l.parse(unescape(encodeURIComponent(e)))}},f=r.BufferedBlockAlgorithm=i.extend({reset:function(){this._data=new o.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=c.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n=this._data,r=n.words,a=n.sigBytes,i=this.blockSize,s=a/(4*i);if(t=(s=t?e.ceil(s):e.max((0|s)-this._minBufferSize,0))*i,a=e.min(4*t,a),t){for(var u=0;u>>2]>>>24-a%4*8&255)<<16|(t[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|t[a+2>>>2]>>>24-(a+2)%4*8&255,o=0;4>o&&a+.75*o>>6*(3-o)&63));if(t=r.charAt(64))for(;e.length%4;)e.push(t);return e.join("")},parse:function(e){var t=e.length,r=this._map;(a=r.charAt(64))&&-1!=(a=e.indexOf(a))&&(t=a);for(var a=[],i=0,o=0;o>>6-o%4*2;a[i>>>2]|=(s|u)<<24-i%4*8,i++}return n.create(a,i)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},function(e){function t(e,t,n,r,a,i,o){return((e=e+(t&n|~t&r)+a+o)<>>32-i)+t}function n(e,t,n,r,a,i,o){return((e=e+(t&r|n&~r)+a+o)<>>32-i)+t}function r(e,t,n,r,a,i,o){return((e=e+(t^n^r)+a+o)<>>32-i)+t}function a(e,t,n,r,a,i,o){return((e=e+(n^(t|~r))+a+o)<>>32-i)+t}for(var i=u,o=(l=i.lib).WordArray,s=l.Hasher,l=i.algo,c=[],f=0;64>f;f++)c[f]=4294967296*e.abs(e.sin(f+1))|0;l=l.MD5=s.extend({_doReset:function(){this._hash=new o.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,i){for(var o=0;16>o;o++){var s=e[u=i+o];e[u]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8)}o=this._hash.words;var u=e[i+0],l=(s=e[i+1],e[i+2]),f=e[i+3],d=e[i+4],p=e[i+5],h=e[i+6],m=e[i+7],v=e[i+8],g=e[i+9],y=e[i+10],b=e[i+11],k=e[i+12],w=e[i+13],x=e[i+14],S=e[i+15],_=t(_=o[0],I=o[1],C=o[2],E=o[3],u,7,c[0]),E=t(E,_,I,C,s,12,c[1]),C=t(C,E,_,I,l,17,c[2]),I=t(I,C,E,_,f,22,c[3]);_=t(_,I,C,E,d,7,c[4]),E=t(E,_,I,C,p,12,c[5]),C=t(C,E,_,I,h,17,c[6]),I=t(I,C,E,_,m,22,c[7]),_=t(_,I,C,E,v,7,c[8]),E=t(E,_,I,C,g,12,c[9]),C=t(C,E,_,I,y,17,c[10]),I=t(I,C,E,_,b,22,c[11]),_=t(_,I,C,E,k,7,c[12]),E=t(E,_,I,C,w,12,c[13]),C=t(C,E,_,I,x,17,c[14]),_=n(_,I=t(I,C,E,_,S,22,c[15]),C,E,s,5,c[16]),E=n(E,_,I,C,h,9,c[17]),C=n(C,E,_,I,b,14,c[18]),I=n(I,C,E,_,u,20,c[19]),_=n(_,I,C,E,p,5,c[20]),E=n(E,_,I,C,y,9,c[21]),C=n(C,E,_,I,S,14,c[22]),I=n(I,C,E,_,d,20,c[23]),_=n(_,I,C,E,g,5,c[24]),E=n(E,_,I,C,x,9,c[25]),C=n(C,E,_,I,f,14,c[26]),I=n(I,C,E,_,v,20,c[27]),_=n(_,I,C,E,w,5,c[28]),E=n(E,_,I,C,l,9,c[29]),C=n(C,E,_,I,m,14,c[30]),_=r(_,I=n(I,C,E,_,k,20,c[31]),C,E,p,4,c[32]),E=r(E,_,I,C,v,11,c[33]),C=r(C,E,_,I,b,16,c[34]),I=r(I,C,E,_,x,23,c[35]),_=r(_,I,C,E,s,4,c[36]),E=r(E,_,I,C,d,11,c[37]),C=r(C,E,_,I,m,16,c[38]),I=r(I,C,E,_,y,23,c[39]),_=r(_,I,C,E,w,4,c[40]),E=r(E,_,I,C,u,11,c[41]),C=r(C,E,_,I,f,16,c[42]),I=r(I,C,E,_,h,23,c[43]),_=r(_,I,C,E,g,4,c[44]),E=r(E,_,I,C,k,11,c[45]),C=r(C,E,_,I,S,16,c[46]),_=a(_,I=r(I,C,E,_,l,23,c[47]),C,E,u,6,c[48]),E=a(E,_,I,C,m,10,c[49]),C=a(C,E,_,I,x,15,c[50]),I=a(I,C,E,_,p,21,c[51]),_=a(_,I,C,E,k,6,c[52]),E=a(E,_,I,C,f,10,c[53]),C=a(C,E,_,I,y,15,c[54]),I=a(I,C,E,_,s,21,c[55]),_=a(_,I,C,E,v,6,c[56]),E=a(E,_,I,C,S,10,c[57]),C=a(C,E,_,I,h,15,c[58]),I=a(I,C,E,_,w,21,c[59]),_=a(_,I,C,E,d,6,c[60]),E=a(E,_,I,C,b,10,c[61]),C=a(C,E,_,I,l,15,c[62]),I=a(I,C,E,_,g,21,c[63]),o[0]=o[0]+_|0,o[1]=o[1]+I|0,o[2]=o[2]+C|0,o[3]=o[3]+E|0},_doFinalize:function(){var t=this._data,n=t.words,r=8*this._nDataBytes,a=8*t.sigBytes;n[a>>>5]|=128<<24-a%32;var i=e.floor(r/4294967296);for(n[15+(a+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),n[14+(a+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),t.sigBytes=4*(n.length+1),this._process(),n=(t=this._hash).words,r=0;4>r;r++)a=n[r],n[r]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8);return t},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}}),i.MD5=s._createHelper(l),i.HmacMD5=s._createHmacHelper(l)}(Math),function(){var e,t=u,n=(e=t.lib).Base,r=e.WordArray,a=(e=t.algo).EvpKDF=n.extend({cfg:n.extend({keySize:4,hasher:e.MD5,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var n=(s=this.cfg).hasher.create(),a=r.create(),i=a.words,o=s.keySize,s=s.iterations;i.length>>2]}},t.BlockCipher=s.extend({cfg:s.cfg.extend({mode:l,padding:f}),reset:function(){s.reset.call(this);var e=(t=this.cfg).iv,t=t.mode;if(this._xformMode==this._ENC_XFORM_MODE)var n=t.createEncryptor;else n=t.createDecryptor,this._minBufferSize=1;this._mode=n.call(t,this,e&&e.words)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){e.pad(this._data,this.blockSize);var t=this._process(!0)}else t=this._process(!0),e.unpad(t);return t},blockSize:4});var d=t.CipherParams=n.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),p=(l=(h.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext;return((e=e.salt)?r.create([1398893684,1701076831]).concat(e).concat(t):t).toString(i)},parse:function(e){var t=(e=i.parse(e)).words;if(1398893684==t[0]&&1701076831==t[1]){var n=r.create(t.slice(2,4));t.splice(0,4),e.sigBytes-=16}return d.create({ciphertext:e,salt:n})}},t.SerializableCipher=n.extend({cfg:n.extend({format:l}),encrypt:function(e,t,n,r){r=this.cfg.extend(r);var a=e.createEncryptor(n,r);return t=a.finalize(t),a=a.cfg,d.create({ciphertext:t,key:n,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:e.blockSize,formatter:r.format})},decrypt:function(e,t,n,r){return r=this.cfg.extend(r),t=this._parse(t,r.format),e.createDecryptor(n,r).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}})),h=(h.kdf={}).OpenSSL={execute:function(e,t,n,a){return a||(a=r.random(8)),e=o.create({keySize:t+n}).compute(e,a),n=r.create(e.words.slice(t),4*n),e.sigBytes=4*t,d.create({key:e,iv:n,salt:a})}},m=t.PasswordBasedCipher=p.extend({cfg:p.cfg.extend({kdf:h}),encrypt:function(e,t,n,r){return n=(r=this.cfg.extend(r)).kdf.execute(n,e.keySize,e.ivSize),r.iv=n.iv,(e=p.encrypt.call(this,e,t,n.key,r)).mixIn(n),e},decrypt:function(e,t,n,r){return r=this.cfg.extend(r),t=this._parse(t,r.format),n=r.kdf.execute(n,e.keySize,e.ivSize,t.salt),r.iv=n.iv,p.decrypt.call(this,e,t,n.key,r)}})}(),function(){for(var e=u,t=e.lib.BlockCipher,n=e.algo,r=[],a=[],i=[],o=[],s=[],l=[],c=[],f=[],d=[],p=[],h=[],m=0;256>m;m++)h[m]=128>m?m<<1:m<<1^283;var v=0,g=0;for(m=0;256>m;m++){var y=(y=g^g<<1^g<<2^g<<3^g<<4)>>>8^255&y^99;r[v]=y,a[y]=v;var b=h[v],k=h[b],w=h[k],x=257*h[y]^16843008*y;i[v]=x<<24|x>>>8,o[v]=x<<16|x>>>16,s[v]=x<<8|x>>>24,l[v]=x,x=16843009*w^65537*k^257*b^16843008*v,c[y]=x<<24|x>>>8,f[y]=x<<16|x>>>16,d[y]=x<<8|x>>>24,p[y]=x,v?(v=b^h[h[h[w^b]]],g^=h[h[g]]):v=g=1}var S=[0,1,2,4,8,16,32,64,128,27,54];n=n.AES=t.extend({_doReset:function(){for(var e=(n=this._key).words,t=n.sigBytes/4,n=4*((this._nRounds=t+6)+1),a=this._keySchedule=[],i=0;i>>24]<<24|r[o>>>16&255]<<16|r[o>>>8&255]<<8|r[255&o]):(o=r[(o=o<<8|o>>>24)>>>24]<<24|r[o>>>16&255]<<16|r[o>>>8&255]<<8|r[255&o],o^=S[i/t|0]<<24),a[i]=a[i-t]^o}for(e=this._invKeySchedule=[],t=0;tt||4>=i?o:c[r[o>>>24]]^f[r[o>>>16&255]]^d[r[o>>>8&255]]^p[r[255&o]]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,i,o,s,l,r)},decryptBlock:function(e,t){var n=e[t+1];e[t+1]=e[t+3],e[t+3]=n,this._doCryptBlock(e,t,this._invKeySchedule,c,f,d,p,a),n=e[t+1],e[t+1]=e[t+3],e[t+3]=n},_doCryptBlock:function(e,t,n,r,a,i,o,s){for(var u=this._nRounds,l=e[t]^n[0],c=e[t+1]^n[1],f=e[t+2]^n[2],d=e[t+3]^n[3],p=4,h=1;h>>24]^a[c>>>16&255]^i[f>>>8&255]^o[255&d]^n[p++],v=r[c>>>24]^a[f>>>16&255]^i[d>>>8&255]^o[255&l]^n[p++],g=r[f>>>24]^a[d>>>16&255]^i[l>>>8&255]^o[255&c]^n[p++];d=r[d>>>24]^a[l>>>16&255]^i[c>>>8&255]^o[255&f]^n[p++],l=m,c=v,f=g}m=(s[l>>>24]<<24|s[c>>>16&255]<<16|s[f>>>8&255]<<8|s[255&d])^n[p++],v=(s[c>>>24]<<24|s[f>>>16&255]<<16|s[d>>>8&255]<<8|s[255&l])^n[p++],g=(s[f>>>24]<<24|s[d>>>16&255]<<16|s[l>>>8&255]<<8|s[255&c])^n[p++],d=(s[d>>>24]<<24|s[l>>>16&255]<<16|s[c>>>8&255]<<8|s[255&f])^n[p++],e[t]=m,e[t+1]=v,e[t+2]=g,e[t+3]=d},keySize:8}),e.AES=t._createHelper(n)}(),u=u||function(e,t){var n={},r=n.lib={},a=function(){},i=r.Base={extend:function(e){a.prototype=this;var t=new a;return e&&t.mixIn(e),t.hasOwnProperty("init")||(t.init=function(){t.$super.init.apply(this,arguments)}),t.init.prototype=t,t.$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},o=r.WordArray=i.extend({init:function(e,n){e=this.words=e||[],this.sigBytes=n!=t?n:4*e.length},toString:function(e){return(e||u).stringify(this)},concat:function(e){var t=this.words,n=e.words,r=this.sigBytes;if(e=e.sigBytes,this.clamp(),r%4)for(var a=0;a>>2]|=(n[a>>>2]>>>24-a%4*8&255)<<24-(r+a)%4*8;else if(65535>>2]=n[a>>>2];else t.push.apply(t,n);return this.sigBytes+=e,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=i.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var n=[],r=0;r>>2]>>>24-r%4*8&255;n.push((a>>>4).toString(16)),n.push((15&a).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new o.init(n,t/2)}},l=s.Latin1={stringify:function(e){var t=e.words;e=e.sigBytes;for(var n=[],r=0;r>>2]>>>24-r%4*8&255));return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new o.init(n,t)}},c=s.Utf8={stringify:function(e){try{return decodeURIComponent(escape(l.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return l.parse(unescape(encodeURIComponent(e)))}},f=r.BufferedBlockAlgorithm=i.extend({reset:function(){this._data=new o.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=c.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n=this._data,r=n.words,a=n.sigBytes,i=this.blockSize,s=a/(4*i);if(t=(s=t?e.ceil(s):e.max((0|s)-this._minBufferSize,0))*i,a=e.min(4*t,a),t){for(var u=0;uc;){var f;e:{f=l;for(var d=e.sqrt(f),p=2;p<=d;p++)if(!(f%p)){f=!1;break e}f=!0}f&&(8>c&&(i[c]=s(e.pow(l,.5))),o[c]=s(e.pow(l,1/3)),c++),l++}var h=[];a=a.SHA256=r.extend({_doReset:function(){this._hash=new n.init(i.slice(0))},_doProcessBlock:function(e,t){for(var n=this._hash.words,r=n[0],a=n[1],i=n[2],s=n[3],u=n[4],l=n[5],c=n[6],f=n[7],d=0;64>d;d++){if(16>d)h[d]=0|e[t+d];else{var p=h[d-15],m=h[d-2];h[d]=((p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3)+h[d-7]+((m<<15|m>>>17)^(m<<13|m>>>19)^m>>>10)+h[d-16]}p=f+((u<<26|u>>>6)^(u<<21|u>>>11)^(u<<7|u>>>25))+(u&l^~u&c)+o[d]+h[d],m=((r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22))+(r&a^r&i^a&i),f=c,c=l,l=u,u=s+p|0,s=i,i=a,a=r,r=p+m|0}n[0]=n[0]+r|0,n[1]=n[1]+a|0,n[2]=n[2]+i|0,n[3]=n[3]+s|0,n[4]=n[4]+u|0,n[5]=n[5]+l|0,n[6]=n[6]+c|0,n[7]=n[7]+f|0},_doFinalize:function(){var t=this._data,n=t.words,r=8*this._nDataBytes,a=8*t.sigBytes;return n[a>>>5]|=128<<24-a%32,n[14+(a+64>>>9<<4)]=e.floor(r/4294967296),n[15+(a+64>>>9<<4)]=r,t.sigBytes=4*n.length,this._process(),this._hash},clone:function(){var e=r.clone.call(this);return e._hash=this._hash.clone(),e}}),t.SHA256=r._createHelper(a),t.HmacSHA256=r._createHmacHelper(a)}(Math),i=(a=u).enc.Utf8,a.algo.HMAC=a.lib.Base.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=i.parse(t));var n=e.blockSize,r=4*n;t.sigBytes>r&&(t=e.finalize(t)),t.clamp();for(var a=this._oKey=t.clone(),o=this._iKey=t.clone(),s=a.words,u=o.words,l=0;l>>2]|=(n[a>>>2]>>>24-a%4*8&255)<<24-(r+a)%4*8;else if(65535>>2]=n[a>>>2];else t.push.apply(t,n);return this.sigBytes+=e,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=i.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var n=[],r=0;r>>2]>>>24-r%4*8&255;n.push((a>>>4).toString(16)),n.push((15&a).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new o.init(n,t/2)}},l=s.Latin1={stringify:function(e){var t=e.words;e=e.sigBytes;for(var n=[],r=0;r>>2]>>>24-r%4*8&255));return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new o.init(n,t)}},c=s.Utf8={stringify:function(e){try{return decodeURIComponent(escape(l.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return l.parse(unescape(encodeURIComponent(e)))}},f=r.BufferedBlockAlgorithm=i.extend({reset:function(){this._data=new o.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=c.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n=this._data,r=n.words,a=n.sigBytes,i=this.blockSize,s=a/(4*i);if(t=(s=t?e.ceil(s):e.max((0|s)-this._minBufferSize,0))*i,a=e.min(4*t,a),t){for(var u=0;ul;l++)s[l]=e();i=i.SHA512=n.extend({_doReset:function(){this._hash=new a.init([new r.init(1779033703,4089235720),new r.init(3144134277,2227873595),new r.init(1013904242,4271175723),new r.init(2773480762,1595750129),new r.init(1359893119,2917565137),new r.init(2600822924,725511199),new r.init(528734635,4215389547),new r.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var n=(f=this._hash.words)[0],r=f[1],a=f[2],i=f[3],u=f[4],l=f[5],c=f[6],f=f[7],d=n.high,p=n.low,h=r.high,m=r.low,v=a.high,g=a.low,y=i.high,b=i.low,k=u.high,w=u.low,x=l.high,S=l.low,_=c.high,E=c.low,C=f.high,I=f.low,R=d,D=p,A=h,F=m,O=v,T=g,M=y,P=b,N=k,L=w,j=x,B=S,z=_,U=E,H=C,W=I,K=0;80>K;K++){var V=s[K];if(16>K)var q=V.high=0|e[t+2*K],$=V.low=0|e[t+2*K+1];else{q=(($=(q=s[K-15]).high)>>>1|(J=q.low)<<31)^($>>>8|J<<24)^$>>>7;var J=(J>>>1|$<<31)^(J>>>8|$<<24)^(J>>>7|$<<25),Q=(($=(Q=s[K-2]).high)>>>19|(G=Q.low)<<13)^($<<3|G>>>29)^$>>>6,G=(G>>>19|$<<13)^(G<<3|$>>>29)^(G>>>6|$<<26),Y=($=s[K-7]).high,X=(Z=s[K-16]).high,Z=Z.low;q=(q=(q=q+Y+(($=J+$.low)>>>0>>0?1:0))+Q+(($+=G)>>>0>>0?1:0))+X+(($+=Z)>>>0>>0?1:0),V.high=q,V.low=$}Y=N&j^~N&z,Z=L&B^~L&U,V=R&A^R&O^A&O;var ee=D&F^D&T^F&T,te=(J=(R>>>28|D<<4)^(R<<30|D>>>2)^(R<<25|D>>>7),Q=(D>>>28|R<<4)^(D<<30|R>>>2)^(D<<25|R>>>7),(G=o[K]).high),ne=G.low;X=H+((N>>>14|L<<18)^(N>>>18|L<<14)^(N<<23|L>>>9))+((G=W+((L>>>14|N<<18)^(L>>>18|N<<14)^(L<<23|N>>>9)))>>>0>>0?1:0),H=z,W=U,z=j,U=B,j=N,B=L,N=M+(X=(X=(X=X+Y+((G+=Z)>>>0>>0?1:0))+te+((G+=ne)>>>0>>0?1:0))+q+((G+=$)>>>0<$>>>0?1:0))+((L=P+G|0)>>>0

    >>0?1:0)|0,M=O,P=T,O=A,T=F,A=R,F=D,R=X+(V=J+V+(($=Q+ee)>>>0>>0?1:0))+((D=G+$|0)>>>0>>0?1:0)|0}p=n.low=p+D,n.high=d+R+(p>>>0>>0?1:0),m=r.low=m+F,r.high=h+A+(m>>>0>>0?1:0),g=a.low=g+T,a.high=v+O+(g>>>0>>0?1:0),b=i.low=b+P,i.high=y+M+(b>>>0

    >>0?1:0),w=u.low=w+L,u.high=k+N+(w>>>0>>0?1:0),S=l.low=S+B,l.high=x+j+(S>>>0>>0?1:0),E=c.low=E+U,c.high=_+z+(E>>>0>>0?1:0),I=f.low=I+W,f.high=C+H+(I>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[30+(r+128>>>10<<5)]=Math.floor(n/4294967296),t[31+(r+128>>>10<<5)]=n,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32}),t.SHA512=n._createHelper(i),t.HmacSHA512=n._createHmacHelper(i)}(),s=(o=u).enc.Utf8,o.algo.HMAC=o.lib.Base.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=s.parse(t));var n=e.blockSize,r=4*n;t.sigBytes>r&&(t=e.finalize(t)),t.clamp();for(var a=this._oKey=t.clone(),i=this._iKey=t.clone(),o=a.words,u=i.words,l=0;l>>2]|=(n[a>>>2]>>>24-a%4*8&255)<<24-(r+a)%4*8;else if(65535>>2]=n[a>>>2];else t.push.apply(t,n);return this.sigBytes+=e,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=i.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var n=[],r=0;r>>2]>>>24-r%4*8&255;n.push((a>>>4).toString(16)),n.push((15&a).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new o.init(n,t/2)}},l=s.Latin1={stringify:function(e){var t=e.words;e=e.sigBytes;for(var n=[],r=0;r>>2]>>>24-r%4*8&255));return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new o.init(n,t)}},c=s.Utf8={stringify:function(e){try{return decodeURIComponent(escape(l.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return l.parse(unescape(encodeURIComponent(e)))}},f=r.BufferedBlockAlgorithm=i.extend({reset:function(){this._data=new o.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=c.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n=this._data,r=n.words,a=n.sigBytes,i=this.blockSize,s=a/(4*i);if(t=(s=t?e.ceil(s):e.max((0|s)-this._minBufferSize,0))*i,a=e.min(4*t,a),t){for(var u=0;ul;l++){if(16>l)r[l]=0|e[t+l];else{var c=r[l-3]^r[l-8]^r[l-14]^r[l-16];r[l]=c<<1|c>>>31}c=(a<<5|a>>>27)+u+r[l],c=20>l?c+(1518500249+(i&o|~i&s)):40>l?c+(1859775393+(i^o^s)):60>l?c+((i&o|i&s|o&s)-1894007588):c+((i^o^s)-899497514),u=s,s=o,o=i<<30|i>>>2,i=a,a=c}n[0]=n[0]+a|0,n[1]=n[1]+i|0,n[2]=n[2]+o|0,n[3]=n[3]+s|0,n[4]=n[4]+u|0},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[14+(r+64>>>9<<4)]=Math.floor(n/4294967296),t[15+(r+64>>>9<<4)]=n,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});e.SHA1=n._createHelper(a),e.HmacSHA1=n._createHmacHelper(a)}(),function(){var e=u,t=e.enc.Utf8;e.algo.HMAC=e.lib.Base.extend({init:function(e,n){e=this._hasher=new e.init,"string"==typeof n&&(n=t.parse(n));var r=e.blockSize,a=4*r;n.sigBytes>a&&(n=e.finalize(n)),n.clamp();for(var i=this._oKey=n.clone(),o=this._iKey=n.clone(),s=i.words,u=o.words,l=0;l>>2]|=(n[a>>>2]>>>24-a%4*8&255)<<24-(r+a)%4*8;else if(65535>>2]=n[a>>>2];else t.push.apply(t,n);return this.sigBytes+=e,this},clamp:function(){var t=this.words,n=this.sigBytes;t[n>>>2]&=4294967295<<32-n%4*8,t.length=e.ceil(n/4)},clone:function(){var e=i.clone.call(this);return e.words=this.words.slice(0),e},random:function(t){for(var n=[],r=0;r>>2]>>>24-r%4*8&255;n.push((a>>>4).toString(16)),n.push((15&a).toString(16))}return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new o.init(n,t/2)}},l=s.Latin1={stringify:function(e){var t=e.words;e=e.sigBytes;for(var n=[],r=0;r>>2]>>>24-r%4*8&255));return n.join("")},parse:function(e){for(var t=e.length,n=[],r=0;r>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new o.init(n,t)}},c=s.Utf8={stringify:function(e){try{return decodeURIComponent(escape(l.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return l.parse(unescape(encodeURIComponent(e)))}},f=r.BufferedBlockAlgorithm=i.extend({reset:function(){this._data=new o.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=c.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var n=this._data,r=n.words,a=n.sigBytes,i=this.blockSize,s=a/(4*i);if(t=(s=t?e.ceil(s):e.max((0|s)-this._minBufferSize,0))*i,a=e.min(4*t,a),t){for(var u=0;ul;l++){if(16>l)r[l]=0|e[t+l];else{var c=r[l-3]^r[l-8]^r[l-14]^r[l-16];r[l]=c<<1|c>>>31}c=(a<<5|a>>>27)+u+r[l],c=20>l?c+(1518500249+(i&o|~i&s)):40>l?c+(1859775393+(i^o^s)):60>l?c+((i&o|i&s|o&s)-1894007588):c+((i^o^s)-899497514),u=s,s=o,o=i<<30|i>>>2,i=a,a=c}n[0]=n[0]+a|0,n[1]=n[1]+i|0,n[2]=n[2]+o|0,n[3]=n[3]+s|0,n[4]=n[4]+u|0},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[14+(r+64>>>9<<4)]=Math.floor(n/4294967296),t[15+(r+64>>>9<<4)]=n,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});e.SHA1=n._createHelper(a),e.HmacSHA1=n._createHmacHelper(a)}(),Object.defineProperty(r,"__esModule",{value:!0}),r.StandardFile=r.SFItemTransformer=r.SFCryptoWeb=r.SFCryptoJS=r.SFAbstractCrypto=r.SFItemHistoryEntry=r.SFItemHistory=r.SFHistorySession=r.SFPrivileges=r.SFPredicate=r.SFItemParams=r.SFItem=r.SFSyncManager=r.SFStorageManager=r.SFSingletonManager=r.SFSessionHistoryManager=r.SFPrivilegesManager=r.SFModelManager=r.SFMigrationManager=r.SFHttpManager=r.SFAuthManager=r.SFAlertManager=void 0;var E=function(){function e(){w(this,e)}return S(e,[{key:"alert",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){window.alert(t.text),e()})));case 1:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"confirm",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){window.confirm(t.text)?e():n()})));case 1:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()}]),e}();r.SFAlertManager=E;var C=function(){function e(t,n,r,a){w(this,e),e.DidSignOutEvent="DidSignOutEvent",e.WillSignInEvent="WillSignInEvent",e.DidSignInEvent="DidSignInEvent",this.httpManager=n,this.storageManager=t,this.alertManager=r||new E,this.$timeout=a||setTimeout.bind(window),this.eventHandlers=[]}return S(e,[{key:"addEventHandler",value:function(e){return this.eventHandlers.push(e),e}},{key:"removeEventHandler",value:function(e){_.pull(this.eventHandlers,e)}},{key:"notifyEvent",value:function(e,t){var n=!0,r=!1,a=void 0;try{for(var i,o=this.eventHandlers[Symbol.iterator]();!(n=(i=o.next()).done);n=!0)(0,i.value)(e,t||{})}catch(e){r=!0,a=e}finally{try{n||null==o.return||o.return()}finally{if(r)throw a}}}},{key:"saveKeys",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this._keys=t,e.next=3,this.storageManager.setItem("mk",t.mk);case 3:return e.next=5,this.storageManager.setItem("ak",t.ak);case 5:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"signout",value:function(){var t=k(regeneratorRuntime.mark((function t(n){var r=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this._keys=null,this._authParams=null,!n){t.next=6;break}return t.abrupt("return",this.storageManager.clearAllData().then((function(){r.notifyEvent(e.DidSignOutEvent)})));case 6:this.notifyEvent(e.DidSignOutEvent);case 7:case"end":return t.stop()}}),t,this)})));function n(e){return t.apply(this,arguments)}return n}()},{key:"keys",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._keys){e.next=11;break}return e.next=3,this.storageManager.getItem("mk");case 3:if(t=e.sent){e.next=6;break}return e.abrupt("return",null);case 6:return e.t0=t,e.next=9,this.storageManager.getItem("ak");case 9:e.t1=e.sent,this._keys={mk:e.t0,ak:e.t1};case 11:return e.abrupt("return",this._keys);case 12:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"getAuthParams",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._authParams){e.next=5;break}return e.next=3,this.storageManager.getItem("auth_params");case 3:t=e.sent,this._authParams=JSON.parse(t);case 5:if(!this._authParams||this._authParams.version){e.next=9;break}return e.next=8,this.defaultProtocolVersion();case 8:this._authParams.version=e.sent;case 9:return e.abrupt("return",this._authParams);case 10:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"defaultProtocolVersion",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.keys();case 2:if(!(t=e.sent)||!t.ak){e.next=7;break}return e.abrupt("return","002");case 7:return e.abrupt("return","001");case 8:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"protocolVersion",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getAuthParams();case 2:if(!(t=e.sent)||!t.version){e.next=5;break}return e.abrupt("return",t.version);case 5:return e.abrupt("return",this.defaultProtocolVersion());case 6:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"getAuthParamsForEmail",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r){var a,i=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return(a=_.merge({email:n},r)).api=R.getApiVersion(),e.abrupt("return",new Promise((function(e,n){var r=t+"/auth/params";i.httpManager.getAbsolute(r,a,(function(t){e(t)}),(function(t){console.error("Error getting auth params",t),"object"!==y(t)&&(t={error:{message:"A server error occurred while trying to sign in. Please try again."}}),e(t)}))})));case 3:case"end":return e.stop()}}),e)})));function t(t,n,r){return e.apply(this,arguments)}return t}()},{key:"lock",value:function(){this.locked=!0}},{key:"unlock",value:function(){this.locked=!1}},{key:"isLocked",value:function(){return 1==this.locked}},{key:"unlockAndResolve",value:function(e,t){this.unlock(),e(t)}},{key:"login",value:function(){var t=k(regeneratorRuntime.mark((function t(n,r,a,i,o){var s=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",new Promise(function(){var t=k(regeneratorRuntime.mark((function t(u,l){var c,f,d,p,h,m,v,g,b,w,x,S;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,s.keys();case 2:if(null==t.sent){t.next=6;break}return u({error:{message:"Cannot log in because already signed in."}}),t.abrupt("return");case 6:if(!s.isLocked()){t.next=9;break}return u({error:{message:"Login already in progress."}}),t.abrupt("return");case 9:return s.lock(),s.notifyEvent(e.WillSignInEvent),t.next=13,s.getAuthParamsForEmail(n,r,o);case 13:if((c=t.sent).identifier=r,!c.error){t.next=18;break}return s.unlockAndResolve(u,c),t.abrupt("return");case 18:if(c&&c.pw_cost){t.next=21;break}return s.unlockAndResolve(u,{error:{message:"Invalid email or password."}}),t.abrupt("return");case 21:if(SFJS.supportedVersions().includes(c.version)){t.next=25;break}return f=SFJS.isVersionNewerThanLibraryVersion(c.version)?"This version of the application does not support your newer account type. Please upgrade to the latest version of Standard Notes to sign in.":"The protocol version associated with your account is outdated and no longer supported by this application. Please visit standardnotes.org/help/security for more information.",s.unlockAndResolve(u,{error:{message:f}}),t.abrupt("return");case 25:if(!SFJS.isProtocolVersionOutdated(c.version)){t.next=32;break}return d="The encryption version for your account, ".concat(c.version,", is outdated and requires upgrade. You may proceed with login, but are advised to perform a security update using the web or desktop application. Please visit standardnotes.org/help/security for more information."),p=!1,t.next=30,s.alertManager.confirm({title:"Update Needed",text:d,confirmButtonText:"Sign In"}).catch((function(){s.unlockAndResolve(u,{error:{}}),p=!0}));case 30:if(!p){t.next=32;break}return t.abrupt("return");case 32:if(SFJS.supportsPasswordDerivationCost(c.pw_cost)){t.next=36;break}return h="Your account was created on a platform with higher security capabilities than this browser supports. If we attempted to generate your login keys here, it would take hours. Please use a browser with more up to date security capabilities, like Google Chrome or Firefox, to log in.",s.unlockAndResolve(u,{error:{message:h}}),t.abrupt("return");case 36:if(m=SFJS.costMinimumForVersion(c.version),!(c.pw_cost5&&void 0!==u[5]&&u[5],e.abrupt("return",new Promise(function(){var e=k(regeneratorRuntime.mark((function e(u,l){var c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((c=new XMLHttpRequest).onreadystatechange=function(){if(4==c.readyState){var e=c.responseText;if(e)try{e=JSON.parse(e)}catch(e){}c.status>=200&&c.status<=299?s.$timeout((function(){a(e),u(e)})):(console.error("Request error:",e),s.$timeout((function(){i(e,c.status),l(e)})))}},"get"==t&&Object.keys(r).length>0&&(n=s.urlForUrlAndParams(n,r)),c.open(t,n,!0),c.setRequestHeader("Content-type","application/json"),!o){e.next=8;break}return e.next=8,s.setAuthHeadersForRequest(c);case 8:"post"==t||"patch"==t?c.send(JSON.stringify(r)):c.send();case 9:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()));case 2:case"end":return e.stop()}}),e)})));function t(t,n,r,a,i){return e.apply(this,arguments)}return t}()},{key:"urlForUrlAndParams",value:function(e,t){var n=Object.keys(t).map((function(e){return e+"="+encodeURIComponent(t[e])})).join("&");return e.includes("?")?e+"&"+n:e+"?"+n}}]),e}();r.SFHttpManager=R;var D=function(){function e(t,n,r,a){var i=this;w(this,e),this.modelManager=t,this.syncManager=n,this.storageManager=r,this.completionHandlers=[],this.loadMigrations();var o=!1,s=a.addEventHandler((function(e){e==C.DidSignInEvent&&(o=!0)}));this.receivedLocalDataEvent=n.initialDataLoaded(),this.syncManager.addEventHandler(function(){var e=k(regeneratorRuntime.mark((function e(t,n){var r,u,l,c,f,d,p,h,m;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(u="sync:completed"==t,!(r="local-data-loaded"==t)&&!u){e.next=40;break}if(r?i.receivedLocalDataEvent=!0:u&&(i.receivedSyncCompletedEvent=!0),!i.receivedLocalDataEvent||!i.receivedSyncCompletedEvent){e.next=40;break}if(!o){e.next=39;break}return o=!1,a.removeEventHandler(s),e.next=10,i.getCompletedMigrations();case 10:l=e.sent.slice(),c=!0,f=!1,d=void 0,e.prev=14,p=l[Symbol.iterator]();case 16:if(c=(h=p.next()).done){e.next=25;break}return m=h.value,e.next=20,i.migrationForEncodedName(m);case 20:e.sent.runOnlyOnce||_.pull(i._completed,m);case 22:c=!0,e.next=16;break;case 25:e.next=31;break;case 27:e.prev=27,e.t0=e.catch(14),f=!0,d=e.t0;case 31:e.prev=31,e.prev=32,c||null==p.return||p.return();case 34:if(e.prev=34,!f){e.next=37;break}throw d;case 37:return e.finish(34);case 38:return e.finish(31);case 39:i.runPendingMigrations();case 40:case"end":return e.stop()}}),e,null,[[14,27,31,39],[32,,34,38]])})));return function(t,n){return e.apply(this,arguments)}}())}return S(e,[{key:"addCompletionHandler",value:function(e){this.completionHandlers.push(e)}},{key:"removeCompletionHandler",value:function(e){_.pull(this.completionHandlers,e)}},{key:"migrationForEncodedName",value:function(){var e=k(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.decode(t);case 2:return n=e.sent,e.abrupt("return",this.migrations.find((function(e){return e.name==n})));case 4:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"loadMigrations",value:function(){this.migrations=this.registeredMigrations()}},{key:"registeredMigrations",value:function(){}},{key:"runPendingMigrations",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t,n,r,a,i,o,s,u,l,c,f,d,p,h,m,v,g,y,b,k,w,x,S,_,E,C,I,R;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getPendingMigrations();case 2:for(t=e.sent,n=!0,r=!1,a=void 0,e.prev=6,i=t[Symbol.iterator]();!(n=(o=i.next()).done);n=!0)(s=o.value).items=[];e.next=14;break;case 10:e.prev=10,e.t0=e.catch(6),r=!0,a=e.t0;case 14:e.prev=14,e.prev=15,n||null==i.return||i.return();case 17:if(e.prev=17,!r){e.next=20;break}throw a;case 20:return e.finish(17);case 21:return e.finish(14);case 22:u=!0,l=!1,c=void 0,e.prev=25,f=this.modelManager.allNondummyItems[Symbol.iterator]();case 27:if(u=(d=f.next()).done){e.next=51;break}for(p=d.value,h=!0,m=!1,v=void 0,e.prev=32,g=t[Symbol.iterator]();!(h=(y=g.next()).done);h=!0)s=y.value,p.content_type==s.content_type&&s.items.push(p);e.next=40;break;case 36:e.prev=36,e.t1=e.catch(32),m=!0,v=e.t1;case 40:e.prev=40,e.prev=41,h||null==g.return||g.return();case 43:if(e.prev=43,!m){e.next=46;break}throw v;case 46:return e.finish(43);case 47:return e.finish(40);case 48:u=!0,e.next=27;break;case 51:e.next=57;break;case 53:e.prev=53,e.t2=e.catch(25),l=!0,c=e.t2;case 57:e.prev=57,e.prev=58,u||null==f.return||f.return();case 60:if(e.prev=60,!l){e.next=63;break}throw c;case 63:return e.finish(60);case 64:return e.finish(57);case 65:b=!0,k=!1,w=void 0,e.prev=68,x=t[Symbol.iterator]();case 70:if(b=(S=x.next()).done){e.next=81;break}if(!((s=S.value).items&&s.items.length>0||s.customHandler)){e.next=77;break}return e.next=75,this.runMigration(s,s.items);case 75:e.next=78;break;case 77:this.markMigrationCompleted(s);case 78:b=!0,e.next=70;break;case 81:e.next=87;break;case 83:e.prev=83,e.t3=e.catch(68),k=!0,w=e.t3;case 87:e.prev=87,e.prev=88,b||null==x.return||x.return();case 90:if(e.prev=90,!k){e.next=93;break}throw w;case 93:return e.finish(90);case 94:return e.finish(87);case 95:for(_=!0,E=!1,C=void 0,e.prev=98,I=this.completionHandlers[Symbol.iterator]();!(_=(R=I.next()).done);_=!0)(0,R.value)();e.next=106;break;case 102:e.prev=102,e.t4=e.catch(98),E=!0,C=e.t4;case 106:e.prev=106,e.prev=107,_||null==I.return||I.return();case 109:if(e.prev=109,!E){e.next=112;break}throw C;case 112:return e.finish(109);case 113:return e.finish(106);case 114:case"end":return e.stop()}}),e,this,[[6,10,14,22],[15,,17,21],[25,53,57,65],[32,36,40,48],[41,,43,47],[58,,60,64],[68,83,87,95],[88,,90,94],[98,102,106,114],[107,,109,113]])})));function t(){return e.apply(this,arguments)}return t}()},{key:"encode",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",window.btoa(t));case 1:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"decode",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",window.atob(t));case 1:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"getCompletedMigrations",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._completed){e.next=5;break}return e.next=3,this.storageManager.getItem("migrations");case 3:t=e.sent,this._completed=t?JSON.parse(t):[];case 5:return e.abrupt("return",this._completed);case 6:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"getPendingMigrations",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t,n,r,a,i,o,s,u;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getCompletedMigrations();case 2:t=e.sent,n=[],r=!0,a=!1,i=void 0,e.prev=7,o=this.migrations[Symbol.iterator]();case 9:if(r=(s=o.next()).done){e.next=22;break}return u=s.value,e.t0=t,e.next=14,this.encode(u.name);case 14:if(e.t1=e.sent,e.t2=e.t0.indexOf.call(e.t0,e.t1),e.t3=-1,e.t2!=e.t3){e.next=19;break}n.push(u);case 19:r=!0,e.next=9;break;case 22:e.next=28;break;case 24:e.prev=24,e.t4=e.catch(7),a=!0,i=e.t4;case 28:e.prev=28,e.prev=29,r||null==o.return||o.return();case 31:if(e.prev=31,!a){e.next=34;break}throw i;case 34:return e.finish(31);case 35:return e.finish(28);case 36:return e.abrupt("return",n);case 37:case"end":return e.stop()}}),e,this,[[7,24,28,36],[29,,31,35]])})));function t(){return e.apply(this,arguments)}return t}()},{key:"markMigrationCompleted",value:function(){var e=k(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getCompletedMigrations();case 2:return n=e.sent,e.t0=n,e.next=6,this.encode(t.name);case 6:e.t1=e.sent,e.t0.push.call(e.t0,e.t1),this.storageManager.setItem("migrations",JSON.stringify(n)),t.running=!1;case 10:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"runMigration",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n){var r=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t.running){e.next=2;break}return e.abrupt("return");case 2:if(console.log("Running migration:",t.name),t.running=!0,!t.customHandler){e.next=8;break}return e.abrupt("return",t.customHandler().then((function(){r.markMigrationCompleted(t)})));case 8:return e.abrupt("return",t.handler(n).then((function(){r.markMigrationCompleted(t)})));case 9:case"end":return e.stop()}}),e)})));function t(t,n){return e.apply(this,arguments)}return t}()}]),e}();r.SFMigrationManager=D;var A=function(){function e(t){w(this,e),e.MappingSourceRemoteRetrieved="MappingSourceRemoteRetrieved",e.MappingSourceRemoteSaved="MappingSourceRemoteSaved",e.MappingSourceLocalSaved="MappingSourceLocalSaved",e.MappingSourceLocalRetrieved="MappingSourceLocalRetrieved",e.MappingSourceLocalDirtied="MappingSourceLocalDirtied",e.MappingSourceComponentRetrieved="MappingSourceComponentRetrieved",e.MappingSourceDesktopInstalled="MappingSourceDesktopInstalled",e.MappingSourceRemoteActionRetrieved="MappingSourceRemoteActionRetrieved",e.MappingSourceFileImport="MappingSourceFileImport",e.isMappingSourceRetrieved=function(t){return[e.MappingSourceRemoteRetrieved,e.MappingSourceComponentRetrieved,e.MappingSourceRemoteActionRetrieved].includes(t)},this.$timeout=t||setTimeout.bind(window),this.itemSyncObservers=[],this.items=[],this.itemsHash={},this.missedReferences={},this.uuidChangeObservers=[]}return S(e,[{key:"handleSignout",value:function(){this.items.length=0,this.itemsHash={},this.missedReferences={}}},{key:"addModelUuidChangeObserver",value:function(e,t){this.uuidChangeObservers.push({id:e,callback:t})}},{key:"notifyObserversOfUuidChange",value:function(e,t){var n=!0,r=!1,a=void 0;try{for(var i,o=this.uuidChangeObservers[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;try{s.callback(e,t)}catch(e){console.error("Notify observers of uuid change exception:",e)}}}catch(e){r=!0,a=e}finally{try{n||null==o.return||o.return()}finally{if(r)throw a}}}},{key:"alternateUUIDForItem",value:function(){var t=k(regeneratorRuntime.mark((function t(n){var r,a,i,o,s,u,l;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=this.createItem(n),t.next=3,SFJS.crypto.generateUUID();case 3:for(r.uuid=t.sent,r.informReferencesOfUUIDChange(n.uuid,r.uuid),this.informModelsOfUUIDChangeForItem(r,n.uuid,r.uuid),a=!0,i=!1,o=void 0,t.prev=9,s=n.referencingObjects[Symbol.iterator]();!(a=(u=s.next()).done);a=!0)(l=u.value).setIsNoLongerBeingReferencedBy(n),n.setIsNoLongerBeingReferencedBy(l),l.addItemAsRelationship(r);t.next=17;break;case 13:t.prev=13,t.t0=t.catch(9),i=!0,o=t.t0;case 17:t.prev=17,t.prev=18,a||null==s.return||s.return();case 20:if(t.prev=20,!i){t.next=23;break}throw o;case 23:return t.finish(20);case 24:return t.finish(17);case 25:return this.setItemsDirty(n.referencingObjects,!0),this.resolveReferencesForItem(r),this.loggingEnabled&&console.log(n.uuid,"--\x3e",r.uuid),n.deleted=!0,n.content.references=[],this.setItemDirty(n,!1,!1,e.MappingSourceLocalSaved),t.next=33,this.mapResponseItemsToLocalModels([n],e.MappingSourceLocalSaved);case 33:return this.addItem(r),this.setItemDirty(r,!0,!0,e.MappingSourceLocalSaved),this.notifyObserversOfUuidChange(n,r),t.abrupt("return",r);case 37:case"end":return t.stop()}}),t,this,[[9,13,17,25],[18,,20,24]])})));function n(e){return t.apply(this,arguments)}return n}()},{key:"informModelsOfUUIDChangeForItem",value:function(e,t,n){var r=!0,a=!1,i=void 0;try{for(var o,s=this.items[Symbol.iterator]();!(r=(o=s.next()).done);r=!0)o.value.potentialItemOfInterestHasChangedItsUUID(e,t,n)}catch(e){a=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(a)throw i}}}},{key:"didSyncModelsOffline",value:function(t){this.notifySyncObserversOfModels(t,e.MappingSourceLocalSaved)}},{key:"mapResponseItemsToLocalModels",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.mapResponseItemsToLocalModelsWithOptions({items:t,source:n,sourceKey:r}));case 1:case"end":return e.stop()}}),e,this)})));function t(t,n,r){return e.apply(this,arguments)}return t}()},{key:"mapResponseItemsToLocalModelsOmittingFields",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r,a){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.mapResponseItemsToLocalModelsWithOptions({items:t,omitFields:n,source:r,sourceKey:a}));case 1:case"end":return e.stop()}}),e,this)})));function t(t,n,r,a){return e.apply(this,arguments)}return t}()},{key:"mapResponseItemsToLocalModelsWithOptions",value:function(){var e=k(regeneratorRuntime.mark((function e(t){var n,r,a,i,o,s,u,l,c,f,d,p,m,v,g,y,b,k,w,x,S,_,E,C,I,R,D,A,F,O,T,M,P,N,L,j,B,z,U;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=t.items,r=t.omitFields,a=t.source,i=t.sourceKey,t.options,o=[],s=[],u=[],l=!0,c=!1,f=void 0,e.prev=5,d=n[Symbol.iterator]();case 7:if(l=(p=d.next()).done){e.next=58;break}if(m=p.value){e.next=11;break}return e.abrupt("continue",55);case 11:if(v=!m.content&&!m.errorDecrypting,m.content_type&&m.uuid&&!v||m.deleted){e.next=16;break}return console.error("Server response item is corrupt:",m),e.abrupt("continue",55);case 16:if(!Array.isArray(r)){e.next=36;break}for(g=!0,y=!1,b=void 0,e.prev=20,k=r[Symbol.iterator]();!(g=(w=k.next()).done);g=!0)x=w.value,delete m[x];e.next=28;break;case 24:e.prev=24,e.t0=e.catch(20),y=!0,b=e.t0;case 28:e.prev=28,e.prev=29,g||null==k.return||k.return();case 31:if(e.prev=31,!y){e.next=34;break}throw b;case 34:return e.finish(31);case 35:return e.finish(28);case 36:if((S=this.findItem(m.uuid))&&(S.updateFromJSON(m),S.dummy=!1),_=m.content_type||S&&S.content_type,!this.acceptableContentTypes||this.acceptableContentTypes.includes(_)){e.next=42;break}return e.abrupt("continue",55);case 42:if(E=!1,1!=m.deleted){e.next=50;break}if(!m.dirty){e.next=48;break}E=!0,e.next=50;break;case 48:return S&&(o.push(S),u.push(S),this.removeItemLocally(S)),e.abrupt("continue",55);case 50:S||(S=this.createItem(m)),this.addItem(S,E),S.errorDecrypting||u.push(S),o.push(S),s.push(m);case 55:l=!0,e.next=7;break;case 58:e.next=64;break;case 60:e.prev=60,e.t1=e.catch(5),c=!0,f=e.t1;case 64:e.prev=64,e.prev=65,l||null==d.return||d.return();case 67:if(e.prev=67,!c){e.next=70;break}throw f;case 70:return e.finish(67);case 71:return e.finish(64);case 72:for(C=!0,I=!1,R=void 0,e.prev=75,D=s.entries()[Symbol.iterator]();!(C=(A=D.next()).done);C=!0)F=h(A.value,2),O=F[0],T=F[1],M=o[O],T.content&&this.resolveReferencesForItem(M),M.didFinishSyncing();e.next=83;break;case 79:e.prev=79,e.t2=e.catch(75),I=!0,R=e.t2;case 83:e.prev=83,e.prev=84,C||null==D.return||D.return();case 86:if(e.prev=86,!I){e.next=89;break}throw R;case 89:return e.finish(86);case 90:return e.finish(83);case 91:for(P=this.popMissedReferenceStructsForObjects(s),N=!0,L=!1,j=void 0,e.prev=95,B=function(){var e=U.value,t=o.find((function(t){return t.uuid==e.reference_uuid}));t&&e.for_item.addItemAsRelationship(t)},z=P[Symbol.iterator]();!(N=(U=z.next()).done);N=!0)B();e.next=104;break;case 100:e.prev=100,e.t3=e.catch(95),L=!0,j=e.t3;case 104:e.prev=104,e.prev=105,N||null==z.return||z.return();case 107:if(e.prev=107,!L){e.next=110;break}throw j;case 110:return e.finish(107);case 111:return e.finish(104);case 112:return e.next=114,this.notifySyncObserversOfModels(u,a,i);case 114:return e.abrupt("return",o);case 115:case"end":return e.stop()}}),e,this,[[5,60,64,72],[20,24,28,36],[29,,31,35],[65,,67,71],[75,79,83,91],[84,,86,90],[95,100,104,112],[105,,107,111]])})));function t(t){return e.apply(this,arguments)}return t}()},{key:"missedReferenceBuildKey",value:function(e,t){return"".concat(e,":").concat(t)}},{key:"popMissedReferenceStructsForObjects",value:function(e){if(!e||0==e.length)return[];for(var t=[],n=[],r=e.map((function(e){return e.uuid})),a=r[0].length,i=0,o=Object.keys(this.missedReferences);i1&&void 0!==arguments[1]&&arguments[1];if(!e.errorDecrypting){var n=e.contentObject;if(e.updateLocalRelationships(),n.references){var r=n.references.slice().map((function(e){return e.uuid})),a=!0,i=this.findItems(r,a),o=!0,s=!1,u=void 0;try{for(var l,c=i.entries()[Symbol.iterator]();!(o=(l=c.next()).done);o=!0){var f=h(l.value,2),d=f[0],p=f[1];if(p)e.addItemAsRelationship(p),t&&this.setItemDirty(p,!0);else{var m=r[d],v=this.missedReferenceBuildKey(m,e.uuid);if(!this.missedReferences[v]){var g={reference_uuid:m,for_item:e};this.missedReferences[v]=g}}}}catch(e){s=!0,u=e}finally{try{o||null==c.return||c.return()}finally{if(s)throw u}}}}}},{key:"notifySyncObserversOfModels",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r){var a,i,o,s,u,l,c,f=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:a=this.itemSyncObservers.sort((function(e,t){return e.priority0)){e.next=25;break}return e.next=25,f._callSyncObserverCallbackWithTimeout(a,i,o,s,n,r);case 25:case"end":return e.stop()}}),e,null,[[6,10,14,22],[15,,17,21]])})),l=a[Symbol.iterator]();case 7:if(i=(c=l.next()).done){e.next=12;break}return e.delegateYield(u(),"t0",9);case 9:i=!0,e.next=7;break;case 12:e.next=18;break;case 14:e.prev=14,e.t1=e.catch(4),o=!0,s=e.t1;case 18:e.prev=18,e.prev=19,i||null==l.return||l.return();case 21:if(e.prev=21,!o){e.next=24;break}throw s;case 24:return e.finish(21);case 25:return e.finish(18);case 26:case"end":return e.stop()}}),e,this,[[4,14,18,26],[19,,21,25]])})));function t(t,n,r){return e.apply(this,arguments)}return t}()},{key:"_callSyncObserverCallbackWithTimeout",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r,a,i,o){var s=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,u){s.$timeout((function(){try{t.callback(n,r,a,i,o)}catch(e){console.error("Sync observer exception",e)}finally{e()}}))})));case 1:case"end":return e.stop()}}),e)})));function t(t,n,r,a,i,o){return e.apply(this,arguments)}return t}()},{key:"setItemDirty",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0,a=arguments.length>4?arguments[4]:void 0;this.setItemsDirty([e],t,n,r,a)}},{key:"setItemsDirty",value:function(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=arguments.length>2?arguments[2]:void 0,a=arguments.length>3?arguments[3]:void 0,i=arguments.length>4?arguments[4]:void 0,o=!0,s=!1,u=void 0;try{for(var l,c=t[Symbol.iterator]();!(o=(l=c.next()).done);o=!0)l.value.setDirty(n,r)}catch(e){s=!0,u=e}finally{try{o||null==c.return||c.return()}finally{if(s)throw u}}this.notifySyncObserversOfModels(t,a||e.MappingSourceLocalDirtied,i)}},{key:"createItem",value:function(t){var n=e.ContentTypeClassMapping&&e.ContentTypeClassMapping[t.content_type];return n||(n=z),new n(t)}},{key:"createDuplicateItemFromResponseItem",value:function(){var e=k(regeneratorRuntime.mark((function e(t){var n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("function"!=typeof t.setDirty){e.next=3;break}return console.error("Attempting to create conflicted copy of non-response item."),e.abrupt("return",null);case 3:return n=JSON.parse(JSON.stringify(t)),e.next=6,SFJS.crypto.generateUUID();case 6:return n.uuid=e.sent,r=this.createItem(n),e.abrupt("return",r);case 9:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"duplicateItemAndAddAsConflict",value:function(e){return this.duplicateItemWithCustomContentAndAddAsConflict({content:e.content,duplicateOf:e})}},{key:"duplicateItemWithCustomContentAndAddAsConflict",value:function(e){var t=e.content,n=e.duplicateOf,r=this.duplicateItemWithCustomContent({content:t,duplicateOf:n});return this.addDuplicatedItemAsConflict({duplicate:r,duplicateOf:n}),r}},{key:"addDuplicatedItemAsConflict",value:function(e){var t=e.duplicate,n=e.duplicateOf;this.addDuplicatedItem(t,n),t.content.conflict_of=n.uuid}},{key:"duplicateItemWithCustomContent",value:function(e){var t=e.content,n=e.duplicateOf,r=new n.constructor({content:t});return r.created_at=n.created_at,r.content_type||(r.content_type=n.content_type),r}},{key:"duplicateItemAndAdd",value:function(e){var t=this.duplicateItemWithoutAdding(e);return this.addDuplicatedItem(t,e),t}},{key:"duplicateItemWithoutAdding",value:function(e){var t=new e.constructor({content:e.content});return t.created_at=e.created_at,t.content_type||(t.content_type=e.content_type),t}},{key:"addDuplicatedItem",value:function(e,t){this.addItem(e);var n=!0,r=!1,a=void 0;try{for(var i,o=t.referencingObjects[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;s.addItemAsRelationship(e),this.setItemDirty(s,!0)}}catch(e){r=!0,a=e}finally{try{n||null==o.return||o.return()}finally{if(r)throw a}}this.resolveReferencesForItem(e),this.setItemDirty(e,!0)}},{key:"addItem",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.addItems([e],t)}},{key:"addItems",value:function(e){var t=this;e.forEach((function(e){t.itemsHash[e.uuid]||(t.itemsHash[e.uuid]=e,t.items.push(e))}))}},{key:"addItemSyncObserver",value:function(e,t,n){this.addItemSyncObserverWithPriority({id:e,types:t,callback:n,priority:1})}},{key:"addItemSyncObserverWithPriority",value:function(e){var t=e.id,n=e.priority,r=e.types,a=e.callback;Array.isArray(r)||(r=[r]),this.itemSyncObservers.push({id:t,types:r,priority:n,callback:a})}},{key:"removeItemSyncObserver",value:function(e){_.remove(this.itemSyncObservers,_.find(this.itemSyncObservers,{id:e}))}},{key:"getDirtyItems",value:function(){return this.items.filter((function(e){return 1==e.dirty&&!e.dummy&&(!e.errorDecrypting||e.deleted)}))}},{key:"clearDirtyItems",value:function(e){var t=!0,n=!1,r=void 0;try{for(var a,i=e[Symbol.iterator]();!(t=(a=i.next()).done);t=!0)a.value.setDirty(!1)}catch(e){n=!0,r=e}finally{try{t||null==i.return||i.return()}finally{if(n)throw r}}}},{key:"removeAndDirtyAllRelationshipsForItem",value:function(e){if(!e.errorDecrypting){var t=!0,n=!1,r=void 0;try{for(var a,i=e.content.references[Symbol.iterator]();!(t=(a=i.next()).done);t=!0){var o=a.value,s=this.findItem(o.uuid);s&&(e.removeItemAsRelationship(s),s.hasRelationshipWithItem(e)&&(s.removeItemAsRelationship(e),this.setItemDirty(s,!0)))}}catch(e){n=!0,r=e}finally{try{t||null==i.return||i.return()}finally{if(n)throw r}}}var u=!0,l=!1,c=void 0;try{for(var f,d=e.referencingObjects[Symbol.iterator]();!(u=(f=d.next()).done);u=!0){var p=f.value;p.removeItemAsRelationship(e),this.setItemDirty(p,!0)}}catch(e){l=!0,c=e}finally{try{u||null==d.return||d.return()}finally{if(l)throw c}}e.referencingObjects=[]}},{key:"setAllItemsDirty",value:function(){var e=this.allItems;this.setItemsDirty(e,!0)}},{key:"setItemToBeDeleted",value:function(e){e.deleted=!0,e.dummy||this.setItemDirty(e,!0),this.removeAndDirtyAllRelationshipsForItem(e)}},{key:"removeItemLocally",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:_.remove(this.items,{uuid:t.uuid}),delete this.itemsHash[t.uuid],t.isBeingRemovedLocally();case 3:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"allItemsMatchingTypes",value:function(e){return this.allItems.filter((function(t){return(_.includes(e,t.content_type)||_.includes(e,"*"))&&!t.dummy}))}},{key:"invalidItems",value:function(){return this.allItems.filter((function(e){return e.errorDecrypting}))}},{key:"validItemsForContentType",value:function(e){return this.allItems.filter((function(t){return t.content_type==e&&!t.errorDecrypting}))}},{key:"findItem",value:function(e){return this.itemsHash[e]}},{key:"findItems",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=[],r=!0,a=!1,i=void 0;try{for(var o,s=e[Symbol.iterator]();!(r=(o=s.next()).done);r=!0){var u=o.value,l=this.itemsHash[u];(l||t)&&n.push(l)}}catch(e){a=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(a)throw i}}return n}},{key:"itemsMatchingPredicate",value:function(e){return this.itemsMatchingPredicates([e])}},{key:"itemsMatchingPredicates",value:function(e){return this.filterItemsWithPredicates(this.allItems,e)}},{key:"filterItemsWithPredicates",value:function(e,t){return e.filter((function(e){var n=!0,r=!1,a=void 0;try{for(var i,o=t[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;if(!e.satisfiesPredicate(s))return!1}}catch(e){r=!0,a=e}finally{try{n||null==o.return||o.return()}finally{if(r)throw a}}return!0}))}},{key:"importItems",value:function(){var t=k(regeneratorRuntime.mark((function t(n){var r,a,i,o,s,u,l,c,f,d,p,h,m,v,g,y,b,k,w,x,S,_,E,C,I,R,D;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:r=[],a={},i=!0,o=!1,s=void 0,t.prev=5,u=n[Symbol.iterator]();case 7:if(i=(l=u.next()).done){t.next=18;break}if(c=l.value,f=this.findItem(c.uuid)){t.next=13;break}return a[c.uuid]={},t.abrupt("continue",15);case 13:d=this.duplicateItemWithoutAdding(f),a[c.uuid]={frozenValue:d,itemRef:f};case 15:i=!0,t.next=7;break;case 18:t.next=24;break;case 20:t.prev=20,t.t0=t.catch(5),o=!0,s=t.t0;case 24:t.prev=24,t.prev=25,i||null==u.return||u.return();case 27:if(t.prev=27,!o){t.next=30;break}throw s;case 30:return t.finish(27);case 31:return t.finish(24);case 32:p=!0,h=!1,m=void 0,t.prev=35,v=n[Symbol.iterator]();case 37:if(p=(g=v.next()).done){t.next=52;break}if(y=g.value,b=a[y.uuid],k=b.frozenValue,w=b.itemRef,!k||w.errorDecrypting){t.next=47;break}return t.next=43,this.createDuplicateItemFromResponseItem(y);case 43:x=t.sent,y.deleted||k.isItemContentEqualWith(x)||(this.addDuplicatedItemAsConflict({duplicate:x,duplicateOf:w}),r.push(x)),t.next=49;break;case 47:r.push(y),w&&w.errorDecrypting&&(w.errorDecrypting=!1);case 49:p=!0,t.next=37;break;case 52:t.next=58;break;case 54:t.prev=54,t.t1=t.catch(35),h=!0,m=t.t1;case 58:t.prev=58,t.prev=59,p||null==v.return||v.return();case 61:if(t.prev=61,!h){t.next=64;break}throw m;case 64:return t.finish(61);case 65:return t.finish(58);case 66:return t.next=68,this.mapResponseItemsToLocalModels(r,e.MappingSourceFileImport);case 68:for(S=t.sent,_=!0,E=!1,C=void 0,t.prev=72,I=S[Symbol.iterator]();!(_=(R=I.next()).done);_=!0)D=R.value,this.setItemDirty(D,!0,!1),D.deleted=!1;t.next=80;break;case 76:t.prev=76,t.t2=t.catch(72),E=!0,C=t.t2;case 80:t.prev=80,t.prev=81,_||null==I.return||I.return();case 83:if(t.prev=83,!E){t.next=86;break}throw C;case 86:return t.finish(83);case 87:return t.finish(80);case 88:return t.abrupt("return",S);case 89:case"end":return t.stop()}}),t,this,[[5,20,24,32],[25,,27,31],[35,54,58,66],[59,,61,65],[72,76,80,88],[81,,83,87]])})));function n(e){return t.apply(this,arguments)}return n}()},{key:"getAllItemsJSONData",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.getJSONDataForItems(this.allItems,t,n,r));case 1:case"end":return e.stop()}}),e,this)})));function t(t,n,r){return e.apply(this,arguments)}return t}()},{key:"getJSONDataForItems",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r,a){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",Promise.all(t.map((function(e){return new U(e,n,r).paramsForExportFile()}))).then((function(e){if(a&&0==e.length)return null;var t={items:e};return n&&(t.auth_params=r),JSON.stringify(t,null,2)})));case 1:case"end":return e.stop()}}),e)})));function t(t,n,r,a){return e.apply(this,arguments)}return t}()},{key:"computeDataIntegrityHash",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t,n,r,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,t=this.allNondummyItems.sort((function(e,t){return t.updated_at-e.updated_at})),n=t.map((function(e){return e.updatedAtTimestamp()})),r=n.join(","),e.next=6,SFJS.crypto.sha256(r);case 6:return a=e.sent,e.abrupt("return",a);case 10:return e.prev=10,e.t0=e.catch(0),console.error("Error computing data integrity hash",e.t0),e.abrupt("return",null);case 14:case"end":return e.stop()}}),e,this,[[0,10]])})));function t(){return e.apply(this,arguments)}return t}()},{key:"allItems",get:function(){return this.items.slice()}},{key:"allNondummyItems",get:function(){return this.items.filter((function(e){return!e.dummy}))}}]),e}();r.SFModelManager=A;var F=function(){function e(t,n,r){w(this,e),this.modelManager=t,this.syncManager=n,this.singletonManager=r,this.loadPrivileges(),e.CredentialAccountPassword="CredentialAccountPassword",e.CredentialLocalPasscode="CredentialLocalPasscode",e.ActionManageExtensions="ActionManageExtensions",e.ActionManageBackups="ActionManageBackups",e.ActionViewProtectedNotes="ActionViewProtectedNotes",e.ActionManagePrivileges="ActionManagePrivileges",e.ActionManagePasscode="ActionManagePasscode",e.ActionDeleteNote="ActionDeleteNote",e.SessionExpiresAtKey="SessionExpiresAtKey",e.SessionLengthKey="SessionLengthKey",e.SessionLengthNone=0,e.SessionLengthFiveMinutes=300,e.SessionLengthOneHour=3600,e.SessionLengthOneWeek=604800,this.availableActions=[e.ActionViewProtectedNotes,e.ActionDeleteNote,e.ActionManagePasscode,e.ActionManageBackups,e.ActionManageExtensions,e.ActionManagePrivileges],this.availableCredentials=[e.CredentialAccountPassword,e.CredentialLocalPasscode],this.sessionLengths=[e.SessionLengthNone,e.SessionLengthFiveMinutes,e.SessionLengthOneHour,e.SessionLengthOneWeek,e.SessionLengthIndefinite]}return S(e,[{key:"setDelegate",value:function(e){this.delegate=e}},{key:"getAvailableActions",value:function(){return this.availableActions}},{key:"getAvailableCredentials",value:function(){return this.availableCredentials}},{key:"netCredentialsForAction",value:function(){var t=k(regeneratorRuntime.mark((function t(n){var r,a,i,o,s,u,l,c;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getPrivileges();case 2:t.t0=n,r=t.sent.getCredentialsForAction(t.t0),a=[],i=!0,o=!1,s=void 0,t.prev=8,u=r[Symbol.iterator]();case 10:if(i=(l=u.next()).done){t.next=27;break}if((c=l.value)!=e.CredentialAccountPassword){t.next=19;break}return t.next=15,this.delegate.isOffline();case 15:t.sent||a.push(c),t.next=24;break;case 19:if(c!=e.CredentialLocalPasscode){t.next=24;break}return t.next=22,this.delegate.hasLocalPasscode();case 22:t.sent&&a.push(c);case 24:i=!0,t.next=10;break;case 27:t.next=33;break;case 29:t.prev=29,t.t1=t.catch(8),o=!0,s=t.t1;case 33:t.prev=33,t.prev=34,i||null==u.return||u.return();case 36:if(t.prev=36,!o){t.next=39;break}throw s;case 39:return t.finish(36);case 40:return t.finish(33);case 41:return t.abrupt("return",a);case 42:case"end":return t.stop()}}),t,this,[[8,29,33,41],[34,,36,40]])})));function n(e){return t.apply(this,arguments)}return n}()},{key:"loadPrivileges",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.loadPromise){e.next=2;break}return e.abrupt("return",this.loadPromise);case 2:return this.loadPromise=new Promise((function(e,n){var r=W.contentType(),a=new H("content_type","=",r);t.singletonManager.registerSingleton([a],(function(n){t.privileges=n,e(n)}),function(){var n=k(regeneratorRuntime.mark((function n(a){var i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(i=new W({content_type:r}),SFJS.crypto.generateUUIDSync){n.next=4;break}return n.next=4,i.initUUID();case 4:t.modelManager.addItem(i),t.modelManager.setItemDirty(i,!0),t.syncManager.sync(),a(i),e(i);case 9:case"end":return n.stop()}}),n)})));return function(e){return n.apply(this,arguments)}}())})),e.abrupt("return",this.loadPromise);case 4:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"getPrivileges",value:function(){var e=k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.privileges){e.next=4;break}return e.abrupt("return",this.privileges);case 4:return e.abrupt("return",this.loadPrivileges());case 5:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"displayInfoForCredential",value:function(t){var n={};return n[e.CredentialAccountPassword]={label:"Account Password",prompt:"Please enter your account password."},n[e.CredentialLocalPasscode]={label:"Local Passcode",prompt:"Please enter your local passcode."},n[t]}},{key:"displayInfoForAction",value:function(t){var n={};return n[e.ActionManageExtensions]={label:"Manage Extensions"},n[e.ActionManageBackups]={label:"Download/Import Backups"},n[e.ActionViewProtectedNotes]={label:"View Protected Notes"},n[e.ActionManagePrivileges]={label:"Manage Privileges"},n[e.ActionManagePasscode]={label:"Manage Passcode"},n[e.ActionDeleteNote]={label:"Delete Notes"},n[t]}},{key:"getSessionLengthOptions",value:function(){return[{value:e.SessionLengthNone,label:"Don't Remember"},{value:e.SessionLengthFiveMinutes,label:"5 Minutes"},{value:e.SessionLengthOneHour,label:"1 Hour"},{value:e.SessionLengthOneWeek,label:"1 Week"}]}},{key:"setSessionLength",value:function(){var t=k(regeneratorRuntime.mark((function t(n){var r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=n,i=void 0,(i=new Date).setSeconds(i.getSeconds()+a),r=i,t.abrupt("return",Promise.all([this.delegate.saveToStorage(e.SessionExpiresAtKey,JSON.stringify(r)),this.delegate.saveToStorage(e.SessionLengthKey,JSON.stringify(n))]));case 3:case"end":return t.stop()}var a,i}),t,this)})));function n(e){return t.apply(this,arguments)}return n}()},{key:"clearSession",value:function(){var t=k(regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this.setSessionLength(e.SessionLengthNone));case 1:case"end":return t.stop()}}),t,this)})));function n(){return t.apply(this,arguments)}return n}()},{key:"getSelectedSessionLength",value:function(){var t=k(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.delegate.getFromStorage(e.SessionLengthKey);case 2:if(!(n=t.sent)){t.next=7;break}return t.abrupt("return",JSON.parse(n));case 7:return t.abrupt("return",e.SessionLengthNone);case 8:case"end":return t.stop()}}),t,this)})));function n(){return t.apply(this,arguments)}return n}()},{key:"getSessionExpirey",value:function(){var t=k(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.delegate.getFromStorage(e.SessionExpiresAtKey);case 2:if(!(n=t.sent)){t.next=7;break}return t.abrupt("return",new Date(JSON.parse(n)));case 7:return t.abrupt("return",new Date);case 8:case"end":return t.stop()}}),t,this)})));function n(){return t.apply(this,arguments)}return n}()},{key:"actionHasPrivilegesConfigured",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.netCredentialsForAction(t);case 2:return e.t0=e.sent.length,e.abrupt("return",e.t0>0);case 4:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"actionRequiresPrivilege",value:function(){var e=k(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getSessionExpirey();case 2:if(!(e.sent>new Date)){e.next=5;break}return e.abrupt("return",!1);case 5:return e.next=7,this.netCredentialsForAction(t);case 7:return n=e.sent,e.abrupt("return",n.length>0);case 9:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"savePrivileges",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getPrivileges();case 2:t=e.sent,this.modelManager.setItemDirty(t,!0),this.syncManager.sync();case 5:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"authenticateAction",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n){var r,a,i,o,s,u,l,c,f;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.netCredentialsForAction(t);case 2:r=e.sent,a=[],i=[],o=!0,s=!1,u=void 0,e.prev=7,l=r[Symbol.iterator]();case 9:if(o=(c=l.next()).done){e.next=18;break}return f=c.value,e.next=13,this._verifyAuthenticationParameters(f,n[f]);case 13:e.sent?a.push(f):i.push(f);case 15:o=!0,e.next=9;break;case 18:e.next=24;break;case 20:e.prev=20,e.t0=e.catch(7),s=!0,u=e.t0;case 24:e.prev=24,e.prev=25,o||null==l.return||l.return();case 27:if(e.prev=27,!s){e.next=30;break}throw u;case 30:return e.finish(27);case 31:return e.finish(24);case 32:return e.abrupt("return",{success:0==i.length,successfulCredentials:a,failedCredentials:i});case 33:case"end":return e.stop()}}),e,this,[[7,20,24,32],[25,,27,31]])})));function t(t,n){return e.apply(this,arguments)}return t}()},{key:"_verifyAuthenticationParameters",value:function(){var t=k(regeneratorRuntime.mark((function t(n,r){var a,i,o=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(a=function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",o.delegate.verifyAccountPassword(t));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),i=function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",o.delegate.verifyLocalPasscode(t));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),n!=e.CredentialAccountPassword){t.next=6;break}return t.abrupt("return",a(r));case 6:if(n!=e.CredentialLocalPasscode){t.next=8;break}return t.abrupt("return",i(r));case 8:case"end":return t.stop()}}),t)})));function n(e,n){return t.apply(this,arguments)}return n}()}]),e}();r.SFPrivilegesManager=F;var O="sessionHistory_persist",T="sessionHistory_revisions",M="sessionHistory_autoOptimize",P=function(){function e(t,n,r,a,i){var o=this;w(this,e),this.modelManager=t,this.storageManager=n,this.$timeout=i||setTimeout.bind(window),this.keyRequestHandler=r,this.loadFromDisk().then((function(){o.modelManager.addItemSyncObserver("session-history",a,(function(e,t,n,r,a){if(r!==A.MappingSourceLocalDirtied){var i=!0,s=!1,u=void 0;try{for(var l,c=e[Symbol.iterator]();!(i=(l=c.next()).done);i=!0){var f=l.value;try{o.addHistoryEntryForItem(f)}catch(e){console.log("Caught exception while trying to add item history entry",e)}}}catch(e){s=!0,u=e}finally{try{i||null==c.return||c.return()}finally{if(s)throw u}}}}))}))}return S(e,[{key:"encryptionParams",value:function(){var e=k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.keyRequestHandler());case 1:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"addHistoryEntryForItem",value:function(e){var t=this,n={uuid:e.uuid,content_type:e.content_type,updated_at:e.updated_at,content:e.getContentCopy()},r=this.historySession.addEntryForItem(n);this.autoOptimize&&this.historySession.optimizeHistoryForItem(e),r&&this.diskEnabled&&(this.diskTimeout&&(this.$timeout.hasOwnProperty("cancel")?this.$timeout.cancel(this.diskTimeout):clearTimeout(this.diskTimeout)),this.diskTimeout=this.$timeout((function(){t.saveToDisk()}),2e3))}},{key:"historyForItem",value:function(e){return this.historySession.historyForItem(e)}},{key:"clearHistoryForItem",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.historySession.clearItemHistory(t),e.abrupt("return",this.saveToDisk());case 2:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"clearAllHistory",value:function(){var e=k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.historySession.clearAllHistory(),e.abrupt("return",this.storageManager.removeItem(T));case 2:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"toggleDiskSaving",value:function(){var e=k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.diskEnabled=!this.diskEnabled,!this.diskEnabled){e.next=6;break}this.storageManager.setItem(O,JSON.stringify(!0)),this.saveToDisk(),e.next=8;break;case 6:return this.storageManager.setItem(O,JSON.stringify(!1)),e.abrupt("return",this.storageManager.removeItem(T));case 8:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"saveToDisk",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t,n=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.diskEnabled){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,this.encryptionParams();case 4:t=e.sent,new U(this.historySession,t.keys,t.auth_params).paramsForSync().then((function(e){n.storageManager.setItem(T,JSON.stringify(e))}));case 7:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"loadFromDisk",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t,n,r,a,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.storageManager.getItem(O);case 2:return(t=e.sent)&&(this.diskEnabled=JSON.parse(t)),e.next=6,this.storageManager.getItem(T);case 6:if(!(n=e.sent)){e.next=18;break}return n=JSON.parse(n),e.next=11,this.encryptionParams();case 11:return r=e.sent,e.next=14,SFJS.itemTransformer.decryptItem(n,r.keys);case 14:a=new K(n),this.historySession=a,e.next=19;break;case 18:this.historySession=new K;case 19:return e.next=21,this.storageManager.getItem(M);case 21:i=e.sent,this.autoOptimize=!i||JSON.parse(i);case 23:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"toggleAutoOptimize",value:function(){var e=k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.autoOptimize=!this.autoOptimize,this.autoOptimize?this.storageManager.setItem(M,JSON.stringify(!0)):this.storageManager.setItem(M,JSON.stringify(!1));case 2:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()}]),e}();r.SFSessionHistoryManager=P;var N=function(){function e(t,n){var r=this;w(this,e),this.syncManager=n,this.modelManager=t,this.singletonHandlers=[],t.addItemSyncObserverWithPriority({id:"sf-singleton-manager",types:"*",priority:-1,callback:function(e,n,a,i,o){i!==A.MappingSourceLocalDirtied&&r.resolveSingletons(t.allNondummyItems,null,!0)}}),n.addEventHandler((function(e,n){if("local-data-loaded"==e)r.resolveSingletons(t.allNondummyItems,null,!0),r.initialDataLoaded=!0;else if("sync:completed"==e){if(!r.initialDataLoaded)return;r.resolveSingletons(n.retrievedItems,n.savedItems)}})),t.addModelUuidChangeObserver("singleton-manager",(function(e,t){var n=!0,a=!1,i=void 0;try{for(var o,s=r.singletonHandlers[Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var u=o.value;u.singleton&&H.ItemSatisfiesPredicates(t,u.predicates)&&(u.singleton=null,r.resolveSingletons([t]))}}catch(e){a=!0,i=e}finally{try{n||null==s.return||s.return()}finally{if(a)throw i}}}))}return S(e,[{key:"registerSingleton",value:function(e,t,n){this.singletonHandlers.push({predicates:e,resolutionCallback:t,createBlock:n})}},{key:"resolveSingletons",value:function(e,t,n){var r=this;e=e||[],t=t||[];var a=!0,i=!1,o=void 0;try{for(var s,u=function(){var a=s.value,i=a.predicates.slice(),o=r.modelManager.filterItemsWithPredicates(e,i),u=function(){a.createBlock&&(a.pendingCreateBlockCallback=!0,a.createBlock((function(e){a.singleton=e,a.pendingCreateBlockCallback=!1,a.resolutionCallback&&a.resolutionCallback(e)})))},l=r.modelManager.filterItemsWithPredicates(t,i).length;if(o.length>0||l>0){var c=r.modelManager.itemsMatchingPredicates(i);if(c.length>=2){var f=c.sort((function(e,t){return e.errorDecrypting?1:t.errorDecrypting||e.created_at=this.MaxDiscordanceBeforeOutOfSync&&(this.outOfSync||(this.outOfSync=!0,this.notifyEvent("enter-out-of-sync"))),e.abrupt("return",!1);case 13:return this.outOfSync&&(this.outOfSync=!1,this.notifyEvent("exit-out-of-sync")),this.syncDiscordance=0,e.abrupt("return",!0);case 16:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"isOutOfSync",value:function(){return this.outOfSync}},{key:"getServerURL",value:function(){var e=k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.storageManager.getItem("server");case 2:if(e.t0=e.sent,e.t0){e.next=5;break}e.t0=window._default_sf_server;case 5:return e.abrupt("return",e.t0);case 6:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"getSyncURL",value:function(){var e=k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getServerURL();case 2:return e.t0=e.sent,e.abrupt("return",e.t0+"/items/sync");case 4:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"registerSyncStatusObserver",value:function(e){var t={key:new Date,callback:e};return this.syncStatusObservers.push(t),t}},{key:"removeSyncStatusObserver",value:function(e){_.pull(this.syncStatusObservers,e)}},{key:"syncStatusDidChange",value:function(){var e=this;this.syncStatusObservers.forEach((function(t){t.callback(e.syncStatus)}))}},{key:"addEventHandler",value:function(e){return this.eventHandlers.push(e),e}},{key:"removeEventHandler",value:function(e){_.pull(this.eventHandlers,e)}},{key:"notifyEvent",value:function(e,t){var n=!0,r=!1,a=void 0;try{for(var i,o=this.eventHandlers[Symbol.iterator]();!(n=(i=o.next()).done);n=!0)(0,i.value)(e,t||{})}catch(e){r=!0,a=e}finally{try{n||null==o.return||o.return()}finally{if(r)throw a}}}},{key:"setKeyRequestHandler",value:function(e){this.keyRequestHandler=e}},{key:"getActiveKeyInfo",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.keyRequestHandler(t));case 1:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"initialDataLoaded",value:function(){return!0===this._initialDataLoaded}},{key:"_sortLocalItems",value:function(e){var t=this;return e.sort((function(e,n){var r=new Date(n.updated_at)-new Date(e.updated_at),a=t.contentTypeLoadPriority,i=0,o=0;return a&&(i=a.indexOf(e.content_type),o=a.indexOf(n.content_type),-1==i&&(i=a.length),-1==o&&(o=a.length)),i==o?r:i0&&void 0!==u[0]?u[0]:{},r=n.incrementalCallback,a=n.batchSize,!(i=n.options)||!i.simulateHighLatency){t.next=5;break}return o=i.simulatedLatency||1e3,t.next=5,this._awaitSleep(o);case 5:if(!this.loadLocalDataPromise){t.next=7;break}return t.abrupt("return",this.loadLocalDataPromise);case 7:return a||(a=100),this.loadLocalDataPromise=this.storageManager.getAllModels().then((function(t){var n=(t=(t=s._sortLocalItems(t)).filter((function(e){var t=s.modelManager.findItem(e.uuid);return!t||new Date(e.dirtiedDate)>t.dirtiedDate}))).length,i=0,o=[],u=function(){var l=k(regeneratorRuntime.mark((function l(){var c,f;return regeneratorRuntime.wrap((function(l){for(;;)switch(l.prev=l.next){case 0:return c=t.slice(i,i+a),l.next=3,s.handleItemsResponse(c,null,A.MappingSourceLocalRetrieved,e.KeyRequestLoadLocal);case 3:if(f=l.sent,o.push(f),!((i+=c.length)0)){t.next=23;break}return t.next=23,Promise.all(u.map(function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.storageManager.deleteModel(t));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 23:return t.next=25,a.getActiveKeyInfo(e.KeyRequestSaveLocal);case 25:if(m=t.sent,!(s.length>0)){t.next=33;break}return t.next=29,Promise.all(s.map(function(){var e=k(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=new U(t,m.keys,m.auth_params),e.next=3,n.paramsForLocalStorage();case 3:return n=e.sent,r&&delete n.dirty,e.abrupt("return",n);case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}())).catch((function(e){return o(e)}));case 29:return v=t.sent,t.next=32,a.storageManager.saveModels(v).catch((function(e){console.error("Error writing items",e),a.syncStatus.localError=e,a.syncStatusDidChange(),o()}));case 32:a.syncStatus.localError&&(a.syncStatus.localError=null,a.syncStatusDidChange());case 33:i();case 34:case"end":return t.stop()}}),t,null,[[4,8,12,20],[13,,15,19]])})));return function(e,n){return t.apply(this,arguments)}}()));case 3:case"end":return t.stop()}}),t)})));function n(e,n){return t.apply(this,arguments)}return n}()},{key:"syncOffline",value:function(){var e=k(regeneratorRuntime.mark((function e(t){var n,r,a,i,o,s=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(n=!0,r=!1,a=void 0,e.prev=3,i=t[Symbol.iterator]();!(n=(o=i.next()).done);n=!0)o.value.updated_at=new Date;e.next=11;break;case 7:e.prev=7,e.t0=e.catch(3),r=!0,a=e.t0;case 11:e.prev=11,e.prev=12,n||null==i.return||i.return();case 14:if(e.prev=14,!r){e.next=17;break}throw a;case 17:return e.finish(14);case 18:return e.finish(11);case 19:return e.abrupt("return",this.writeItemsToLocalStorage(t,!0).then((function(e){var n=!0,r=!1,a=void 0;try{for(var i,o=t[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var u=i.value;u.deleted&&s.modelManager.removeItemLocally(u)}}catch(e){r=!0,a=e}finally{try{n||null==o.return||o.return()}finally{if(r)throw a}}return s.modelManager.clearDirtyItems(t),s.modelManager.didSyncModelsOffline(t),s.notifyEvent("sync:completed",{savedItems:t}),{saved_items:t}})));case 20:case"end":return e.stop()}}),e,this,[[3,7,11,19],[12,,14,18]])})));function t(t){return e.apply(this,arguments)}return t}()},{key:"markAllItemsDirtyAndSaveOffline",value:function(){var e=k(regeneratorRuntime.mark((function e(t){var n,r,a,i,o,s,u,l,c,f,d,p,h;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t){e.next=28;break}n=this.modelManager.allNondummyItems.filter((function(e){return!e.errorDecrypting})).slice(),r=!0,a=!1,i=void 0,e.prev=5,o=n[Symbol.iterator]();case 7:if(r=(s=o.next()).done){e.next=14;break}return u=s.value,e.next=11,this.modelManager.alternateUUIDForItem(u);case 11:r=!0,e.next=7;break;case 14:e.next=20;break;case 16:e.prev=16,e.t0=e.catch(5),a=!0,i=e.t0;case 20:e.prev=20,e.prev=21,r||null==o.return||o.return();case 23:if(e.prev=23,!a){e.next=26;break}throw i;case 26:return e.finish(23);case 27:return e.finish(20);case 28:for(l=this.modelManager.allNondummyItems,c=!0,f=!1,d=void 0,e.prev=32,p=l[Symbol.iterator]();!(c=(h=p.next()).done);c=!0)h.value.setDirty(!0);e.next=40;break;case 36:e.prev=36,e.t1=e.catch(32),f=!0,d=e.t1;case 40:e.prev=40,e.prev=41,c||null==p.return||p.return();case 43:if(e.prev=43,!f){e.next=46;break}throw d;case 46:return e.finish(43);case 47:return e.finish(40);case 48:return e.abrupt("return",this.writeItemsToLocalStorage(l,!1));case 49:case"end":return e.stop()}}),e,this,[[5,16,20,28],[21,,23,27],[32,36,40,48],[41,,43,47]])})));function t(t){return e.apply(this,arguments)}return t}()},{key:"setSyncToken",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this._syncToken=t,e.next=3,this.storageManager.setItem("syncToken",t);case 3:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"getSyncToken",value:function(){var e=k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._syncToken){e.next=4;break}return e.next=3,this.storageManager.getItem("syncToken");case 3:this._syncToken=e.sent;case 4:return e.abrupt("return",this._syncToken);case 5:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"setCursorToken",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._cursorToken=t,!t){e.next=6;break}return e.next=4,this.storageManager.setItem("cursorToken",t);case 4:e.next=8;break;case 6:return e.next=8,this.storageManager.removeItem("cursorToken");case 8:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"getCursorToken",value:function(){var e=k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._cursorToken){e.next=4;break}return e.next=3,this.storageManager.getItem("cursorToken");case 3:this._cursorToken=e.sent;case 4:return e.abrupt("return",this._cursorToken);case 5:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"clearQueuedCallbacks",value:function(){this._queuedCallbacks=[]}},{key:"callQueuedCallbacks",value:function(e){var t=this.queuedCallbacks;if(t.length){var n=!0,r=!1,a=void 0;try{for(var i,o=t[Symbol.iterator]();!(n=(i=o.next()).done);n=!0)(0,i.value)(e)}catch(e){r=!0,a=e}finally{try{n||null==o.return||o.return()}finally{if(r)throw a}}this.clearQueuedCallbacks()}}},{key:"beginCheckingIfSyncIsTakingTooLong",value:function(){this.syncStatus.checker&&this.stopCheckingIfSyncIsTakingTooLong(),this.syncStatus.checker=this.$interval(function(){(new Date-this.syncStatus.syncStart)/1e3>5&&(this.notifyEvent("sync:taking-too-long"),this.stopCheckingIfSyncIsTakingTooLong())}.bind(this),500)}},{key:"stopCheckingIfSyncIsTakingTooLong",value:function(){this.$interval.hasOwnProperty("cancel")?this.$interval.cancel(this.syncStatus.checker):clearInterval(this.syncStatus.checker),this.syncStatus.checker=null}},{key:"lockSyncing",value:function(){this.syncLocked=!0}},{key:"unlockSyncing",value:function(){this.syncLocked=!1}},{key:"sync",value:function(){var t=k(regeneratorRuntime.mark((function t(){var n,r=this,a=arguments;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=a.length>0&&void 0!==a[0]?a[0]:{},!this.syncLocked){t.next=4;break}return console.log("Sync Locked, Returning;"),t.abrupt("return");case 4:return t.abrupt("return",new Promise(function(){var t=k(regeneratorRuntime.mark((function t(a,i){var o,s,u,l,c,f,d,p,h,m,v,g,y,b;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n||(n={}),o=r.modelManager.getDirtyItems(),s=o.filter((function(e){return!r.lastDirtyItemsSave||e.dirtiedDate>r.lastDirtyItemsSave})),t.next=5,r.getActiveKeyInfo(e.KeyRequestLoadSaveAccount);case 5:if(u=t.sent,l=r.syncStatus.syncOpInProgress,c=r.initialDataLoaded(),!l&&c){t.next=16;break}return r.performSyncAgainOnCompletion=!0,r.lastDirtyItemsSave=new Date,t.next=13,r.writeItemsToLocalStorage(s,!1);case 13:return l&&(r.queuedCallbacks.push(a),r.loggingEnabled&&console.warn("Attempting to sync while existing sync is in progress.")),c||(r.loggingEnabled&&console.warn("(1) Attempting to perform online sync before local data has loaded"),a()),t.abrupt("return");case 16:if(r.syncStatus.syncOpInProgress=!0,!u.offline){t.next=19;break}return t.abrupt("return",r.syncOffline(o).then((function(e){r.syncStatus.syncOpInProgress=!1,a(e)})).catch((function(e){r.notifyEvent("sync-exception",e)})));case 19:if(r.initialDataLoaded()){t.next=22;break}return console.error("Attempting to perform online sync before local data has loaded"),t.abrupt("return");case 22:return r.loggingEnabled&&console.log("Syncing online user."),f=r.syncStatus.needsMoreSync,r.syncStatus.syncStart=new Date,r.beginCheckingIfSyncIsTakingTooLong(),d=r.PerSyncItemUploadLimit,(p=o.slice(0,d)).lengthr.syncStatus.total&&(r.syncStatus.total=r.syncStatus.current),r.syncStatusDidChange(),t.next=34,r.writeItemsToLocalStorage(s,!1);case 34:return r.lastDirtyItemsSave=new Date,n.onPreSyncSave&&n.onPreSyncSave(),r.allRetreivedItems||(r.allRetreivedItems=[]),r.allSavedItems||(r.allSavedItems=[]),(h={}).limit=r.ServerItemDownloadLimit,n.performIntegrityCheck&&(h.compute_integrity=!0),t.prev=41,t.next=44,Promise.all(p.map((function(e){var t=new U(e,u.keys,u.auth_params);return t.additionalFields=n.additionalFields,t.paramsForSync()}))).then((function(e){h.items=e}));case 44:t.next=49;break;case 46:t.prev=46,t.t0=t.catch(41),r.notifyEvent("sync-exception",t.t0);case 49:for(m=!0,v=!1,g=void 0,t.prev=52,y=p[Symbol.iterator]();!(m=(b=y.next()).done);m=!0)b.value.dirtyCount=0;t.next=60;break;case 56:t.prev=56,t.t1=t.catch(52),v=!0,g=t.t1;case 60:t.prev=60,t.prev=61,m||null==y.return||y.return();case 63:if(t.prev=63,!v){t.next=66;break}throw g;case 66:return t.finish(63);case 67:return t.finish(60);case 68:return t.next=70,r.getSyncToken();case 70:return h.sync_token=t.sent,t.next=73,r.getCursorToken();case 73:return h.cursor_token=t.sent,h.api=R.getApiVersion(),r.loggingEnabled&&console.log("Syncing with params",h),t.prev=76,t.t2=r.httpManager,t.next=80,r.getSyncURL();case 80:t.t3=t.sent,t.t4=h,t.t5=function(e){r.handleSyncSuccess(p,e,n).then((function(){a(e)})).catch((function(e){console.log("Caught sync success exception:",e),r.handleSyncError(e,null,o).then((function(t){r.notifyEvent("sync-exception",e),a(t)}))}))},t.t6=function(e,t){r.handleSyncError(e,t,o).then((function(e){a(e)}))},t.t2.postAuthenticatedAbsolute.call(t.t2,t.t3,t.t4,t.t5,t.t6),t.next=90;break;case 87:t.prev=87,t.t7=t.catch(76),console.log("Sync exception caught:",t.t7);case 90:case"end":return t.stop()}}),t,null,[[41,46],[52,56,60,68],[61,,63,67],[76,87]])})));return function(e,n){return t.apply(this,arguments)}}()));case 5:case"end":return t.stop()}}),t,this)})));function n(){return t.apply(this,arguments)}return n}()},{key:"_awaitSleep",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return console.warn("Simulating high latency sync request",t),e.abrupt("return",new Promise((function(e,n){setTimeout((function(){e()}),t)})));case 2:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"handleSyncSuccess",value:function(){var t=k(regeneratorRuntime.mark((function t(n,r,a){var i,o,s,u,l,c,f,d,p,h,m,v,g,y,b,k,w=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!a.simulateHighLatency){t.next=4;break}return i=a.simulatedLatency||1e3,t.next=4,this._awaitSleep(i);case 4:for(this.syncStatus.error=null,this.loggingEnabled&&console.log("Sync response",r),o=this.allSavedItems.map((function(e){return e.uuid})),s=r.saved_items.map((function(e){return e.uuid})),r.retrieved_items=r.retrieved_items.filter((function(e){var t=o.includes(e.uuid),n=s.includes(e.uuid);if(t||n)return!1;var r=w.modelManager.findItem(e.uuid);return!r||!r.dirty})),u=[],l=!0,c=!1,f=void 0,t.prev=13,d=n[Symbol.iterator]();!(l=(p=d.next()).done);l=!0)0==(h=p.value).dirtyCount&&u.push(h);t.next=21;break;case 17:t.prev=17,t.t0=t.catch(13),c=!0,f=t.t0;case 21:t.prev=21,t.prev=22,l||null==d.return||d.return();case 24:if(t.prev=24,!c){t.next=27;break}throw f;case 27:return t.finish(24);case 28:return t.finish(21);case 29:return this.modelManager.clearDirtyItems(u),t.next=32,this.handleItemsResponse(r.retrieved_items,null,A.MappingSourceRemoteRetrieved,e.KeyRequestLoadSaveAccount);case 32:return m=t.sent,this.allRetreivedItems=this.allRetreivedItems.concat(m),this.syncStatus.retrievedCount=this.allRetreivedItems.length,v=["content","auth_hash"],t.next=38,this.handleItemsResponse(r.saved_items,v,A.MappingSourceRemoteSaved,e.KeyRequestLoadSaveAccount);case 38:return g=t.sent,this.allSavedItems=this.allSavedItems.concat(g),y=r.unsaved,t.next=43,this.deprecated_handleUnsavedItemsResponse(y);case 43:return t.next=45,this.handleConflictsResponse(r.conflicts);case 45:if(b=t.sent,k=b&&b.length>0,!b){t.next=50;break}return t.next=50,this.writeItemsToLocalStorage(b,!1);case 50:return t.next=52,this.writeItemsToLocalStorage(g,!1);case 52:return t.next=54,this.writeItemsToLocalStorage(m,!1);case 54:if(!r.integrity_hash||r.cursor_token){t.next=59;break}return t.next=57,this.handleServerIntegrityHash(r.integrity_hash);case 57:t.sent||this.syncDiscordance=this.majorDataChangeThreshold||g.length>=this.majorDataChangeThreshold||y&&y.length>=this.majorDataChangeThreshold||b&&b.length>=this.majorDataChangeThreshold)&&this.notifyEvent("major-data-change"),this.callQueuedCallbacks(r),this.notifyEvent("sync:completed",{retrievedItems:this.allRetreivedItems,savedItems:this.allSavedItems}),this.allRetreivedItems=[],this.allSavedItems=[],this.performSyncAgainOnCompletion&&(this.performSyncAgainOnCompletion=!1,setTimeout((function(){w.sync(a)}),10)),t.abrupt("return",r);case 88:case"end":return t.stop()}}),t,this,[[13,17,21,29],[22,,24,28]])})));function n(e,n,r){return t.apply(this,arguments)}return n}()},{key:"handleSyncError",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return console.log("Sync error: ",t),401==n&&this.notifyEvent("sync-session-invalid"),t?"string"==typeof t&&(t={error:{message:t}}):t={error:{message:"Could not connect to server."}},this.syncStatus.syncOpInProgress=!1,this.syncStatus.error=t.error,this.syncStatusDidChange(),this.writeItemsToLocalStorage(r,!1),this.modelManager.didSyncModelsOffline(r),this.stopCheckingIfSyncIsTakingTooLong(),this.notifyEvent("sync:error",t.error),this.callQueuedCallbacks({error:"Sync error"}),e.abrupt("return",t);case 12:case"end":return e.stop()}}),e,this)})));function t(t,n,r){return e.apply(this,arguments)}return t}()},{key:"handleItemsResponse",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r,a){var i,o,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getActiveKeyInfo(a);case 2:return i=e.sent.keys,e.next=5,SFJS.itemTransformer.decryptMultipleItems(t,i);case 5:return e.next=7,this.modelManager.mapResponseItemsToLocalModelsOmittingFields(t,n,r);case 7:return o=e.sent,(s=o.filter((function(e){var t=e.errorDecryptingValueChanged;return e.errorDecryptingValueChanged=!1,t}))).length>0&&this.writeItemsToLocalStorage(s,!1),e.abrupt("return",o);case 11:case"end":return e.stop()}}),e,this)})));function t(t,n,r,a){return e.apply(this,arguments)}return t}()},{key:"refreshErroredItems",value:function(){var t=k(regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!((n=this.modelManager.allNondummyItems.filter((function(e){return 1==e.errorDecrypting}))).length>0)){t.next=3;break}return t.abrupt("return",this.handleItemsResponse(n,null,A.MappingSourceLocalRetrieved,e.KeyRequestLoadSaveAccount));case 3:case"end":return t.stop()}}),t,this)})));function n(){return t.apply(this,arguments)}return n}()},{key:"handleConflictsResponse",value:function(){var t=k(regeneratorRuntime.mark((function t(n){var r,a,i,o,s,u,l,c,f,d,p,h,m,v,g,y,b,k,w,x,S,_,E,C,I,R,D,F,O,T,M,P;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n&&0!=n.length){t.next=2;break}return t.abrupt("return");case 2:this.loggingEnabled&&console.log("Handle Conflicted Items:",n),r={},a=!0,i=!1,o=void 0,t.prev=7,s=n[Symbol.iterator]();case 9:if(a=(u=s.next()).done){t.next=21;break}if(l=u.value,c=l.server_item||l.unsaved_item,f=this.modelManager.findItem(c.uuid)){t.next=16;break}return r[c.uuid]={},t.abrupt("continue",18);case 16:d=f.getContentCopy(),r[c.uuid]={frozenContent:d,itemRef:f};case 18:a=!0,t.next=9;break;case 21:t.next=27;break;case 23:t.prev=23,t.t0=t.catch(7),i=!0,o=t.t0;case 27:t.prev=27,t.prev=28,a||null==s.return||s.return();case 30:if(t.prev=30,!i){t.next=33;break}throw o;case 33:return t.finish(30);case 34:return t.finish(27);case 35:p=[],h=!0,m=!1,v=void 0,t.prev=39,g=n[Symbol.iterator]();case 41:if(h=(y=g.next()).done){t.next=91;break}return b=y.value,k=b.server_item||b.unsaved_item,t.t1=SFJS.itemTransformer,t.t2=[k],t.next=48,this.getActiveKeyInfo(e.KeyRequestLoadSaveAccount);case 48:return t.t3=t.sent.keys,t.next=51,t.t1.decryptMultipleItems.call(t.t1,t.t2,t.t3);case 51:if(w=r[k.uuid],x=w.frozenContent,S=w.itemRef){t.next=54;break}return t.abrupt("continue",88);case 54:if(p.push(S),"uuid_conflict"!==b.type){t.next=62;break}return t.next=58,this.modelManager.alternateUUIDForItem(S);case 58:_=t.sent,p.push(_),t.next=88;break;case 62:if("sync_conflict"!==b.type){t.next=86;break}return t.next=65,this.modelManager.createDuplicateItemFromResponseItem(k);case 65:if(E=t.sent,C=this.modelManager.duplicateItemWithCustomContent({content:x,duplicateOf:S}),I=!C.isItemContentEqualWith(E),R=!S.isItemContentEqualWith(E),D=!1,F=!1,O=!1,T=!1,k.deleted||S.deleted?T=!0:I?(M=20,(new Date-S.client_updated_at)/1e30&&void 0!==arguments[0]?arguments[0]:{};return new Promise(function(){var r=k(regeneratorRuntime.mark((function r(a,i){var o;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return o={limit:n.limit||500,sync_token:n.syncToken,cursor_token:n.cursorToken,content_type:n.contentType,event:n.event,api:R.getApiVersion()},r.prev=1,r.t0=t.httpManager,r.next=5,t.getSyncURL();case 5:r.t1=r.sent,r.t2=o,r.t3=function(){var r=k(regeneratorRuntime.mark((function r(i){var o,s;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return n.retrievedItems||(n.retrievedItems=[]),o=i.retrieved_items,r.next=4,t.getActiveKeyInfo(e.KeyRequestLoadSaveAccount);case 4:return s=r.sent.keys,r.next=7,SFJS.itemTransformer.decryptMultipleItems(o,s);case 7:n.retrievedItems=n.retrievedItems.concat(o.map((function(e){return t.modelManager.createItem(e)}))),n.syncToken=i.sync_token,n.cursorToken=i.cursor_token,n.cursorToken?t.stateless_downloadAllItems(n).then(a):a(n.retrievedItems);case 11:case"end":return r.stop()}}),r)})));return function(e){return r.apply(this,arguments)}}(),r.t4=function(e,t){i(e)},r.t0.postAuthenticatedAbsolute.call(r.t0,r.t1,r.t2,r.t3,r.t4),r.next=16;break;case 12:r.prev=12,r.t5=r.catch(1),console.log("Download all items exception caught:",r.t5),i(r.t5);case 16:case"end":return r.stop()}}),r,null,[[1,12]])})));return function(e,t){return r.apply(this,arguments)}}())}},{key:"resolveOutOfSync",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.stateless_downloadAllItems({event:"resolve-out-of-sync"}).then(function(){var e=k(regeneratorRuntime.mark((function e(n){var r,a,i,o,s,u,l,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=[],a=!0,i=!1,o=void 0,e.prev=4,s=n[Symbol.iterator]();case 6:if(a=(u=s.next()).done){e.next=18;break}if(l=u.value,!(c=t.modelManager.findItem(l.uuid))){e.next=14;break}if(l.isItemContentEqualWith(c)){e.next=14;break}return e.next=14,t.modelManager.duplicateItemAndAddAsConflict(c);case 14:r.push(l);case 15:a=!0,e.next=6;break;case 18:e.next=24;break;case 20:e.prev=20,e.t0=e.catch(4),i=!0,o=e.t0;case 24:e.prev=24,e.prev=25,a||null==s.return||s.return();case 27:if(e.prev=27,!i){e.next=30;break}throw o;case 30:return e.finish(27);case 31:return e.finish(24);case 32:return e.next=34,t.modelManager.mapResponseItemsToLocalModelsWithOptions({items:r,source:A.MappingSourceRemoteRetrieved});case 34:return e.next=36,t.writeItemsToLocalStorage(t.modelManager.allNondummyItems);case 36:return e.abrupt("return",t.sync({performIntegrityCheck:!0}));case 37:case"end":return e.stop()}}),e,null,[[4,20,24,32],[25,,27,31]])})));return function(t){return e.apply(this,arguments)}}()));case 1:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"handleSignout",value:function(){var e=k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this.outOfSync=!1,this.loadLocalDataPromise=null,this.performSyncAgainOnCompletion=!1,this.syncStatus.syncOpInProgress=!1,this._queuedCallbacks=[],this.syncStatus={},e.abrupt("return",this.clearSyncToken());case 7:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"clearSyncToken",value:function(){var e=k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this._syncToken=null,this._cursorToken=null,e.abrupt("return",this.storageManager.removeItem("syncToken"));case 3:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"__setLocalDataNotLoaded",value:function(){this.loadLocalDataPromise=null,this._initialDataLoaded=!1}},{key:"queuedCallbacks",get:function(){return this._queuedCallbacks||(this._queuedCallbacks=[]),this._queuedCallbacks}}]),e}();r.SFSyncManager=B;var z=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};w(this,e),this.content={},this.referencingObjects=[],this.updateFromJSON(t),this.uuid||"undefined"!=typeof SFJS&&SFJS.crypto.generateUUIDSync&&(this.uuid=SFJS.crypto.generateUUIDSync()),"object"!==y(this.content)||this.content.references||(this.content.references=[])}return S(e,[{key:"initUUID",value:function(){var e=k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.uuid){e.next=4;break}return e.next=3,SFJS.crypto.generateUUID();case 3:this.uuid=e.sent;case 4:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"updateFromJSON",value:function(t){if(t){this.deleted=t.deleted,this.uuid=t.uuid,this.enc_item_key=t.enc_item_key,this.auth_hash=t.auth_hash,this.auth_params=t.auth_params;for(var n=0,r=["errorDecrypting","dirty","dirtyCount","dirtiedDate","dummy"];n"==n.operator?m>h:"<="==n.operator?m<=h:">="==n.operator?m>=h:"startsWith"==n.operator?m.startsWith(h):"in"==n.operator?-1!=h.indexOf(m):"includes"==n.operator?this.resolveIncludesPredicate(m,h):"matches"==n.operator&&new RegExp(h).test(m)}},{key:"resolveIncludesPredicate",value:function(t,n){if("string"==typeof n)return t.includes(n);var r;r=Array.isArray(n)?e.fromArray(n):n;var a=!0,i=!1,o=void 0;try{for(var s,u=t[Symbol.iterator]();!(a=(s=u.next()).done);a=!0){var l=s.value;if(this.ObjectSatisfiesPredicate(l,r))return!0}}catch(e){i=!0,o=e}finally{try{a||null==u.return||u.return()}finally{if(i)throw o}}return!1}},{key:"ItemSatisfiesPredicate",value:function(t,n){return Array.isArray(n)&&(n=e.fromArray(n)),this.ObjectSatisfiesPredicate(t,n)}},{key:"ItemSatisfiesPredicates",value:function(e,t){var n=!0,r=!1,a=void 0;try{for(var i,o=t[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value;if(!this.ItemSatisfiesPredicate(e,s))return!1}}catch(e){r=!0,a=e}finally{try{n||null==o.return||o.return()}finally{if(r)throw a}}return!0}},{key:"DateFromString",value:function(e){var t=e.split("."),n=t[1],r=new Date,a=parseInt(t[0]);return"days"==n?r.setDate(r.getDate()-a):"hours"==n&&r.setHours(r.getHours()-a),r}},{key:"IsRecursiveOperator",value:function(e){return["and","or"].includes(e)}}]),e}();r.SFPredicate=H;var W=function(e){function t(e){var n;return w(this,t),(n=l(this,f(t).call(this,e))).content.desktopPrivileges||(n.content.desktopPrivileges={}),n}return d(t,e),S(t,null,[{key:"contentType",value:function(){return"SN|Privileges"}}]),S(t,[{key:"setCredentialsForAction",value:function(e,t){this.content.desktopPrivileges[e]=t}},{key:"getCredentialsForAction",value:function(e){return this.content.desktopPrivileges[e]||[]}},{key:"toggleCredentialForAction",value:function(e,t){this.isCredentialRequiredForAction(e,t)?this.removeCredentialForAction(e,t):this.addCredentialForAction(e,t)}},{key:"removeCredentialForAction",value:function(e,t){_.pull(this.content.desktopPrivileges[e],t)}},{key:"addCredentialForAction",value:function(e,t){var n=this.getCredentialsForAction(e);n.push(t),this.setCredentialsForAction(e,n)}},{key:"isCredentialRequiredForAction",value:function(e,t){return this.getCredentialsForAction(e).includes(t)}}]),t}(z);r.SFPrivileges=W;var K=function(e){function t(e){var n;return w(this,t),(n=l(this,f(t).call(this,e))).content.itemUUIDToItemHistoryMapping||(n.content.itemUUIDToItemHistoryMapping={}),Object.keys(n.content.itemUUIDToItemHistoryMapping).forEach((function(e){var t=n.content.itemUUIDToItemHistoryMapping[e];n.content.itemUUIDToItemHistoryMapping[e]=new V(t)})),n}return d(t,e),S(t,[{key:"addEntryForItem",value:function(e){return this.historyForItem(e).addHistoryEntryForItem(e)}},{key:"historyForItem",value:function(e){var t=this.content.itemUUIDToItemHistoryMapping[e.uuid];return t||(t=this.content.itemUUIDToItemHistoryMapping[e.uuid]=new V),t}},{key:"clearItemHistory",value:function(e){this.historyForItem(e).clear()}},{key:"clearAllHistory",value:function(){this.content.itemUUIDToItemHistoryMapping={}}},{key:"optimizeHistoryForItem",value:function(e){var n=this.historyForItem(e);n.entries.length>t.LargeItemEntryAmountThreshold&&n.optimize()}}]),t}(z);r.SFHistorySession=K,K.LargeItemEntryAmountThreshold=60;var V=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(w(this,e),this.entries||(this.entries=[]),t.entries){var n=!0,r=!1,a=void 0;try{for(var i,o=t.entries[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var s=i.value,u=this.createEntryForItem(s.item);u.setPreviousEntry(this.getLastEntry()),this.entries.push(u)}}catch(e){r=!0,a=e}finally{try{n||null==o.return||o.return()}finally{if(r)throw a}}}}return S(e,[{key:"createEntryForItem",value:function(t){var n=e.HistoryEntryClassMapping&&e.HistoryEntryClassMapping[t.content_type];return n||(n=q),new n(t)}},{key:"getLastEntry",value:function(){return this.entries[this.entries.length-1]}},{key:"addHistoryEntryForItem",value:function(e){var t=this.createEntryForItem(e),n=this.getLastEntry();if(t.setPreviousEntry(n),!t.isSameAsEntry(n))return this.entries.push(t),t}},{key:"clear",value:function(){this.entries.length=0}},{key:"optimize",value:function(){var t=this,n=[],r=function(t){return t.deltaSize()>e.LargeEntryDeltaThreshold},a=function(e,a,i){if(i?n.push(e):-1!==(a=n.indexOf(e))&&n.splice(a,1),i&&r(e)&&-1==e.operationVector()){var o=t.entries[a-1];o&&n.push(o)}};this.entries.forEach((function(e,n){if(0==n||n==t.entries.length-1)a(e,n,!0);else{var i=r(e);a(e,n,i)}})),this.entries=this.entries.filter((function(e,t){return-1!==n.indexOf(e)}))}}]),e}();r.SFItemHistory=V,V.LargeEntryDeltaThreshold=15;var q=function(){function e(t){w(this,e),this.item=z.deepMerge({},t),this.defaultContentKeyToDiffOn="text",this.textCharDiffLength=0,"string"==typeof this.item.updated_at&&(this.item.updated_at=new Date(this.item.updated_at))}return S(e,[{key:"setPreviousEntry",value:function(e){this.hasPreviousEntry=null!=e,this.item.content[this.defaultContentKeyToDiffOn]&&(this.textCharDiffLength=e?this.item.content[this.defaultContentKeyToDiffOn].length-e.item.content[this.defaultContentKeyToDiffOn].length:this.item.content[this.defaultContentKeyToDiffOn].length)}},{key:"operationVector",value:function(){return null!=this.textCharDiffLength?this.hasPreviousEntry&&0!=this.textCharDiffLength?this.textCharDiffLength<0?-1:1:0:1}},{key:"deltaSize",value:function(){return null!=this.textCharDiffLength?Math.abs(this.textCharDiffLength):1}},{key:"isSameAsEntry",value:function(e){if(!e)return!1;var t=new z(this.item),n=new z(e.item);return t.isItemContentEqualWith(n)}}]),e}();r.SFItemHistoryEntry=q,I="undefined"!=typeof window?window:void 0!==e?e:null;var $=function(){function e(){w(this,e),this.DefaultPBKDF2Length=768}return S(e,[{key:"generateUUIDSync",value:function(){var e=I.crypto||I.msCrypto;if(e){var t=new Uint32Array(4);e.getRandomValues(t);var n=-1;return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){n++;var r=t[n>>3]>>n%8*4&15;return("x"==e?r:3&r|8).toString(16)}))}var r=(new Date).getTime();return I.performance&&"function"==typeof I.performance.now&&(r+=performance.now()),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=(r+16*Math.random())%16|0;return r=Math.floor(r/16),("x"==e?t:3&t|8).toString(16)}))}},{key:"generateUUID",value:function(){var e=k(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.generateUUIDSync());case 1:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"timingSafeEqual",value:function(e,t){var n=String(e),r=String(t),a=n.length,i=0;a!==r.length&&(r=n,i=1);for(var o=0;o0&&void 0!==p[0]?p[0]:{},n=t.ciphertextToAuth,r=t.contentCiphertext,a=t.encryptionKey,i=t.iv,o=t.authHash,s=t.authKey,!(p.length>1?p[1]:void 0)||o){e.next=5;break}return console.error("Auth hash is required."),e.abrupt("return");case 5:if(!o){e.next=12;break}return e.next=8,this.hmac256(n,s);case 8:if(l=e.sent,!1!==this.timingSafeEqual(o,l)){e.next=12;break}return console.error("Auth hash does not match, returning null."),e.abrupt("return",null);case 12:return c=u.enc.Hex.parse(a),f=u.enc.Hex.parse(i||""),d=u.AES.decrypt(r,c,{iv:f,mode:u.mode.CBC,padding:u.pad.Pkcs7}),e.abrupt("return",d.toString(u.enc.Utf8));case 16:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"encryptText",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r){var a,i,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=u.enc.Hex.parse(n),i=u.enc.Hex.parse(r||""),o=u.AES.encrypt(t,a,{iv:i,mode:u.mode.CBC,padding:u.pad.Pkcs7}),e.abrupt("return",o.toString());case 4:case"end":return e.stop()}}),e)})));function t(t,n,r){return e.apply(this,arguments)}return t}()},{key:"generateRandomKey",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",u.lib.WordArray.random(t/8).toString());case 1:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"generateItemEncryptionKey",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t,n,r,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=512,n=1,e.next=4,this.generateRandomKey(t);case 4:return r=e.sent,e.next=7,this.generateRandomKey(t);case 7:return a=e.sent,e.abrupt("return",this.pbkdf2(a,r,n,t));case 9:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"firstHalfOfKey",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",t.substring(0,t.length/2));case 1:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"secondHalfOfKey",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",t.substring(t.length/2,t.length));case 1:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"base64",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",I.btoa(encodeURIComponent(t).replace(/%([0-9A-F]{2})/g,(function(e,t){return String.fromCharCode("0x"+t)}))));case 1:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"base64Decode",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",I.atob(t));case 1:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"sha256",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",u.SHA256(t).toString());case 1:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"hmac256",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n){var r,a,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=u.enc.Hex.parse(n),a=u.enc.Utf8.parse(t),i=u.HmacSHA256(a,r).toString(),e.abrupt("return",i);case 4:case"end":return e.stop()}}),e)})));function t(t,n){return e.apply(this,arguments)}return t}()},{key:"generateSalt",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r,a){var i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sha256([t,"SF",n,r,a].join(":"));case 2:return i=e.sent,e.abrupt("return",i);case 4:case"end":return e.stop()}}),e,this)})));function t(t,n,r,a){return e.apply(this,arguments)}return t}()},{key:"generateSymmetricKeyPair",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t,n,r,a,i,o,s,u,l,c,f=arguments;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=f.length>0&&void 0!==f[0]?f[0]:{},n=t.password,r=t.pw_salt,a=t.pw_cost,e.next=3,this.pbkdf2(n,r,a,this.DefaultPBKDF2Length);case 3:return i=e.sent,o=i.length,s=o/3,u=i.slice(0,s),l=i.slice(s,2*s),c=i.slice(2*s,3*s),e.abrupt("return",[u,l,c]);case 10:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"computeEncryptionKeysForUser",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n){var r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("003"!=n.version){e.next=9;break}if(n.identifier){e.next=4;break}return console.error("authParams is missing identifier."),e.abrupt("return");case 4:return e.next=6,this.generateSalt(n.identifier,n.version,n.pw_cost,n.pw_nonce);case 6:r=e.sent,e.next=10;break;case 9:r=n.pw_salt;case 10:return e.abrupt("return",this.generateSymmetricKeyPair({password:t,pw_salt:r,pw_cost:n.pw_cost}).then((function(e){return{pw:e[0],mk:e[1],ak:e[2]}})));case 11:case"end":return e.stop()}}),e,this)})));function t(t,n){return e.apply(this,arguments)}return t}()},{key:"generateInitialKeysAndAuthParamsForUser",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n){var r,a,i,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=this.SFJS.version,a=this.SFJS.defaultPasswordGenerationCost,e.next=4,this.generateRandomKey(256);case 4:return i=e.sent,e.next=7,this.generateSalt(t,r,a,i);case 7:return o=e.sent,e.abrupt("return",this.generateSymmetricKeyPair({password:n,pw_salt:o,pw_cost:a}).then((function(e){var n={pw_nonce:i,pw_cost:a,identifier:t,version:r};return{keys:{pw:e[0],mk:e[1],ak:e[2]},authParams:n}})));case 9:case"end":return e.stop()}}),e,this)})));function t(t,n){return e.apply(this,arguments)}return t}()}]),e}();r.SFAbstractCrypto=$;var J=function(e){function t(){return w(this,t),l(this,f(t).apply(this,arguments))}return d(t,e),S(t,[{key:"pbkdf2",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r,a){var i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i={keySize:a/32,hasher:u.algo.SHA512,iterations:r},e.abrupt("return",u.PBKDF2(t,n,i).toString());case 2:case"end":return e.stop()}}),e)})));function t(t,n,r,a){return e.apply(this,arguments)}return t}()}]),t}($);r.SFCryptoJS=J;var Q=(I="undefined"!=typeof window?window:void 0!==e?e:null).crypto?I.crypto.subtle:null,G=function(e){function t(){return w(this,t),l(this,f(t).apply(this,arguments))}return d(t,e),S(t,[{key:"pbkdf2",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r,a){var i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.webCryptoImportKey(t,"PBKDF2",["deriveBits"]);case 2:if(i=e.sent){e.next=6;break}return console.log("Key is null, unable to continue"),e.abrupt("return",null);case 6:return e.abrupt("return",this.webCryptoDeriveBits(i,n,r,a));case 7:case"end":return e.stop()}}),e,this)})));function t(t,n,r,a){return e.apply(this,arguments)}return t}()},{key:"generateRandomKey",value:function(){var e=k(regeneratorRuntime.mark((function e(t){var n,r=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=!0,e.abrupt("return",Q.generateKey({name:"AES-CBC",length:t},n,["encrypt","decrypt"]).then((function(e){return Q.exportKey("raw",e).then(function(){var e=k(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,r.arrayBufferToHexString(new Uint8Array(t));case 2:return n=e.sent,e.abrupt("return",n);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()).catch((function(e){console.error("Error exporting key",e)}))})).catch((function(e){console.error("Error generating key",e)})));case 2:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"generateItemEncryptionKey",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=256,e.abrupt("return",Promise.all([this.generateRandomKey(t),this.generateRandomKey(t)]).then((function(e){return e.join("")})));case 2:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"encryptText",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r){var a,i,o,s,u,l=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!r){e.next=6;break}return e.next=3,this.hexStringToArrayBuffer(r);case 3:e.t0=e.sent,e.next=7;break;case 6:e.t0=new ArrayBuffer(16);case 7:return a=e.t0,i={name:"AES-CBC",iv:a},e.next=11,this.hexStringToArrayBuffer(n);case 11:return o=e.sent,e.next=14,this.webCryptoImportKey(o,i.name,["encrypt"]);case 14:return s=e.sent,e.next=17,this.stringToArrayBuffer(t);case 17:return u=e.sent,e.abrupt("return",crypto.subtle.encrypt(i,s,u).then(function(){var e=k(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,l.arrayBufferToBase64(t);case 2:return n=e.sent,e.abrupt("return",n);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 19:case"end":return e.stop()}}),e,this)})));function t(t,n,r){return e.apply(this,arguments)}return t}()},{key:"decryptText",value:function(){var e=k(regeneratorRuntime.mark((function e(){var t,n,r,a,i,o,s,u,l,c,f,d,p,h=this,m=arguments;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=m.length>0&&void 0!==m[0]?m[0]:{},n=t.ciphertextToAuth,r=t.contentCiphertext,a=t.encryptionKey,i=t.iv,o=t.authHash,s=t.authKey,!(m.length>1?m[1]:void 0)||o){e.next=5;break}return console.error("Auth hash is required."),e.abrupt("return");case 5:if(!o){e.next=12;break}return e.next=8,this.hmac256(n,s);case 8:if(u=e.sent,!1!==this.timingSafeEqual(o,u)){e.next=12;break}return console.error("Auth hash does not match, returning null. ".concat(o," != ").concat(u)),e.abrupt("return",null);case 12:if(!i){e.next=18;break}return e.next=15,this.hexStringToArrayBuffer(i);case 15:e.t0=e.sent,e.next=19;break;case 18:e.t0=new ArrayBuffer(16);case 19:return l=e.t0,c={name:"AES-CBC",iv:l},e.next=23,this.hexStringToArrayBuffer(a);case 23:return f=e.sent,e.next=26,this.webCryptoImportKey(f,c.name,["decrypt"]);case 26:return d=e.sent,e.next=29,this.base64ToArrayBuffer(r);case 29:return p=e.sent,e.abrupt("return",crypto.subtle.decrypt(c,d,p).then(function(){var e=k(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,h.arrayBufferToString(t);case 2:return n=e.sent,e.abrupt("return",n);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()).catch((function(e){console.error("Error decrypting:",e)})));case 31:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"hmac256",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n){var r,a,i,o=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.hexStringToArrayBuffer(n);case 2:return r=e.sent,e.next=5,this.webCryptoImportKey(r,"HMAC",["sign"],{name:"SHA-256"});case 5:return a=e.sent,e.next=8,this.stringToArrayBuffer(t);case 8:return i=e.sent,e.abrupt("return",crypto.subtle.sign({name:"HMAC"},a,i).then(function(){var e=k(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.arrayBufferToHexString(t);case 2:return n=e.sent,e.abrupt("return",n);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()).catch((function(e){console.error("Error computing hmac",e)})));case 10:case"end":return e.stop()}}),e,this)})));function t(t,n){return e.apply(this,arguments)}return t}()},{key:"webCryptoImportKey",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r,a){var i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("string"!=typeof t){e.next=6;break}return e.next=3,this.stringToArrayBuffer(t);case 3:e.t0=e.sent,e.next=7;break;case 6:e.t0=t;case 7:return i=e.t0,e.abrupt("return",Q.importKey("raw",i,{name:n,hash:a},!1,r).then((function(e){return e})).catch((function(e){return console.error(e),null})));case 9:case"end":return e.stop()}}),e,this)})));function t(t,n,r,a){return e.apply(this,arguments)}return t}()},{key:"webCryptoDeriveBits",value:function(){var e=k(regeneratorRuntime.mark((function e(t,n,r,a){var i,o=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.stringToArrayBuffer(n);case 2:return e.t0=e.sent,e.t1=r,e.t2={name:"SHA-512"},i={name:"PBKDF2",salt:e.t0,iterations:e.t1,hash:e.t2},e.abrupt("return",Q.deriveBits(i,t,a).then(function(){var e=k(regeneratorRuntime.mark((function e(t){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o.arrayBufferToHexString(new Uint8Array(t));case 2:return n=e.sent,e.abrupt("return",n);case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()).catch((function(e){return console.error(e),null})));case 7:case"end":return e.stop()}}),e,this)})));function t(t,n,r,a){return e.apply(this,arguments)}return t}()},{key:"stringToArrayBuffer",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){var r=new Blob([t]),a=new FileReader;a.onload=function(t){e(t.target.result)},a.readAsArrayBuffer(r)})));case 1:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"arrayBufferToString",value:function(){var e=k(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,n){var r=new Blob([t]),a=new FileReader;a.onload=function(t){e(t.target.result)},a.readAsText(r)})));case 1:case"end":return e.stop()}}),e)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"arrayBufferToHexString",value:function(){var e=k(regeneratorRuntime.mark((function e(t){var n,r,a,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(n=new Uint8Array(t),r="",i=0;i5e3)||this.crypto instanceof G}},{key:"supportedVersions",value:function(){return["001","002","003"]}},{key:"isVersionNewerThanLibraryVersion",value:function(e){var t=this.version();return parseInt(e)>parseInt(t)}},{key:"isProtocolVersionOutdated",value:function(e){var t={"001":Date.parse("2018-01-01"),"002":Date.parse("2020-01-01")}[e];return!!t&&new Date>t}},{key:"costMinimumForVersion",value:function(e){return{"001":3e3,"002":3e3,"003":11e4}[e]}},{key:"defaultPasswordGenerationCost",value:function(){return this.costMinimumForVersion(this.version())}}]),e}();if(r.StandardFile=X,I)try{I.StandardFile=X,I.SFJS=new X,I.SFCryptoWeb=G,I.SFCryptoJS=J,I.SFItemTransformer=Y,I.SFModelManager=A,I.SFItem=z,I.SFItemParams=U,I.SFHttpManager=R,I.SFStorageManager=L,I.SFSyncManager=B,I.SFAuthManager=C,I.SFMigrationManager=D,I.SFAlertManager=E,I.SFPredicate=H,I.SFHistorySession=K,I.SFSessionHistoryManager=P,I.SFItemHistory=V,I.SFItemHistoryEntry=q,I.SFPrivilegesManager=F,I.SFPrivileges=W,I.SFSingletonManager=N}catch(e){console.log("Exception while exporting window variables",e)}}).call(this,void 0!==t?t:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[1])(1)}).call(t,n(3))},function(e,t){!function(t){"use strict";var n,r=Object.prototype,a=r.hasOwnProperty,i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",u=i.toStringTag||"@@toStringTag",l="object"==typeof e,c=t.regeneratorRuntime;if(c)l&&(e.exports=c);else{(c=t.regeneratorRuntime=l?e.exports:{}).wrap=k;var f="suspendedStart",d="suspendedYield",p="executing",h="completed",m={},v={};v[o]=function(){return this};var g=Object.getPrototypeOf,y=g&&g(g(F([])));y&&y!==r&&a.call(y,o)&&(v=y);var b=_.prototype=x.prototype=Object.create(v);S.prototype=b.constructor=_,_.constructor=S,_[u]=S.displayName="GeneratorFunction",c.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===S||"GeneratorFunction"===(t.displayName||t.name))},c.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,_):(e.__proto__=_,u in e||(e[u]="GeneratorFunction")),e.prototype=Object.create(b),e},c.awrap=function(e){return{__await:e}},E(C.prototype),C.prototype[s]=function(){return this},c.AsyncIterator=C,c.async=function(e,t,n,r){var a=new C(k(e,t,n,r));return c.isGeneratorFunction(t)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},E(b),b[u]="Generator",b[o]=function(){return this},b.toString=function(){return"[object Generator]"},c.keys=function(e){var t=[];for(var n in e)t.push(n);return t.reverse(),function n(){for(;t.length;){var r=t.pop();if(r in e)return n.value=r,n.done=!1,n}return n.done=!0,n}},c.values=F,A.prototype={constructor:A,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(D),!e)for(var t in this)"t"===t.charAt(0)&&a.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=n)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(r,a){return s.type="throw",s.arg=e,t.next=r,a&&(t.method="next",t.arg=n),!!a}for(var i=this.tryEntries.length-1;i>=0;--i){var o=this.tryEntries[i],s=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var u=a.call(o,"catchLoc"),l=a.call(o,"finallyLoc");if(u&&l){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&a.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),D(n),m}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;D(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:F(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=n),m}}}function k(e,t,n,r){var a=t&&t.prototype instanceof x?t:x,i=Object.create(a.prototype),o=new A(r||[]);return i._invoke=function(e,t,n){var r=f;return function(a,i){if(r===p)throw new Error("Generator is already running");if(r===h){if("throw"===a)throw i;return O()}for(n.method=a,n.arg=i;;){var o=n.delegate;if(o){var s=I(o,n);if(s){if(s===m)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===f)throw r=h,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=p;var u=w(e,t,n);if("normal"===u.type){if(r=n.done?h:d,u.arg===m)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(r=h,n.method="throw",n.arg=u.arg)}}}(e,n,o),i}function w(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}function x(){}function S(){}function _(){}function E(e){["next","throw","return"].forEach((function(t){e[t]=function(e){return this._invoke(t,e)}}))}function C(e){function t(n,r,i,o){var s=w(e[n],e,r);if("throw"!==s.type){var u=s.arg,l=u.value;return l&&"object"==typeof l&&a.call(l,"__await")?Promise.resolve(l.__await).then((function(e){t("next",e,i,o)}),(function(e){t("throw",e,i,o)})):Promise.resolve(l).then((function(e){u.value=e,i(u)}),o)}o(s.arg)}var n;this._invoke=function(e,r){function a(){return new Promise((function(n,a){t(e,r,n,a)}))}return n=n?n.then(a,a):a()}}function I(e,t){var r=e.iterator[t.method];if(r===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=n,I(e,t),"throw"===t.method))return m;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return m}var a=w(r,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,m;var i=a.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=n),t.delegate=null,m):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,m)}function R(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function D(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function A(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(R,this),this.reset(!0)}function F(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,i=function t(){for(;++r=0?this.items[l]=u:this.items.push(u);case 15:n=!0,c.next=5;break;case 18:c.next=24;break;case 20:c.prev=20,c.t0=c.catch(3),r=!0,a=c.t0;case 24:c.prev=24,c.prev=25,n||null==o.return||o.return();case 27:if(c.prev=27,!r){c.next=30;break}throw a;case 30:return c.finish(27);case 31:return c.finish(24);case 32:this.notifyObserversOfEvent(e.BridgeEventReceivedItems);case 33:case"end":return c.stop()}}),null,this,[[3,20,24,32],[25,,27,31]])}},{key:"indexOfItem",value:function(e){for(var t in this.items)if(this.items[t].uuid==e.uuid)return t;return-1}},{key:"removeItemFromItems",value:function(e){this.items=this.items.filter((function(t){return t.uuid!==e.uuid}))}},{key:"createItem",value:function(e,t){this.createItems([e],t)}},{key:"createItems",value:function(e,t){this.componentManager.createItems(e,(function(e){t&&t(e.map((function(e){return new i.SFItem(e)})))}))}},{key:"saveItem",value:function(e){return regeneratorRuntime.async((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this.saveItems([e]));case 1:case"end":return t.stop()}}),null,this)}},{key:"saveItems",value:function(t){var n=this;return regeneratorRuntime.async((function(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",new Promise((function(r,a){n.componentManager.saveItems(t,(function(t){r(t),n.notifyObserversOfEvent(e.BridgeEventSavedItem)}))})));case 1:case"end":return r.stop()}}))}},{key:"indexOfItem",value:function(e){for(var t in this.items)if(this.items[t].uuid==e.uuid)return t;return-1}},{key:"deleteItem",value:function(e,t){this.deleteItems([e],t)}},{key:"deleteItems",value:function(e,t){this.componentManager.deleteItems(e,t)}},{key:"removeItemFromItems",value:function(e){this.items=this.items.filter((function(t){return t.uuid!==e.uuid}))}}])&&o(t.prototype,n),r&&o(t,r),e}();s(u,"FileItemContentTypeKey","SN|FileSafe|File"),s(u,"FileSafeCredentialsContentType","SN|FileSafe|Credentials"),s(u,"FileDescriptorContentTypeKey","SN|FileSafe|FileMetadata"),s(u,"FileSafeIntegrationContentTypeKey","SN|FileSafe|Integration"),s(u,"BridgeEventLoadedCredentials","BridgeEventLoadedCredentials"),s(u,"BridgeEventReceivedItems","BridgeEventReceivedItems"),s(u,"BridgeEventSavedItem","BridgeEventSavedItem")},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n.d(t,"default",(function(){return d}));var r=n(2),a=n(7),i=n(8),o=n(9),s=n(10),u=n(12),l=n(0);n.n(l);function c(e,t){for(var n=0;n(t=$(t,e)).length)n=e;else{var r=0,a=-1,i=-1,o=(n=t).length;for(0>r&&(r=-r>o?0:o+r),0>(a=a>o?o:a)&&(a+=o),o=r>a?0:a-r>>>0,r>>>=0,a=Array(o);++ii?Ge:o,i=1),t=Object(t);++as))return!1;if((u=i.get(e))&&i.get(t))return u==t;var u=-1,l=!0,c=2&n?new E:Ge;for(i.set(e,t),i.set(t,e);++u(n=null==n?0:Me(n))&&(n=$t(r+n,0)),h(e,ie(t,3),n)):-1}function be(e){return null!=e&&e.length?M(e,1):[]}function ke(e){var t=null==e?0:e.length;return t?e[t-1]:Ge}function we(e,t){var n;if(e&&e.length&&t&&t.length){var r=m,a=-1,i=(n=t).length;for(e===n&&(n=Y(n));++a=e}function Re(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function De(e){return null!=e&&"object"==typeof e}function Ae(e){return!(!De(e)||"[object Object]"!=L(e))&&(null===(e=Nt(e))||"function"==typeof(e=It.call(e,"constructor")&&e.constructor)&&e instanceof e&&Ct.call(e)==At)}function Fe(e){return"string"==typeof e||!_n(e)&&De(e)&&"[object String]"==L(e)}function Oe(e){return"symbol"==typeof e||De(e)&&"[object Symbol]"==L(e)}function Te(e){return e?(e=Pe(e))===Ye||e===-Ye?17976931348623157e292*(0>e?-1:1):e==e?e:0:0===e?e:0}function Me(e){var t=(e=Te(e))%1;return e==e?t?e-t:e:0}function Pe(e){if("number"==typeof e)return e;if(Oe(e))return Xe;if(Re(e)&&(e=Re(e="function"==typeof e.valueOf?e.valueOf():e)?e+"":e),"string"!=typeof e)return 0===e?e:+e;e=e.replace(rt,"");var t=st.test(e);return t||lt.test(e)?ht(e.slice(2),t?2:8):ot.test(e)?Xe:+e}function Ne(e){return X(e,Ue(e))}function Le(e){return null==e?"":V(e)}function je(e,t,n){return(e=null==e?Ge:P(e,t))===Ge?n:e}function Be(e,t){var n;if(n=null!=e){for(var r,a=-1,i=(r=$(t,n=e)).length,o=!1;++a(e=A(t,e))||(e==t.length-1?t.pop():Bt.call(t,e,1),--this.size,0))},S.prototype.get=function(e){var t=this.__data__;return 0>(e=A(t,e))?Ge:t[e][1]},S.prototype.has=function(e){return-1r?(++this.size,n.push([e,t])):n[r][1]=t,this},_.prototype.clear=function(){this.size=0,this.__data__={hash:new x,map:new(Yt||S),string:new x}},_.prototype.delete=function(e){return e=oe(this,e).delete(e),this.size-=e?1:0,e},_.prototype.get=function(e){return oe(this,e).get(e)},_.prototype.has=function(e){return oe(this,e).has(e)},_.prototype.set=function(e,t){var n=oe(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},E.prototype.add=E.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},E.prototype.has=function(e){return this.__data__.has(e)},C.prototype.clear=function(){this.__data__=new S,this.size=0},C.prototype.delete=function(e){var t=this.__data__;return e=t.delete(e),this.size=t.size,e},C.prototype.get=function(e){return this.__data__.get(e)},C.prototype.has=function(e){return this.__data__.has(e)},C.prototype.set=function(e,t){var n=this.__data__;if(n instanceof S){var r=n.__data__;if(!Yt||199>r.length)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new _(r)}return n.set(e,t),this.size=n.size,this};var dn=function(e,t){if(null==e)return e;if(!_e(e))return function(e,t){return e&&pn(e,t,ze)}(e,t);for(var n=e.length,r=-1,a=Object(e);++rn&&(n=$t(r+n,0)),Fe(e)?n<=r&&-10){var a=!0,i=!1,o=void 0;try{for(var s,u=t.integrations[Symbol.iterator]();!(a=(s=u.next()).done);a=!0){var l=s.value;if(l!=e){t.setIntegrationAsDefault(l);break}}}catch(e){i=!0,o=e}finally{try{a||null==u.return||u.return()}finally{if(i)throw o}}}}))}},{key:"integrations",get:function(){return this.extensionBridge.filterItems(i.a.FileSafeIntegrationContentTypeKey)}}])&&o(t.prototype,n),r&&o(t,r),e}()},function(e,t,n){"use strict";n.d(t,"a",(function(){return u}));var r=n(1),a=(n.n(r),n(0)),i=(n.n(a),n(2));function o(e,t){for(var n=0;n0&&(e=n.credentials[0]),e})),s(this,"setCredentialAsDefault",(function(e){var t=n.getDefaultCredentials();t&&(t.content.isDefault=!1),e.content.isDefault=!0,n.extensionBridge.saveItems([t,e])})),s(this,"deleteCredential",(function(e){n.extensionBridge.deleteItem(e)})),this.extensionBridge=r,this.onCredentialLoad=a,this.credentials=[],this.extensionBridge.addEventHandler((function(e){e==i.a.BridgeEventReceivedItems&&n.reloadCredentials()}))}var t,n,r;return t=e,(n=[{key:"reloadCredentials",value:function(){this.credentials=[];var e=this.extensionBridge.filterItems(i.a.FileSafeCredentialsContentType);if(0!=e.length){var t=!0,n=!1,r=void 0;try{for(var a,o=e[Symbol.iterator]();!(t=(a=o.next()).done);t=!0){var s=a.value;this.credentials.find((function(e){return e.uuid==s.uuid}))||this.credentials.push(s)}}catch(e){n=!0,r=e}finally{try{t||null==o.return||o.return()}finally{if(n)throw r}}this.onCredentialLoad(),this.credentials.length>0&&this.didLoadCredentials()}}},{key:"createNewCredentials",value:function(){var e,t,n,r,o;return regeneratorRuntime.async((function(s){for(;;)switch(s.prev=s.next){case 0:return e=256,s.next=3,regeneratorRuntime.awrap(SFJS.crypto.generateRandomKey(e));case 3:return t=s.sent,s.next=6,regeneratorRuntime.awrap(SFJS.crypto.generateRandomKey(e));case 6:return n=s.sent,s.next=9,regeneratorRuntime.awrap(SFJS.crypto.generateInitialKeysAndAuthParamsForUser(t,n));case 9:return(r=s.sent).isDefault=0==this.credentials.length,o=new a.SFItem({content_type:i.a.FileSafeCredentialsContentType,content:r}),this.extensionBridge.saveItem(o),this.didLoadCredentials(),s.abrupt("return",o);case 15:case"end":return s.stop()}}),null,this)}},{key:"didLoadCredentials",value:function(){this.extensionBridge.notifyObserversOfEvent(i.a.BridgeEventLoadedCredentials)}},{key:"credentialForFileDescriptor",value:function(e){return this.credentials.find((function(t){return e.content.references.find((function(e){return e.uuid==t.uuid}))}))}},{key:"getAllCredentials",value:function(){return this.credentials}},{key:"saveCredential",value:function(e){this.extensionBridge.saveItem(e)}}])&&o(t.prototype,n),r&&o(t,r),e}()},function(e,t,n){"use strict";n.d(t,"a",(function(){return c}));var r=n(1),a=(n.n(r),n(0)),i=(n.n(a),n(11)),o=n.n(i),s=n(2);function u(e,t){for(var n=0;n3&&void 0!==arguments[3]&&arguments[3],i=document.createElement("a");i.setAttribute("download",t);var o=this.tempUrlForData(e,n);i.href=o,i.setAttribute("target","_blank"),a?window.location.href=i.href:(document.body.appendChild(i),i.click(),i.remove()),setTimeout((function(){r.revokeTempUrl(o)}),500)}},{key:"tempUrlForData",value:function(e,t){return window.URL.createObjectURL(new Blob([e],{type:t||"text/json"}))}},{key:"revokeTempUrl",value:function(e){window.URL.revokeObjectURL(e)}},{key:"copyTextToClipboard",value:function(e){if(window.clipboardData&&window.clipboardData.setData)return clipboardData.setData("Text",e);var t;if(document.queryCommandSupported&&document.queryCommandSupported("copy"))try{(t=document.createElement("textarea")).setAttribute("readonly",!0),t.setAttribute("contenteditable",!0),t.style.position="fixed",t.value=e,document.body.appendChild(t),t.focus(),t.select();var n=document.createRange();n.selectNodeContents(t);var r=window.getSelection();r.removeAllRanges(),r.addRange(n),t.setSelectionRange(0,t.value.length),document.execCommand("copy")}catch(e){console.error(e)}finally{document.body.removeChild(t)}}}],(n=null)&&r(t.prototype,n),a&&r(t,a),e}()}])},418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;function a(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,i){for(var o,s,u=a(e),l=1;l{"use strict";var r=n(294),a=n(418),i=n(840);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n

    \n ${this.buttons.map((function(e,t){return function(e,t){return`\n \n `}(e,t)})).join("")}\n
    \n `}templateString(){let e,t;return this.buttons?(e=`\n
    \n ${this.buttonsString()}\n
    \n `,t=""):(e="",t='style="padding-bottom: 8px"'),`\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n ${this.title?`
    ${this.title}
    `:""}\n\n
    \n ${this.text?`

    ${this.text}

    `:""}\n
    \n\n ${e}\n
    \n
    \n
    \n
    \n
    \n
    \n `}dismiss(){this.onElement.removeChild(this.element),document.removeEventListener("keyup",this.keyupListener)}primaryButton(){let e=this.buttons.find((e=>!0===e.primary));return e||(e=this.buttons[this.buttons.length-1]),e}present({onElement:e}={}){e||(e=document.body),this.onElement=e,this.element=document.createElement("div"),this.element.className="sn-component",this.element.innerHTML=this.templateString().trim(),this.buttons&&(document.addEventListener("keyup",this.keyupListener),this.buttons.forEach(((e,t)=>{this.element.querySelector(`#button-${t}`).onclick=()=>{e.action&&e.action(),this.dismiss()}}))),e.appendChild(this.element)}}}},t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={exports:{}};return e[r](a,a.exports,n),a.exports}return n.m=e,n.x=e=>{},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e={388:0},t=[[754]],r=e=>{},a=(a,i)=>{for(var o,s,[u,l,c,f]=i,d=0,p=[];d{}),r}i.forEach(a.bind(null,0)),i.push=a.bind(null,i.push.bind(i));var s=n.x;n.x=()=>(n.x=s||(e=>{}),(r=o)())})(),n.x()})()},e.exports=t()}},t={};function n(r){var a=t[r];if(void 0!==a)return a.exports;var i=t[r]={exports:{}};return e[r].call(i.exports,i,i.exports,n),i.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=n(294),t=n(935),r=n(971),a=n.n(r),i=n(33),o=n.n(i),s=n(856),u=n.n(s),l=n(308);n(166);function c(e){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function f(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function d(e){for(var t=1;t=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(s)throw i}}}}function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n{"use strict";var e={175:(e,t,s)=>{let n,i,o;var a;s.d(t,{default:()=>w}),function(e){e.SetSize="set-size",e.StreamItems="stream-items",e.StreamContextItem="stream-context-item",e.SaveItems="save-items",e.SelectItem="select-item",e.AssociateItem="associate-item",e.DeassociateItem="deassociate-item",e.ClearSelection="clear-selection",e.CreateItem="create-item",e.CreateItems="create-items",e.DeleteItems="delete-items",e.SetComponentData="set-component-data",e.InstallLocalComponent="install-local-component",e.ToggleActivateComponent="toggle-activate-component",e.RequestPermissions="request-permissions",e.PresentConflictResolution="present-conflict-resolution",e.DuplicateItem="duplicate-item",e.ComponentRegistered="component-registered",e.ActivateThemes="themes",e.Reply="reply",e.SaveSuccess="save-success",e.SaveError="save-error"}(n||(n={})),function(e){e[e.Web=1]="Web",e[e.Desktop=2]="Desktop",e[e.Mobile=3]="Mobile"}(i||(i={})),function(e){e.Any="*",e.Item="SF|Item",e.RootKey="SN|RootKey|NoSync",e.ItemsKey="SN|ItemsKey",e.EncryptedStorage="SN|EncryptedStorage",e.Note="Note",e.Tag="Tag",e.SmartTag="SN|SmartTag",e.Component="SN|Component",e.Editor="SN|Editor",e.ActionsExtension="Extension",e.UserPrefs="SN|UserPreferences",e.Privileges="SN|Privileges",e.HistorySession="SN|HistorySession",e.Theme="SN|Theme",e.Mfa="SF|MFA",e.ServerExtension="SF|Extension",e.FilesafeCredentials="SN|FileSafe|Credentials",e.FilesafeFileMetadata="SN|FileSafe|FileMetadata",e.FilesafeIntegration="SN|FileSafe|Integration",e.ExtensionRepo="SN|ExtensionRepo"}(o||(o={}));var r=new Uint8Array(16);function m(){if(!a&&!(a="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return a(r)}const c=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,l=function(e){return"string"==typeof e&&c.test(e)};for(var d=[],p=0;p<256;++p)d.push((p+256).toString(16).substr(1));const h=function(e,t,s){var n=(e=e||{}).random||(e.rng||m)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){s=s||0;for(var i=0;i<16;++i)t[s+i]=n[i];return t}return function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,s=(d[e[t+0]]+d[e[t+1]]+d[e[t+2]]+d[e[t+3]]+"-"+d[e[t+4]]+d[e[t+5]]+"-"+d[e[t+6]]+d[e[t+7]]+"-"+d[e[t+8]]+d[e[t+9]]+"-"+d[e[t+10]]+d[e[t+11]]+d[e[t+12]]+d[e[t+13]]+d[e[t+14]]+d[e[t+15]]).toLowerCase();if(!l(s))throw TypeError("Stringified UUID is invalid");return s}(n)},g=e=>{var t;const s={[i.Web]:"web",[i.Desktop]:"desktop",[i.Mobile]:"mobile"};return null!==(t=s[e])&&void 0!==t?t:s[i.Web]},u=()=>{};class v{static get isSupported(){return!(!window.console&&!console)}static get info(){return v.isSupported&&this.enabled?console.log.bind(console):u}static get error(){return console.error.bind(console)}}var f,S,b;function y(e,t){var s=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),s.push.apply(s,n)}return s}function I(e){for(var t=1;t0&&(this.initialPermissions=s),(null==n?void 0:n.coallesedSaving)&&(this.coallesedSaving=n.coallesedSaving),(null==n?void 0:n.coallesedSavingDelay)&&(this.coallesedSavingDelay=n.coallesedSavingDelay),(null==n?void 0:n.acceptsThemes)&&(this.component.acceptsThemes=null===(o=null==n?void 0:n.acceptsThemes)||void 0===o||o),i&&(this.onReadyCallback=i),v.enabled=null!==(t=null==n?void 0:n.debug)&&void 0!==t&&t}deinit(){this.onReadyCallback=void 0,this.component={acceptsThemes:!0,activeThemes:[]},this.messageQueue=[],this.sentMessages=[],this.lastStreamedItem=void 0,this.pendingSaveItems=void 0,this.pendingSaveTimeout=void 0,this.pendingSaveParams=void 0,this.messageHandler&&(this.contentWindow.document.removeEventListener("message",this.messageHandler),this.contentWindow.removeEventListener("message",this.messageHandler))}registerMessageHandler(){this.messageHandler=e=>{if(v.info("Components API Message received:",e.data),document.referrer&&new URL(document.referrer).origin!==new URL(e.origin).origin)return;if(this.component.origin){if(e.origin!==this.component.origin)return}else this.component.origin=e.origin;const{data:t}=e,s=(e=>{if("string"!=typeof e)return!1;try{const t=JSON.parse(e),s=Object.prototype.toString.call(t);return"[object Object]"===s||"[object Array]"===s}catch(e){return!1}})(t)?JSON.parse(t):t;s?this.handleMessage(s):v.error("Invalid data received. Skipping...")},this.contentWindow.document.addEventListener("message",this.messageHandler,!1),this.contentWindow.addEventListener("message",this.messageHandler,!1),v.info("Waiting for messages...")}handleMessage(e){switch(e.action){case n.ComponentRegistered:this.component.sessionKey=e.sessionKey,e.componentData&&(this.component.data=e.componentData),this.onReady(e.data),v.info("Component successfully registered with payload:",e);break;case n.ActivateThemes:this.activateThemes(e.data.themes);break;default:{var t;if(!e.original)return;const s=null===(t=this.sentMessages)||void 0===t?void 0:t.filter((t=>{var s;return t.messageId===(null===(s=e.original)||void 0===s?void 0:s.messageId)}))[0];if(!s)return void v.error("This extension is attempting to communicate with Standard Notes, but an error is preventing it from doing so. Please restart this extension and try again.");s.callback&&s.callback(e.data);break}}}onReady(e){this.component.environment=e.environment,this.component.platform=e.platform,this.component.uuid=e.uuid,this.initialPermissions&&this.initialPermissions.length>0&&this.requestPermissions(this.initialPermissions);for(const e of this.messageQueue)this.postMessage(e.action,e.data,e.callback);this.messageQueue=[],v.info("Data passed to onReady:",e),this.activateThemes(e.activeThemeUrls||[]),this.onReadyCallback&&this.onReadyCallback()}getSelfComponentUUID(){return this.component.uuid}isRunningInDesktopApplication(){return this.component.environment===g(i.Desktop)}isRunningInMobileApplication(){return this.component.environment===g(i.Mobile)}getComponentDataValueForKey(e){if(this.component.data)return this.component.data[e]}setComponentDataValueForKey(e,t){if(!this.component.data)throw new Error("The component has not been initialized.");if(!e||e&&0===e.length)throw new Error("The key for the data value should be a valid string.");this.component.data=I(I({},this.component.data),{},{[e]:t}),this.postMessage(n.SetComponentData,{componentData:this.component.data})}clearComponentData(){this.component.data={},this.postMessage(n.SetComponentData,{componentData:this.component.data})}postMessage(e,t,s){if(!this.component.sessionKey)return void this.messageQueue.push({action:e,data:t,api:b.Component,callback:s});const n={action:e,data:t,messageId:this.generateUUID(),sessionKey:this.component.sessionKey,api:b.Component},i=JSON.parse(JSON.stringify(n));let o;i.callback=s,this.sentMessages.push(i),o=this.isRunningInMobileApplication()?JSON.stringify(n):n,v.info("Posting message:",o),this.contentWindow.parent.postMessage(o,this.component.origin)}requestPermissions(e,t){this.postMessage(n.RequestPermissions,{permissions:e},(()=>{t&&t()}))}activateThemes(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(!this.component.acceptsThemes)return;v.info("Incoming themes:",e);const{activeThemes:t}=this.component;if(t&&t.sort().toString()==e.sort().toString())return;let s=e;const n=[];for(const i of t)e.includes(i)?s=s.filter((e=>e!==i)):n.push(i);v.info("Deactivating themes:",n),v.info("Activating themes:",s);for(const e of n)this.deactivateTheme(e);this.component.activeThemes=e;for(const e of s){if(!e)continue;const t=this.contentWindow.document.createElement("link");t.id=btoa(e),t.href=e,t.type="text/css",t.rel="stylesheet",t.media="screen,print",t.className="custom-theme",this.contentWindow.document.getElementsByTagName("head")[0].appendChild(t)}}themeElementForUrl(e){return Array.from(this.contentWindow.document.getElementsByClassName("custom-theme")).slice().find((t=>t.id==btoa(e)))}deactivateTheme(e){const t=this.themeElementForUrl(e);t&&t.parentNode&&(t.setAttribute("disabled","true"),t.parentNode.removeChild(t))}generateUUID(){return h()}get platform(){return this.component.platform}get environment(){return this.component.environment}streamItems(e,t){this.postMessage(n.StreamItems,{content_types:e},(e=>{t(e.items)}))}streamContextItem(e){this.postMessage(n.StreamContextItem,{},(t=>{const{item:s}=t;(!this.lastStreamedItem||this.lastStreamedItem.uuid!==s.uuid)&&this.pendingSaveTimeout&&(clearTimeout(this.pendingSaveTimeout),this._performSavingOfItems(this.pendingSaveParams),this.pendingSaveTimeout=void 0,this.pendingSaveParams=void 0),this.lastStreamedItem=s,e(this.lastStreamedItem)}))}selectItem(e){this.postMessage(n.SelectItem,{item:this.jsonObjectForItem(e)})}clearSelection(){this.postMessage(n.ClearSelection,{content_type:o.Tag})}createItem(e,t){this.postMessage(n.CreateItem,{item:this.jsonObjectForItem(e)},(e=>{let{item:s}=e;!s&&e.items&&e.items.length>0&&(s=e.items[0]),this.associateItem(s),t&&t(s)}))}createItems(e,t){const s=e.map((e=>this.jsonObjectForItem(e)));this.postMessage(n.CreateItems,{items:s},(e=>{t&&t(e.items)}))}associateItem(e){this.postMessage(n.AssociateItem,{item:this.jsonObjectForItem(e)})}deassociateItem(e){this.postMessage(n.DeassociateItem,{item:this.jsonObjectForItem(e)})}deleteItem(e,t){this.deleteItems([e],t)}deleteItems(e,t){const s={items:e.map((e=>this.jsonObjectForItem(e)))};this.postMessage(n.DeleteItems,s,(e=>{t&&t(e)}))}sendCustomEvent(e,t,s){this.postMessage(e,t,(e=>{s&&s(e)}))}saveItem(e,t){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.saveItems([e],t,s)}saveItemWithPresave(e,t,s){this.saveItemsWithPresave([e],t,s)}saveItemsWithPresave(e,t,s){this.saveItems(e,s,!1,t)}_performSavingOfItems(e){let{items:t,presave:s,callback:i}=e;s&&s();const o=[];for(const e of t)o.push(this.jsonObjectForItem(e));this.postMessage(n.SaveItems,{items:o},(()=>{i&&i()}))}saveItems(e,t){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3?arguments[3]:void 0;if(this.pendingSaveItems||(this.pendingSaveItems=[]),this.coallesedSaving&&!s){this.pendingSaveTimeout&&clearTimeout(this.pendingSaveTimeout);const s=e.map((e=>e.uuid)),i=this.pendingSaveItems.filter((e=>!s.includes(e.uuid)));this.pendingSaveItems=i.concat(e),this.pendingSaveParams={items:this.pendingSaveItems,presave:n,callback:t},this.pendingSaveTimeout=setTimeout((()=>{this._performSavingOfItems(this.pendingSaveParams),this.pendingSaveItems=[],this.pendingSaveTimeout=void 0,this.pendingSaveParams=null}),this.coallesedSavingDelay)}else this._performSavingOfItems({items:e,presave:n,callback:t})}setSize(e,t){this.postMessage(n.SetSize,{type:"container",width:e,height:t})}jsonObjectForItem(e){const t=Object.assign({},e);return t.children=null,t.parent=null,t}getItemAppDataValue(e,t){return e.getAppDomainValue(t)}}}},t={};function s(n){if(t[n])return t[n].exports;var i=t[n]={exports:{}};return e[n](i,i.exports,s),i.exports}return s.d=(e,t)=>{for(var n in t)s.o(t,n)&&!s.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s(175)})().default})); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("ComponentRelay",[],t):"object"==typeof exports?exports.ComponentRelay=t():e.ComponentRelay=t()}(self,(function(){return(()=>{"use strict";var e={d:(t,s)=>{for(var n in s)e.o(s,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:s[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};let s,n,i,o;var a;e.d(t,{default:()=>w}),function(e){e.SetSize="set-size",e.StreamItems="stream-items",e.StreamContextItem="stream-context-item",e.SaveItems="save-items",e.SelectItem="select-item",e.AssociateItem="associate-item",e.DeassociateItem="deassociate-item",e.ClearSelection="clear-selection",e.CreateItem="create-item",e.CreateItems="create-items",e.DeleteItems="delete-items",e.SetComponentData="set-component-data",e.InstallLocalComponent="install-local-component",e.ToggleActivateComponent="toggle-activate-component",e.RequestPermissions="request-permissions",e.PresentConflictResolution="present-conflict-resolution",e.DuplicateItem="duplicate-item",e.ComponentRegistered="component-registered",e.ActivateThemes="themes",e.Reply="reply",e.SaveSuccess="save-success",e.SaveError="save-error",e.ThemesActivated="themes-activated",e.KeyDown="key-down",e.KeyUp="key-up",e.Click="click"}(s||(s={})),function(e){e[e.Web=1]="Web",e[e.Desktop=2]="Desktop",e[e.Mobile=3]="Mobile"}(n||(n={})),function(e){e.Any="*",e.Item="SF|Item",e.RootKey="SN|RootKey|NoSync",e.ItemsKey="SN|ItemsKey",e.EncryptedStorage="SN|EncryptedStorage",e.Note="Note",e.Tag="Tag",e.SmartTag="SN|SmartTag",e.Component="SN|Component",e.Editor="SN|Editor",e.ActionsExtension="Extension",e.UserPrefs="SN|UserPreferences",e.HistorySession="SN|HistorySession",e.Theme="SN|Theme",e.Mfa="SF|MFA",e.ServerExtension="SF|Extension",e.FilesafeCredentials="SN|FileSafe|Credentials",e.FilesafeFileMetadata="SN|FileSafe|FileMetadata",e.FilesafeIntegration="SN|FileSafe|Integration",e.ExtensionRepo="SN|ExtensionRepo"}(i||(i={})),function(e){e.Pinned="pinned",e.Archived="archived",e.Locked="locked",e.UserModifiedDate="client_updated_at",e.DefaultEditor="defaultEditor",e.MobileRules="mobileRules",e.NotAvailableOnMobile="notAvailableOnMobile",e.MobileActive="mobileActive",e.LastSize="lastSize",e.PrefersPlainEditor="prefersPlainEditor",e.ComponentInstallError="installError"}(o||(o={}));var r=new Uint8Array(16);function c(){if(!a&&!(a="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return a(r)}const m=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,l=function(e){return"string"==typeof e&&m.test(e)};for(var d=[],h=0;h<256;++h)d.push((h+256).toString(16).substr(1));const p=function(e,t,s){var n=(e=e||{}).random||(e.rng||c)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){s=s||0;for(var i=0;i<16;++i)t[s+i]=n[i];return t}return function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,s=(d[e[t+0]]+d[e[t+1]]+d[e[t+2]]+d[e[t+3]]+"-"+d[e[t+4]]+d[e[t+5]]+"-"+d[e[t+6]]+d[e[t+7]]+"-"+d[e[t+8]]+d[e[t+9]]+"-"+d[e[t+10]]+d[e[t+11]]+d[e[t+12]]+d[e[t+13]]+d[e[t+14]]+d[e[t+15]]).toLowerCase();if(!l(s))throw TypeError("Stringified UUID is invalid");return s}(n)},u=e=>{var t;const s={[n.Web]:"web",[n.Desktop]:"desktop",[n.Mobile]:"mobile"};return null!==(t=s[e])&&void 0!==t?t:s[n.Web]},v=e=>null!=e,g=()=>{};class f{static get isSupported(){return!(!window.console&&!console)}static get info(){return f.isSupported&&this.enabled?console.log.bind(console):g}static get error(){return f.isSupported?console.error.bind(console):g}}var y,S,b,I;function k(e,t){var s=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),s.push.apply(s,n)}return s}function E(e){for(var t=1;t0&&(this.initialPermissions=s),v(null==n?void 0:n.coallesedSaving)&&(this.coallesedSaving=n.coallesedSaving),v(null==n?void 0:n.coallesedSavingDelay)&&(this.coallesedSavingDelay=n.coallesedSavingDelay),v(null==n?void 0:n.acceptsThemes)&&(this.component.acceptsThemes=null===(a=null==n?void 0:n.acceptsThemes)||void 0===a||a),v(i)&&(this.onReadyCallback=i),v(o)&&(this.onThemesChangeCallback=o),f.enabled=null!==(t=null==n?void 0:n.debug)&&void 0!==t&&t}deinit(){this.onReadyCallback=void 0,this.component={acceptsThemes:!0,activeThemes:[]},this.messageQueue=[],this.sentMessages=[],this.lastStreamedItem=void 0,this.pendingSaveItems=void 0,this.pendingSaveTimeout=void 0,this.pendingSaveParams=void 0,this.messageHandler&&(this.contentWindow.document.removeEventListener("message",this.messageHandler),this.contentWindow.removeEventListener("message",this.messageHandler)),this.keyDownEventListener&&this.contentWindow.removeEventListener("keydown",this.keyDownEventListener),this.keyUpEventListener&&this.contentWindow.removeEventListener("keyup",this.keyUpEventListener),this.clickEventListener&&this.contentWindow.removeEventListener("click",this.clickEventListener)}registerMessageHandler(){this.messageHandler=e=>{if(f.info("Components API Message received:",e.data),document.referrer&&new URL(document.referrer).origin!==new URL(e.origin).origin)return;const{data:t}=e,n=(e=>{if("string"!=typeof e)return!1;try{const t=JSON.parse(e),s=Object.prototype.toString.call(t);return"[object Object]"===s||"[object Array]"===s}catch(e){return!1}})(t)?JSON.parse(t):t;if(n){if(void 0===this.component.origin&&n.action===s.ComponentRegistered)this.component.origin=e.origin;else if(e.origin!==this.component.origin)return;this.handleMessage(n)}else f.error("Invalid data received. Skipping...")},this.contentWindow.document.addEventListener("message",this.messageHandler,!1),this.contentWindow.addEventListener("message",this.messageHandler,!1),f.info("Waiting for messages...")}registerKeyboardEventListeners(){this.keyDownEventListener=e=>{f.info("A key has been pressed: ".concat(e.key)),e.ctrlKey?this.keyDownEvent(I.Ctrl):e.shiftKey?this.keyDownEvent(I.Shift):(e.metaKey||"Meta"===e.key)&&this.keyDownEvent(I.Meta)},this.keyUpEventListener=e=>{f.info("A key has been released: ".concat(e.key)),"Control"===e.key?this.keyUpEvent(I.Ctrl):"Shift"===e.key?this.keyUpEvent(I.Shift):"Meta"===e.key&&this.keyUpEvent(I.Meta)},this.contentWindow.addEventListener("keydown",this.keyDownEventListener,!1),this.contentWindow.addEventListener("keyup",this.keyUpEventListener,!1)}registerMouseEventListeners(){this.clickEventListener=e=>{f.info("A click has been performed."),this.mouseClickEvent()},this.contentWindow.addEventListener("click",this.clickEventListener,!1)}handleMessage(e){switch(e.action){case s.ComponentRegistered:this.component.sessionKey=e.sessionKey,e.componentData&&(this.component.data=e.componentData),this.onReady(e.data),f.info("Component successfully registered with payload:",e);break;case s.ActivateThemes:this.activateThemes(e.data.themes);break;default:{var t,n;if(!e.original)return;const s=null===(t=this.sentMessages)||void 0===t?void 0:t.filter((t=>{var s;return t.messageId===(null===(s=e.original)||void 0===s?void 0:s.messageId)}))[0];if(!s){const e=this.contentWindow.document.title,t=("The extension '".concat(e,"' is attempting to communicate with Standard Notes, ")+"but an error is preventing it from doing so. Please restart this extension and try again.").replace(" "," ");return void f.info(t)}null==s||null===(n=s.callback)||void 0===n||n.call(s,e.data);break}}}onReady(e){this.component.environment=e.environment,this.component.platform=e.platform,this.component.uuid=e.uuid,this.initialPermissions&&this.initialPermissions.length>0&&this.requestPermissions(this.initialPermissions);for(const e of this.messageQueue)this.postMessage(e.action,e.data,e.callback);this.messageQueue=[],f.info("Data passed to onReady:",e),this.activateThemes(e.activeThemeUrls||[]),this.postMessage(s.ThemesActivated,{}),this.onReadyCallback&&this.onReadyCallback()}getSelfComponentUUID(){return this.component.uuid}isRunningInDesktopApplication(){return this.component.environment===u(n.Desktop)}isRunningInMobileApplication(){return this.component.environment===u(n.Mobile)}getComponentDataValueForKey(e){if(this.component.data)return this.component.data[e]}setComponentDataValueForKey(e,t){if(!this.component.data)throw new Error("The component has not been initialized.");if(!e||e&&0===e.length)throw new Error("The key for the data value should be a valid string.");this.component.data=E(E({},this.component.data),{},{[e]:t}),this.postMessage(s.SetComponentData,{componentData:this.component.data})}clearComponentData(){this.component.data={},this.postMessage(s.SetComponentData,{componentData:this.component.data})}postMessage(e,t,s){if(!this.component.sessionKey)return void this.messageQueue.push({action:e,data:t,api:b.Component,callback:s});const n={action:e,data:t,messageId:this.generateUUID(),sessionKey:this.component.sessionKey,api:b.Component},i=JSON.parse(JSON.stringify(n));let o;i.callback=s,this.sentMessages.push(i),o=this.isRunningInMobileApplication()?JSON.stringify(n):n,f.info("Posting message:",o),this.contentWindow.parent.postMessage(o,this.component.origin)}requestPermissions(e,t){this.postMessage(s.RequestPermissions,{permissions:e},(()=>{t&&t()}))}activateThemes(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(!this.component.acceptsThemes)return;f.info("Incoming themes:",e);const{activeThemes:t}=this.component;if(t&&t.sort().toString()==e.sort().toString())return;let s=e;const n=[];for(const i of t)e.includes(i)?s=s.filter((e=>e!==i)):n.push(i);f.info("Deactivating themes:",n),f.info("Activating themes:",s);for(const e of n)this.deactivateTheme(e);this.component.activeThemes=e;for(const e of s){if(!e)continue;const t=this.contentWindow.document.createElement("link");t.id=btoa(e),t.href=e,t.type="text/css",t.rel="stylesheet",t.media="screen,print",t.className="custom-theme",this.contentWindow.document.getElementsByTagName("head")[0].appendChild(t)}this.onThemesChangeCallback&&this.onThemesChangeCallback()}themeElementForUrl(e){return Array.from(this.contentWindow.document.getElementsByClassName("custom-theme")).slice().find((t=>t.id==btoa(e)))}deactivateTheme(e){const t=this.themeElementForUrl(e);t&&t.parentNode&&(t.setAttribute("disabled","true"),t.parentNode.removeChild(t))}generateUUID(){return p()}get platform(){return this.component.platform}get environment(){return this.component.environment}streamItems(e,t){this.postMessage(s.StreamItems,{content_types:e},(e=>{t(e.items)}))}streamContextItem(e){this.postMessage(s.StreamContextItem,{},(t=>{const{item:s}=t;(!this.lastStreamedItem||this.lastStreamedItem.uuid!==s.uuid)&&this.pendingSaveTimeout&&(clearTimeout(this.pendingSaveTimeout),this.performSavingOfItems(this.pendingSaveParams),this.pendingSaveTimeout=void 0,this.pendingSaveParams=void 0),this.lastStreamedItem=s,e(this.lastStreamedItem)}))}selectItem(e){this.postMessage(s.SelectItem,{item:this.jsonObjectForItem(e)})}clearSelection(){this.postMessage(s.ClearSelection,{content_type:i.Tag})}createItem(e,t){this.postMessage(s.CreateItem,{item:this.jsonObjectForItem(e)},(e=>{let{item:s}=e;!s&&e.items&&e.items.length>0&&(s=e.items[0]),this.associateItem(s),t&&t(s)}))}createItems(e,t){const n=e.map((e=>this.jsonObjectForItem(e)));this.postMessage(s.CreateItems,{items:n},(e=>{t&&t(e.items)}))}associateItem(e){this.postMessage(s.AssociateItem,{item:this.jsonObjectForItem(e)})}deassociateItem(e){this.postMessage(s.DeassociateItem,{item:this.jsonObjectForItem(e)})}deleteItem(e,t){this.deleteItems([e],t)}deleteItems(e,t){const n={items:e.map((e=>this.jsonObjectForItem(e)))};this.postMessage(s.DeleteItems,n,(e=>{t&&t(e)}))}sendCustomEvent(e,t,s){this.postMessage(e,t,(e=>{s&&s(e)}))}saveItem(e,t){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.saveItems([e],t,s)}saveItemWithPresave(e,t,s){this.saveItemsWithPresave([e],t,s)}saveItemsWithPresave(e,t,s){this.saveItems(e,s,!1,t)}performSavingOfItems(e){let{items:t,presave:n,callback:i}=e;const o=setTimeout((()=>{this.concernTimeouts.forEach((e=>clearTimeout(e))),alert("This editor is unable to communicate with Standard Notes. Your changes may not be saved. Please backup your changes, then restart the application and try again.")}),5e3);this.concernTimeouts.push(o),n&&n();const a=[];for(const e of t)a.push(this.jsonObjectForItem(e));this.postMessage(s.SaveItems,{items:a},(()=>{this.concernTimeouts.forEach((e=>clearTimeout(e))),null==i||i()}))}saveItems(e,t){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3?arguments[3]:void 0;if(this.pendingSaveItems||(this.pendingSaveItems=[]),this.coallesedSaving&&!s){this.pendingSaveTimeout&&clearTimeout(this.pendingSaveTimeout);const s=e.map((e=>e.uuid)),i=this.pendingSaveItems.filter((e=>!s.includes(e.uuid)));this.pendingSaveItems=i.concat(e),this.pendingSaveParams={items:this.pendingSaveItems,presave:n,callback:t},this.pendingSaveTimeout=setTimeout((()=>{this.performSavingOfItems(this.pendingSaveParams),this.pendingSaveItems=[],this.pendingSaveTimeout=void 0,this.pendingSaveParams=null}),this.coallesedSavingDelay)}else this.performSavingOfItems({items:e,presave:n,callback:t})}setSize(e,t){this.postMessage(s.SetSize,{type:"container",width:e,height:t})}keyDownEvent(e){this.postMessage(s.KeyDown,{keyboardModifier:e})}keyUpEvent(e){this.postMessage(s.KeyUp,{keyboardModifier:e})}mouseClickEvent(){this.postMessage(s.Click,{})}jsonObjectForItem(e){const t=Object.assign({},e);return t.children=null,t.parent=null,t}getItemAppDataValue(e,t){var s,n;return null==e||null===(s=e.content)||void 0===s||null===(n=s.appData)||void 0===n?void 0:n["org.standardnotes.sn"][t]}}return t.default})()})); \ No newline at end of file diff --git a/public/components/org.standardnotes.code-editor/package.json b/public/components/org.standardnotes.code-editor/package.json index 086102800..5f538a201 100644 --- a/public/components/org.standardnotes.code-editor/package.json +++ b/public/components/org.standardnotes.code-editor/package.json @@ -1,6 +1,6 @@ { "name": "sn-code-editor", - "version": "1.3.8", + "version": "1.3.9", "description": "A code editor for Standard Notes", "main": "dist/main.js", "author": "Standard Notes ", @@ -16,8 +16,8 @@ "@babel/cli": "^7.12.10", "@babel/core": "^7.12.10", "@babel/preset-env": "^7.12.11", - "@standardnotes/component-relay": "2.0.3", - "codemirror": "^5.59.2", + "@standardnotes/component-relay": "2.2.0", + "codemirror": "5.59.2", "copy-webpack-plugin": "^7.0.0", "css-loader": "^5.0.1", "eslint": "^7.18.0", diff --git a/public/components/org.standardnotes.fancy-markdown-editor/dist/dist.css b/public/components/org.standardnotes.fancy-markdown-editor/dist/dist.css index dd9241e87..d612b2c82 100644 --- a/public/components/org.standardnotes.fancy-markdown-editor/dist/dist.css +++ b/public/components/org.standardnotes.fancy-markdown-editor/dist/dist.css @@ -229,12 +229,12 @@ h3 { } h1 { - margin: .5em 0 .25em; + margin: 0.5em 0 0.25em; font-size: 225%; } h2 { - margin: 1em 0 .25em; + margin: 1em 0 0.25em; font-size: 175%; } @@ -425,9 +425,9 @@ textarea { .result-html .svg-preview { overflow: visible; - -webkit-transition: opacity .4s ease-in-out; - -moz-transition: opacity .4s ease-in-out; - transition: opacity .4s ease-in-out; + -webkit-transition: opacity 0.4s ease-in-out; + -moz-transition: opacity 0.4s ease-in-out; + transition: opacity 0.4s ease-in-out; fill: var(--sn-stylekit-info-color); } @@ -520,3 +520,5 @@ textarea { -webkit-text-fill-color: initial; } } + +/*# sourceMappingURL=app.css.map */ diff --git a/public/components/org.standardnotes.fancy-markdown-editor/dist/dist.js b/public/components/org.standardnotes.fancy-markdown-editor/dist/dist.js index b6cfbf617..9558140cf 100644 --- a/public/components/org.standardnotes.fancy-markdown-editor/dist/dist.js +++ b/public/components/org.standardnotes.fancy-markdown-editor/dist/dist.js @@ -1,6773 +1 @@ -/** - * Markdown and LaTeX Editor - * - * (c) Roman Parpalak, 2016-2018 - */ - -(function (document, window) { - 'use strict'; - - var defaults = { - html: true, // Enable HTML tags in source - xhtmlOut: false, // Use '/' to close single tags (
    ) - breaks: false, // Convert '\n' in paragraphs into
    - langPrefix: 'language-', // CSS language prefix for fenced blocks - linkify: true, // autoconvert URL-like texts to links - typographer: true, // Enable smartypants and other sweet transforms - quotes: '""\'\'', - - // option for tex plugin - _habr: {protocol: ''}, // no protocol for habrahabr markup - - // options below are for demo only - _highlight: true, - _strict: false - }; - - function domSetResultView(val) { - var eNode = document.body; - - [ - 'result-as-html', - 'result-as-htmltex', - 'result-as-habr', - 'result-as-src', - 'result-as-debug' - ].forEach(function (className) { - if (eNode.classList) { - eNode.classList.remove(className); - } - else { - eNode.className = eNode.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' '); - } - }); - - if (eNode.classList) { - eNode.classList.add('result-as-' + val); - } - else { - eNode.className += ' ' + 'result-as-' + val; - } - } - - function ParserCollection( - defaults, - imageLoader, - markdownit, - setResultView, - sourceGetter, - sourceSetter, - domSetPreviewHTML, - domSetHighlightedContent, - updateCallback - ) { - var _mdPreview = markdownit(defaults) - .use(markdownitS2Tex) - .use(markdownitSub) - .use(markdownitSup) - ; - - var _mdHtmlAndImages = markdownit(defaults) - .use(markdownitS2Tex) - .use(markdownitSub) - .use(markdownitSup) - ; - - var _mdHtmlAndTex = markdownit(defaults) - .use(markdownitS2Tex, {noreplace: true}) - .use(markdownitSub) - .use(markdownitSup) - ; - - var _mdHtmlHabrAndImages = markdownit(defaults) - .use(markdownitS2Tex, defaults._habr) - .use(markdownitSub) - .use(markdownitSup) - ; - - var _mdMdAndImages = markdownit('zero') - .use(markdownitS2Tex) - ; - - /** - * Detects if the paragraph contains the only formula. - * Parser gives the class 'tex-block' to such formulas. - * - * @param tokens - * @param idx - * @returns {boolean} - */ - function hasBlockFormula(tokens, idx) { - if (idx >= 0 && tokens[idx] && tokens[idx].children) { - for (var i = tokens[idx].children.length; i--;) { - if (tokens[idx].children[i].tag === 'tex-block') { - return true; - } - } - } - return false; - } - - /** - * Inject line numbers for sync scroll. Notes: - * - We track only headings and paragraphs on first level. That's enough. - * - Footnotes content causes jumps. Level limit filter it automatically. - * - * @param tokens - * @param idx - * @param options - * @param env - * @param self - */ - function injectLineNumbersAndCentering(tokens, idx, options, env, self) { - var line; - if (tokens[idx].map && tokens[idx].level === 0) { - line = tokens[idx].map[0]; - tokens[idx].attrPush(['class', 'line']); - tokens[idx].attrPush(['data-line', line + '']); - } - - // Hack (maybe it is better to use block renderers?) - if (hasBlockFormula(tokens, idx + 1)) { - tokens[idx].attrPush(['align', 'center']); - tokens[idx].attrPush(['style', 'text-align: center;']); - } - - return self.renderToken(tokens, idx, options, env, self); - } - - // Habrahabr does not ignore

    tags and meanwhile uses whitespaces - function habrHeading(tokens, idx, options, env, self) { - var prefix = ""; - if (idx > 0 && tokens[idx - 1].type === 'paragraph_close' && !hasBlockFormula(tokens, idx - 2)) { - prefix = "\n"; - } - - return prefix + self.renderToken(tokens, idx, options, env, self); - } - - function habrParagraphOpen(tokens, idx, options, env, self) { - var prefix = ""; - if (idx > 0 && tokens[idx - 1].type === 'paragraph_close' && !hasBlockFormula(tokens, idx - 2)) { - prefix = "\n"; - } - return prefix; //+ self.renderToken(tokens, idx, options, env, self); - } - - function habrParagraphClose(tokens, idx, options, env, self) { - var prefix = "\n"; - return prefix; //+ self.renderToken(tokens, idx, options, env, self); - } - - function injectCentering(tokens, idx, options, env, self) { - // Hack (maybe it is better to use block renderers?) - if (hasBlockFormula(tokens, idx + 1)) { - tokens[idx].attrPush(['align', 'center']); - tokens[idx].attrPush(['style', 'text-align: center;']); - } - return self.renderToken(tokens, idx, options, env, self); - } - - _mdPreview.renderer.rules.paragraph_open = _mdPreview.renderer.rules.heading_open = injectLineNumbersAndCentering; - _mdHtmlAndImages.renderer.rules.paragraph_open = _mdHtmlAndImages.renderer.rules.heading_open = injectCentering; - - _mdHtmlHabrAndImages.renderer.rules.heading_open = habrHeading; - _mdHtmlHabrAndImages.renderer.rules.paragraph_open = habrParagraphOpen; - _mdHtmlHabrAndImages.renderer.rules.paragraph_close = habrParagraphClose; - - // A copy of Markdown-it original backticks parser. - // We want to prevent from parsing dollars inside backticks as TeX delimeters (`$$`). - // But we do not want HTML in result. - _mdMdAndImages.inline.ruler.before('backticks', 'backticks2', function (state, silent) { - var start, max, marker, matchStart, matchEnd, token, - pos = state.pos, - ch = state.src.charCodeAt(pos); - if (ch !== 0x60/* ` */) { return false; } - - start = pos; - pos++; - max = state.posMax; - - while (pos < max && state.src.charCodeAt(pos) === 0x60/* ` */) { pos++; } - - marker = state.src.slice(start, pos); - - matchStart = matchEnd = pos; - - while ((matchStart = state.src.indexOf('`', matchEnd)) !== -1) { - matchEnd = matchStart + 1; - - while (matchEnd < max && state.src.charCodeAt(matchEnd) === 0x60/* ` */) { matchEnd++; } - - if (matchEnd - matchStart === marker.length) { - if (!silent) { - token = state.push('backticks2_inline', 'code', 0); // <-- The change - token.markup = marker; - token.content = state.src.slice(pos, matchStart) - } - state.pos = matchEnd; - return true; - } - } - - if (!silent) { state.pending += marker; } - state.pos += marker.length; - return true; - }); - - _mdMdAndImages.renderer.rules.backticks2_inline = function (tokens, idx /*, options, env, slf*/) { - var token = tokens[idx]; - return token.markup + token.content + token.markup; - }; - - // Prevents HTML escaping. - _mdMdAndImages.renderer.rules.text = function (tokens, idx /*, options, env */) { - return tokens[idx].content; - }; - - /** - * Habrahabr "source" tag - * - * @param tokens - * @param idx - * @param options - * @param env - * @param self - * @returns {string} - */ - _mdHtmlHabrAndImages.renderer.rules.fence = function (tokens, idx, options, env, self) { - var token = tokens[idx], - info = token.info ? _mdHtmlHabrAndImages.utils.unescapeAll(token.info).trim() : '', - langName = '', - highlighted; - - if (info) { - langName = info.split(/\s+/g)[0]; - token.attrPush(['lang', langName]); - } - - if (options.highlight) { - highlighted = options.highlight(token.content, langName) || _mdHtmlHabrAndImages.utils.escapeHtml(token.content); - } else { - highlighted = _mdHtmlHabrAndImages.utils.escapeHtml(token.content); - } - - return '\n' - + highlighted - + '\n'; - }; - - function getHabraMarkup(source) { - var html = _mdHtmlHabrAndImages.render(source); - - html = html.replace(' lastSrcElemPos ? srcScrollHeight - allowedHeight : lastSrcElemPos); - mapResult.push(document.querySelector('.result-html').scrollHeight); - - return [mapSrc, mapResult]; - } - - documentReady(function () { - var eTextarea = document.getElementById('editor-source'), - eResultHtml = document.getElementsByClassName('result-html')[0]; - - var recalcHeight = debounce(function () { - decorator.recalcHeight() - }, 100); - - var scrollMap = new ScrollMap(domFindScrollMarks); - - var parserCollection = new ParserCollection( - defaults, - new ImageLoader(new ImagePreloader(), location.protocol === 'https:' ? 'https:' : 'http:'), - window.markdownit, - domSetResultView, - function domGetSource() { - return eTextarea.value; - }, - function domSetSource(text) { - eTextarea.value = text; - decorator.update(); - }, - domSetPreviewHTML, - domSetHighlightedContent, - function (source) { - // reset lines mapping cache on content update - scrollMap.reset(); - } - ); - - parserCollection.updateResult(); - - // start the decorator - var decorator = new TextareaDecorator(eTextarea, mdParser); - - // .source has been changed after TextareaDecorator call - var eNodeSource = document.getElementsByClassName('source')[0]; - - var syncScroll = new SyncScroll( - scrollMap, - new Animator(function () { - return eNodeSource.scrollTop; - }, function (y) { - eNodeSource.scrollTop = y; - }), - new Animator(function () { - return eResultHtml.scrollTop; - }, function (y) { - eResultHtml.scrollTop = y; - }), - eNodeSource, - eResultHtml, - document.querySelector('[id^="container-block"]') - ); - - // Sync scroll listeners - - // var updateText = debounce(parserCollection.updateResult, 240, {maxWait: 3000}); - - // We'll update text on our own - var updateText = parserCollection.updateResult; - - // eTextarea.addEventListener('keyup', updateText); - // eTextarea.addEventListener('paste', updateText); - // eTextarea.addEventListener('cut', updateText); - // eTextarea.addEventListener('mouseup', updateText); - - eTextarea.addEventListener('touchstart', syncScroll.switchScrollToSrc); - eTextarea.addEventListener('mouseover', syncScroll.switchScrollToSrc); - - eResultHtml.addEventListener('touchstart', syncScroll.switchScrollToResult); - eResultHtml.addEventListener('mouseover', syncScroll.switchScrollToResult); - - syncScroll.switchScrollToSrc(); - - Array.prototype.forEach.call(document.getElementsByClassName('control-item'), function (eNode, index) { - eNode.addEventListener('click', function () { - var view = this.getAttribute('data-result-as'); - if (!view) { - return; - } - - parserCollection.switchView(view); - - if (view !== 'preview') { - // Selecting all block content. - var contentBlocks = document.getElementsByClassName('result-src-content'); - if (contentBlocks.length) { - setTimeout(function () { - selectText(contentBlocks[0]); - }, 0); - } - } - }) - }); - - // Interface element listeners - - document.querySelector('._download-source').addEventListener('click', function () { - var blob = new Blob([parserCollection.getSource()], {type: 'text/markdown;charset=utf-8'}); - saveAs(blob, 'source.md'); - }); - - document.querySelector('._download-result').addEventListener('click', function () { - var blob = new Blob([parserCollection.getDisplayedResult()], {type: 'text/html;charset=utf-8'}); - saveAs(blob, parserCollection.getDisplayedResultFilename()); - }); - - document.querySelector('._upload-source').addEventListener('click', function () { - var eNode = document.getElementById('fileElem'); - // Fire click on file input - (eNode.onclick || eNode.click || function () {}).call(eNode); - }); - - document.getElementById('fileElem').addEventListener('change', function () { - // A file has been chosen - if (!this.files || !FileReader) { - return; - } - - var reader = new FileReader(), - fileInput = this; - - reader.onload = function () { - parserCollection.setSource(this.result); - fileInput.value = fileInput.defaultValue; - }; - reader.readAsText(this.files[0]); - }); - - (function () { - var eSlider = document.querySelector('.slider'), - dragSlider = new Draggabilly(eSlider, { - axis: 'x' - }), - sourceBlock = document.getElementById('source-block'), - resultBLock = document.getElementById('result-block'), - windowWidth; - - function setWidth(percent) { - sourceBlock.style.width = 'calc(' + percent + '% - 3px)'; - resultBLock.style.width = 'calc(' + (100 - percent) + '% - 3px)'; - - scrollMap.reset(); - } - - eSlider.addEventListener('dblclick', function () { - setWidth(50); - }); - - dragSlider.on('dragStart', function (event, pointer, moveVector) { - windowWidth = window.innerWidth; - }); - - dragSlider.on('dragMove', function (event, pointer, moveVector) { - setWidth(100.0 * pointer.pageX / windowWidth); - }); - })(); - - window.upmath = { - updateText: () => { - updateText(); - decorator.recalcHeight() - decorator.update(); - }, - getHTML: () => { - var result = document.getElementsByClassName('result-html'); - return eResultHtml.innerHTML; - } - } - - // Need to recalculate line positions on window resize - window.addEventListener('resize', function () { - scrollMap.reset(); - recalcHeight(); - }); - }); -})(document, window); -;/** - * Renders LaTeX formulae via KaTeX. - * - * Previously connects service to the markdown-it renderer. - * - * Inspired by - * - * @copyright 2015 Roman Parpalak - */ - -(function (w) { - 'use strict'; - - function scanDelims(state, start) { - var pos = state.pos, lastChar, nextChar, count, - isLastWhiteSpace, isLastPunctChar, - isNextWhiteSpace, isNextPunctChar, - can_open = true, - can_close = true, - max = state.posMax, - isWhiteSpace = state.md.utils.isWhiteSpace, - isPunctChar = state.md.utils.isPunctChar, - isMdAsciiPunct = state.md.utils.isMdAsciiPunct; - - // treat beginning of the line as a whitespace - lastChar = start > 0 ? state.src.charCodeAt(start - 1) : 0x20; - if (pos >= max) { - can_open = false; - } - count = pos - start; - - // treat end of the line as a whitespace - nextChar = pos < max ? state.src.charCodeAt(pos) : 0x20; - isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar)); - isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar)); - isLastWhiteSpace = isWhiteSpace(lastChar); - isNextWhiteSpace = isWhiteSpace(nextChar); - - if (isNextWhiteSpace) { - can_open = false; - } - else if (isNextPunctChar) { - if (!(isLastWhiteSpace || isLastPunctChar)) { - can_open = false; - } - } - if (isLastWhiteSpace) { - can_close = false; - } - else if (isLastPunctChar) { - if (!(isNextWhiteSpace || isNextPunctChar)) { - can_close = false; - } - } - - return { - can_open: can_open, - can_close: can_close, - delims: count - }; - } - - - function makeMath_inline(open, close) { - return function math_inline(state, silent) { - var startCount, - found, - res, - token, - closeDelim, - max = state.posMax, - start = state.pos, - openDelim = state.src.slice(start, start + open.length); - - if (openDelim !== open) { - return false; - } - if (silent) { - return false; - } // Don’t run any pairs in validation mode - - res = scanDelims(state, start + open.length); - startCount = res.delims; - - if (!res.can_open) { - state.pos += startCount; - // Earlier we checked !silent, but this implementation does not need it - state.pending += state.src.slice(start, state.pos); - return true; - } - - state.pos = start + open.length; - - while (state.pos < max) { - closeDelim = state.src.slice(state.pos, state.pos + close.length); - if (closeDelim === close) { - res = scanDelims(state, state.pos + close.length); - if (res.can_close) { - found = true; - break; - } - } - - state.md.inline.skipToken(state); - } - - if (!found) { - // Parser failed to find ending tag, so it is not a valid math - state.pos = start; - return false; - } - - // Found! - - // Detecting single formula with a line number - var m = false, - tag = 'tex-inline'; - - if (start == 0) { - var srcEnd = state.src.substring(state.pos + close.length); - m = srcEnd.match(/^\s*(\([ \t]*\S+[ \t]*\))\s*$/); - if (m || srcEnd == '') { - tag = 'tex-block'; - } - } - - if (m) { - token = state.push('math_number', 'tex-number', 0); - token.content = m[1]; - token.markup = '()'; - } - - state.posMax = state.pos; - state.pos = start + close.length; - - // Earlier we checked !silent, but this implementation does not need it - token = state.push('math_inline', tag, 0); - token.content = state.src.slice(state.pos, state.posMax); - token.markup = open; - - state.pos = m ? max : state.posMax + close.length; - state.posMax = max; - - return true; - }; - } - - w.markdownitS2Tex = function math_plugin(md, options) { - // Default options - options = typeof options === 'object' ? options : {}; - var inlineOpen = options.inlineOpen || '$$', - inlineClose = options.inlineClose || '$$'; - - var math_inline = makeMath_inline(inlineOpen, inlineClose); - - md.inline.ruler.before('escape', 'math_inline', math_inline); - - md.renderer.rules.math_inline = (function () { - return function (tokens, idx) { - var formula = tokens[idx].content; - - if (options.noreplace) { - var str = inlineOpen + formula + inlineClose; - return str - .replace(/&/g, '&') - .replace(/>/g, '>') - .replace(/' + tokens[idx].content + ''; - }; - }; -}(window)); -;/** - * Markdown parser with latex extension - * - * (c) Roman Parpalak, 2015 - * Based on code by Colin Kuebler, 2012 - */ - -function MarkdownParser(i) { - /* INIT */ - var api = this; - - // variables used internally - i = i ? 'i' : ''; - var parseInlineRE = null, - parseBlockRE = null, - ruleMap = {}, - ruleBlockMap = {}, - ruleInlineMap = {}, - runInBlocks = {}, - markers = {}; - - var subRules, - subRulesMap = {}, - subRulesRE = {}; - - function addBlockRule(s, rule) { - var re = new RegExp('^(' + s + ')$', i); - ruleMap[rule] = re; - ruleBlockMap[rule] = re; - } - - function addInlineRule(s, rule) { - var re = new RegExp('^(' + s + ')$', i); - ruleMap[rule] = re; - ruleInlineMap[rule] = re; - } - - function addSubruleMap(s, rule, block) { - if (!subRulesMap[block]) { - subRulesMap[block] = {}; - } - subRulesMap[block][rule] = new RegExp('^(' + s + ')$', i); - } - - api.addInlineRules = function (rules) { - var ruleSrc = []; - - for (var rule in rules) { - if (rules.hasOwnProperty(rule)) { - var s = rules[rule].source; - ruleSrc.push(s); - addInlineRule(s, rule); - } - } - - parseInlineRE = new RegExp('(' + ruleSrc.join('|') + ')', i); - - return this; - }; - api.addSubRules = function (rules) { - subRules = rules; - - for (var block in rules) { - if (rules.hasOwnProperty(block)) { - var rules2 = rules[block], - p = []; - for (var rule in rules2) { - if (rules2.hasOwnProperty(rule)) { - var s = rules2[rule].source; - addSubruleMap(s, rule, block); - p.push(s); - } - } - - subRulesRE[block] = new RegExp('(' + p.join('|') + ')', i); - } - } - - return this; - }; - api.addBlockRules = function (rules) { - var ruleArray = []; - - for (var rule in rules) { - if (rules.hasOwnProperty(rule)) { - var s = rules[rule].source; - ruleArray.push(s); - addBlockRule(s, rule); - } - } - parseBlockRE = new RegExp('(' + ruleArray.join('|') + ')', i); - - return this; - }; - api.addRunIn = function (rules) { - runInBlocks = rules; - - return this; - }; - api.addMarkers = function (m) { - markers = m; - - return this; - }; - - function tokenizeBlock(block, className, lineNum, result) { - var re = parseInlineRE; - - // Process specific rules for the given block type className - if (className in subRules) { - if (subRules[className] === null) { - result.push({ - token: block, - block: className, - line: lineNum - }); - - return; - } - else { - re = subRulesRE[className]; - } - } - - // Token for a block marker - if (typeof markers[className] !== 'undefined') { - var matches = block.match(markers[className]); - if (matches[2]) { - result.push({ - token: matches[1], - block: className + '-mark', - line: lineNum - }); - block = matches[2]; - lineNum = 0; // Write block position only once - } - } - - var items = block.split(re), - j = 0, token; - - for (; j < items.length; j++) { - token = items[j]; - if (token != '') { - result.push({ - token: token, - block: className, - line: lineNum - }); - lineNum = 0; // Write block position only once - } - } - } - - api.tokenize = function (input) { - input = input.replace('\r', ''); - - var result = [], - classNames = [], - blocks = input.split(parseBlockRE), - blockNum = blocks.length, - i, prevIndex = 0, prevBlockClass; - - // Merge blocks separated by line breaks - for (i = 0; i < blockNum; i++) { - if (blocks[i] === '') { - continue; - } - - var className = identify(blocks[i], ruleBlockMap); - - if (prevIndex > 0 && className in runInBlocks) { - var allowedPrevBlocks = runInBlocks[className].allowedBlocks; - if (allowedPrevBlocks && allowedPrevBlocks.indexOf(prevBlockClass) >= 0) { - blocks[prevIndex] += blocks[i]; - blocks[i] = ''; - classNames[i] = ''; - - continue; - } - } - - classNames[i] = className; - - prevIndex = i; - prevBlockClass = className; - } - - var lineBreakCnt = 0; - - for (i = 0; i < blockNum; i++) { - var block = blocks[i]; - if (block !== '') { - var lineNum = 0; - if (classNames[i] != 'empty') { // TODO move to config - lineNum = lineBreakCnt; - lineBreakCnt = 0; // Storing diff between line numbers - } - tokenizeBlock(block, classNames[i], lineNum, result); - lineBreakCnt += substrCount('\n', block); - } - } - - return result; - }; - api.identifyInline = function (tokenObj) { - var className = tokenObj.block, - map = ruleInlineMap; - - if (className in subRules) { - if (subRules[className] === null) { - return ''; - } - else { - map = subRulesMap[className]; - } - } - return identify(tokenObj.token, map); - }; - - function identify(token, ruleMap) { - for (var rule in ruleMap) { - if (ruleMap.hasOwnProperty(rule) && ruleMap[rule].test(token)) { - return rule; - } - } - - return ''; - } - - return api; -} - -// Markdown syntax parser -var mdParser = new MarkdownParser(); - -mdParser - .addBlockRules({ - latexBlock: /[ \t]*\$\$\n?(?:[^\n]+\n)*(?:[^\n]*[^\\\n])?\$\$(?:[ \t]*\([ \t]*\S+[ \t]*\))?[ \t]*(?:\n|$)/, - empty: /(?:[ \t]*\n)+/, - fence: /```[\s\S]*?(?:$|```(?:\n|$))/, - reference: /\[[^\]]+\]\:[^\n]*(?:\n|$)/, - header: /#{1,6} [^\n]*(?:\n|$)/, - header2: /[^\n]+\n[ \t]*[=-]{2,}(?:\n|$)/, - rule: /(?:[\*]{3,}|[\-]{3,}|[\_]{3,})(?:\n|$)/, - list: /[ ]{0,3}(?:[+\-\*]|\d+\.)[ \t]+[^\n]*(?:\n[ \t]*[^\n\t ]+[ \t]*)*(?:\n|$)/, - quote: /[ ]{0,3}>[^\n]*(?:\n|$)/, - paragraph: /[\s\S]*?(?:\n|$)/ - }) - .addInlineRules({ - latex: /\$\$(?:[\s\S]*?[^\\])?\$\$/, - link: /\[.+?\][\(\[].*?[\)\]]/, - bold: /(?:\s|^)__[\s\S]*?\S__|\*\*[\s\S]*?\S\*\*/, - italic: /(?:\s|^)_[\s\S]*?[^\\\s]_|\*[^\\\s]\*|\*\S[\s\S]*?[^\\\s]\*/, - strike: /~~.+?~~/, - sup: /\^.+?\^/, - sub: /~.+?~/, - code: /``.+?``|`.*?[^`\\]`(?!`)/ - }) - .addSubRules({ - fence: null, - rule: null, - latexBlock: { - comment: /%[^\n]*?(?=\$\$)|%[^\n]*/, - reference: /[ \t]*\([ \t]*\S+[ \t]*\)[ \t\n]*$/, - index: /(?:\^|_)(?:\\[a-zA-Zа-яА-я]+[\*]?(?:\{.*?\})|\{[a-zA-Zа-яА-я0-9]*?\}|[a-zA-Zа-яА-я0-9])/, - bracket: /(?:(?:\\left|\\right)?[\{\}\[\]\(\)\|])/, - keyword: /\\[a-zA-Zа-яА-я]+[\*]?/, - keyword2: /\\[^a-zA-Zа-яА-я0-9]/, - keyword3: /&/, - delimeter: /\$\$/ - } - }) - .addRunIn({ - paragraph: { - allowedBlocks : ['paragraph', 'quote', 'list'] - } - }) - .addMarkers({ - list: /^([ ]{0,3}(?:[+\-\*]|\d+\.)[ \t]+)([\s\S]*)$/, - quote: /^([ ]{0,3}(?:>[ \t]*)+)([\s\S]*)$/ - }); -;'use strict'; - -/** - * DOMContentLoaded polyfill - * - * @param fn - */ -function documentReady(fn) { - if (document.readyState != 'loading') { - fn(); - } - else { - document.addEventListener('DOMContentLoaded', fn); - } -} - -/** - * Find the index of a maximum value in values array - * which is less than maxValue. - * - * @param maxValue - * @param values - * - * @returns {object} - */ -function findBisect(maxValue, values) { - var a = 0, - b = values.length - 1, - f_a = values[a]; - - if (f_a >= maxValue) { - return {val: a, part: 0}; - } - - var f_b = values[b]; - if (f_b < maxValue) { - return {val: b, part: 0}; - } - - while (b - a > 1) { - var c = a + Math.round((b - a) / 2), - f_c = values[c]; - - if (f_c >= maxValue) { - b = c; - f_b = f_c; - } - else { - a = c; - f_a = f_c; - } - } - - return {val: a, part: (maxValue - f_a) / (f_b - f_a)}; -} - -/** - * Count the number of occurances of a substring in a string - * - * @param substr - * @param str - * @returns {number} - */ -function substrCount(substr, str) { - var count = -1, - index = -2; - - while (index != -1) { - count++; - index = str.indexOf(substr, index + 1) - } - - return count; -} - -/** - * Selects the content of the given DOM node. - * - * @param eNode - */ -function selectText(eNode) { - if (!window.getSelection) { - return; - } - - var selection = window.getSelection(), - range = document.createRange(); - - range.selectNodeContents(eNode); - selection.removeAllRanges(); - selection.addRange(range); -} - -/** - * Realistic animation module based on one-dimensional physical model. - * - * @param positionGetter - * @param positionSetter - * @constructor - */ -function Animator(positionGetter, positionSetter) { - var x = 0, - x1 = 0, - x2 = 0, - v = 0, - animationTime = 200, - timerId, - startedAt = null; - - var loop = function (timestamp) { - if (startedAt === null) { - startedAt = timestamp; - } - - var moveTime = timestamp - startedAt; - - if (moveTime < moveDuration) { - // New position and velocity - x = x2 + A * (Math.cos(omega * (moveTime - moveDuration)) - 1); - v = A * omega * (Math.sin(omega * (moveDuration - moveTime))); - - positionSetter(x); - - timerId = requestAnimationFrame(loop); - - if (isReInit) { - /** - * If the position has been forced, we run the animation again. - */ - initMotion(reInitPosition, x); - isReInit = false; - startedAt = timestamp; - } - } - else { - // Stop the animation - startedAt = null; - - v = 0; - positionSetter(x2); - cancelAnimationFrame(timerId); - - if (isReInit) { - isReInit = false; - } - } - }; - - /** - * The moveDuration of animation. It can be less than animationTime in case of high speed. - */ - var moveDuration; - - /** - * Motion parameters. See the loop formulas. - */ - var A, omega; - - /** - * Flag fired when the final position has been changed during running amination. - */ - var isReInit = false; - - /** - * New value for final position (that has been changed during running amination). - */ - var reInitPosition; - - /** - * Calculate parameters A and omega for the position given by formula - * - * x(t) = x0 + A * (Math.cos(omega * (t - t0)) - 1); - * - * @param newPosition - * @param oldPosition - */ - function initMotion(newPosition, oldPosition) { - var k; - x2 = newPosition; - x1 = oldPosition; - - if (Math.abs(v) < 0.00001) { - // Rest - k = Math.PI; - moveDuration = animationTime; - } - else { - // Motion - - var alpha = (x2 - x1) / v / animationTime; // Motion parameter - - /** - * Instead of solving non-linear equation alpha * k = tan(k/2) - * we use approximation 0.5/a = 1 - (k/pi)^2 - */ - if (alpha < 0 || alpha > 0.5) { - k = Math.PI * Math.sqrt(1 - 0.5 / alpha); - } - else { - k = 0.1; - } - - /** - * After approximate value of k is determined, we redefine alpha - * since its value affects the animation. It means that the total - * animation duration (moveDuration) differs from animationTime. - * However, the difference does not impact the user experience. - */ - var alpha1 = (1 - Math.cos(k)) / k / Math.sin(k); - moveDuration = (x2 - x1) / alpha1 / v; - } - - omega = k / moveDuration; - A = (x2 - x1) / (1 - Math.cos(k)); - } - - /** - * Public control method - * - * @param nextPos - */ - this.setPos = function (nextPos) { - isReInit = (startedAt !== null); - if (!isReInit) { - x = positionGetter(); - initMotion(nextPos, x); - timerId = requestAnimationFrame(loop); - } - else { - reInitPosition = nextPos; - } - }; - - this.stop = function () { - startedAt = null; - v = 0; - cancelAnimationFrame(timerId); - isReInit = false; - }; -} - -function escapeRegExp(str) { - return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string -} - -/** - * See http://stackoverflow.com/questions/1144783/replacing-all-occurrences-of-a-string-in-javascript - * @param search - * @param replacement - * @returns {string} - */ -String.prototype.replaceAll = function (search, replacement) { - var target = this; - return target.replace(new RegExp(escapeRegExp(search), 'g'), replacement); -}; - -/** - * - * @constructor - */ -function ImagePreloader() { - var data = {}, - uniqueIndex = 0; - - function ajaxReady() { - var svg; - - if (this.status >= 200 && this.status < 400) { - svg = this.responseText; - } - else { - // We reached our target server, but it returned an error - svg = '' + - '' + - '' + - '' + - '' + - '' + - '' + - ''; - } - setImage(this.responseURL || this.s2Url, svg) - } - - function loadImage(url) { - var request = new XMLHttpRequest(); - request.open('GET', url, true); - request.s2Url = url; - request.onload = ajaxReady; - request.onerror = function () { - // There was a connection error of some sort - }; - request.send(); - - return request; - } - - this.onLoad = function (url, callback) { - if (!data[url]) { - data[url] = { - svg: null, - baseline: null, - request: loadImage(url), - callback: callback - }; - } - else if (data[url].svg !== null) { - callback(url, data[url].svg, data[url].baseline) - } - // In case of duplicate pictures we skip duplicates (when data[url].svg === null) - }; - - /** - * Make ids in svg unique across the html code by adding a prefix. - * - * @param svg - * @returns {*} - */ - function makeSvgIdsUnique(svg) { - var m = svg.match(/id=["']([^"']*)["']/g); - - if (!m) { - return svg; - } - - var i = m.length, - id, newId, curStr; - - for (; i--;) { - curStr = m[i]; - id = curStr.match(/id=["']([^"']*)["']/)[1]; - newId = 's' + uniqueIndex + id; - - svg = svg - .replaceAll(curStr, 'id="' + newId + '"') - .replaceAll('#' + id, '#' + newId) - ; - } - - uniqueIndex++; - - return svg; - } - - /** - * Stores sizes, source and removes the xhr object. - * @param url - * @param svg - */ - var setImage = function (url, svg) { - var urlData = data[url]; - if (!urlData) { - return; - } - - svg = makeSvgIdsUnique(svg); - - var m = svg.match(/postMessage\((?:"|")([\d\|\.\-eE]*)(?:"|")/); // [""2.15299|31.42377|11.65223|"", "2.15299|31.42377|11.65223|"] - if (m) { - var baselineShift = m && m[1] ? m[1].split('|').shift() : 0; // 2.15299 - } - else { - // svg can be empty like "" - // Mark as something is wrong. - baselineShift = null; - } - - urlData.callback(url, svg, baselineShift); - - urlData.svg = svg; - urlData.baseline = baselineShift; - urlData.request = null; - urlData.callback = null; - }; - - /** - * External API - * - * @param url - * @returns {null} - */ - this.getImageDataFromUrl = function (url) { - var urlData = data[url]; - return urlData ? urlData : null; - }; -} - -/** - * - * @param preloader - * @param protocol Needed for support the "file:" protocol. - * @constructor - */ -function ImageLoader(preloader, protocol) { - var curItems = [], // current formula content - prevItems = [], // previous formula content - map = {}, // maps formula content to index - n = 0, // current formula number - - placeholderTimer = null, - placeholderIndex = null, - placeholderUrl = null; - - /** - * Find if user has edited only one formula formula. - */ - function detectPlaceholderFormula() { - if (n == prevItems.length) { - var editNum = 0, index, i = n; - - for (; i--;) { - if (curItems[i] != prevItems[i]) { - editNum++; - index = i; - } - } - - if (editNum == 1) { - if (placeholderIndex === null) { - // A formula has been changed. - // Use previous one as a placeholder. - placeholderIndex = index; - placeholderUrl = prevItems[index]; - return; - } - if (placeholderIndex === index) { - // Formula has been changed again since previous change, - // but the previous image has not been loaded yet. - // Keep previous placeholder. - return; - } - } - } - - // Many formulas has been changed. We do not display any placeholders. - placeholderIndex = null; - placeholderUrl = null; - } - - function buildMap() { - map = {}; - for (var i = n; i--;) { - var url = curItems[i]; - - if (typeof map[url] === 'undefined') { - map[url] = [i] - } - else { - map[url].push(i); - } - } - } - - /** - * Start parsing process. - */ - this.reset = function () { - curItems = []; - n = 0; - }; - - /** - * Insert SVG images. - * - * @param url - * @param svg - * @param baselineShift - */ - var callback = function (url, svg, baselineShift) { - var indexes = map[url], i; - - if (indexes && (i = indexes.length)) { - for (; i--;) { - var index = indexes[i]; - - insertPicture(index, svg, baselineShift, index === placeholderIndex ? 'fade-in' : 'replace'); - - if (index === placeholderIndex) { - // Clear the fade out timer if the new image has just bee - clearTimeout(placeholderTimer); - placeholderIndex = null; - placeholderUrl = null; - } - } - } - }; - - /** - * Mark formula as loading. - * Use previous image but transparent. - * - * @param index - * @param svg - * @param baselineShift - * @param mode One of 'replace', 'fade-in', 'fade-out' - */ - function insertPicture(index, svg, baselineShift, mode) { - var id = 's2tex_' + index, - oldSvgNode = document.getElementById(id), - parentNode = oldSvgNode.parentNode, - startOpacity = '1', // mode == 'fade-in' ? '0.5' : '1', // sometimes images opacity can be '1' yet. How can one track it? - finalOpacity = mode == 'fade-out' ? '0.5' : '1', - newSvgAttrs = ' - divNode.removeChild(newSvgNode); - - parentNode.insertBefore(newSvgNode, oldSvgNode); - parentNode.removeChild(oldSvgNode); - - if (finalOpacity != startOpacity) { - placeholderTimer = setTimeout(function () { - document.getElementById(id).style.opacity = finalOpacity; - }, 0); - } - } - - /** - * Finish the parsing process. - */ - this.fixDom = function () { - detectPlaceholderFormula(); - buildMap(); - for (var i = n; i--;) { - preloader.onLoad(curItems[i], callback); - } - - if (placeholderIndex !== null) { - var data = preloader.getImageDataFromUrl(placeholderUrl); - if (data !== null && data.callback === null) { - insertPicture(placeholderIndex, data.svg, data.baseline, 'fade-out'); - } - } - - prevItems = curItems.slice(0); - }; -} - -/** - * Access to the map between blocks in sync scroll. - * - * @param mapBuilder - * @constructor - */ -function ScrollMap(mapBuilder) { - var map = null; - - this.reset = function () { - map = [null, null]; - }; - - this.getPosition = function (eBlockNode, fromIndex, toIndex) { - var offsetHeight = eBlockNode.offsetHeight; - var scrollTop = eBlockNode.scrollTop; - - if (scrollTop == 0) { - return 0; - } - - if (map[fromIndex] === null) { - map = mapBuilder(); - } - - var maxMapIndex = map[fromIndex].length - 1; - if (map[fromIndex][maxMapIndex] <= scrollTop + offsetHeight) { - return map[toIndex][maxMapIndex] - offsetHeight - } - - var scrollShift = offsetHeight / 2, - scrollLevel = scrollTop + scrollShift, - blockIndex = findBisect(scrollLevel, map[fromIndex]), - srcScrollLevel = parseFloat(map[toIndex][blockIndex.val] * (1 - blockIndex.part)); - - if (map[toIndex][blockIndex.val + 1]) { - srcScrollLevel += parseFloat(map[toIndex][blockIndex.val + 1] * blockIndex.part); - } - - return srcScrollLevel - scrollShift; - } -} - -/** - * Controls sync scroll of the source and preview blocks - * - * @param scrollMap - * @param animatorSrc - * @param animatorResult - * @param eSrc - * @param eResult - * @param eContainer - * @constructor - */ -function SyncScroll(scrollMap, animatorSrc, animatorResult, eSrc, eResult, eContainer) { - // Synchronize scroll position from source to result - var syncResultScroll = function () { - animatorResult.setPos(scrollMap.getPosition(eSrc, 0, 1)); - }; - - // Synchronize scroll position from result to source - var syncSrcScroll = function () { - animatorSrc.setPos(scrollMap.getPosition(eResult, 1, 0)); - }; - - this.switchScrollToSrc = function () { - eResult.removeEventListener('scroll', syncSrcScroll); - eSrc.removeEventListener('scroll', syncResultScroll); - eSrc.addEventListener('scroll', syncResultScroll); - eContainer.id = 'container-block-source'; - // animatorSrc.stop(); - }; - - this.switchScrollToResult = function () { - eSrc.removeEventListener('scroll', syncResultScroll); - eResult.removeEventListener('scroll', syncSrcScroll); - eResult.addEventListener('scroll', syncSrcScroll); - eContainer.id = 'container-block-result'; - // animatorResult.stop(); - } -} - -/** - * Functions from lodash.js - * @see https://github.com/lodash/lodash/ - */ - -var now = Date.now || function () { - return new Date().getTime(); - }; - -function debounce(func, wait, options) { - var args, - maxTimeoutId, - result, - stamp, - thisArg, - timeoutId, - trailingCall, - lastCalled = 0, - leading = false, - maxWait = false, - trailing = true; - - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - wait = wait < 0 ? 0 : (+wait || 0); - if (typeof options === 'object') { - leading = !!options.leading; - maxWait = 'maxWait' in options && Math.max(+options.maxWait || 0, wait); - trailing = 'trailing' in options ? !!options.trailing : trailing; - } - - function cancel() { - if (timeoutId) { - clearTimeout(timeoutId); - } - if (maxTimeoutId) { - clearTimeout(maxTimeoutId); - } - lastCalled = 0; - maxTimeoutId = timeoutId = trailingCall = undefined; - } - - function complete(isCalled, id) { - if (id) { - clearTimeout(id); - } - maxTimeoutId = timeoutId = trailingCall = undefined; - if (isCalled) { - lastCalled = now(); - result = func.apply(thisArg, args); - if (!timeoutId && !maxTimeoutId) { - args = thisArg = undefined; - } - } - } - - function delayed() { - var remaining = wait - (now() - stamp); - if (remaining <= 0 || remaining > wait) { - complete(trailingCall, maxTimeoutId); - } else { - timeoutId = setTimeout(delayed, remaining); - } - } - - function maxDelayed() { - complete(trailing, timeoutId); - } - - function debounced() { - args = arguments; - stamp = now(); - thisArg = this; - trailingCall = trailing && (timeoutId || !leading); - - if (maxWait === false) { - var leadingCall = leading && !timeoutId; - } else { - if (!maxTimeoutId && !leading) { - lastCalled = stamp; - } - var remaining = maxWait - (stamp - lastCalled), - isCalled = remaining <= 0 || remaining > maxWait; - - if (isCalled) { - if (maxTimeoutId) { - maxTimeoutId = clearTimeout(maxTimeoutId); - } - lastCalled = stamp; - result = func.apply(thisArg, args); - } - else if (!maxTimeoutId) { - maxTimeoutId = setTimeout(maxDelayed, remaining); - } - } - if (isCalled && timeoutId) { - timeoutId = clearTimeout(timeoutId); - } - else if (!timeoutId && wait !== maxWait) { - timeoutId = setTimeout(delayed, wait); - } - if (leadingCall) { - isCalled = true; - result = func.apply(thisArg, args); - } - if (isCalled && !timeoutId && !maxTimeoutId) { - args = thisArg = undefined; - } - return result; - } - debounced.cancel = cancel; - return debounced; -} -;/** - * TextareaDecorator.js - * written by Colin Kuebler 2012 - * Updated by Roman Parpalak, 2015. - * Part of LDT, dual licensed under GPLv3 and MIT - * Builds and maintains a styled output layer under a textarea input layer - */ - -function TextareaDecorator(textarea, parser) { - /* INIT */ - var api = this, - output; - - if (textarea.className !== 'ldt-textarea') { - // construct editor DOM - var parent = document.createElement("div"); - output = document.createElement("pre"); - output.className = 'ldt-pre'; - parent.appendChild(output); - - var label = document.createElement("label"); - label.className = 'ldt-label'; - - parent.appendChild(label); - - // replace the textarea with RTA DOM and reattach on label - textarea.parentNode.replaceChild(parent, textarea); - label.appendChild(textarea); - - // transfer the CSS styles to our editor - parent.className = 'ldt ' + textarea.className; - textarea.className = 'ldt-textarea'; - } else { - output = textarea.parentNode.previousSibling; - } - - /** - * Composes token class. - * - * Tokens are grouped into blocks. - * Also a token have its own type. - * - * @param blockClass token block type - * @param inlineClass token type - * @returns {string} - */ - function getClass(blockClass, inlineClass) { - return blockClass + ' ' + inlineClass; - } - - /** - * Detect changes between a token and its DOM representation. - * - * @param newToken hash object - * @param oldNode DOM node converted from old hash object - * - * @returns {boolean} - */ - function compareTokens(newToken, oldNode) { - if (newToken.token !== oldNode.textContent) { - return false; - } - - var className = oldNode.className, - oldBlock = className.slice(0, className.indexOf(' ')); - - if (oldBlock !== newToken.block) { - return false; - } - - var line = oldNode.getAttribute('data-line'); - - if (line && line != newToken.line) { - return false; - } - - return true; - } - - /** - * Updates a DOM node by a token - * - * @param node - * @param token - * @param inlineClass - */ - function fillTokenNode(node, token, inlineClass) { - node.textContent = node.innerText = token.token; - - var c = getClass(token.block, inlineClass); - - if (token.line) { - node.className = c + ' block-start'; - node.setAttribute('data-line', token.line); - } - else { - node.className = c; - } - } - - // coloring algorithm - var color = function (input, output, parser) { - var lastChar = input !== '' && input.substring(input.length - 1) || ''; - if (lastChar == "\r" || lastChar == "\n") { - // Hack for the case when the last line in textarea is empty - input += ' '; - } - - var nodes = output.childNodes, - tokens = parser.tokenize(input), - firstDiff, lastDiffNew, lastDiffOld; - - // find the first difference - for (firstDiff = 0; firstDiff < tokens.length && firstDiff < nodes.length; firstDiff++) { - if (!compareTokens(tokens[firstDiff], nodes[firstDiff])) { - break; - } - } - - // trim the length of output nodes to the size of the input - while (tokens.length < nodes.length) { - output.removeChild(nodes[firstDiff]); - } - - // find the last difference - for (lastDiffNew = tokens.length - 1, lastDiffOld = nodes.length - 1; firstDiff < lastDiffOld; lastDiffNew--, lastDiffOld--) { - if (!compareTokens(tokens[lastDiffNew], nodes[lastDiffOld])) { - break; - } - } - - // update modified nodes - for (; firstDiff <= lastDiffOld; firstDiff++) { - var token = tokens[firstDiff]; - fillTokenNode(nodes[firstDiff], token, parser.identifyInline(token)); - } - - // add in modified nodes - for (var insertionPt = nodes[firstDiff] || null; firstDiff <= lastDiffNew; firstDiff++) { - var span = document.createElement("span"); - token = tokens[firstDiff]; - fillTokenNode(span, token, parser.identifyInline(token)); - output.insertBefore(span, insertionPt); - } - }; - - api.input = textarea; - api.output = output; - api.recalcHeight = function () { - api.input.style.height = Math.max(api.output.offsetHeight, 100) + 'px'; - }; - api.update = function () { - var input = textarea.value; - if (input) { - color(input, output, parser); - - } else { - // clear the display - output.innerHTML = ''; - } - api.recalcHeight(); - }; - - // detect all changes to the textarea, - // including keyboard input, cut/copy/paste, drag & drop, etc - if (textarea.addEventListener) { - // standards browsers: oninput event - textarea.addEventListener("input", api.update, false); - } else { - // MSIE: detect changes to the 'value' property - textarea.attachEvent("onpropertychange", - function (e) { - if (e.propertyName.toLowerCase() === 'value') { - api.update(); - } - } - ); - } - // initial highlighting - api.update(); - - return api; -} - -/* FileSaver.js - * A saveAs() FileSaver implementation. - * 2015-05-07.2 - * - * By Eli Grey, http://eligrey.com - * License: X11/MIT - * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md - */ - -/*global self */ -/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */ - -/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */ - -var saveAs = saveAs || (function(view) { - "use strict"; - // IE <10 is explicitly unsupported - if (typeof navigator !== "undefined" && /MSIE [1-9]\./.test(navigator.userAgent)) { - return; - } - var - doc = view.document - // only get URL when necessary in case Blob.js hasn't overridden it yet - , get_URL = function() { - return view.URL || view.webkitURL || view; - } - , save_link = doc.createElementNS("http://www.w3.org/1999/xhtml", "a") - , can_use_save_link = "download" in save_link - , click = function(node) { - var event = doc.createEvent("MouseEvents"); - event.initMouseEvent( - "click", true, false, view, 0, 0, 0, 0, 0 - , false, false, false, false, 0, null - ); - node.dispatchEvent(event); - } - , webkit_req_fs = view.webkitRequestFileSystem - , req_fs = view.requestFileSystem || webkit_req_fs || view.mozRequestFileSystem - , throw_outside = function(ex) { - (view.setImmediate || view.setTimeout)(function() { - throw ex; - }, 0); - } - , force_saveable_type = "application/octet-stream" - , fs_min_size = 0 - // See https://code.google.com/p/chromium/issues/detail?id=375297#c7 and - // https://github.com/eligrey/FileSaver.js/commit/485930a#commitcomment-8768047 - // for the reasoning behind the timeout and revocation flow - , arbitrary_revoke_timeout = 500 // in ms - , revoke = function(file) { - var revoker = function() { - if (typeof file === "string") { // file is an object URL - get_URL().revokeObjectURL(file); - } else { // file is a File - file.remove(); - } - }; - if (view.chrome) { - revoker(); - } else { - setTimeout(revoker, arbitrary_revoke_timeout); - } - } - , dispatch = function(filesaver, event_types, event) { - event_types = [].concat(event_types); - var i = event_types.length; - while (i--) { - var listener = filesaver["on" + event_types[i]]; - if (typeof listener === "function") { - try { - listener.call(filesaver, event || filesaver); - } catch (ex) { - throw_outside(ex); - } - } - } - } - , auto_bom = function(blob) { - // prepend BOM for UTF-8 XML and text/* types (including HTML) - if (/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) { - return new Blob(["\ufeff", blob], {type: blob.type}); - } - return blob; - } - , FileSaver = function(blob, name) { - blob = auto_bom(blob); - // First try a.download, then web filesystem, then object URLs - var - filesaver = this - , type = blob.type - , blob_changed = false - , object_url - , target_view - , dispatch_all = function() { - dispatch(filesaver, "writestart progress write writeend".split(" ")); - } - // on any filesys errors revert to saving with object URLs - , fs_error = function() { - // don't create more object URLs than needed - if (blob_changed || !object_url) { - object_url = get_URL().createObjectURL(blob); - } - if (target_view) { - target_view.location.href = object_url; - } else { - var new_tab = view.open(object_url, "_blank"); - if (new_tab == undefined && typeof safari !== "undefined") { - //Apple do not allow window.open, see http://bit.ly/1kZffRI - view.location.href = object_url - } - } - filesaver.readyState = filesaver.DONE; - dispatch_all(); - revoke(object_url); - } - , abortable = function(func) { - return function() { - if (filesaver.readyState !== filesaver.DONE) { - return func.apply(this, arguments); - } - }; - } - , create_if_not_found = {create: true, exclusive: false} - , slice - ; - filesaver.readyState = filesaver.INIT; - if (!name) { - name = "download"; - } - if (can_use_save_link) { - object_url = get_URL().createObjectURL(blob); - save_link.href = object_url; - save_link.download = name; - click(save_link); - filesaver.readyState = filesaver.DONE; - dispatch_all(); - revoke(object_url); - return; - } - // Object and web filesystem URLs have a problem saving in Google Chrome when - // viewed in a tab, so I force save with application/octet-stream - // http://code.google.com/p/chromium/issues/detail?id=91158 - // Update: Google errantly closed 91158, I submitted it again: - // https://code.google.com/p/chromium/issues/detail?id=389642 - if (view.chrome && type && type !== force_saveable_type) { - slice = blob.slice || blob.webkitSlice; - blob = slice.call(blob, 0, blob.size, force_saveable_type); - blob_changed = true; - } - // Since I can't be sure that the guessed media type will trigger a download - // in WebKit, I append .download to the filename. - // https://bugs.webkit.org/show_bug.cgi?id=65440 - if (webkit_req_fs && name !== "download") { - name += ".download"; - } - if (type === force_saveable_type || webkit_req_fs) { - target_view = view; - } - if (!req_fs) { - fs_error(); - return; - } - fs_min_size += blob.size; - req_fs(view.TEMPORARY, fs_min_size, abortable(function(fs) { - fs.root.getDirectory("saved", create_if_not_found, abortable(function(dir) { - var save = function() { - dir.getFile(name, create_if_not_found, abortable(function(file) { - file.createWriter(abortable(function(writer) { - writer.onwriteend = function(event) { - target_view.location.href = file.toURL(); - filesaver.readyState = filesaver.DONE; - dispatch(filesaver, "writeend", event); - revoke(file); - }; - writer.onerror = function() { - var error = writer.error; - if (error.code !== error.ABORT_ERR) { - fs_error(); - } - }; - "writestart progress write abort".split(" ").forEach(function(event) { - writer["on" + event] = filesaver["on" + event]; - }); - writer.write(blob); - filesaver.abort = function() { - writer.abort(); - filesaver.readyState = filesaver.DONE; - }; - filesaver.readyState = filesaver.WRITING; - }), fs_error); - }), fs_error); - }; - dir.getFile(name, {create: false}, abortable(function(file) { - // delete file if it already exists - file.remove(); - save(); - }), abortable(function(ex) { - if (ex.code === ex.NOT_FOUND_ERR) { - save(); - } else { - fs_error(); - } - })); - }), fs_error); - }), fs_error); - } - , FS_proto = FileSaver.prototype - , saveAs = function(blob, name) { - return new FileSaver(blob, name); - } - ; - // IE 10+ (native saveAs) - if (typeof navigator !== "undefined" && navigator.msSaveOrOpenBlob) { - return function(blob, name) { - return navigator.msSaveOrOpenBlob(auto_bom(blob), name); - }; - } - - FS_proto.abort = function() { - var filesaver = this; - filesaver.readyState = filesaver.DONE; - dispatch(filesaver, "abort"); - }; - FS_proto.readyState = FS_proto.INIT = 0; - FS_proto.WRITING = 1; - FS_proto.DONE = 2; - - FS_proto.error = - FS_proto.onwritestart = - FS_proto.onprogress = - FS_proto.onwrite = - FS_proto.onabort = - FS_proto.onerror = - FS_proto.onwriteend = - null; - - return saveAs; -}( - typeof self !== "undefined" && self - || typeof window !== "undefined" && window - || this.content -)); -// `self` is undefined in Firefox for Android content script context -// while `this` is nsIContentFrameMessageManager -// with an attribute `content` that corresponds to the window - -if (typeof module !== "undefined" && module.exports) { - module.exports.saveAs = saveAs; -} else if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) { - define([], function() { - return saveAs; - }); -};/*! - * Draggabilly PACKAGED v2.2.0 - * Make that shiz draggable - * https://draggabilly.desandro.com - * MIT license - */ - -/** - * Bridget makes jQuery widgets - * v2.0.1 - * MIT license - */ - -/* jshint browser: true, strict: true, undef: true, unused: true */ - -( function( window, factory ) { - // universal module definition - /*jshint strict: false */ /* globals define, module, require */ - if ( typeof define == 'function' && define.amd ) { - // AMD - define( 'jquery-bridget/jquery-bridget',[ 'jquery' ], function( jQuery ) { - return factory( window, jQuery ); - }); - } else if ( typeof module == 'object' && module.exports ) { - // CommonJS - module.exports = factory( - window, - require('jquery') - ); - } else { - // browser global - window.jQueryBridget = factory( - window, - window.jQuery - ); - } - -}( window, function factory( window, jQuery ) { -'use strict'; - -// ----- utils ----- // - -var arraySlice = Array.prototype.slice; - -// helper function for logging errors -// $.error breaks jQuery chaining -var console = window.console; -var logError = typeof console == 'undefined' ? function() {} : - function( message ) { - console.error( message ); - }; - -// ----- jQueryBridget ----- // - -function jQueryBridget( namespace, PluginClass, $ ) { - $ = $ || jQuery || window.jQuery; - if ( !$ ) { - return; - } - - // add option method -> $().plugin('option', {...}) - if ( !PluginClass.prototype.option ) { - // option setter - PluginClass.prototype.option = function( opts ) { - // bail out if not an object - if ( !$.isPlainObject( opts ) ){ - return; - } - this.options = $.extend( true, this.options, opts ); - }; - } - - // make jQuery plugin - $.fn[ namespace ] = function( arg0 /*, arg1 */ ) { - if ( typeof arg0 == 'string' ) { - // method call $().plugin( 'methodName', { options } ) - // shift arguments by 1 - var args = arraySlice.call( arguments, 1 ); - return methodCall( this, arg0, args ); - } - // just $().plugin({ options }) - plainCall( this, arg0 ); - return this; - }; - - // $().plugin('methodName') - function methodCall( $elems, methodName, args ) { - var returnValue; - var pluginMethodStr = '$().' + namespace + '("' + methodName + '")'; - - $elems.each( function( i, elem ) { - // get instance - var instance = $.data( elem, namespace ); - if ( !instance ) { - logError( namespace + ' not initialized. Cannot call methods, i.e. ' + - pluginMethodStr ); - return; - } - - var method = instance[ methodName ]; - if ( !method || methodName.charAt(0) == '_' ) { - logError( pluginMethodStr + ' is not a valid method' ); - return; - } - - // apply method, get return value - var value = method.apply( instance, args ); - // set return value if value is returned, use only first value - returnValue = returnValue === undefined ? value : returnValue; - }); - - return returnValue !== undefined ? returnValue : $elems; - } - - function plainCall( $elems, options ) { - $elems.each( function( i, elem ) { - var instance = $.data( elem, namespace ); - if ( instance ) { - // set options & init - instance.option( options ); - instance._init(); - } else { - // initialize new instance - instance = new PluginClass( elem, options ); - $.data( elem, namespace, instance ); - } - }); - } - - updateJQuery( $ ); - -} - -// ----- updateJQuery ----- // - -// set $.bridget for v1 backwards compatibility -function updateJQuery( $ ) { - if ( !$ || ( $ && $.bridget ) ) { - return; - } - $.bridget = jQueryBridget; -} - -updateJQuery( jQuery || window.jQuery ); - -// ----- ----- // - -return jQueryBridget; - -})); - -/*! - * getSize v2.0.2 - * measure size of elements - * MIT license - */ - -/*jshint browser: true, strict: true, undef: true, unused: true */ -/*global define: false, module: false, console: false */ - -( function( window, factory ) { - 'use strict'; - - if ( typeof define == 'function' && define.amd ) { - // AMD - define( 'get-size/get-size',[],function() { - return factory(); - }); - } else if ( typeof module == 'object' && module.exports ) { - // CommonJS - module.exports = factory(); - } else { - // browser global - window.getSize = factory(); - } - -})( window, function factory() { -'use strict'; - -// -------------------------- helpers -------------------------- // - -// get a number from a string, not a percentage -function getStyleSize( value ) { - var num = parseFloat( value ); - // not a percent like '100%', and a number - var isValid = value.indexOf('%') == -1 && !isNaN( num ); - return isValid && num; -} - -function noop() {} - -var logError = typeof console == 'undefined' ? noop : - function( message ) { - console.error( message ); - }; - -// -------------------------- measurements -------------------------- // - -var measurements = [ - 'paddingLeft', - 'paddingRight', - 'paddingTop', - 'paddingBottom', - 'marginLeft', - 'marginRight', - 'marginTop', - 'marginBottom', - 'borderLeftWidth', - 'borderRightWidth', - 'borderTopWidth', - 'borderBottomWidth' -]; - -var measurementsLength = measurements.length; - -function getZeroSize() { - var size = { - width: 0, - height: 0, - innerWidth: 0, - innerHeight: 0, - outerWidth: 0, - outerHeight: 0 - }; - for ( var i=0; i < measurementsLength; i++ ) { - var measurement = measurements[i]; - size[ measurement ] = 0; - } - return size; -} - -// -------------------------- getStyle -------------------------- // - -/** - * getStyle, get style of element, check for Firefox bug - * https://bugzilla.mozilla.org/show_bug.cgi?id=548397 - */ -function getStyle( elem ) { - var style = getComputedStyle( elem ); - if ( !style ) { - logError( 'Style returned ' + style + - '. Are you running this code in a hidden iframe on Firefox? ' + - 'See http://bit.ly/getsizebug1' ); - } - return style; -} - -// -------------------------- setup -------------------------- // - -var isSetup = false; - -var isBoxSizeOuter; - -/** - * setup - * check isBoxSizerOuter - * do on first getSize() rather than on page load for Firefox bug - */ -function setup() { - // setup once - if ( isSetup ) { - return; - } - isSetup = true; - - // -------------------------- box sizing -------------------------- // - - /** - * WebKit measures the outer-width on style.width on border-box elems - * IE & Firefox<29 measures the inner-width - */ - var div = document.createElement('div'); - div.style.width = '200px'; - div.style.padding = '1px 2px 3px 4px'; - div.style.borderStyle = 'solid'; - div.style.borderWidth = '1px 2px 3px 4px'; - div.style.boxSizing = 'border-box'; - - var body = document.body || document.documentElement; - body.appendChild( div ); - var style = getStyle( div ); - - getSize.isBoxSizeOuter = isBoxSizeOuter = getStyleSize( style.width ) == 200; - body.removeChild( div ); - -} - -// -------------------------- getSize -------------------------- // - -function getSize( elem ) { - setup(); - - // use querySeletor if elem is string - if ( typeof elem == 'string' ) { - elem = document.querySelector( elem ); - } - - // do not proceed on non-objects - if ( !elem || typeof elem != 'object' || !elem.nodeType ) { - return; - } - - var style = getStyle( elem ); - - // if hidden, everything is 0 - if ( style.display == 'none' ) { - return getZeroSize(); - } - - var size = {}; - size.width = elem.offsetWidth; - size.height = elem.offsetHeight; - - var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box'; - - // get all measurements - for ( var i=0; i < measurementsLength; i++ ) { - var measurement = measurements[i]; - var value = style[ measurement ]; - var num = parseFloat( value ); - // any 'auto', 'medium' value will be 0 - size[ measurement ] = !isNaN( num ) ? num : 0; - } - - var paddingWidth = size.paddingLeft + size.paddingRight; - var paddingHeight = size.paddingTop + size.paddingBottom; - var marginWidth = size.marginLeft + size.marginRight; - var marginHeight = size.marginTop + size.marginBottom; - var borderWidth = size.borderLeftWidth + size.borderRightWidth; - var borderHeight = size.borderTopWidth + size.borderBottomWidth; - - var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter; - - // overwrite width and height if we can get it from style - var styleWidth = getStyleSize( style.width ); - if ( styleWidth !== false ) { - size.width = styleWidth + - // add padding and border unless it's already including it - ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth ); - } - - var styleHeight = getStyleSize( style.height ); - if ( styleHeight !== false ) { - size.height = styleHeight + - // add padding and border unless it's already including it - ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight ); - } - - size.innerWidth = size.width - ( paddingWidth + borderWidth ); - size.innerHeight = size.height - ( paddingHeight + borderHeight ); - - size.outerWidth = size.width + marginWidth; - size.outerHeight = size.height + marginHeight; - - return size; -} - -return getSize; - -}); - -/** - * EvEmitter v1.1.0 - * Lil' event emitter - * MIT License - */ - -/* jshint unused: true, undef: true, strict: true */ - -( function( global, factory ) { - // universal module definition - /* jshint strict: false */ /* globals define, module, window */ - if ( typeof define == 'function' && define.amd ) { - // AMD - RequireJS - define( 'ev-emitter/ev-emitter',factory ); - } else if ( typeof module == 'object' && module.exports ) { - // CommonJS - Browserify, Webpack - module.exports = factory(); - } else { - // Browser globals - global.EvEmitter = factory(); - } - -}( typeof window != 'undefined' ? window : this, function() { - - - -function EvEmitter() {} - -var proto = EvEmitter.prototype; - -proto.on = function( eventName, listener ) { - if ( !eventName || !listener ) { - return; - } - // set events hash - var events = this._events = this._events || {}; - // set listeners array - var listeners = events[ eventName ] = events[ eventName ] || []; - // only add once - if ( listeners.indexOf( listener ) == -1 ) { - listeners.push( listener ); - } - - return this; -}; - -proto.once = function( eventName, listener ) { - if ( !eventName || !listener ) { - return; - } - // add event - this.on( eventName, listener ); - // set once flag - // set onceEvents hash - var onceEvents = this._onceEvents = this._onceEvents || {}; - // set onceListeners object - var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {}; - // set flag - onceListeners[ listener ] = true; - - return this; -}; - -proto.off = function( eventName, listener ) { - var listeners = this._events && this._events[ eventName ]; - if ( !listeners || !listeners.length ) { - return; - } - var index = listeners.indexOf( listener ); - if ( index != -1 ) { - listeners.splice( index, 1 ); - } - - return this; -}; - -proto.emitEvent = function( eventName, args ) { - var listeners = this._events && this._events[ eventName ]; - if ( !listeners || !listeners.length ) { - return; - } - // copy over to avoid interference if .off() in listener - listeners = listeners.slice(0); - args = args || []; - // once stuff - var onceListeners = this._onceEvents && this._onceEvents[ eventName ]; - - for ( var i=0; i < listeners.length; i++ ) { - var listener = listeners[i] - var isOnce = onceListeners && onceListeners[ listener ]; - if ( isOnce ) { - // remove listener - // remove before trigger to prevent recursion - this.off( eventName, listener ); - // unset once flag - delete onceListeners[ listener ]; - } - // trigger listener - listener.apply( this, args ); - } - - return this; -}; - -proto.allOff = function() { - delete this._events; - delete this._onceEvents; -}; - -return EvEmitter; - -})); - -/*! - * Unipointer v2.3.0 - * base class for doing one thing with pointer event - * MIT license - */ - -/*jshint browser: true, undef: true, unused: true, strict: true */ - -( function( window, factory ) { - // universal module definition - /* jshint strict: false */ /*global define, module, require */ - if ( typeof define == 'function' && define.amd ) { - // AMD - define( 'unipointer/unipointer',[ - 'ev-emitter/ev-emitter' - ], function( EvEmitter ) { - return factory( window, EvEmitter ); - }); - } else if ( typeof module == 'object' && module.exports ) { - // CommonJS - module.exports = factory( - window, - require('ev-emitter') - ); - } else { - // browser global - window.Unipointer = factory( - window, - window.EvEmitter - ); - } - -}( window, function factory( window, EvEmitter ) { - - - -function noop() {} - -function Unipointer() {} - -// inherit EvEmitter -var proto = Unipointer.prototype = Object.create( EvEmitter.prototype ); - -proto.bindStartEvent = function( elem ) { - this._bindStartEvent( elem, true ); -}; - -proto.unbindStartEvent = function( elem ) { - this._bindStartEvent( elem, false ); -}; - -/** - * Add or remove start event - * @param {Boolean} isAdd - remove if falsey - */ -proto._bindStartEvent = function( elem, isAdd ) { - // munge isAdd, default to true - isAdd = isAdd === undefined ? true : isAdd; - var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener'; - - // default to mouse events - var startEvent = 'mousedown'; - if ( window.PointerEvent ) { - // Pointer Events - startEvent = 'pointerdown'; - } else if ( 'ontouchstart' in window ) { - // Touch Events. iOS Safari - startEvent = 'touchstart'; - } - elem[ bindMethod ]( startEvent, this ); -}; - -// trigger handler methods for events -proto.handleEvent = function( event ) { - var method = 'on' + event.type; - if ( this[ method ] ) { - this[ method ]( event ); - } -}; - -// returns the touch that we're keeping track of -proto.getTouch = function( touches ) { - for ( var i=0; i < touches.length; i++ ) { - var touch = touches[i]; - if ( touch.identifier == this.pointerIdentifier ) { - return touch; - } - } -}; - -// ----- start event ----- // - -proto.onmousedown = function( event ) { - // dismiss clicks from right or middle buttons - var button = event.button; - if ( button && ( button !== 0 && button !== 1 ) ) { - return; - } - this._pointerDown( event, event ); -}; - -proto.ontouchstart = function( event ) { - this._pointerDown( event, event.changedTouches[0] ); -}; - -proto.onpointerdown = function( event ) { - this._pointerDown( event, event ); -}; - -/** - * pointer start - * @param {Event} event - * @param {Event or Touch} pointer - */ -proto._pointerDown = function( event, pointer ) { - // dismiss right click and other pointers - // button = 0 is okay, 1-4 not - if ( event.button || this.isPointerDown ) { - return; - } - - this.isPointerDown = true; - // save pointer identifier to match up touch events - this.pointerIdentifier = pointer.pointerId !== undefined ? - // pointerId for pointer events, touch.indentifier for touch events - pointer.pointerId : pointer.identifier; - - this.pointerDown( event, pointer ); -}; - -proto.pointerDown = function( event, pointer ) { - this._bindPostStartEvents( event ); - this.emitEvent( 'pointerDown', [ event, pointer ] ); -}; - -// hash of events to be bound after start event -var postStartEvents = { - mousedown: [ 'mousemove', 'mouseup' ], - touchstart: [ 'touchmove', 'touchend', 'touchcancel' ], - pointerdown: [ 'pointermove', 'pointerup', 'pointercancel' ], -}; - -proto._bindPostStartEvents = function( event ) { - if ( !event ) { - return; - } - // get proper events to match start event - var events = postStartEvents[ event.type ]; - // bind events to node - events.forEach( function( eventName ) { - window.addEventListener( eventName, this ); - }, this ); - // save these arguments - this._boundPointerEvents = events; -}; - -proto._unbindPostStartEvents = function() { - // check for _boundEvents, in case dragEnd triggered twice (old IE8 bug) - if ( !this._boundPointerEvents ) { - return; - } - this._boundPointerEvents.forEach( function( eventName ) { - window.removeEventListener( eventName, this ); - }, this ); - - delete this._boundPointerEvents; -}; - -// ----- move event ----- // - -proto.onmousemove = function( event ) { - this._pointerMove( event, event ); -}; - -proto.onpointermove = function( event ) { - if ( event.pointerId == this.pointerIdentifier ) { - this._pointerMove( event, event ); - } -}; - -proto.ontouchmove = function( event ) { - var touch = this.getTouch( event.changedTouches ); - if ( touch ) { - this._pointerMove( event, touch ); - } -}; - -/** - * pointer move - * @param {Event} event - * @param {Event or Touch} pointer - * @private - */ -proto._pointerMove = function( event, pointer ) { - this.pointerMove( event, pointer ); -}; - -// public -proto.pointerMove = function( event, pointer ) { - this.emitEvent( 'pointerMove', [ event, pointer ] ); -}; - -// ----- end event ----- // - - -proto.onmouseup = function( event ) { - this._pointerUp( event, event ); -}; - -proto.onpointerup = function( event ) { - if ( event.pointerId == this.pointerIdentifier ) { - this._pointerUp( event, event ); - } -}; - -proto.ontouchend = function( event ) { - var touch = this.getTouch( event.changedTouches ); - if ( touch ) { - this._pointerUp( event, touch ); - } -}; - -/** - * pointer up - * @param {Event} event - * @param {Event or Touch} pointer - * @private - */ -proto._pointerUp = function( event, pointer ) { - this._pointerDone(); - this.pointerUp( event, pointer ); -}; - -// public -proto.pointerUp = function( event, pointer ) { - this.emitEvent( 'pointerUp', [ event, pointer ] ); -}; - -// ----- pointer done ----- // - -// triggered on pointer up & pointer cancel -proto._pointerDone = function() { - this._pointerReset(); - this._unbindPostStartEvents(); - this.pointerDone(); -}; - -proto._pointerReset = function() { - // reset properties - this.isPointerDown = false; - delete this.pointerIdentifier; -}; - -proto.pointerDone = noop; - -// ----- pointer cancel ----- // - -proto.onpointercancel = function( event ) { - if ( event.pointerId == this.pointerIdentifier ) { - this._pointerCancel( event, event ); - } -}; - -proto.ontouchcancel = function( event ) { - var touch = this.getTouch( event.changedTouches ); - if ( touch ) { - this._pointerCancel( event, touch ); - } -}; - -/** - * pointer cancel - * @param {Event} event - * @param {Event or Touch} pointer - * @private - */ -proto._pointerCancel = function( event, pointer ) { - this._pointerDone(); - this.pointerCancel( event, pointer ); -}; - -// public -proto.pointerCancel = function( event, pointer ) { - this.emitEvent( 'pointerCancel', [ event, pointer ] ); -}; - -// ----- ----- // - -// utility function for getting x/y coords from event -Unipointer.getPointerPoint = function( pointer ) { - return { - x: pointer.pageX, - y: pointer.pageY - }; -}; - -// ----- ----- // - -return Unipointer; - -})); - -/*! - * Unidragger v2.3.0 - * Draggable base class - * MIT license - */ - -/*jshint browser: true, unused: true, undef: true, strict: true */ - -( function( window, factory ) { - // universal module definition - /*jshint strict: false */ /*globals define, module, require */ - - if ( typeof define == 'function' && define.amd ) { - // AMD - define( 'unidragger/unidragger',[ - 'unipointer/unipointer' - ], function( Unipointer ) { - return factory( window, Unipointer ); - }); - } else if ( typeof module == 'object' && module.exports ) { - // CommonJS - module.exports = factory( - window, - require('unipointer') - ); - } else { - // browser global - window.Unidragger = factory( - window, - window.Unipointer - ); - } - -}( window, function factory( window, Unipointer ) { - - - -// -------------------------- Unidragger -------------------------- // - -function Unidragger() {} - -// inherit Unipointer & EvEmitter -var proto = Unidragger.prototype = Object.create( Unipointer.prototype ); - -// ----- bind start ----- // - -proto.bindHandles = function() { - this._bindHandles( true ); -}; - -proto.unbindHandles = function() { - this._bindHandles( false ); -}; - -/** - * Add or remove start event - * @param {Boolean} isAdd - */ -proto._bindHandles = function( isAdd ) { - // munge isAdd, default to true - isAdd = isAdd === undefined ? true : isAdd; - // bind each handle - var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener'; - var touchAction = isAdd ? this._touchActionValue : ''; - for ( var i=0; i < this.handles.length; i++ ) { - var handle = this.handles[i]; - this._bindStartEvent( handle, isAdd ); - handle[ bindMethod ]( 'click', this ); - // touch-action: none to override browser touch gestures. metafizzy/flickity#540 - if ( window.PointerEvent ) { - handle.style.touchAction = touchAction; - } - } -}; - -// prototype so it can be overwriteable by Flickity -proto._touchActionValue = 'none'; - -// ----- start event ----- // - -/** - * pointer start - * @param {Event} event - * @param {Event or Touch} pointer - */ -proto.pointerDown = function( event, pointer ) { - var isOkay = this.okayPointerDown( event ); - if ( !isOkay ) { - return; - } - // track start event position - this.pointerDownPointer = pointer; - - event.preventDefault(); - this.pointerDownBlur(); - // bind move and end events - this._bindPostStartEvents( event ); - this.emitEvent( 'pointerDown', [ event, pointer ] ); -}; - -// nodes that have text fields -var cursorNodes = { - TEXTAREA: true, - INPUT: true, - SELECT: true, - OPTION: true, -}; - -// input types that do not have text fields -var clickTypes = { - radio: true, - checkbox: true, - button: true, - submit: true, - image: true, - file: true, -}; - -// dismiss inputs with text fields. flickity#403, flickity#404 -proto.okayPointerDown = function( event ) { - var isCursorNode = cursorNodes[ event.target.nodeName ]; - var isClickType = clickTypes[ event.target.type ]; - var isOkay = !isCursorNode || isClickType; - if ( !isOkay ) { - this._pointerReset(); - } - return isOkay; -}; - -// kludge to blur previously focused input -proto.pointerDownBlur = function() { - var focused = document.activeElement; - // do not blur body for IE10, metafizzy/flickity#117 - var canBlur = focused && focused.blur && focused != document.body; - if ( canBlur ) { - focused.blur(); - } -}; - -// ----- move event ----- // - -/** - * drag move - * @param {Event} event - * @param {Event or Touch} pointer - */ -proto.pointerMove = function( event, pointer ) { - var moveVector = this._dragPointerMove( event, pointer ); - this.emitEvent( 'pointerMove', [ event, pointer, moveVector ] ); - this._dragMove( event, pointer, moveVector ); -}; - -// base pointer move logic -proto._dragPointerMove = function( event, pointer ) { - var moveVector = { - x: pointer.pageX - this.pointerDownPointer.pageX, - y: pointer.pageY - this.pointerDownPointer.pageY - }; - // start drag if pointer has moved far enough to start drag - if ( !this.isDragging && this.hasDragStarted( moveVector ) ) { - this._dragStart( event, pointer ); - } - return moveVector; -}; - -// condition if pointer has moved far enough to start drag -proto.hasDragStarted = function( moveVector ) { - return Math.abs( moveVector.x ) > 3 || Math.abs( moveVector.y ) > 3; -}; - -// ----- end event ----- // - -/** - * pointer up - * @param {Event} event - * @param {Event or Touch} pointer - */ -proto.pointerUp = function( event, pointer ) { - this.emitEvent( 'pointerUp', [ event, pointer ] ); - this._dragPointerUp( event, pointer ); -}; - -proto._dragPointerUp = function( event, pointer ) { - if ( this.isDragging ) { - this._dragEnd( event, pointer ); - } else { - // pointer didn't move enough for drag to start - this._staticClick( event, pointer ); - } -}; - -// -------------------------- drag -------------------------- // - -// dragStart -proto._dragStart = function( event, pointer ) { - this.isDragging = true; - // prevent clicks - this.isPreventingClicks = true; - this.dragStart( event, pointer ); -}; - -proto.dragStart = function( event, pointer ) { - this.emitEvent( 'dragStart', [ event, pointer ] ); -}; - -// dragMove -proto._dragMove = function( event, pointer, moveVector ) { - // do not drag if not dragging yet - if ( !this.isDragging ) { - return; - } - - this.dragMove( event, pointer, moveVector ); -}; - -proto.dragMove = function( event, pointer, moveVector ) { - event.preventDefault(); - this.emitEvent( 'dragMove', [ event, pointer, moveVector ] ); -}; - -// dragEnd -proto._dragEnd = function( event, pointer ) { - // set flags - this.isDragging = false; - // re-enable clicking async - setTimeout( function() { - delete this.isPreventingClicks; - }.bind( this ) ); - - this.dragEnd( event, pointer ); -}; - -proto.dragEnd = function( event, pointer ) { - this.emitEvent( 'dragEnd', [ event, pointer ] ); -}; - -// ----- onclick ----- // - -// handle all clicks and prevent clicks when dragging -proto.onclick = function( event ) { - if ( this.isPreventingClicks ) { - event.preventDefault(); - } -}; - -// ----- staticClick ----- // - -// triggered after pointer down & up with no/tiny movement -proto._staticClick = function( event, pointer ) { - // ignore emulated mouse up clicks - if ( this.isIgnoringMouseUp && event.type == 'mouseup' ) { - return; - } - - this.staticClick( event, pointer ); - - // set flag for emulated clicks 300ms after touchend - if ( event.type != 'mouseup' ) { - this.isIgnoringMouseUp = true; - // reset flag after 300ms - setTimeout( function() { - delete this.isIgnoringMouseUp; - }.bind( this ), 400 ); - } -}; - -proto.staticClick = function( event, pointer ) { - this.emitEvent( 'staticClick', [ event, pointer ] ); -}; - -// ----- utils ----- // - -Unidragger.getPointerPoint = Unipointer.getPointerPoint; - -// ----- ----- // - -return Unidragger; - -})); - -/*! - * Draggabilly v2.2.0 - * Make that shiz draggable - * https://draggabilly.desandro.com - * MIT license - */ - -/*jshint browser: true, strict: true, undef: true, unused: true */ - -( function( window, factory ) { - // universal module definition - /* jshint strict: false */ /*globals define, module, require */ - if ( typeof define == 'function' && define.amd ) { - // AMD - define( [ - 'get-size/get-size', - 'unidragger/unidragger' - ], - function( getSize, Unidragger ) { - return factory( window, getSize, Unidragger ); - }); - } else if ( typeof module == 'object' && module.exports ) { - // CommonJS - module.exports = factory( - window, - require('get-size'), - require('unidragger') - ); - } else { - // browser global - window.Draggabilly = factory( - window, - window.getSize, - window.Unidragger - ); - } - -}( window, function factory( window, getSize, Unidragger ) { - - - -// -------------------------- helpers & variables -------------------------- // - -// extend objects -function extend( a, b ) { - for ( var prop in b ) { - a[ prop ] = b[ prop ]; - } - return a; -} - -function noop() {} - -var jQuery = window.jQuery; - -// -------------------------- -------------------------- // - -function Draggabilly( element, options ) { - // querySelector if string - this.element = typeof element == 'string' ? - document.querySelector( element ) : element; - - if ( jQuery ) { - this.$element = jQuery( this.element ); - } - - // options - this.options = extend( {}, this.constructor.defaults ); - this.option( options ); - - this._create(); -} - -// inherit Unidragger methods -var proto = Draggabilly.prototype = Object.create( Unidragger.prototype ); - -Draggabilly.defaults = { -}; - -/** - * set options - * @param {Object} opts - */ -proto.option = function( opts ) { - extend( this.options, opts ); -}; - -// css position values that don't need to be set -var positionValues = { - relative: true, - absolute: true, - fixed: true -}; - -proto._create = function() { - // properties - this.position = {}; - this._getPosition(); - - this.startPoint = { x: 0, y: 0 }; - this.dragPoint = { x: 0, y: 0 }; - - this.startPosition = extend( {}, this.position ); - - // set relative positioning - var style = getComputedStyle( this.element ); - if ( !positionValues[ style.position ] ) { - this.element.style.position = 'relative'; - } - - // events, bridge jQuery events from vanilla - this.on( 'pointerDown', this.onPointerDown ); - this.on( 'pointerMove', this.onPointerMove ); - this.on( 'pointerUp', this.onPointerUp ); - - this.enable(); - this.setHandles(); -}; - -/** - * set this.handles and bind start events to 'em - */ -proto.setHandles = function() { - this.handles = this.options.handle ? - this.element.querySelectorAll( this.options.handle ) : [ this.element ]; - - this.bindHandles(); -}; - -/** - * emits events via EvEmitter and jQuery events - * @param {String} type - name of event - * @param {Event} event - original event - * @param {Array} args - extra arguments - */ -proto.dispatchEvent = function( type, event, args ) { - var emitArgs = [ event ].concat( args ); - this.emitEvent( type, emitArgs ); - this.dispatchJQueryEvent( type, event, args ); -}; - -proto.dispatchJQueryEvent = function( type, event, args ) { - var jQuery = window.jQuery; - // trigger jQuery event - if ( !jQuery || !this.$element ) { - return; - } - // create jQuery event - var $event = jQuery.Event( event ); - $event.type = type; - this.$element.trigger( $event, args ); -}; - -// -------------------------- position -------------------------- // - -// get x/y position from style -proto._getPosition = function() { - var style = getComputedStyle( this.element ); - var x = this._getPositionCoord( style.left, 'width' ); - var y = this._getPositionCoord( style.top, 'height' ); - // clean up 'auto' or other non-integer values - this.position.x = isNaN( x ) ? 0 : x; - this.position.y = isNaN( y ) ? 0 : y; - - this._addTransformPosition( style ); -}; - -proto._getPositionCoord = function( styleSide, measure ) { - if ( styleSide.indexOf('%') != -1 ) { - // convert percent into pixel for Safari, #75 - var parentSize = getSize( this.element.parentNode ); - // prevent not-in-DOM element throwing bug, #131 - return !parentSize ? 0 : - ( parseFloat( styleSide ) / 100 ) * parentSize[ measure ]; - } - return parseInt( styleSide, 10 ); -}; - -// add transform: translate( x, y ) to position -proto._addTransformPosition = function( style ) { - var transform = style.transform; - // bail out if value is 'none' - if ( transform.indexOf('matrix') !== 0 ) { - return; - } - // split matrix(1, 0, 0, 1, x, y) - var matrixValues = transform.split(','); - // translate X value is in 12th or 4th position - var xIndex = transform.indexOf('matrix3d') === 0 ? 12 : 4; - var translateX = parseInt( matrixValues[ xIndex ], 10 ); - // translate Y value is in 13th or 5th position - var translateY = parseInt( matrixValues[ xIndex + 1 ], 10 ); - this.position.x += translateX; - this.position.y += translateY; -}; - -// -------------------------- events -------------------------- // - -proto.onPointerDown = function( event, pointer ) { - this.element.classList.add('is-pointer-down'); - this.dispatchJQueryEvent( 'pointerDown', event, [ pointer ] ); -}; - -/** - * drag start - * @param {Event} event - * @param {Event or Touch} pointer - */ -proto.dragStart = function( event, pointer ) { - if ( !this.isEnabled ) { - return; - } - this._getPosition(); - this.measureContainment(); - // position _when_ drag began - this.startPosition.x = this.position.x; - this.startPosition.y = this.position.y; - // reset left/top style - this.setLeftTop(); - - this.dragPoint.x = 0; - this.dragPoint.y = 0; - - this.element.classList.add('is-dragging'); - this.dispatchEvent( 'dragStart', event, [ pointer ] ); - // start animation - this.animate(); -}; - -proto.measureContainment = function() { - var container = this.getContainer(); - if ( !container ) { - return; - } - - var elemSize = getSize( this.element ); - var containerSize = getSize( container ); - var elemRect = this.element.getBoundingClientRect(); - var containerRect = container.getBoundingClientRect(); - - var borderSizeX = containerSize.borderLeftWidth + containerSize.borderRightWidth; - var borderSizeY = containerSize.borderTopWidth + containerSize.borderBottomWidth; - - var position = this.relativeStartPosition = { - x: elemRect.left - ( containerRect.left + containerSize.borderLeftWidth ), - y: elemRect.top - ( containerRect.top + containerSize.borderTopWidth ) - }; - - this.containSize = { - width: ( containerSize.width - borderSizeX ) - position.x - elemSize.width, - height: ( containerSize.height - borderSizeY ) - position.y - elemSize.height - }; -}; - -proto.getContainer = function() { - var containment = this.options.containment; - if ( !containment ) { - return; - } - var isElement = containment instanceof HTMLElement; - // use as element - if ( isElement ) { - return containment; - } - // querySelector if string - if ( typeof containment == 'string' ) { - return document.querySelector( containment ); - } - // fallback to parent element - return this.element.parentNode; -}; - -// ----- move event ----- // - -proto.onPointerMove = function( event, pointer, moveVector ) { - this.dispatchJQueryEvent( 'pointerMove', event, [ pointer, moveVector ] ); -}; - -/** - * drag move - * @param {Event} event - * @param {Event or Touch} pointer - */ -proto.dragMove = function( event, pointer, moveVector ) { - if ( !this.isEnabled ) { - return; - } - var dragX = moveVector.x; - var dragY = moveVector.y; - - var grid = this.options.grid; - var gridX = grid && grid[0]; - var gridY = grid && grid[1]; - - dragX = applyGrid( dragX, gridX ); - dragY = applyGrid( dragY, gridY ); - - dragX = this.containDrag( 'x', dragX, gridX ); - dragY = this.containDrag( 'y', dragY, gridY ); - - // constrain to axis - dragX = this.options.axis == 'y' ? 0 : dragX; - dragY = this.options.axis == 'x' ? 0 : dragY; - - this.position.x = this.startPosition.x + dragX; - this.position.y = this.startPosition.y + dragY; - // set dragPoint properties - this.dragPoint.x = dragX; - this.dragPoint.y = dragY; - - this.dispatchEvent( 'dragMove', event, [ pointer, moveVector ] ); -}; - -function applyGrid( value, grid, method ) { - method = method || 'round'; - return grid ? Math[ method ]( value / grid ) * grid : value; -} - -proto.containDrag = function( axis, drag, grid ) { - if ( !this.options.containment ) { - return drag; - } - var measure = axis == 'x' ? 'width' : 'height'; - - var rel = this.relativeStartPosition[ axis ]; - var min = applyGrid( -rel, grid, 'ceil' ); - var max = this.containSize[ measure ]; - max = applyGrid( max, grid, 'floor' ); - return Math.max( min, Math.min( max, drag ) ); -}; - -// ----- end event ----- // - -/** - * pointer up - * @param {Event} event - * @param {Event or Touch} pointer - */ -proto.onPointerUp = function( event, pointer ) { - this.element.classList.remove('is-pointer-down'); - this.dispatchJQueryEvent( 'pointerUp', event, [ pointer ] ); -}; - -/** - * drag end - * @param {Event} event - * @param {Event or Touch} pointer - */ -proto.dragEnd = function( event, pointer ) { - if ( !this.isEnabled ) { - return; - } - // use top left position when complete - this.element.style.transform = ''; - this.setLeftTop(); - this.element.classList.remove('is-dragging'); - this.dispatchEvent( 'dragEnd', event, [ pointer ] ); -}; - -// -------------------------- animation -------------------------- // - -proto.animate = function() { - // only render and animate if dragging - if ( !this.isDragging ) { - return; - } - - this.positionDrag(); - - var _this = this; - requestAnimationFrame( function animateFrame() { - _this.animate(); - }); - -}; - -// left/top positioning -proto.setLeftTop = function() { - this.element.style.left = this.position.x + 'px'; - this.element.style.top = this.position.y + 'px'; -}; - -proto.positionDrag = function() { - this.element.style.transform = 'translate3d( ' + this.dragPoint.x + - 'px, ' + this.dragPoint.y + 'px, 0)'; -}; - -// ----- staticClick ----- // - -proto.staticClick = function( event, pointer ) { - this.dispatchEvent( 'staticClick', event, [ pointer ] ); -}; - -// ----- methods ----- // - -/** - * @param {Number} x - * @param {Number} y - */ -proto.setPosition = function( x, y ) { - this.position.x = x; - this.position.y = y; - this.setLeftTop(); -}; - -proto.enable = function() { - this.isEnabled = true; -}; - -proto.disable = function() { - this.isEnabled = false; - if ( this.isDragging ) { - this.dragEnd(); - } -}; - -proto.destroy = function() { - this.disable(); - // reset styles - this.element.style.transform = ''; - this.element.style.left = ''; - this.element.style.top = ''; - this.element.style.position = ''; - // unbind handles - this.unbindHandles(); - // remove jQuery data - if ( this.$element ) { - this.$element.removeData('draggabilly'); - } -}; - -// ----- jQuery bridget ----- // - -// required for jQuery bridget -proto._init = noop; - -if ( jQuery && jQuery.bridget ) { - jQuery.bridget( 'draggabilly', Draggabilly ); -} - -// ----- ----- // - -return Draggabilly; - -})); - -;!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).markdownit=e()}}((function(){return function e(r,t,n){function s(i,a){if(!t[i]){if(!r[i]){var c="function"==typeof require&&require;if(!a&&c)return c(i,!0);if(o)return o(i,!0);var l=new Error("Cannot find module '"+i+"'");throw l.code="MODULE_NOT_FOUND",l}var u=t[i]={exports:{}};r[i][0].call(u.exports,(function(e){return s(r[i][1][e]||e)}),u,u.exports,e,r,t,n)}return t[i].exports}for(var o="function"==typeof require&&require,i=0;i`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)*\\s*\\/?>",s="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",o=new RegExp("^(?:"+n+"|"+s+"|\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e|<[?].*?[?]>|]*>|)"),i=new RegExp("^(?:"+n+"|"+s+")");r.exports.HTML_TAG_RE=o,r.exports.HTML_OPEN_CLOSE_TAG_RE=i},{}],4:[function(e,r,t){"use strict";var n=Object.prototype.hasOwnProperty;function s(e,r){return n.call(e,r)}function o(e){return!(e>=55296&&e<=57343)&&(!(e>=64976&&e<=65007)&&(65535!=(65535&e)&&65534!=(65535&e)&&(!(e>=0&&e<=8)&&(11!==e&&(!(e>=14&&e<=31)&&(!(e>=127&&e<=159)&&!(e>1114111)))))))}function i(e){if(e>65535){var r=55296+((e-=65536)>>10),t=56320+(1023&e);return String.fromCharCode(r,t)}return String.fromCharCode(e)}var a=/\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g,c=new RegExp(a.source+"|"+/&([a-z#][a-z0-9]{1,31});/gi.source,"gi"),l=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i,u=e("./entities");var p=/[&<>"]/,h=/[&<>"]/g,f={"&":"&","<":"<",">":">",'"':"""};function d(e){return f[e]}var m=/[.?*+^$[\]\\(){}|-]/g;var _=e("uc.micro/categories/P/regex");t.lib={},t.lib.mdurl=e("mdurl"),t.lib.ucmicro=e("uc.micro"),t.assign=function(e){return Array.prototype.slice.call(arguments,1).forEach((function(r){if(r){if("object"!=typeof r)throw new TypeError(r+"must be object");Object.keys(r).forEach((function(t){e[t]=r[t]}))}})),e},t.isString=function(e){return"[object String]"===function(e){return Object.prototype.toString.call(e)}(e)},t.has=s,t.unescapeMd=function(e){return e.indexOf("\\")<0?e:e.replace(a,"$1")},t.unescapeAll=function(e){return e.indexOf("\\")<0&&e.indexOf("&")<0?e:e.replace(c,(function(e,r,t){return r||function(e,r){var t=0;return s(u,r)?u[r]:35===r.charCodeAt(0)&&l.test(r)&&o(t="x"===r[1].toLowerCase()?parseInt(r.slice(2),16):parseInt(r.slice(1),10))?i(t):e}(e,t)}))},t.isValidEntityCode=o,t.fromCodePoint=i,t.escapeHtml=function(e){return p.test(e)?e.replace(h,d):e},t.arrayReplaceAt=function(e,r,t){return[].concat(e.slice(0,r),t,e.slice(r+1))},t.isSpace=function(e){switch(e){case 9:case 32:return!0}return!1},t.isWhiteSpace=function(e){if(e>=8192&&e<=8202)return!0;switch(e){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1},t.isMdAsciiPunct=function(e){switch(e){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}},t.isPunctChar=function(e){return _.test(e)},t.escapeRE=function(e){return e.replace(m,"\\$&")},t.normalizeReference=function(e){return e=e.trim().replace(/\s+/g," "),"\u1e7e"==="\u1e9e".toLowerCase()&&(e=e.replace(/\u1e9e/g,"\xdf")),e.toLowerCase().toUpperCase()}},{"./entities":1,mdurl:58,"uc.micro":65,"uc.micro/categories/P/regex":63}],5:[function(e,r,t){"use strict";t.parseLinkLabel=e("./parse_link_label"),t.parseLinkDestination=e("./parse_link_destination"),t.parseLinkTitle=e("./parse_link_title")},{"./parse_link_destination":6,"./parse_link_label":7,"./parse_link_title":8}],6:[function(e,r,t){"use strict";var n=e("../common/utils").unescapeAll;r.exports=function(e,r,t){var s,o,i=r,a={ok:!1,pos:0,lines:0,str:""};if(60===e.charCodeAt(r)){for(r++;r=t)return c;if(34!==(o=e.charCodeAt(r))&&39!==o&&40!==o)return c;for(r++,40===o&&(o=41);r=0))try{r.hostname=p.toASCII(r.hostname)}catch(e){}return u.encode(u.format(r))}function k(e){var r=u.parse(e,!0);if(r.hostname&&(!r.protocol||_.indexOf(r.protocol)>=0))try{r.hostname=p.toUnicode(r.hostname)}catch(e){}return u.decode(u.format(r))}function b(e,r){if(!(this instanceof b))return new b(e,r);r||n.isString(e)||(r=e||{},e="default"),this.inline=new c,this.block=new a,this.core=new i,this.renderer=new o,this.linkify=new l,this.validateLink=m,this.normalizeLink=g,this.normalizeLinkText=k,this.utils=n,this.helpers=n.assign({},s),this.options={},this.configure(e),r&&this.set(r)}b.prototype.set=function(e){return n.assign(this.options,e),this},b.prototype.configure=function(e){var r,t=this;if(n.isString(e)&&!(e=h[r=e]))throw new Error('Wrong `markdown-it` preset "'+r+'", check name');if(!e)throw new Error("Wrong `markdown-it` preset, can't be empty");return e.options&&t.set(e.options),e.components&&Object.keys(e.components).forEach((function(r){e.components[r].rules&&t[r].ruler.enableOnly(e.components[r].rules),e.components[r].rules2&&t[r].ruler2.enableOnly(e.components[r].rules2)})),this},b.prototype.enable=function(e,r){var t=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach((function(r){t=t.concat(this[r].ruler.enable(e,!0))}),this),t=t.concat(this.inline.ruler2.enable(e,!0));var n=e.filter((function(e){return t.indexOf(e)<0}));if(n.length&&!r)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+n);return this},b.prototype.disable=function(e,r){var t=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach((function(r){t=t.concat(this[r].ruler.disable(e,!0))}),this),t=t.concat(this.inline.ruler2.disable(e,!0));var n=e.filter((function(e){return t.indexOf(e)<0}));if(n.length&&!r)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+n);return this},b.prototype.use=function(e){var r=[this].concat(Array.prototype.slice.call(arguments,1));return e.apply(e,r),this},b.prototype.parse=function(e,r){if("string"!=typeof e)throw new Error("Input data should be a String");var t=new this.core.State(e,this,r);return this.core.process(t),t.tokens},b.prototype.render=function(e,r){return r=r||{},this.renderer.render(this.parse(e,r),this.options,r)},b.prototype.parseInline=function(e,r){var t=new this.core.State(e,this,r);return t.inlineMode=!0,this.core.process(t),t.tokens},b.prototype.renderInline=function(e,r){return r=r||{},this.renderer.render(this.parseInline(e,r),this.options,r)},r.exports=b},{"./common/utils":4,"./helpers":5,"./parser_block":10,"./parser_core":11,"./parser_inline":12,"./presets/commonmark":13,"./presets/default":14,"./presets/zero":15,"./renderer":16,"linkify-it":53,mdurl:58,punycode:60}],10:[function(e,r,t){"use strict";var n=e("./ruler"),s=[["table",e("./rules_block/table"),["paragraph","reference"]],["code",e("./rules_block/code")],["fence",e("./rules_block/fence"),["paragraph","reference","blockquote","list"]],["blockquote",e("./rules_block/blockquote"),["paragraph","reference","blockquote","list"]],["hr",e("./rules_block/hr"),["paragraph","reference","blockquote","list"]],["list",e("./rules_block/list"),["paragraph","reference","blockquote"]],["reference",e("./rules_block/reference")],["heading",e("./rules_block/heading"),["paragraph","reference","blockquote"]],["lheading",e("./rules_block/lheading")],["html_block",e("./rules_block/html_block"),["paragraph","reference","blockquote"]],["paragraph",e("./rules_block/paragraph")]];function o(){this.ruler=new n;for(var e=0;e=t))&&!(e.sCount[i]=c){e.line=t;break}for(n=0;n=o)break}else e.pending+=e.src[e.pos++]}e.pending&&e.pushPending()},i.prototype.parse=function(e,r,t,n){var s,o,i,a=new this.State(e,r,t,n);for(this.tokenize(a),i=(o=this.ruler2.getRules("")).length,s=0;s"+o(e[r].content)+""},i.code_block=function(e,r,t,n,s){var i=e[r];return""+o(e[r].content)+"\n"},i.fence=function(e,r,t,n,i){var a,c,l,u,p=e[r],h=p.info?s(p.info).trim():"",f="";return h&&(f=h.split(/\s+/g)[0]),0===(a=t.highlight&&t.highlight(p.content,f)||o(p.content)).indexOf(""+a+"\n"):"

    "+a+"
    \n"},i.image=function(e,r,t,n,s){var o=e[r];return o.attrs[o.attrIndex("alt")][1]=s.renderInlineAsText(o.children,t,n),s.renderToken(e,r,t)},i.hardbreak=function(e,r,t){return t.xhtmlOut?"
    \n":"
    \n"},i.softbreak=function(e,r,t){return t.breaks?t.xhtmlOut?"
    \n":"
    \n":"\n"},i.text=function(e,r){return o(e[r].content)},i.html_block=function(e,r){return e[r].content},i.html_inline=function(e,r){return e[r].content},a.prototype.renderAttrs=function(e){var r,t,n;if(!e.attrs)return"";for(n="",r=0,t=e.attrs.length;r\n":">")},a.prototype.renderInline=function(e,r,t){for(var n,s="",o=this.rules,i=0,a=e.length;i=4)return!1;if(62!==e.src.charCodeAt(D++))return!1;if(s)return!0;for(c=f=e.sCount[r]+D-(e.bMarks[r]+e.tShift[r]),32===e.src.charCodeAt(D)?(D++,c++,f++,o=!1,v=!0):9===e.src.charCodeAt(D)?(v=!0,(e.bsCount[r]+f)%4==3?(D++,c++,f++,o=!1):o=!0):v=!1,d=[e.bMarks[r]],e.bMarks[r]=D;D=E,k=[e.sCount[r]],e.sCount[r]=f-c,b=[e.tShift[r]],e.tShift[r]=D-e.bMarks[r],C=e.md.block.ruler.getRules("blockquote"),g=e.parentType,e.parentType="blockquote",A=!1,h=r+1;h=(E=e.eMarks[h])));h++)if(62!==e.src.charCodeAt(D++)||A){if(u)break;for(y=!1,a=0,l=C.length;a=E,m.push(e.bsCount[h]),e.bsCount[h]=e.sCount[h]+1+(v?1:0),k.push(e.sCount[h]),e.sCount[h]=f-c,b.push(e.tShift[h]),e.tShift[h]=D-e.bMarks[h]}for(_=e.blkIndent,e.blkIndent=0,(x=e.push("blockquote_open","blockquote",1)).markup=">",x.map=p=[r,0],e.md.block.tokenize(e,r,h),(x=e.push("blockquote_close","blockquote",-1)).markup=">",e.lineMax=w,e.parentType=g,p[1]=e.line,a=0;a=4))break;s=++n}return e.line=s,(o=e.push("code_block","code",0)).content=e.getLines(r,s,4+e.blkIndent,!0),o.map=[r,e.line],!0}},{}],20:[function(e,r,t){"use strict";r.exports=function(e,r,t,n){var s,o,i,a,c,l,u,p=!1,h=e.bMarks[r]+e.tShift[r],f=e.eMarks[r];if(e.sCount[r]-e.blkIndent>=4)return!1;if(h+3>f)return!1;if(126!==(s=e.src.charCodeAt(h))&&96!==s)return!1;if(c=h,(o=(h=e.skipChars(h,s))-c)<3)return!1;if(u=e.src.slice(c,h),i=e.src.slice(h,f),96===s&&i.indexOf(String.fromCharCode(s))>=0)return!1;if(n)return!0;for(a=r;!(++a>=t)&&!((h=c=e.bMarks[a]+e.tShift[a])<(f=e.eMarks[a])&&e.sCount[a]=4||(h=e.skipChars(h,s))-c=4)return!1;if(35!==(o=e.src.charCodeAt(l))||l>=u)return!1;for(i=1,o=e.src.charCodeAt(++l);35===o&&l6||ll&&n(e.src.charCodeAt(a-1))&&(u=a),e.line=r+1,(c=e.push("heading_open","h"+String(i),1)).markup="########".slice(0,i),c.map=[r,e.line],(c=e.push("inline","",0)).content=e.src.slice(l,u).trim(),c.map=[r,e.line],c.children=[],(c=e.push("heading_close","h"+String(i),-1)).markup="########".slice(0,i),!0))}},{"../common/utils":4}],22:[function(e,r,t){"use strict";var n=e("../common/utils").isSpace;r.exports=function(e,r,t,s){var o,i,a,c,l=e.bMarks[r]+e.tShift[r],u=e.eMarks[r];if(e.sCount[r]-e.blkIndent>=4)return!1;if(42!==(o=e.src.charCodeAt(l++))&&45!==o&&95!==o)return!1;for(i=1;l|$))/i,/<\/(script|pre|style)>/i,!0],[/^/,!0],[/^<\?/,/\?>/,!0],[/^/,!0],[/^/,!0],[new RegExp("^|$))","i"),/^$/,!0],[new RegExp(s.source+"\\s*$"),/^$/,!1]];r.exports=function(e,r,t,n){var s,i,a,c,l=e.bMarks[r]+e.tShift[r],u=e.eMarks[r];if(e.sCount[r]-e.blkIndent>=4)return!1;if(!e.md.options.html)return!1;if(60!==e.src.charCodeAt(l))return!1;for(c=e.src.slice(l,u),s=0;s=4)return!1;for(h=e.parentType,e.parentType="paragraph";f3)){if(e.sCount[f]>=e.blkIndent&&(c=e.bMarks[f]+e.tShift[f])<(l=e.eMarks[f])&&(45===(p=e.src.charCodeAt(c))||61===p)&&(c=e.skipChars(c,p),(c=e.skipSpaces(c))>=l)){u=61===p?1:2;break}if(!(e.sCount[f]<0)){for(s=!1,o=0,i=d.length;o=i)return-1;if((t=e.src.charCodeAt(o++))<48||t>57)return-1;for(;;){if(o>=i)return-1;if(!((t=e.src.charCodeAt(o++))>=48&&t<=57)){if(41===t||46===t)break;return-1}if(o-s>=10)return-1}return o=4)return!1;if(e.listIndent>=0&&e.sCount[r]-e.listIndent>=4&&e.sCount[r]=e.blkIndent&&(I=!0),(q=o(e,r))>=0){if(h=!0,S=e.bMarks[r]+e.tShift[r],k=Number(e.src.substr(S,q-S-1)),I&&1!==k)return!1}else{if(!((q=s(e,r))>=0))return!1;h=!1}if(I&&e.skipSpaces(q)>=e.eMarks[r])return!1;if(g=e.src.charCodeAt(q-1),n)return!0;for(_=e.tokens.length,h?(T=e.push("ordered_list_open","ol",1),1!==k&&(T.attrs=[["start",k]])):T=e.push("bullet_list_open","ul",1),T.map=m=[r,0],T.markup=String.fromCharCode(g),v=r,F=!1,z=e.md.block.ruler.getRules("list"),x=e.parentType,e.parentType="list";v=b?1:y-p)>4&&(u=1),l=p+u,(T=e.push("list_item_open","li",1)).markup=String.fromCharCode(g),T.map=f=[r,0],D=e.tight,w=e.tShift[r],A=e.sCount[r],C=e.listIndent,e.listIndent=e.blkIndent,e.blkIndent=l,e.tight=!0,e.tShift[r]=a-e.bMarks[r],e.sCount[r]=y,a>=b&&e.isEmpty(r+1)?e.line=Math.min(e.line+2,t):e.md.block.tokenize(e,r,t,!0),e.tight&&!F||(R=!1),F=e.line-r>1&&e.isEmpty(e.line-1),e.blkIndent=e.listIndent,e.listIndent=C,e.tShift[r]=w,e.sCount[r]=A,e.tight=D,(T=e.push("list_item_close","li",-1)).markup=String.fromCharCode(g),v=r=e.line,f[1]=v,a=e.bMarks[r],v>=t)break;if(e.sCount[v]=4)break;for(L=!1,c=0,d=z.length;c3||e.sCount[c]<0)){for(n=!1,s=0,o=l.length;s=4)return!1;if(91!==e.src.charCodeAt(x))return!1;for(;++x3||e.sCount[w]<0)){for(b=!1,p=0,h=v.length;p0&&this.level++,this.tokens.push(s),s},o.prototype.isEmpty=function(e){return this.bMarks[e]+this.tShift[e]>=this.eMarks[e]},o.prototype.skipEmptyLines=function(e){for(var r=this.lineMax;er;)if(!s(this.src.charCodeAt(--e)))return e+1;return e},o.prototype.skipChars=function(e,r){for(var t=this.src.length;et;)if(r!==this.src.charCodeAt(--e))return e+1;return e},o.prototype.getLines=function(e,r,t,n){var o,i,a,c,l,u,p,h=e;if(e>=r)return"";for(u=new Array(r-e),o=0;ht?new Array(i-t+1).join(" ")+this.src.slice(c,l):this.src.slice(c,l)}return u.join("")},o.prototype.Token=n,r.exports=o},{"../common/utils":4,"../token":51}],29:[function(e,r,t){"use strict";var n=e("../common/utils").isSpace;function s(e,r){var t=e.bMarks[r]+e.blkIndent,n=e.eMarks[r];return e.src.substr(t,n-t)}function o(e){var r,t=[],n=0,s=e.length,o=0,i=0,a=!1,c=0;for(r=e.charCodeAt(n);nt)return!1;if(p=r+1,e.sCount[p]=4)return!1;if((l=e.bMarks[p]+e.tShift[p])>=e.eMarks[p])return!1;if(124!==(a=e.src.charCodeAt(l++))&&45!==a&&58!==a)return!1;for(;l=4)return!1;if((f=(h=o(c.replace(/^\||\|$/g,""))).length)>m.length)return!1;if(i)return!0;for((d=e.push("table_open","table",1)).map=g=[r,0],(d=e.push("thead_open","thead",1)).map=[r,r+1],(d=e.push("tr_open","tr",1)).map=[r,r+1],u=0;u=4);p++){for(h=o(c.replace(/^\||\|$/g,"")),d=e.push("tr_open","tr",1),u=0;u/i.test(e)}r.exports=function(e){var r,t,o,i,a,c,l,u,p,h,f,d,m,_,g,k,b,v,y=e.tokens;if(e.md.options.linkify)for(t=0,o=y.length;t=0;r--)if("link_close"!==(c=i[r]).type){if("html_inline"===c.type&&(v=c.content,/^\s]/i.test(v)&&m>0&&m--,s(c.content)&&m++),!(m>0)&&"text"===c.type&&e.md.linkify.test(c.content)){for(p=c.content,b=e.md.linkify.match(p),l=[],d=c.level,f=0,u=0;uf&&((a=new e.Token("text","",0)).content=p.slice(f,h),a.level=d,l.push(a)),(a=new e.Token("link_open","a",1)).attrs=[["href",g]],a.level=d++,a.markup="linkify",a.info="auto",l.push(a),(a=new e.Token("text","",0)).content=k,a.level=d,l.push(a),(a=new e.Token("link_close","a",-1)).level=--d,a.markup="linkify",a.info="auto",l.push(a),f=b[u].lastIndex);f=0;r--)"text"!==(t=e[r]).type||n||(t.content=t.content.replace(o,a)),"link_open"===t.type&&"auto"===t.info&&n--,"link_close"===t.type&&"auto"===t.info&&n++}function l(e){var r,t,s=0;for(r=e.length-1;r>=0;r--)"text"!==(t=e[r]).type||s||n.test(t.content)&&(t.content=t.content.replace(/\+-/g,"\xb1").replace(/\.{2,}/g,"\u2026").replace(/([?!])\u2026/g,"$1..").replace(/([?!]){4,}/g,"$1$1$1").replace(/,{2,}/g,",").replace(/(^|[^-])---([^-]|$)/gm,"$1\u2014$2").replace(/(^|\s)--(\s|$)/gm,"$1\u2013$2").replace(/(^|[^-\s])--([^-\s]|$)/gm,"$1\u2013$2")),"link_open"===t.type&&"auto"===t.info&&s--,"link_close"===t.type&&"auto"===t.info&&s++}r.exports=function(e){var r;if(e.md.options.typographer)for(r=e.tokens.length-1;r>=0;r--)"inline"===e.tokens[r].type&&(s.test(e.tokens[r].content)&&c(e.tokens[r].children),n.test(e.tokens[r].content)&&l(e.tokens[r].children))}},{}],35:[function(e,r,t){"use strict";var n=e("../common/utils").isWhiteSpace,s=e("../common/utils").isPunctChar,o=e("../common/utils").isMdAsciiPunct,i=/['"]/,a=/['"]/g,c="\u2019";function l(e,r,t){return e.substr(0,r)+t+e.substr(r+1)}function u(e,r){var t,i,u,p,h,f,d,m,_,g,k,b,v,y,C,x,A,w,D,E,q;for(D=[],t=0;t=0&&!(D[A].level<=d);A--);if(D.length=A+1,"text"===i.type){h=0,f=(u=i.content).length;e:for(;h=0)_=u.charCodeAt(p.index-1);else for(A=t-1;A>=0&&("softbreak"!==e[A].type&&"hardbreak"!==e[A].type);A--)if("text"===e[A].type){_=e[A].content.charCodeAt(e[A].content.length-1);break}if(g=32,h=48&&_<=57&&(x=C=!1),C&&x&&(C=!1,x=b),C||x){if(x)for(A=D.length-1;A>=0&&(m=D[A],!(D[A].level=0;r--)"inline"===e.tokens[r].type&&i.test(e.tokens[r].content)&&u(e.tokens[r].children,e)}},{"../common/utils":4}],36:[function(e,r,t){"use strict";var n=e("../token");function s(e,r,t){this.src=e,this.env=t,this.tokens=[],this.inlineMode=!1,this.md=r}s.prototype.Token=n,r.exports=s},{"../token":51}],37:[function(e,r,t){"use strict";var n=/^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/,s=/^<([a-zA-Z][a-zA-Z0-9+.\-]{1,31}):([^<>\x00-\x20]*)>/;r.exports=function(e,r){var t,o,i,a,c,l,u=e.pos;return 60===e.src.charCodeAt(u)&&(!((t=e.src.slice(u)).indexOf(">")<0)&&(s.test(t)?(a=(o=t.match(s))[0].slice(1,-1),c=e.md.normalizeLink(a),!!e.md.validateLink(c)&&(r||((l=e.push("link_open","a",1)).attrs=[["href",c]],l.markup="autolink",l.info="auto",(l=e.push("text","",0)).content=e.md.normalizeLinkText(a),(l=e.push("link_close","a",-1)).markup="autolink",l.info="auto"),e.pos+=o[0].length,!0)):!!n.test(t)&&(a=(i=t.match(n))[0].slice(1,-1),c=e.md.normalizeLink("mailto:"+a),!!e.md.validateLink(c)&&(r||((l=e.push("link_open","a",1)).attrs=[["href",c]],l.markup="autolink",l.info="auto",(l=e.push("text","",0)).content=e.md.normalizeLinkText(a),(l=e.push("link_close","a",-1)).markup="autolink",l.info="auto"),e.pos+=i[0].length,!0))))}},{}],38:[function(e,r,t){"use strict";r.exports=function(e,r){var t,n,s,o,i,a,c=e.pos;if(96!==e.src.charCodeAt(c))return!1;for(t=c,c++,n=e.posMax;ci;n-=o.jump+1)if((o=r[n]).marker===s.marker&&(-1===a&&(a=n),o.open&&o.end<0&&o.level===s.level&&(c=!1,(o.close||s.open)&&(o.length+s.length)%3==0&&(o.length%3==0&&s.length%3==0||(c=!0)),!c))){l=n>0&&!r[n-1].open?r[n-1].jump+1:0,s.jump=t-n+l,s.open=!1,o.end=t,o.jump=l,o.close=!1,a=-1;break}-1!==a&&(u[s.marker][(s.length||0)%3]=a)}}r.exports=function(e){var r,t=e.tokens_meta,s=e.tokens_meta.length;for(n(0,e.delimiters),r=0;r=0;t--)95!==(n=r[t]).marker&&42!==n.marker||-1!==n.end&&(s=r[n.end],a=t>0&&r[t-1].end===n.end+1&&r[t-1].token===n.token-1&&r[n.end+1].token===s.token+1&&r[t-1].marker===n.marker,i=String.fromCharCode(n.marker),(o=e.tokens[n.token]).type=a?"strong_open":"em_open",o.tag=a?"strong":"em",o.nesting=1,o.markup=a?i+i:i,o.content="",(o=e.tokens[s.token]).type=a?"strong_close":"em_close",o.tag=a?"strong":"em",o.nesting=-1,o.markup=a?i+i:i,o.content="",a&&(e.tokens[r[t-1].token].content="",e.tokens[r[n.end+1].token].content="",t--))}r.exports.tokenize=function(e,r){var t,n,s=e.pos,o=e.src.charCodeAt(s);if(r)return!1;if(95!==o&&42!==o)return!1;for(n=e.scanDelims(e.pos,42===o),t=0;t?@[]^_`{|}~-".split("").forEach((function(e){s[e.charCodeAt(0)]=1})),r.exports=function(e,r){var t,o=e.pos,i=e.posMax;if(92!==e.src.charCodeAt(o))return!1;if(++o=o)&&(!(33!==(t=e.src.charCodeAt(i+1))&&63!==t&&47!==t&&!function(e){var r=32|e;return r>=97&&r<=122}(t))&&(!!(s=e.src.slice(i).match(n))&&(r||(e.push("html_inline","",0).content=e.src.slice(i,i+s[0].length)),e.pos+=s[0].length,!0))))}},{"../common/html_re":3}],44:[function(e,r,t){"use strict";var n=e("../common/utils").normalizeReference,s=e("../common/utils").isSpace;r.exports=function(e,r){var t,o,i,a,c,l,u,p,h,f,d,m,_,g="",k=e.pos,b=e.posMax;if(33!==e.src.charCodeAt(e.pos))return!1;if(91!==e.src.charCodeAt(e.pos+1))return!1;if(l=e.pos+2,(c=e.md.helpers.parseLinkLabel(e,e.pos+1,!1))<0)return!1;if((u=c+1)=b)return!1;for(_=u,(h=e.md.helpers.parseLinkDestination(e.src,u,e.posMax)).ok&&(g=e.md.normalizeLink(h.str),e.md.validateLink(g)?u=h.pos:g=""),_=u;u=b||41!==e.src.charCodeAt(u))return e.pos=k,!1;u++}else{if(void 0===e.env.references)return!1;if(u=0?a=e.src.slice(_,u++):u=c+1):u=c+1,a||(a=e.src.slice(l,c)),!(p=e.env.references[n(a)]))return e.pos=k,!1;g=p.href,f=p.title}return r||(i=e.src.slice(l,c),e.md.inline.parse(i,e.md,e.env,m=[]),(d=e.push("image","img",0)).attrs=t=[["src",g],["alt",""]],d.children=m,d.content=i,f&&t.push(["title",f])),e.pos=u,e.posMax=b,!0}},{"../common/utils":4}],45:[function(e,r,t){"use strict";var n=e("../common/utils").normalizeReference,s=e("../common/utils").isSpace;r.exports=function(e,r){var t,o,i,a,c,l,u,p,h,f="",d=e.pos,m=e.posMax,_=e.pos,g=!0;if(91!==e.src.charCodeAt(e.pos))return!1;if(c=e.pos+1,(a=e.md.helpers.parseLinkLabel(e,e.pos,!0))<0)return!1;if((l=a+1)=m)return!1;for(_=l,(u=e.md.helpers.parseLinkDestination(e.src,l,e.posMax)).ok&&(f=e.md.normalizeLink(u.str),e.md.validateLink(f)?l=u.pos:f=""),_=l;l=m||41!==e.src.charCodeAt(l))&&(g=!0),l++}if(g){if(void 0===e.env.references)return!1;if(l=0?i=e.src.slice(_,l++):l=a+1):l=a+1,i||(i=e.src.slice(c,a)),!(p=e.env.references[n(i)]))return e.pos=d,!1;f=p.href,h=p.title}return r||(e.pos=c,e.posMax=a,e.push("link_open","a",1).attrs=t=[["href",f]],h&&t.push(["title",h]),e.md.inline.tokenize(e),e.push("link_close","a",-1)),e.pos=l,e.posMax=m,!0}},{"../common/utils":4}],46:[function(e,r,t){"use strict";var n=e("../common/utils").isSpace;r.exports=function(e,r){var t,s,o=e.pos;if(10!==e.src.charCodeAt(o))return!1;for(t=e.pending.length-1,s=e.posMax,r||(t>=0&&32===e.pending.charCodeAt(t)?t>=1&&32===e.pending.charCodeAt(t-1)?(e.pending=e.pending.replace(/ +$/,""),e.push("hardbreak","br",0)):(e.pending=e.pending.slice(0,-1),e.push("softbreak","br",0)):e.push("softbreak","br",0)),o++;o0&&(this.level++,this._prev_delimiters.push(this.delimiters),this.delimiters=[],o={delimiters:this.delimiters}),this.pendingLevel=this.level,this.tokens.push(s),this.tokens_meta.push(o),s},a.prototype.scanDelims=function(e,r){var t,n,a,c,l,u,p,h,f,d=e,m=!0,_=!0,g=this.posMax,k=this.src.charCodeAt(e);for(t=e>0?this.src.charCodeAt(e-1):32;d0&&n++,"text"===s[r].type&&r+1=0&&(t=this.attrs[r][1]),t},n.prototype.attrJoin=function(e,r){var t=this.attrIndex(e);t<0?this.attrPush([e,r]):this.attrs[t][1]=this.attrs[t][1]+" "+r},r.exports=n},{}],52:[function(e,r,t){r.exports={Aacute:"\xc1",aacute:"\xe1",Abreve:"\u0102",abreve:"\u0103",ac:"\u223e",acd:"\u223f",acE:"\u223e\u0333",Acirc:"\xc2",acirc:"\xe2",acute:"\xb4",Acy:"\u0410",acy:"\u0430",AElig:"\xc6",aelig:"\xe6",af:"\u2061",Afr:"\ud835\udd04",afr:"\ud835\udd1e",Agrave:"\xc0",agrave:"\xe0",alefsym:"\u2135",aleph:"\u2135",Alpha:"\u0391",alpha:"\u03b1",Amacr:"\u0100",amacr:"\u0101",amalg:"\u2a3f",amp:"&",AMP:"&",andand:"\u2a55",And:"\u2a53",and:"\u2227",andd:"\u2a5c",andslope:"\u2a58",andv:"\u2a5a",ang:"\u2220",ange:"\u29a4",angle:"\u2220",angmsdaa:"\u29a8",angmsdab:"\u29a9",angmsdac:"\u29aa",angmsdad:"\u29ab",angmsdae:"\u29ac",angmsdaf:"\u29ad",angmsdag:"\u29ae",angmsdah:"\u29af",angmsd:"\u2221",angrt:"\u221f",angrtvb:"\u22be",angrtvbd:"\u299d",angsph:"\u2222",angst:"\xc5",angzarr:"\u237c",Aogon:"\u0104",aogon:"\u0105",Aopf:"\ud835\udd38",aopf:"\ud835\udd52",apacir:"\u2a6f",ap:"\u2248",apE:"\u2a70",ape:"\u224a",apid:"\u224b",apos:"'",ApplyFunction:"\u2061",approx:"\u2248",approxeq:"\u224a",Aring:"\xc5",aring:"\xe5",Ascr:"\ud835\udc9c",ascr:"\ud835\udcb6",Assign:"\u2254",ast:"*",asymp:"\u2248",asympeq:"\u224d",Atilde:"\xc3",atilde:"\xe3",Auml:"\xc4",auml:"\xe4",awconint:"\u2233",awint:"\u2a11",backcong:"\u224c",backepsilon:"\u03f6",backprime:"\u2035",backsim:"\u223d",backsimeq:"\u22cd",Backslash:"\u2216",Barv:"\u2ae7",barvee:"\u22bd",barwed:"\u2305",Barwed:"\u2306",barwedge:"\u2305",bbrk:"\u23b5",bbrktbrk:"\u23b6",bcong:"\u224c",Bcy:"\u0411",bcy:"\u0431",bdquo:"\u201e",becaus:"\u2235",because:"\u2235",Because:"\u2235",bemptyv:"\u29b0",bepsi:"\u03f6",bernou:"\u212c",Bernoullis:"\u212c",Beta:"\u0392",beta:"\u03b2",beth:"\u2136",between:"\u226c",Bfr:"\ud835\udd05",bfr:"\ud835\udd1f",bigcap:"\u22c2",bigcirc:"\u25ef",bigcup:"\u22c3",bigodot:"\u2a00",bigoplus:"\u2a01",bigotimes:"\u2a02",bigsqcup:"\u2a06",bigstar:"\u2605",bigtriangledown:"\u25bd",bigtriangleup:"\u25b3",biguplus:"\u2a04",bigvee:"\u22c1",bigwedge:"\u22c0",bkarow:"\u290d",blacklozenge:"\u29eb",blacksquare:"\u25aa",blacktriangle:"\u25b4",blacktriangledown:"\u25be",blacktriangleleft:"\u25c2",blacktriangleright:"\u25b8",blank:"\u2423",blk12:"\u2592",blk14:"\u2591",blk34:"\u2593",block:"\u2588",bne:"=\u20e5",bnequiv:"\u2261\u20e5",bNot:"\u2aed",bnot:"\u2310",Bopf:"\ud835\udd39",bopf:"\ud835\udd53",bot:"\u22a5",bottom:"\u22a5",bowtie:"\u22c8",boxbox:"\u29c9",boxdl:"\u2510",boxdL:"\u2555",boxDl:"\u2556",boxDL:"\u2557",boxdr:"\u250c",boxdR:"\u2552",boxDr:"\u2553",boxDR:"\u2554",boxh:"\u2500",boxH:"\u2550",boxhd:"\u252c",boxHd:"\u2564",boxhD:"\u2565",boxHD:"\u2566",boxhu:"\u2534",boxHu:"\u2567",boxhU:"\u2568",boxHU:"\u2569",boxminus:"\u229f",boxplus:"\u229e",boxtimes:"\u22a0",boxul:"\u2518",boxuL:"\u255b",boxUl:"\u255c",boxUL:"\u255d",boxur:"\u2514",boxuR:"\u2558",boxUr:"\u2559",boxUR:"\u255a",boxv:"\u2502",boxV:"\u2551",boxvh:"\u253c",boxvH:"\u256a",boxVh:"\u256b",boxVH:"\u256c",boxvl:"\u2524",boxvL:"\u2561",boxVl:"\u2562",boxVL:"\u2563",boxvr:"\u251c",boxvR:"\u255e",boxVr:"\u255f",boxVR:"\u2560",bprime:"\u2035",breve:"\u02d8",Breve:"\u02d8",brvbar:"\xa6",bscr:"\ud835\udcb7",Bscr:"\u212c",bsemi:"\u204f",bsim:"\u223d",bsime:"\u22cd",bsolb:"\u29c5",bsol:"\\",bsolhsub:"\u27c8",bull:"\u2022",bullet:"\u2022",bump:"\u224e",bumpE:"\u2aae",bumpe:"\u224f",Bumpeq:"\u224e",bumpeq:"\u224f",Cacute:"\u0106",cacute:"\u0107",capand:"\u2a44",capbrcup:"\u2a49",capcap:"\u2a4b",cap:"\u2229",Cap:"\u22d2",capcup:"\u2a47",capdot:"\u2a40",CapitalDifferentialD:"\u2145",caps:"\u2229\ufe00",caret:"\u2041",caron:"\u02c7",Cayleys:"\u212d",ccaps:"\u2a4d",Ccaron:"\u010c",ccaron:"\u010d",Ccedil:"\xc7",ccedil:"\xe7",Ccirc:"\u0108",ccirc:"\u0109",Cconint:"\u2230",ccups:"\u2a4c",ccupssm:"\u2a50",Cdot:"\u010a",cdot:"\u010b",cedil:"\xb8",Cedilla:"\xb8",cemptyv:"\u29b2",cent:"\xa2",centerdot:"\xb7",CenterDot:"\xb7",cfr:"\ud835\udd20",Cfr:"\u212d",CHcy:"\u0427",chcy:"\u0447",check:"\u2713",checkmark:"\u2713",Chi:"\u03a7",chi:"\u03c7",circ:"\u02c6",circeq:"\u2257",circlearrowleft:"\u21ba",circlearrowright:"\u21bb",circledast:"\u229b",circledcirc:"\u229a",circleddash:"\u229d",CircleDot:"\u2299",circledR:"\xae",circledS:"\u24c8",CircleMinus:"\u2296",CirclePlus:"\u2295",CircleTimes:"\u2297",cir:"\u25cb",cirE:"\u29c3",cire:"\u2257",cirfnint:"\u2a10",cirmid:"\u2aef",cirscir:"\u29c2",ClockwiseContourIntegral:"\u2232",CloseCurlyDoubleQuote:"\u201d",CloseCurlyQuote:"\u2019",clubs:"\u2663",clubsuit:"\u2663",colon:":",Colon:"\u2237",Colone:"\u2a74",colone:"\u2254",coloneq:"\u2254",comma:",",commat:"@",comp:"\u2201",compfn:"\u2218",complement:"\u2201",complexes:"\u2102",cong:"\u2245",congdot:"\u2a6d",Congruent:"\u2261",conint:"\u222e",Conint:"\u222f",ContourIntegral:"\u222e",copf:"\ud835\udd54",Copf:"\u2102",coprod:"\u2210",Coproduct:"\u2210",copy:"\xa9",COPY:"\xa9",copysr:"\u2117",CounterClockwiseContourIntegral:"\u2233",crarr:"\u21b5",cross:"\u2717",Cross:"\u2a2f",Cscr:"\ud835\udc9e",cscr:"\ud835\udcb8",csub:"\u2acf",csube:"\u2ad1",csup:"\u2ad0",csupe:"\u2ad2",ctdot:"\u22ef",cudarrl:"\u2938",cudarrr:"\u2935",cuepr:"\u22de",cuesc:"\u22df",cularr:"\u21b6",cularrp:"\u293d",cupbrcap:"\u2a48",cupcap:"\u2a46",CupCap:"\u224d",cup:"\u222a",Cup:"\u22d3",cupcup:"\u2a4a",cupdot:"\u228d",cupor:"\u2a45",cups:"\u222a\ufe00",curarr:"\u21b7",curarrm:"\u293c",curlyeqprec:"\u22de",curlyeqsucc:"\u22df",curlyvee:"\u22ce",curlywedge:"\u22cf",curren:"\xa4",curvearrowleft:"\u21b6",curvearrowright:"\u21b7",cuvee:"\u22ce",cuwed:"\u22cf",cwconint:"\u2232",cwint:"\u2231",cylcty:"\u232d",dagger:"\u2020",Dagger:"\u2021",daleth:"\u2138",darr:"\u2193",Darr:"\u21a1",dArr:"\u21d3",dash:"\u2010",Dashv:"\u2ae4",dashv:"\u22a3",dbkarow:"\u290f",dblac:"\u02dd",Dcaron:"\u010e",dcaron:"\u010f",Dcy:"\u0414",dcy:"\u0434",ddagger:"\u2021",ddarr:"\u21ca",DD:"\u2145",dd:"\u2146",DDotrahd:"\u2911",ddotseq:"\u2a77",deg:"\xb0",Del:"\u2207",Delta:"\u0394",delta:"\u03b4",demptyv:"\u29b1",dfisht:"\u297f",Dfr:"\ud835\udd07",dfr:"\ud835\udd21",dHar:"\u2965",dharl:"\u21c3",dharr:"\u21c2",DiacriticalAcute:"\xb4",DiacriticalDot:"\u02d9",DiacriticalDoubleAcute:"\u02dd",DiacriticalGrave:"`",DiacriticalTilde:"\u02dc",diam:"\u22c4",diamond:"\u22c4",Diamond:"\u22c4",diamondsuit:"\u2666",diams:"\u2666",die:"\xa8",DifferentialD:"\u2146",digamma:"\u03dd",disin:"\u22f2",div:"\xf7",divide:"\xf7",divideontimes:"\u22c7",divonx:"\u22c7",DJcy:"\u0402",djcy:"\u0452",dlcorn:"\u231e",dlcrop:"\u230d",dollar:"$",Dopf:"\ud835\udd3b",dopf:"\ud835\udd55",Dot:"\xa8",dot:"\u02d9",DotDot:"\u20dc",doteq:"\u2250",doteqdot:"\u2251",DotEqual:"\u2250",dotminus:"\u2238",dotplus:"\u2214",dotsquare:"\u22a1",doublebarwedge:"\u2306",DoubleContourIntegral:"\u222f",DoubleDot:"\xa8",DoubleDownArrow:"\u21d3",DoubleLeftArrow:"\u21d0",DoubleLeftRightArrow:"\u21d4",DoubleLeftTee:"\u2ae4",DoubleLongLeftArrow:"\u27f8",DoubleLongLeftRightArrow:"\u27fa",DoubleLongRightArrow:"\u27f9",DoubleRightArrow:"\u21d2",DoubleRightTee:"\u22a8",DoubleUpArrow:"\u21d1",DoubleUpDownArrow:"\u21d5",DoubleVerticalBar:"\u2225",DownArrowBar:"\u2913",downarrow:"\u2193",DownArrow:"\u2193",Downarrow:"\u21d3",DownArrowUpArrow:"\u21f5",DownBreve:"\u0311",downdownarrows:"\u21ca",downharpoonleft:"\u21c3",downharpoonright:"\u21c2",DownLeftRightVector:"\u2950",DownLeftTeeVector:"\u295e",DownLeftVectorBar:"\u2956",DownLeftVector:"\u21bd",DownRightTeeVector:"\u295f",DownRightVectorBar:"\u2957",DownRightVector:"\u21c1",DownTeeArrow:"\u21a7",DownTee:"\u22a4",drbkarow:"\u2910",drcorn:"\u231f",drcrop:"\u230c",Dscr:"\ud835\udc9f",dscr:"\ud835\udcb9",DScy:"\u0405",dscy:"\u0455",dsol:"\u29f6",Dstrok:"\u0110",dstrok:"\u0111",dtdot:"\u22f1",dtri:"\u25bf",dtrif:"\u25be",duarr:"\u21f5",duhar:"\u296f",dwangle:"\u29a6",DZcy:"\u040f",dzcy:"\u045f",dzigrarr:"\u27ff",Eacute:"\xc9",eacute:"\xe9",easter:"\u2a6e",Ecaron:"\u011a",ecaron:"\u011b",Ecirc:"\xca",ecirc:"\xea",ecir:"\u2256",ecolon:"\u2255",Ecy:"\u042d",ecy:"\u044d",eDDot:"\u2a77",Edot:"\u0116",edot:"\u0117",eDot:"\u2251",ee:"\u2147",efDot:"\u2252",Efr:"\ud835\udd08",efr:"\ud835\udd22",eg:"\u2a9a",Egrave:"\xc8",egrave:"\xe8",egs:"\u2a96",egsdot:"\u2a98",el:"\u2a99",Element:"\u2208",elinters:"\u23e7",ell:"\u2113",els:"\u2a95",elsdot:"\u2a97",Emacr:"\u0112",emacr:"\u0113",empty:"\u2205",emptyset:"\u2205",EmptySmallSquare:"\u25fb",emptyv:"\u2205",EmptyVerySmallSquare:"\u25ab",emsp13:"\u2004",emsp14:"\u2005",emsp:"\u2003",ENG:"\u014a",eng:"\u014b",ensp:"\u2002",Eogon:"\u0118",eogon:"\u0119",Eopf:"\ud835\udd3c",eopf:"\ud835\udd56",epar:"\u22d5",eparsl:"\u29e3",eplus:"\u2a71",epsi:"\u03b5",Epsilon:"\u0395",epsilon:"\u03b5",epsiv:"\u03f5",eqcirc:"\u2256",eqcolon:"\u2255",eqsim:"\u2242",eqslantgtr:"\u2a96",eqslantless:"\u2a95",Equal:"\u2a75",equals:"=",EqualTilde:"\u2242",equest:"\u225f",Equilibrium:"\u21cc",equiv:"\u2261",equivDD:"\u2a78",eqvparsl:"\u29e5",erarr:"\u2971",erDot:"\u2253",escr:"\u212f",Escr:"\u2130",esdot:"\u2250",Esim:"\u2a73",esim:"\u2242",Eta:"\u0397",eta:"\u03b7",ETH:"\xd0",eth:"\xf0",Euml:"\xcb",euml:"\xeb",euro:"\u20ac",excl:"!",exist:"\u2203",Exists:"\u2203",expectation:"\u2130",exponentiale:"\u2147",ExponentialE:"\u2147",fallingdotseq:"\u2252",Fcy:"\u0424",fcy:"\u0444",female:"\u2640",ffilig:"\ufb03",fflig:"\ufb00",ffllig:"\ufb04",Ffr:"\ud835\udd09",ffr:"\ud835\udd23",filig:"\ufb01",FilledSmallSquare:"\u25fc",FilledVerySmallSquare:"\u25aa",fjlig:"fj",flat:"\u266d",fllig:"\ufb02",fltns:"\u25b1",fnof:"\u0192",Fopf:"\ud835\udd3d",fopf:"\ud835\udd57",forall:"\u2200",ForAll:"\u2200",fork:"\u22d4",forkv:"\u2ad9",Fouriertrf:"\u2131",fpartint:"\u2a0d",frac12:"\xbd",frac13:"\u2153",frac14:"\xbc",frac15:"\u2155",frac16:"\u2159",frac18:"\u215b",frac23:"\u2154",frac25:"\u2156",frac34:"\xbe",frac35:"\u2157",frac38:"\u215c",frac45:"\u2158",frac56:"\u215a",frac58:"\u215d",frac78:"\u215e",frasl:"\u2044",frown:"\u2322",fscr:"\ud835\udcbb",Fscr:"\u2131",gacute:"\u01f5",Gamma:"\u0393",gamma:"\u03b3",Gammad:"\u03dc",gammad:"\u03dd",gap:"\u2a86",Gbreve:"\u011e",gbreve:"\u011f",Gcedil:"\u0122",Gcirc:"\u011c",gcirc:"\u011d",Gcy:"\u0413",gcy:"\u0433",Gdot:"\u0120",gdot:"\u0121",ge:"\u2265",gE:"\u2267",gEl:"\u2a8c",gel:"\u22db",geq:"\u2265",geqq:"\u2267",geqslant:"\u2a7e",gescc:"\u2aa9",ges:"\u2a7e",gesdot:"\u2a80",gesdoto:"\u2a82",gesdotol:"\u2a84",gesl:"\u22db\ufe00",gesles:"\u2a94",Gfr:"\ud835\udd0a",gfr:"\ud835\udd24",gg:"\u226b",Gg:"\u22d9",ggg:"\u22d9",gimel:"\u2137",GJcy:"\u0403",gjcy:"\u0453",gla:"\u2aa5",gl:"\u2277",glE:"\u2a92",glj:"\u2aa4",gnap:"\u2a8a",gnapprox:"\u2a8a",gne:"\u2a88",gnE:"\u2269",gneq:"\u2a88",gneqq:"\u2269",gnsim:"\u22e7",Gopf:"\ud835\udd3e",gopf:"\ud835\udd58",grave:"`",GreaterEqual:"\u2265",GreaterEqualLess:"\u22db",GreaterFullEqual:"\u2267",GreaterGreater:"\u2aa2",GreaterLess:"\u2277",GreaterSlantEqual:"\u2a7e",GreaterTilde:"\u2273",Gscr:"\ud835\udca2",gscr:"\u210a",gsim:"\u2273",gsime:"\u2a8e",gsiml:"\u2a90",gtcc:"\u2aa7",gtcir:"\u2a7a",gt:">",GT:">",Gt:"\u226b",gtdot:"\u22d7",gtlPar:"\u2995",gtquest:"\u2a7c",gtrapprox:"\u2a86",gtrarr:"\u2978",gtrdot:"\u22d7",gtreqless:"\u22db",gtreqqless:"\u2a8c",gtrless:"\u2277",gtrsim:"\u2273",gvertneqq:"\u2269\ufe00",gvnE:"\u2269\ufe00",Hacek:"\u02c7",hairsp:"\u200a",half:"\xbd",hamilt:"\u210b",HARDcy:"\u042a",hardcy:"\u044a",harrcir:"\u2948",harr:"\u2194",hArr:"\u21d4",harrw:"\u21ad",Hat:"^",hbar:"\u210f",Hcirc:"\u0124",hcirc:"\u0125",hearts:"\u2665",heartsuit:"\u2665",hellip:"\u2026",hercon:"\u22b9",hfr:"\ud835\udd25",Hfr:"\u210c",HilbertSpace:"\u210b",hksearow:"\u2925",hkswarow:"\u2926",hoarr:"\u21ff",homtht:"\u223b",hookleftarrow:"\u21a9",hookrightarrow:"\u21aa",hopf:"\ud835\udd59",Hopf:"\u210d",horbar:"\u2015",HorizontalLine:"\u2500",hscr:"\ud835\udcbd",Hscr:"\u210b",hslash:"\u210f",Hstrok:"\u0126",hstrok:"\u0127",HumpDownHump:"\u224e",HumpEqual:"\u224f",hybull:"\u2043",hyphen:"\u2010",Iacute:"\xcd",iacute:"\xed",ic:"\u2063",Icirc:"\xce",icirc:"\xee",Icy:"\u0418",icy:"\u0438",Idot:"\u0130",IEcy:"\u0415",iecy:"\u0435",iexcl:"\xa1",iff:"\u21d4",ifr:"\ud835\udd26",Ifr:"\u2111",Igrave:"\xcc",igrave:"\xec",ii:"\u2148",iiiint:"\u2a0c",iiint:"\u222d",iinfin:"\u29dc",iiota:"\u2129",IJlig:"\u0132",ijlig:"\u0133",Imacr:"\u012a",imacr:"\u012b",image:"\u2111",ImaginaryI:"\u2148",imagline:"\u2110",imagpart:"\u2111",imath:"\u0131",Im:"\u2111",imof:"\u22b7",imped:"\u01b5",Implies:"\u21d2",incare:"\u2105",in:"\u2208",infin:"\u221e",infintie:"\u29dd",inodot:"\u0131",intcal:"\u22ba",int:"\u222b",Int:"\u222c",integers:"\u2124",Integral:"\u222b",intercal:"\u22ba",Intersection:"\u22c2",intlarhk:"\u2a17",intprod:"\u2a3c",InvisibleComma:"\u2063",InvisibleTimes:"\u2062",IOcy:"\u0401",iocy:"\u0451",Iogon:"\u012e",iogon:"\u012f",Iopf:"\ud835\udd40",iopf:"\ud835\udd5a",Iota:"\u0399",iota:"\u03b9",iprod:"\u2a3c",iquest:"\xbf",iscr:"\ud835\udcbe",Iscr:"\u2110",isin:"\u2208",isindot:"\u22f5",isinE:"\u22f9",isins:"\u22f4",isinsv:"\u22f3",isinv:"\u2208",it:"\u2062",Itilde:"\u0128",itilde:"\u0129",Iukcy:"\u0406",iukcy:"\u0456",Iuml:"\xcf",iuml:"\xef",Jcirc:"\u0134",jcirc:"\u0135",Jcy:"\u0419",jcy:"\u0439",Jfr:"\ud835\udd0d",jfr:"\ud835\udd27",jmath:"\u0237",Jopf:"\ud835\udd41",jopf:"\ud835\udd5b",Jscr:"\ud835\udca5",jscr:"\ud835\udcbf",Jsercy:"\u0408",jsercy:"\u0458",Jukcy:"\u0404",jukcy:"\u0454",Kappa:"\u039a",kappa:"\u03ba",kappav:"\u03f0",Kcedil:"\u0136",kcedil:"\u0137",Kcy:"\u041a",kcy:"\u043a",Kfr:"\ud835\udd0e",kfr:"\ud835\udd28",kgreen:"\u0138",KHcy:"\u0425",khcy:"\u0445",KJcy:"\u040c",kjcy:"\u045c",Kopf:"\ud835\udd42",kopf:"\ud835\udd5c",Kscr:"\ud835\udca6",kscr:"\ud835\udcc0",lAarr:"\u21da",Lacute:"\u0139",lacute:"\u013a",laemptyv:"\u29b4",lagran:"\u2112",Lambda:"\u039b",lambda:"\u03bb",lang:"\u27e8",Lang:"\u27ea",langd:"\u2991",langle:"\u27e8",lap:"\u2a85",Laplacetrf:"\u2112",laquo:"\xab",larrb:"\u21e4",larrbfs:"\u291f",larr:"\u2190",Larr:"\u219e",lArr:"\u21d0",larrfs:"\u291d",larrhk:"\u21a9",larrlp:"\u21ab",larrpl:"\u2939",larrsim:"\u2973",larrtl:"\u21a2",latail:"\u2919",lAtail:"\u291b",lat:"\u2aab",late:"\u2aad",lates:"\u2aad\ufe00",lbarr:"\u290c",lBarr:"\u290e",lbbrk:"\u2772",lbrace:"{",lbrack:"[",lbrke:"\u298b",lbrksld:"\u298f",lbrkslu:"\u298d",Lcaron:"\u013d",lcaron:"\u013e",Lcedil:"\u013b",lcedil:"\u013c",lceil:"\u2308",lcub:"{",Lcy:"\u041b",lcy:"\u043b",ldca:"\u2936",ldquo:"\u201c",ldquor:"\u201e",ldrdhar:"\u2967",ldrushar:"\u294b",ldsh:"\u21b2",le:"\u2264",lE:"\u2266",LeftAngleBracket:"\u27e8",LeftArrowBar:"\u21e4",leftarrow:"\u2190",LeftArrow:"\u2190",Leftarrow:"\u21d0",LeftArrowRightArrow:"\u21c6",leftarrowtail:"\u21a2",LeftCeiling:"\u2308",LeftDoubleBracket:"\u27e6",LeftDownTeeVector:"\u2961",LeftDownVectorBar:"\u2959",LeftDownVector:"\u21c3",LeftFloor:"\u230a",leftharpoondown:"\u21bd",leftharpoonup:"\u21bc",leftleftarrows:"\u21c7",leftrightarrow:"\u2194",LeftRightArrow:"\u2194",Leftrightarrow:"\u21d4",leftrightarrows:"\u21c6",leftrightharpoons:"\u21cb",leftrightsquigarrow:"\u21ad",LeftRightVector:"\u294e",LeftTeeArrow:"\u21a4",LeftTee:"\u22a3",LeftTeeVector:"\u295a",leftthreetimes:"\u22cb",LeftTriangleBar:"\u29cf",LeftTriangle:"\u22b2",LeftTriangleEqual:"\u22b4",LeftUpDownVector:"\u2951",LeftUpTeeVector:"\u2960",LeftUpVectorBar:"\u2958",LeftUpVector:"\u21bf",LeftVectorBar:"\u2952",LeftVector:"\u21bc",lEg:"\u2a8b",leg:"\u22da",leq:"\u2264",leqq:"\u2266",leqslant:"\u2a7d",lescc:"\u2aa8",les:"\u2a7d",lesdot:"\u2a7f",lesdoto:"\u2a81",lesdotor:"\u2a83",lesg:"\u22da\ufe00",lesges:"\u2a93",lessapprox:"\u2a85",lessdot:"\u22d6",lesseqgtr:"\u22da",lesseqqgtr:"\u2a8b",LessEqualGreater:"\u22da",LessFullEqual:"\u2266",LessGreater:"\u2276",lessgtr:"\u2276",LessLess:"\u2aa1",lesssim:"\u2272",LessSlantEqual:"\u2a7d",LessTilde:"\u2272",lfisht:"\u297c",lfloor:"\u230a",Lfr:"\ud835\udd0f",lfr:"\ud835\udd29",lg:"\u2276",lgE:"\u2a91",lHar:"\u2962",lhard:"\u21bd",lharu:"\u21bc",lharul:"\u296a",lhblk:"\u2584",LJcy:"\u0409",ljcy:"\u0459",llarr:"\u21c7",ll:"\u226a",Ll:"\u22d8",llcorner:"\u231e",Lleftarrow:"\u21da",llhard:"\u296b",lltri:"\u25fa",Lmidot:"\u013f",lmidot:"\u0140",lmoustache:"\u23b0",lmoust:"\u23b0",lnap:"\u2a89",lnapprox:"\u2a89",lne:"\u2a87",lnE:"\u2268",lneq:"\u2a87",lneqq:"\u2268",lnsim:"\u22e6",loang:"\u27ec",loarr:"\u21fd",lobrk:"\u27e6",longleftarrow:"\u27f5",LongLeftArrow:"\u27f5",Longleftarrow:"\u27f8",longleftrightarrow:"\u27f7",LongLeftRightArrow:"\u27f7",Longleftrightarrow:"\u27fa",longmapsto:"\u27fc",longrightarrow:"\u27f6",LongRightArrow:"\u27f6",Longrightarrow:"\u27f9",looparrowleft:"\u21ab",looparrowright:"\u21ac",lopar:"\u2985",Lopf:"\ud835\udd43",lopf:"\ud835\udd5d",loplus:"\u2a2d",lotimes:"\u2a34",lowast:"\u2217",lowbar:"_",LowerLeftArrow:"\u2199",LowerRightArrow:"\u2198",loz:"\u25ca",lozenge:"\u25ca",lozf:"\u29eb",lpar:"(",lparlt:"\u2993",lrarr:"\u21c6",lrcorner:"\u231f",lrhar:"\u21cb",lrhard:"\u296d",lrm:"\u200e",lrtri:"\u22bf",lsaquo:"\u2039",lscr:"\ud835\udcc1",Lscr:"\u2112",lsh:"\u21b0",Lsh:"\u21b0",lsim:"\u2272",lsime:"\u2a8d",lsimg:"\u2a8f",lsqb:"[",lsquo:"\u2018",lsquor:"\u201a",Lstrok:"\u0141",lstrok:"\u0142",ltcc:"\u2aa6",ltcir:"\u2a79",lt:"<",LT:"<",Lt:"\u226a",ltdot:"\u22d6",lthree:"\u22cb",ltimes:"\u22c9",ltlarr:"\u2976",ltquest:"\u2a7b",ltri:"\u25c3",ltrie:"\u22b4",ltrif:"\u25c2",ltrPar:"\u2996",lurdshar:"\u294a",luruhar:"\u2966",lvertneqq:"\u2268\ufe00",lvnE:"\u2268\ufe00",macr:"\xaf",male:"\u2642",malt:"\u2720",maltese:"\u2720",Map:"\u2905",map:"\u21a6",mapsto:"\u21a6",mapstodown:"\u21a7",mapstoleft:"\u21a4",mapstoup:"\u21a5",marker:"\u25ae",mcomma:"\u2a29",Mcy:"\u041c",mcy:"\u043c",mdash:"\u2014",mDDot:"\u223a",measuredangle:"\u2221",MediumSpace:"\u205f",Mellintrf:"\u2133",Mfr:"\ud835\udd10",mfr:"\ud835\udd2a",mho:"\u2127",micro:"\xb5",midast:"*",midcir:"\u2af0",mid:"\u2223",middot:"\xb7",minusb:"\u229f",minus:"\u2212",minusd:"\u2238",minusdu:"\u2a2a",MinusPlus:"\u2213",mlcp:"\u2adb",mldr:"\u2026",mnplus:"\u2213",models:"\u22a7",Mopf:"\ud835\udd44",mopf:"\ud835\udd5e",mp:"\u2213",mscr:"\ud835\udcc2",Mscr:"\u2133",mstpos:"\u223e",Mu:"\u039c",mu:"\u03bc",multimap:"\u22b8",mumap:"\u22b8",nabla:"\u2207",Nacute:"\u0143",nacute:"\u0144",nang:"\u2220\u20d2",nap:"\u2249",napE:"\u2a70\u0338",napid:"\u224b\u0338",napos:"\u0149",napprox:"\u2249",natural:"\u266e",naturals:"\u2115",natur:"\u266e",nbsp:"\xa0",nbump:"\u224e\u0338",nbumpe:"\u224f\u0338",ncap:"\u2a43",Ncaron:"\u0147",ncaron:"\u0148",Ncedil:"\u0145",ncedil:"\u0146",ncong:"\u2247",ncongdot:"\u2a6d\u0338",ncup:"\u2a42",Ncy:"\u041d",ncy:"\u043d",ndash:"\u2013",nearhk:"\u2924",nearr:"\u2197",neArr:"\u21d7",nearrow:"\u2197",ne:"\u2260",nedot:"\u2250\u0338",NegativeMediumSpace:"\u200b",NegativeThickSpace:"\u200b",NegativeThinSpace:"\u200b",NegativeVeryThinSpace:"\u200b",nequiv:"\u2262",nesear:"\u2928",nesim:"\u2242\u0338",NestedGreaterGreater:"\u226b",NestedLessLess:"\u226a",NewLine:"\n",nexist:"\u2204",nexists:"\u2204",Nfr:"\ud835\udd11",nfr:"\ud835\udd2b",ngE:"\u2267\u0338",nge:"\u2271",ngeq:"\u2271",ngeqq:"\u2267\u0338",ngeqslant:"\u2a7e\u0338",nges:"\u2a7e\u0338",nGg:"\u22d9\u0338",ngsim:"\u2275",nGt:"\u226b\u20d2",ngt:"\u226f",ngtr:"\u226f",nGtv:"\u226b\u0338",nharr:"\u21ae",nhArr:"\u21ce",nhpar:"\u2af2",ni:"\u220b",nis:"\u22fc",nisd:"\u22fa",niv:"\u220b",NJcy:"\u040a",njcy:"\u045a",nlarr:"\u219a",nlArr:"\u21cd",nldr:"\u2025",nlE:"\u2266\u0338",nle:"\u2270",nleftarrow:"\u219a",nLeftarrow:"\u21cd",nleftrightarrow:"\u21ae",nLeftrightarrow:"\u21ce",nleq:"\u2270",nleqq:"\u2266\u0338",nleqslant:"\u2a7d\u0338",nles:"\u2a7d\u0338",nless:"\u226e",nLl:"\u22d8\u0338",nlsim:"\u2274",nLt:"\u226a\u20d2",nlt:"\u226e",nltri:"\u22ea",nltrie:"\u22ec",nLtv:"\u226a\u0338",nmid:"\u2224",NoBreak:"\u2060",NonBreakingSpace:"\xa0",nopf:"\ud835\udd5f",Nopf:"\u2115",Not:"\u2aec",not:"\xac",NotCongruent:"\u2262",NotCupCap:"\u226d",NotDoubleVerticalBar:"\u2226",NotElement:"\u2209",NotEqual:"\u2260",NotEqualTilde:"\u2242\u0338",NotExists:"\u2204",NotGreater:"\u226f",NotGreaterEqual:"\u2271",NotGreaterFullEqual:"\u2267\u0338",NotGreaterGreater:"\u226b\u0338",NotGreaterLess:"\u2279",NotGreaterSlantEqual:"\u2a7e\u0338",NotGreaterTilde:"\u2275",NotHumpDownHump:"\u224e\u0338",NotHumpEqual:"\u224f\u0338",notin:"\u2209",notindot:"\u22f5\u0338",notinE:"\u22f9\u0338",notinva:"\u2209",notinvb:"\u22f7",notinvc:"\u22f6",NotLeftTriangleBar:"\u29cf\u0338",NotLeftTriangle:"\u22ea",NotLeftTriangleEqual:"\u22ec",NotLess:"\u226e",NotLessEqual:"\u2270",NotLessGreater:"\u2278",NotLessLess:"\u226a\u0338",NotLessSlantEqual:"\u2a7d\u0338",NotLessTilde:"\u2274",NotNestedGreaterGreater:"\u2aa2\u0338",NotNestedLessLess:"\u2aa1\u0338",notni:"\u220c",notniva:"\u220c",notnivb:"\u22fe",notnivc:"\u22fd",NotPrecedes:"\u2280",NotPrecedesEqual:"\u2aaf\u0338",NotPrecedesSlantEqual:"\u22e0",NotReverseElement:"\u220c",NotRightTriangleBar:"\u29d0\u0338",NotRightTriangle:"\u22eb",NotRightTriangleEqual:"\u22ed",NotSquareSubset:"\u228f\u0338",NotSquareSubsetEqual:"\u22e2",NotSquareSuperset:"\u2290\u0338",NotSquareSupersetEqual:"\u22e3",NotSubset:"\u2282\u20d2",NotSubsetEqual:"\u2288",NotSucceeds:"\u2281",NotSucceedsEqual:"\u2ab0\u0338",NotSucceedsSlantEqual:"\u22e1",NotSucceedsTilde:"\u227f\u0338",NotSuperset:"\u2283\u20d2",NotSupersetEqual:"\u2289",NotTilde:"\u2241",NotTildeEqual:"\u2244",NotTildeFullEqual:"\u2247",NotTildeTilde:"\u2249",NotVerticalBar:"\u2224",nparallel:"\u2226",npar:"\u2226",nparsl:"\u2afd\u20e5",npart:"\u2202\u0338",npolint:"\u2a14",npr:"\u2280",nprcue:"\u22e0",nprec:"\u2280",npreceq:"\u2aaf\u0338",npre:"\u2aaf\u0338",nrarrc:"\u2933\u0338",nrarr:"\u219b",nrArr:"\u21cf",nrarrw:"\u219d\u0338",nrightarrow:"\u219b",nRightarrow:"\u21cf",nrtri:"\u22eb",nrtrie:"\u22ed",nsc:"\u2281",nsccue:"\u22e1",nsce:"\u2ab0\u0338",Nscr:"\ud835\udca9",nscr:"\ud835\udcc3",nshortmid:"\u2224",nshortparallel:"\u2226",nsim:"\u2241",nsime:"\u2244",nsimeq:"\u2244",nsmid:"\u2224",nspar:"\u2226",nsqsube:"\u22e2",nsqsupe:"\u22e3",nsub:"\u2284",nsubE:"\u2ac5\u0338",nsube:"\u2288",nsubset:"\u2282\u20d2",nsubseteq:"\u2288",nsubseteqq:"\u2ac5\u0338",nsucc:"\u2281",nsucceq:"\u2ab0\u0338",nsup:"\u2285",nsupE:"\u2ac6\u0338",nsupe:"\u2289",nsupset:"\u2283\u20d2",nsupseteq:"\u2289",nsupseteqq:"\u2ac6\u0338",ntgl:"\u2279",Ntilde:"\xd1",ntilde:"\xf1",ntlg:"\u2278",ntriangleleft:"\u22ea",ntrianglelefteq:"\u22ec",ntriangleright:"\u22eb",ntrianglerighteq:"\u22ed",Nu:"\u039d",nu:"\u03bd",num:"#",numero:"\u2116",numsp:"\u2007",nvap:"\u224d\u20d2",nvdash:"\u22ac",nvDash:"\u22ad",nVdash:"\u22ae",nVDash:"\u22af",nvge:"\u2265\u20d2",nvgt:">\u20d2",nvHarr:"\u2904",nvinfin:"\u29de",nvlArr:"\u2902",nvle:"\u2264\u20d2",nvlt:"<\u20d2",nvltrie:"\u22b4\u20d2",nvrArr:"\u2903",nvrtrie:"\u22b5\u20d2",nvsim:"\u223c\u20d2",nwarhk:"\u2923",nwarr:"\u2196",nwArr:"\u21d6",nwarrow:"\u2196",nwnear:"\u2927",Oacute:"\xd3",oacute:"\xf3",oast:"\u229b",Ocirc:"\xd4",ocirc:"\xf4",ocir:"\u229a",Ocy:"\u041e",ocy:"\u043e",odash:"\u229d",Odblac:"\u0150",odblac:"\u0151",odiv:"\u2a38",odot:"\u2299",odsold:"\u29bc",OElig:"\u0152",oelig:"\u0153",ofcir:"\u29bf",Ofr:"\ud835\udd12",ofr:"\ud835\udd2c",ogon:"\u02db",Ograve:"\xd2",ograve:"\xf2",ogt:"\u29c1",ohbar:"\u29b5",ohm:"\u03a9",oint:"\u222e",olarr:"\u21ba",olcir:"\u29be",olcross:"\u29bb",oline:"\u203e",olt:"\u29c0",Omacr:"\u014c",omacr:"\u014d",Omega:"\u03a9",omega:"\u03c9",Omicron:"\u039f",omicron:"\u03bf",omid:"\u29b6",ominus:"\u2296",Oopf:"\ud835\udd46",oopf:"\ud835\udd60",opar:"\u29b7",OpenCurlyDoubleQuote:"\u201c",OpenCurlyQuote:"\u2018",operp:"\u29b9",oplus:"\u2295",orarr:"\u21bb",Or:"\u2a54",or:"\u2228",ord:"\u2a5d",order:"\u2134",orderof:"\u2134",ordf:"\xaa",ordm:"\xba",origof:"\u22b6",oror:"\u2a56",orslope:"\u2a57",orv:"\u2a5b",oS:"\u24c8",Oscr:"\ud835\udcaa",oscr:"\u2134",Oslash:"\xd8",oslash:"\xf8",osol:"\u2298",Otilde:"\xd5",otilde:"\xf5",otimesas:"\u2a36",Otimes:"\u2a37",otimes:"\u2297",Ouml:"\xd6",ouml:"\xf6",ovbar:"\u233d",OverBar:"\u203e",OverBrace:"\u23de",OverBracket:"\u23b4",OverParenthesis:"\u23dc",para:"\xb6",parallel:"\u2225",par:"\u2225",parsim:"\u2af3",parsl:"\u2afd",part:"\u2202",PartialD:"\u2202",Pcy:"\u041f",pcy:"\u043f",percnt:"%",period:".",permil:"\u2030",perp:"\u22a5",pertenk:"\u2031",Pfr:"\ud835\udd13",pfr:"\ud835\udd2d",Phi:"\u03a6",phi:"\u03c6",phiv:"\u03d5",phmmat:"\u2133",phone:"\u260e",Pi:"\u03a0",pi:"\u03c0",pitchfork:"\u22d4",piv:"\u03d6",planck:"\u210f",planckh:"\u210e",plankv:"\u210f",plusacir:"\u2a23",plusb:"\u229e",pluscir:"\u2a22",plus:"+",plusdo:"\u2214",plusdu:"\u2a25",pluse:"\u2a72",PlusMinus:"\xb1",plusmn:"\xb1",plussim:"\u2a26",plustwo:"\u2a27",pm:"\xb1",Poincareplane:"\u210c",pointint:"\u2a15",popf:"\ud835\udd61",Popf:"\u2119",pound:"\xa3",prap:"\u2ab7",Pr:"\u2abb",pr:"\u227a",prcue:"\u227c",precapprox:"\u2ab7",prec:"\u227a",preccurlyeq:"\u227c",Precedes:"\u227a",PrecedesEqual:"\u2aaf",PrecedesSlantEqual:"\u227c",PrecedesTilde:"\u227e",preceq:"\u2aaf",precnapprox:"\u2ab9",precneqq:"\u2ab5",precnsim:"\u22e8",pre:"\u2aaf",prE:"\u2ab3",precsim:"\u227e",prime:"\u2032",Prime:"\u2033",primes:"\u2119",prnap:"\u2ab9",prnE:"\u2ab5",prnsim:"\u22e8",prod:"\u220f",Product:"\u220f",profalar:"\u232e",profline:"\u2312",profsurf:"\u2313",prop:"\u221d",Proportional:"\u221d",Proportion:"\u2237",propto:"\u221d",prsim:"\u227e",prurel:"\u22b0",Pscr:"\ud835\udcab",pscr:"\ud835\udcc5",Psi:"\u03a8",psi:"\u03c8",puncsp:"\u2008",Qfr:"\ud835\udd14",qfr:"\ud835\udd2e",qint:"\u2a0c",qopf:"\ud835\udd62",Qopf:"\u211a",qprime:"\u2057",Qscr:"\ud835\udcac",qscr:"\ud835\udcc6",quaternions:"\u210d",quatint:"\u2a16",quest:"?",questeq:"\u225f",quot:'"',QUOT:'"',rAarr:"\u21db",race:"\u223d\u0331",Racute:"\u0154",racute:"\u0155",radic:"\u221a",raemptyv:"\u29b3",rang:"\u27e9",Rang:"\u27eb",rangd:"\u2992",range:"\u29a5",rangle:"\u27e9",raquo:"\xbb",rarrap:"\u2975",rarrb:"\u21e5",rarrbfs:"\u2920",rarrc:"\u2933",rarr:"\u2192",Rarr:"\u21a0",rArr:"\u21d2",rarrfs:"\u291e",rarrhk:"\u21aa",rarrlp:"\u21ac",rarrpl:"\u2945",rarrsim:"\u2974",Rarrtl:"\u2916",rarrtl:"\u21a3",rarrw:"\u219d",ratail:"\u291a",rAtail:"\u291c",ratio:"\u2236",rationals:"\u211a",rbarr:"\u290d",rBarr:"\u290f",RBarr:"\u2910",rbbrk:"\u2773",rbrace:"}",rbrack:"]",rbrke:"\u298c",rbrksld:"\u298e",rbrkslu:"\u2990",Rcaron:"\u0158",rcaron:"\u0159",Rcedil:"\u0156",rcedil:"\u0157",rceil:"\u2309",rcub:"}",Rcy:"\u0420",rcy:"\u0440",rdca:"\u2937",rdldhar:"\u2969",rdquo:"\u201d",rdquor:"\u201d",rdsh:"\u21b3",real:"\u211c",realine:"\u211b",realpart:"\u211c",reals:"\u211d",Re:"\u211c",rect:"\u25ad",reg:"\xae",REG:"\xae",ReverseElement:"\u220b",ReverseEquilibrium:"\u21cb",ReverseUpEquilibrium:"\u296f",rfisht:"\u297d",rfloor:"\u230b",rfr:"\ud835\udd2f",Rfr:"\u211c",rHar:"\u2964",rhard:"\u21c1",rharu:"\u21c0",rharul:"\u296c",Rho:"\u03a1",rho:"\u03c1",rhov:"\u03f1",RightAngleBracket:"\u27e9",RightArrowBar:"\u21e5",rightarrow:"\u2192",RightArrow:"\u2192",Rightarrow:"\u21d2",RightArrowLeftArrow:"\u21c4",rightarrowtail:"\u21a3",RightCeiling:"\u2309",RightDoubleBracket:"\u27e7",RightDownTeeVector:"\u295d",RightDownVectorBar:"\u2955",RightDownVector:"\u21c2",RightFloor:"\u230b",rightharpoondown:"\u21c1",rightharpoonup:"\u21c0",rightleftarrows:"\u21c4",rightleftharpoons:"\u21cc",rightrightarrows:"\u21c9",rightsquigarrow:"\u219d",RightTeeArrow:"\u21a6",RightTee:"\u22a2",RightTeeVector:"\u295b",rightthreetimes:"\u22cc",RightTriangleBar:"\u29d0",RightTriangle:"\u22b3",RightTriangleEqual:"\u22b5",RightUpDownVector:"\u294f",RightUpTeeVector:"\u295c",RightUpVectorBar:"\u2954",RightUpVector:"\u21be",RightVectorBar:"\u2953",RightVector:"\u21c0",ring:"\u02da",risingdotseq:"\u2253",rlarr:"\u21c4",rlhar:"\u21cc",rlm:"\u200f",rmoustache:"\u23b1",rmoust:"\u23b1",rnmid:"\u2aee",roang:"\u27ed",roarr:"\u21fe",robrk:"\u27e7",ropar:"\u2986",ropf:"\ud835\udd63",Ropf:"\u211d",roplus:"\u2a2e",rotimes:"\u2a35",RoundImplies:"\u2970",rpar:")",rpargt:"\u2994",rppolint:"\u2a12",rrarr:"\u21c9",Rrightarrow:"\u21db",rsaquo:"\u203a",rscr:"\ud835\udcc7",Rscr:"\u211b",rsh:"\u21b1",Rsh:"\u21b1",rsqb:"]",rsquo:"\u2019",rsquor:"\u2019",rthree:"\u22cc",rtimes:"\u22ca",rtri:"\u25b9",rtrie:"\u22b5",rtrif:"\u25b8",rtriltri:"\u29ce",RuleDelayed:"\u29f4",ruluhar:"\u2968",rx:"\u211e",Sacute:"\u015a",sacute:"\u015b",sbquo:"\u201a",scap:"\u2ab8",Scaron:"\u0160",scaron:"\u0161",Sc:"\u2abc",sc:"\u227b",sccue:"\u227d",sce:"\u2ab0",scE:"\u2ab4",Scedil:"\u015e",scedil:"\u015f",Scirc:"\u015c",scirc:"\u015d",scnap:"\u2aba",scnE:"\u2ab6",scnsim:"\u22e9",scpolint:"\u2a13",scsim:"\u227f",Scy:"\u0421",scy:"\u0441",sdotb:"\u22a1",sdot:"\u22c5",sdote:"\u2a66",searhk:"\u2925",searr:"\u2198",seArr:"\u21d8",searrow:"\u2198",sect:"\xa7",semi:";",seswar:"\u2929",setminus:"\u2216",setmn:"\u2216",sext:"\u2736",Sfr:"\ud835\udd16",sfr:"\ud835\udd30",sfrown:"\u2322",sharp:"\u266f",SHCHcy:"\u0429",shchcy:"\u0449",SHcy:"\u0428",shcy:"\u0448",ShortDownArrow:"\u2193",ShortLeftArrow:"\u2190",shortmid:"\u2223",shortparallel:"\u2225",ShortRightArrow:"\u2192",ShortUpArrow:"\u2191",shy:"\xad",Sigma:"\u03a3",sigma:"\u03c3",sigmaf:"\u03c2",sigmav:"\u03c2",sim:"\u223c",simdot:"\u2a6a",sime:"\u2243",simeq:"\u2243",simg:"\u2a9e",simgE:"\u2aa0",siml:"\u2a9d",simlE:"\u2a9f",simne:"\u2246",simplus:"\u2a24",simrarr:"\u2972",slarr:"\u2190",SmallCircle:"\u2218",smallsetminus:"\u2216",smashp:"\u2a33",smeparsl:"\u29e4",smid:"\u2223",smile:"\u2323",smt:"\u2aaa",smte:"\u2aac",smtes:"\u2aac\ufe00",SOFTcy:"\u042c",softcy:"\u044c",solbar:"\u233f",solb:"\u29c4",sol:"/",Sopf:"\ud835\udd4a",sopf:"\ud835\udd64",spades:"\u2660",spadesuit:"\u2660",spar:"\u2225",sqcap:"\u2293",sqcaps:"\u2293\ufe00",sqcup:"\u2294",sqcups:"\u2294\ufe00",Sqrt:"\u221a",sqsub:"\u228f",sqsube:"\u2291",sqsubset:"\u228f",sqsubseteq:"\u2291",sqsup:"\u2290",sqsupe:"\u2292",sqsupset:"\u2290",sqsupseteq:"\u2292",square:"\u25a1",Square:"\u25a1",SquareIntersection:"\u2293",SquareSubset:"\u228f",SquareSubsetEqual:"\u2291",SquareSuperset:"\u2290",SquareSupersetEqual:"\u2292",SquareUnion:"\u2294",squarf:"\u25aa",squ:"\u25a1",squf:"\u25aa",srarr:"\u2192",Sscr:"\ud835\udcae",sscr:"\ud835\udcc8",ssetmn:"\u2216",ssmile:"\u2323",sstarf:"\u22c6",Star:"\u22c6",star:"\u2606",starf:"\u2605",straightepsilon:"\u03f5",straightphi:"\u03d5",strns:"\xaf",sub:"\u2282",Sub:"\u22d0",subdot:"\u2abd",subE:"\u2ac5",sube:"\u2286",subedot:"\u2ac3",submult:"\u2ac1",subnE:"\u2acb",subne:"\u228a",subplus:"\u2abf",subrarr:"\u2979",subset:"\u2282",Subset:"\u22d0",subseteq:"\u2286",subseteqq:"\u2ac5",SubsetEqual:"\u2286",subsetneq:"\u228a",subsetneqq:"\u2acb",subsim:"\u2ac7",subsub:"\u2ad5",subsup:"\u2ad3",succapprox:"\u2ab8",succ:"\u227b",succcurlyeq:"\u227d",Succeeds:"\u227b",SucceedsEqual:"\u2ab0",SucceedsSlantEqual:"\u227d",SucceedsTilde:"\u227f",succeq:"\u2ab0",succnapprox:"\u2aba",succneqq:"\u2ab6",succnsim:"\u22e9",succsim:"\u227f",SuchThat:"\u220b",sum:"\u2211",Sum:"\u2211",sung:"\u266a",sup1:"\xb9",sup2:"\xb2",sup3:"\xb3",sup:"\u2283",Sup:"\u22d1",supdot:"\u2abe",supdsub:"\u2ad8",supE:"\u2ac6",supe:"\u2287",supedot:"\u2ac4",Superset:"\u2283",SupersetEqual:"\u2287",suphsol:"\u27c9",suphsub:"\u2ad7",suplarr:"\u297b",supmult:"\u2ac2",supnE:"\u2acc",supne:"\u228b",supplus:"\u2ac0",supset:"\u2283",Supset:"\u22d1",supseteq:"\u2287",supseteqq:"\u2ac6",supsetneq:"\u228b",supsetneqq:"\u2acc",supsim:"\u2ac8",supsub:"\u2ad4",supsup:"\u2ad6",swarhk:"\u2926",swarr:"\u2199",swArr:"\u21d9",swarrow:"\u2199",swnwar:"\u292a",szlig:"\xdf",Tab:"\t",target:"\u2316",Tau:"\u03a4",tau:"\u03c4",tbrk:"\u23b4",Tcaron:"\u0164",tcaron:"\u0165",Tcedil:"\u0162",tcedil:"\u0163",Tcy:"\u0422",tcy:"\u0442",tdot:"\u20db",telrec:"\u2315",Tfr:"\ud835\udd17",tfr:"\ud835\udd31",there4:"\u2234",therefore:"\u2234",Therefore:"\u2234",Theta:"\u0398",theta:"\u03b8",thetasym:"\u03d1",thetav:"\u03d1",thickapprox:"\u2248",thicksim:"\u223c",ThickSpace:"\u205f\u200a",ThinSpace:"\u2009",thinsp:"\u2009",thkap:"\u2248",thksim:"\u223c",THORN:"\xde",thorn:"\xfe",tilde:"\u02dc",Tilde:"\u223c",TildeEqual:"\u2243",TildeFullEqual:"\u2245",TildeTilde:"\u2248",timesbar:"\u2a31",timesb:"\u22a0",times:"\xd7",timesd:"\u2a30",tint:"\u222d",toea:"\u2928",topbot:"\u2336",topcir:"\u2af1",top:"\u22a4",Topf:"\ud835\udd4b",topf:"\ud835\udd65",topfork:"\u2ada",tosa:"\u2929",tprime:"\u2034",trade:"\u2122",TRADE:"\u2122",triangle:"\u25b5",triangledown:"\u25bf",triangleleft:"\u25c3",trianglelefteq:"\u22b4",triangleq:"\u225c",triangleright:"\u25b9",trianglerighteq:"\u22b5",tridot:"\u25ec",trie:"\u225c",triminus:"\u2a3a",TripleDot:"\u20db",triplus:"\u2a39",trisb:"\u29cd",tritime:"\u2a3b",trpezium:"\u23e2",Tscr:"\ud835\udcaf",tscr:"\ud835\udcc9",TScy:"\u0426",tscy:"\u0446",TSHcy:"\u040b",tshcy:"\u045b",Tstrok:"\u0166",tstrok:"\u0167",twixt:"\u226c",twoheadleftarrow:"\u219e",twoheadrightarrow:"\u21a0",Uacute:"\xda",uacute:"\xfa",uarr:"\u2191",Uarr:"\u219f",uArr:"\u21d1",Uarrocir:"\u2949",Ubrcy:"\u040e",ubrcy:"\u045e",Ubreve:"\u016c",ubreve:"\u016d",Ucirc:"\xdb",ucirc:"\xfb",Ucy:"\u0423",ucy:"\u0443",udarr:"\u21c5",Udblac:"\u0170",udblac:"\u0171",udhar:"\u296e",ufisht:"\u297e",Ufr:"\ud835\udd18",ufr:"\ud835\udd32",Ugrave:"\xd9",ugrave:"\xf9",uHar:"\u2963",uharl:"\u21bf",uharr:"\u21be",uhblk:"\u2580",ulcorn:"\u231c",ulcorner:"\u231c",ulcrop:"\u230f",ultri:"\u25f8",Umacr:"\u016a",umacr:"\u016b",uml:"\xa8",UnderBar:"_",UnderBrace:"\u23df",UnderBracket:"\u23b5",UnderParenthesis:"\u23dd",Union:"\u22c3",UnionPlus:"\u228e",Uogon:"\u0172",uogon:"\u0173",Uopf:"\ud835\udd4c",uopf:"\ud835\udd66",UpArrowBar:"\u2912",uparrow:"\u2191",UpArrow:"\u2191",Uparrow:"\u21d1",UpArrowDownArrow:"\u21c5",updownarrow:"\u2195",UpDownArrow:"\u2195",Updownarrow:"\u21d5",UpEquilibrium:"\u296e",upharpoonleft:"\u21bf",upharpoonright:"\u21be",uplus:"\u228e",UpperLeftArrow:"\u2196",UpperRightArrow:"\u2197",upsi:"\u03c5",Upsi:"\u03d2",upsih:"\u03d2",Upsilon:"\u03a5",upsilon:"\u03c5",UpTeeArrow:"\u21a5",UpTee:"\u22a5",upuparrows:"\u21c8",urcorn:"\u231d",urcorner:"\u231d",urcrop:"\u230e",Uring:"\u016e",uring:"\u016f",urtri:"\u25f9",Uscr:"\ud835\udcb0",uscr:"\ud835\udcca",utdot:"\u22f0",Utilde:"\u0168",utilde:"\u0169",utri:"\u25b5",utrif:"\u25b4",uuarr:"\u21c8",Uuml:"\xdc",uuml:"\xfc",uwangle:"\u29a7",vangrt:"\u299c",varepsilon:"\u03f5",varkappa:"\u03f0",varnothing:"\u2205",varphi:"\u03d5",varpi:"\u03d6",varpropto:"\u221d",varr:"\u2195",vArr:"\u21d5",varrho:"\u03f1",varsigma:"\u03c2",varsubsetneq:"\u228a\ufe00",varsubsetneqq:"\u2acb\ufe00",varsupsetneq:"\u228b\ufe00",varsupsetneqq:"\u2acc\ufe00",vartheta:"\u03d1",vartriangleleft:"\u22b2",vartriangleright:"\u22b3",vBar:"\u2ae8",Vbar:"\u2aeb",vBarv:"\u2ae9",Vcy:"\u0412",vcy:"\u0432",vdash:"\u22a2",vDash:"\u22a8",Vdash:"\u22a9",VDash:"\u22ab",Vdashl:"\u2ae6",veebar:"\u22bb",vee:"\u2228",Vee:"\u22c1",veeeq:"\u225a",vellip:"\u22ee",verbar:"|",Verbar:"\u2016",vert:"|",Vert:"\u2016",VerticalBar:"\u2223",VerticalLine:"|",VerticalSeparator:"\u2758",VerticalTilde:"\u2240",VeryThinSpace:"\u200a",Vfr:"\ud835\udd19",vfr:"\ud835\udd33",vltri:"\u22b2",vnsub:"\u2282\u20d2",vnsup:"\u2283\u20d2",Vopf:"\ud835\udd4d",vopf:"\ud835\udd67",vprop:"\u221d",vrtri:"\u22b3",Vscr:"\ud835\udcb1",vscr:"\ud835\udccb",vsubnE:"\u2acb\ufe00",vsubne:"\u228a\ufe00",vsupnE:"\u2acc\ufe00",vsupne:"\u228b\ufe00",Vvdash:"\u22aa",vzigzag:"\u299a",Wcirc:"\u0174",wcirc:"\u0175",wedbar:"\u2a5f",wedge:"\u2227",Wedge:"\u22c0",wedgeq:"\u2259",weierp:"\u2118",Wfr:"\ud835\udd1a",wfr:"\ud835\udd34",Wopf:"\ud835\udd4e",wopf:"\ud835\udd68",wp:"\u2118",wr:"\u2240",wreath:"\u2240",Wscr:"\ud835\udcb2",wscr:"\ud835\udccc",xcap:"\u22c2",xcirc:"\u25ef",xcup:"\u22c3",xdtri:"\u25bd",Xfr:"\ud835\udd1b",xfr:"\ud835\udd35",xharr:"\u27f7",xhArr:"\u27fa",Xi:"\u039e",xi:"\u03be",xlarr:"\u27f5",xlArr:"\u27f8",xmap:"\u27fc",xnis:"\u22fb",xodot:"\u2a00",Xopf:"\ud835\udd4f",xopf:"\ud835\udd69",xoplus:"\u2a01",xotime:"\u2a02",xrarr:"\u27f6",xrArr:"\u27f9",Xscr:"\ud835\udcb3",xscr:"\ud835\udccd",xsqcup:"\u2a06",xuplus:"\u2a04",xutri:"\u25b3",xvee:"\u22c1",xwedge:"\u22c0",Yacute:"\xdd",yacute:"\xfd",YAcy:"\u042f",yacy:"\u044f",Ycirc:"\u0176",ycirc:"\u0177",Ycy:"\u042b",ycy:"\u044b",yen:"\xa5",Yfr:"\ud835\udd1c",yfr:"\ud835\udd36",YIcy:"\u0407",yicy:"\u0457",Yopf:"\ud835\udd50",yopf:"\ud835\udd6a",Yscr:"\ud835\udcb4",yscr:"\ud835\udcce",YUcy:"\u042e",yucy:"\u044e",yuml:"\xff",Yuml:"\u0178",Zacute:"\u0179",zacute:"\u017a",Zcaron:"\u017d",zcaron:"\u017e",Zcy:"\u0417",zcy:"\u0437",Zdot:"\u017b",zdot:"\u017c",zeetrf:"\u2128",ZeroWidthSpace:"\u200b",Zeta:"\u0396",zeta:"\u03b6",zfr:"\ud835\udd37",Zfr:"\u2128",ZHcy:"\u0416",zhcy:"\u0436",zigrarr:"\u21dd",zopf:"\ud835\udd6b",Zopf:"\u2124",Zscr:"\ud835\udcb5",zscr:"\ud835\udccf",zwj:"\u200d",zwnj:"\u200c"}},{}],53:[function(e,r,t){"use strict";function n(e){return Array.prototype.slice.call(arguments,1).forEach((function(r){r&&Object.keys(r).forEach((function(t){e[t]=r[t]}))})),e}function s(e){return Object.prototype.toString.call(e)}function o(e){return"[object Function]"===s(e)}function i(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}var a={fuzzyLink:!0,fuzzyEmail:!0,fuzzyIP:!1};var c={"http:":{validate:function(e,r,t){var n=e.slice(r);return t.re.http||(t.re.http=new RegExp("^\\/\\/"+t.re.src_auth+t.re.src_host_port_strict+t.re.src_path,"i")),t.re.http.test(n)?n.match(t.re.http)[0].length:0}},"https:":"http:","ftp:":"http:","//":{validate:function(e,r,t){var n=e.slice(r);return t.re.no_http||(t.re.no_http=new RegExp("^"+t.re.src_auth+"(?:localhost|(?:(?:"+t.re.src_domain+")\\.)+"+t.re.src_domain_root+")"+t.re.src_port+t.re.src_host_terminator+t.re.src_path,"i")),t.re.no_http.test(n)?r>=3&&":"===e[r-3]?0:r>=3&&"/"===e[r-3]?0:n.match(t.re.no_http)[0].length:0}},"mailto:":{validate:function(e,r,t){var n=e.slice(r);return t.re.mailto||(t.re.mailto=new RegExp("^"+t.re.src_email_name+"@"+t.re.src_host_strict,"i")),t.re.mailto.test(n)?n.match(t.re.mailto)[0].length:0}}},l="a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]",u="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|\u0440\u0444".split("|");function p(r){var t=r.re=e("./lib/re")(r.__opts__),n=r.__tlds__.slice();function a(e){return e.replace("%TLDS%",t.src_tlds)}r.onCompile(),r.__tlds_replaced__||n.push(l),n.push(t.src_xn),t.src_tlds=n.join("|"),t.email_fuzzy=RegExp(a(t.tpl_email_fuzzy),"i"),t.link_fuzzy=RegExp(a(t.tpl_link_fuzzy),"i"),t.link_no_ip_fuzzy=RegExp(a(t.tpl_link_no_ip_fuzzy),"i"),t.host_fuzzy_test=RegExp(a(t.tpl_host_fuzzy_test),"i");var c=[];function u(e,r){throw new Error('(LinkifyIt) Invalid schema "'+e+'": '+r)}r.__compiled__={},Object.keys(r.__schemas__).forEach((function(e){var t=r.__schemas__[e];if(null!==t){var n={validate:null,link:null};if(r.__compiled__[e]=n,"[object Object]"===s(t))return!function(e){return"[object RegExp]"===s(e)}(t.validate)?o(t.validate)?n.validate=t.validate:u(e,t):n.validate=function(e){return function(r,t){var n=r.slice(t);return e.test(n)?n.match(e)[0].length:0}}(t.validate),void(o(t.normalize)?n.normalize=t.normalize:t.normalize?u(e,t):n.normalize=function(e,r){r.normalize(e)});!function(e){return"[object String]"===s(e)}(t)?u(e,t):c.push(e)}})),c.forEach((function(e){r.__compiled__[r.__schemas__[e]]&&(r.__compiled__[e].validate=r.__compiled__[r.__schemas__[e]].validate,r.__compiled__[e].normalize=r.__compiled__[r.__schemas__[e]].normalize)})),r.__compiled__[""]={validate:null,normalize:function(e,r){r.normalize(e)}};var p=Object.keys(r.__compiled__).filter((function(e){return e.length>0&&r.__compiled__[e]})).map(i).join("|");r.re.schema_test=RegExp("(^|(?!_)(?:[><\uff5c]|"+t.src_ZPCc+"))("+p+")","i"),r.re.schema_search=RegExp("(^|(?!_)(?:[><\uff5c]|"+t.src_ZPCc+"))("+p+")","ig"),r.re.pretest=RegExp("("+r.re.schema_test.source+")|("+r.re.host_fuzzy_test.source+")|@","i"),function(e){e.__index__=-1,e.__text_cache__=""}(r)}function h(e,r){var t=e.__index__,n=e.__last_index__,s=e.__text_cache__.slice(t,n);this.schema=e.__schema__.toLowerCase(),this.index=t+r,this.lastIndex=n+r,this.raw=s,this.text=s,this.url=s}function f(e,r){var t=new h(e,r);return e.__compiled__[t.schema].normalize(t,e),t}function d(e,r){if(!(this instanceof d))return new d(e,r);var t;r||(t=e,Object.keys(t||{}).reduce((function(e,r){return e||a.hasOwnProperty(r)}),!1)&&(r=e,e={})),this.__opts__=n({},a,r),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=n({},c,e),this.__compiled__={},this.__tlds__=u,this.__tlds_replaced__=!1,this.re={},p(this)}d.prototype.add=function(e,r){return this.__schemas__[e]=r,p(this),this},d.prototype.set=function(e){return this.__opts__=n(this.__opts__,e),this},d.prototype.test=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return!1;var r,t,n,s,o,i,a,c;if(this.re.schema_test.test(e))for((a=this.re.schema_search).lastIndex=0;null!==(r=a.exec(e));)if(s=this.testSchemaAt(e,r[2],a.lastIndex)){this.__schema__=r[2],this.__index__=r.index+r[1].length,this.__last_index__=r.index+r[0].length+s;break}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&(c=e.search(this.re.host_fuzzy_test))>=0&&(this.__index__<0||c=0&&null!==(n=e.match(this.re.email_fuzzy))&&(o=n.index+n[1].length,i=n.index+n[0].length,(this.__index__<0||othis.__last_index__)&&(this.__schema__="mailto:",this.__index__=o,this.__last_index__=i)),this.__index__>=0},d.prototype.pretest=function(e){return this.re.pretest.test(e)},d.prototype.testSchemaAt=function(e,r,t){return this.__compiled__[r.toLowerCase()]?this.__compiled__[r.toLowerCase()].validate(e,t,this):0},d.prototype.match=function(e){var r=0,t=[];this.__index__>=0&&this.__text_cache__===e&&(t.push(f(this,r)),r=this.__last_index__);for(var n=r?e.slice(r):e;this.test(n);)t.push(f(this,r)),n=n.slice(this.__last_index__),r+=this.__last_index__;return t.length?t:null},d.prototype.tlds=function(e,r){return e=Array.isArray(e)?e:[e],r?(this.__tlds__=this.__tlds__.concat(e).sort().filter((function(e,r,t){return e!==t[r-1]})).reverse(),p(this),this):(this.__tlds__=e.slice(),this.__tlds_replaced__=!0,p(this),this)},d.prototype.normalize=function(e){e.schema||(e.url="http://"+e.url),"mailto:"!==e.schema||/^mailto:/i.test(e.url)||(e.url="mailto:"+e.url)},d.prototype.onCompile=function(){},r.exports=d},{"./lib/re":54}],54:[function(e,r,t){"use strict";r.exports=function(r){var t={};t.src_Any=e("uc.micro/properties/Any/regex").source,t.src_Cc=e("uc.micro/categories/Cc/regex").source,t.src_Z=e("uc.micro/categories/Z/regex").source,t.src_P=e("uc.micro/categories/P/regex").source,t.src_ZPCc=[t.src_Z,t.src_P,t.src_Cc].join("|"),t.src_ZCc=[t.src_Z,t.src_Cc].join("|");return t.src_pseudo_letter="(?:(?![><\uff5c]|"+t.src_ZPCc+")"+t.src_Any+")",t.src_ip4="(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",t.src_auth="(?:(?:(?!"+t.src_ZCc+"|[@/\\[\\]()]).)+@)?",t.src_port="(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",t.src_host_terminator="(?=$|[><\uff5c]|"+t.src_ZPCc+")(?!-|_|:\\d|\\.-|\\.(?!$|"+t.src_ZPCc+"))",t.src_path="(?:[/?#](?:(?!"+t.src_ZCc+"|[><\uff5c]|[()[\\]{}.,\"'?!\\-]).|\\[(?:(?!"+t.src_ZCc+"|\\]).)*\\]|\\((?:(?!"+t.src_ZCc+"|[)]).)*\\)|\\{(?:(?!"+t.src_ZCc+'|[}]).)*\\}|\\"(?:(?!'+t.src_ZCc+'|["]).)+\\"|\\\'(?:(?!'+t.src_ZCc+"|[']).)+\\'|\\'(?="+t.src_pseudo_letter+"|[-]).|\\.{2,4}[a-zA-Z0-9%/]|\\.(?!"+t.src_ZCc+"|[.]).|"+(r&&r["---"]?"\\-(?!--(?:[^-]|$))(?:-*)|":"\\-+|")+"\\,(?!"+t.src_ZCc+").|\\!(?!"+t.src_ZCc+"|[!]).|\\?(?!"+t.src_ZCc+"|[?]).)+|\\/)?",t.src_email_name='[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*',t.src_xn="xn--[a-z0-9\\-]{1,59}",t.src_domain_root="(?:"+t.src_xn+"|"+t.src_pseudo_letter+"{1,63})",t.src_domain="(?:"+t.src_xn+"|(?:"+t.src_pseudo_letter+")|(?:"+t.src_pseudo_letter+"(?:-|"+t.src_pseudo_letter+"){0,61}"+t.src_pseudo_letter+"))",t.src_host="(?:(?:(?:(?:"+t.src_domain+")\\.)*"+t.src_domain+"))",t.tpl_host_fuzzy="(?:"+t.src_ip4+"|(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%)))",t.tpl_host_no_ip_fuzzy="(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%))",t.src_host_strict=t.src_host+t.src_host_terminator,t.tpl_host_fuzzy_strict=t.tpl_host_fuzzy+t.src_host_terminator,t.src_host_port_strict=t.src_host+t.src_port+t.src_host_terminator,t.tpl_host_port_fuzzy_strict=t.tpl_host_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_port_no_ip_fuzzy_strict=t.tpl_host_no_ip_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_fuzzy_test="localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:"+t.src_ZPCc+"|>|$))",t.tpl_email_fuzzy='(^|[><\uff5c]|"|\\(|'+t.src_ZCc+")("+t.src_email_name+"@"+t.tpl_host_fuzzy_strict+")",t.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|\uff5c]|"+t.src_ZPCc+"))((?![$+<=>^`|\uff5c])"+t.tpl_host_port_fuzzy_strict+t.src_path+")",t.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|\uff5c]|"+t.src_ZPCc+"))((?![$+<=>^`|\uff5c])"+t.tpl_host_port_no_ip_fuzzy_strict+t.src_path+")",t}},{"uc.micro/categories/Cc/regex":61,"uc.micro/categories/P/regex":63,"uc.micro/categories/Z/regex":64,"uc.micro/properties/Any/regex":66}],55:[function(e,r,t){"use strict";var n={};function s(e,r){var t;return"string"!=typeof r&&(r=s.defaultChars),t=function(e){var r,t,s=n[e];if(s)return s;for(s=n[e]=[],r=0;r<128;r++)t=String.fromCharCode(r),s.push(t);for(r=0;r=55296&&c<=57343?"\ufffd\ufffd\ufffd":String.fromCharCode(c),r+=6):240==(248&s)&&r+91114111?l+="\ufffd\ufffd\ufffd\ufffd":(c-=65536,l+=String.fromCharCode(55296+(c>>10),56320+(1023&c))),r+=9):l+="\ufffd";return l}))}s.defaultChars=";/?:@&=+$,#",s.componentChars="",r.exports=s},{}],56:[function(e,r,t){"use strict";var n={};function s(e,r,t){var o,i,a,c,l,u="";for("string"!=typeof r&&(t=r,r=s.defaultChars),void 0===t&&(t=!0),l=function(e){var r,t,s=n[e];if(s)return s;for(s=n[e]=[],r=0;r<128;r++)t=String.fromCharCode(r),/^[0-9a-z]$/i.test(t)?s.push(t):s.push("%"+("0"+r.toString(16).toUpperCase()).slice(-2));for(r=0;r=55296&&a<=57343){if(a>=55296&&a<=56319&&o+1=56320&&c<=57343){u+=encodeURIComponent(e[o]+e[o+1]),o++;continue}u+="%EF%BF%BD"}else u+=encodeURIComponent(e[o]);return u}s.defaultChars=";/?:@&=+$,-_.!~*'()#",s.componentChars="-_.!~*'()",r.exports=s},{}],57:[function(e,r,t){"use strict";r.exports=function(e){var r="";return r+=e.protocol||"",r+=e.slashes?"//":"",r+=e.auth?e.auth+"@":"",e.hostname&&-1!==e.hostname.indexOf(":")?r+="["+e.hostname+"]":r+=e.hostname||"",r+=e.port?":"+e.port:"",r+=e.pathname||"",r+=e.search||"",r+=e.hash||""}},{}],58:[function(e,r,t){"use strict";r.exports.encode=e("./encode"),r.exports.decode=e("./decode"),r.exports.format=e("./format"),r.exports.parse=e("./parse")},{"./decode":55,"./encode":56,"./format":57,"./parse":59}],59:[function(e,r,t){"use strict";function n(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}var s=/^([a-z0-9.+-]+:)/i,o=/:[0-9]*$/,i=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,a=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),c=["'"].concat(a),l=["%","/","?",";","#"].concat(c),u=["/","?","#"],p=/^[+a-z0-9A-Z_-]{0,63}$/,h=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,f={javascript:!0,"javascript:":!0},d={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};n.prototype.parse=function(e,r){var t,n,o,a,c,m=e;if(m=m.trim(),!r&&1===e.split("#").length){var _=i.exec(m);if(_)return this.pathname=_[1],_[2]&&(this.search=_[2]),this}var g=s.exec(m);if(g&&(o=(g=g[0]).toLowerCase(),this.protocol=g,m=m.substr(g.length)),(r||g||m.match(/^\/\/[^@\/]+@[^@\/]+/))&&(!(c="//"===m.substr(0,2))||g&&f[g]||(m=m.substr(2),this.slashes=!0)),!f[g]&&(c||g&&!d[g])){var k,b,v=-1;for(t=0;t127?w+="x":w+=A[D];if(!w.match(p)){var q=x.slice(0,t),F=x.slice(t+1),S=A.match(h);S&&(q.push(S[1]),F.unshift(S[2])),F.length&&(m=F.join(".")+m),this.hostname=q.join(".");break}}}}this.hostname.length>255&&(this.hostname=""),C&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}var L=m.indexOf("#");-1!==L&&(this.hash=m.substr(L),m=m.slice(0,L));var z=m.indexOf("?");return-1!==z&&(this.search=m.substr(z),m=m.slice(0,z)),m&&(this.pathname=m),d[o]&&this.hostname&&!this.pathname&&(this.pathname=""),this},n.prototype.parseHost=function(e){var r=o.exec(e);r&&(":"!==(r=r[0])&&(this.port=r.substr(1)),e=e.substr(0,e.length-r.length)),e&&(this.hostname=e)},r.exports=function(e,r){if(e&&e instanceof n)return e;var t=new n;return t.parse(e,r),t}},{}],60:[function(e,r,t){(function(e){!function(n){var s="object"==typeof t&&t&&!t.nodeType&&t,o="object"==typeof r&&r&&!r.nodeType&&r,i="object"==typeof e&&e;i.global!==i&&i.window!==i&&i.self!==i||(n=i);var a,c,l=2147483647,u=36,p=1,h=26,f=38,d=700,m=72,_=128,g="-",k=/^xn--/,b=/[^\x20-\x7E]/,v=/[\x2E\u3002\uFF0E\uFF61]/g,y={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},C=u-p,x=Math.floor,A=String.fromCharCode;function w(e){throw new RangeError(y[e])}function D(e,r){for(var t=e.length,n=[];t--;)n[t]=r(e[t]);return n}function E(e,r){var t=e.split("@"),n="";return t.length>1&&(n=t[0]+"@",e=t[1]),n+D((e=e.replace(v,".")).split("."),r).join(".")}function q(e){for(var r,t,n=[],s=0,o=e.length;s=55296&&r<=56319&&s65535&&(r+=A((e-=65536)>>>10&1023|55296),e=56320|1023&e),r+=A(e)})).join("")}function S(e,r){return e+22+75*(e<26)-((0!=r)<<5)}function L(e,r,t){var n=0;for(e=t?x(e/d):e>>1,e+=x(e/r);e>C*h>>1;n+=u)e=x(e/C);return x(n+(C+1)*e/(e+f))}function z(e){var r,t,n,s,o,i,a,c,f,d,k,b=[],v=e.length,y=0,C=_,A=m;for((t=e.lastIndexOf(g))<0&&(t=0),n=0;n=128&&w("not-basic"),b.push(e.charCodeAt(n));for(s=t>0?t+1:0;s=v&&w("invalid-input"),((c=(k=e.charCodeAt(s++))-48<10?k-22:k-65<26?k-65:k-97<26?k-97:u)>=u||c>x((l-y)/i))&&w("overflow"),y+=c*i,!(c<(f=a<=A?p:a>=A+h?h:a-A));a+=u)i>x(l/(d=u-f))&&w("overflow"),i*=d;A=L(y-o,r=b.length+1,0==o),x(y/r)>l-C&&w("overflow"),C+=x(y/r),y%=r,b.splice(y++,0,C)}return F(b)}function T(e){var r,t,n,s,o,i,a,c,f,d,k,b,v,y,C,D=[];for(b=(e=q(e)).length,r=_,t=0,o=m,i=0;i=r&&kx((l-t)/(v=n+1))&&w("overflow"),t+=(a-r)*v,r=a,i=0;il&&w("overflow"),k==r){for(c=t,f=u;!(c<(d=f<=o?p:f>=o+h?h:f-o));f+=u)C=c-d,y=u-d,D.push(A(S(d+C%y,0))),c=x(C/y);D.push(A(S(c,0))),o=L(t,v,n==s),t=0,++n}++t,++r}return D.join("")}if(a={version:"1.4.1",ucs2:{decode:q,encode:F},decode:z,encode:T,toASCII:function(e){return E(e,(function(e){return b.test(e)?"xn--"+T(e):e}))},toUnicode:function(e){return E(e,(function(e){return k.test(e)?z(e.slice(4).toLowerCase()):e}))}},s&&o)if(r.exports==s)o.exports=a;else for(c in a)a.hasOwnProperty(c)&&(s[c]=a[c]);else n.punycode=a}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],61:[function(e,r,t){r.exports=/[\0-\x1F\x7F-\x9F]/},{}],62:[function(e,r,t){r.exports=/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/},{}],63:[function(e,r,t){r.exports=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4E\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDF55-\uDF59]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD806[\uDC3B\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/},{}],64:[function(e,r,t){r.exports=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/},{}],65:[function(e,r,t){"use strict";t.Any=e("./properties/Any/regex"),t.Cc=e("./categories/Cc/regex"),t.Cf=e("./categories/Cf/regex"),t.P=e("./categories/P/regex"),t.Z=e("./categories/Z/regex")},{"./categories/Cc/regex":61,"./categories/Cf/regex":62,"./categories/P/regex":63,"./categories/Z/regex":64,"./properties/Any/regex":66}],66:[function(e,r,t){r.exports=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/},{}],67:[function(e,r,t){"use strict";r.exports=e("./lib/")},{"./lib/":9}]},{},[67])(67)})); -;/*! markdown-it-sub 1.0.0 https://github.com//markdown-it/markdown-it-sub @license MIT */ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r;r="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,r.markdownitSub=e()}}(function(){return function e(r,o,n){function t(i,u){if(!o[i]){if(!r[i]){var f="function"==typeof require&&require;if(!u&&f)return f(i,!0);if(s)return s(i,!0);var p=new Error("Cannot find module '"+i+"'");throw p.code="MODULE_NOT_FOUND",p}var a=o[i]={exports:{}};r[i][0].call(a.exports,function(e){var o=r[i][1][e];return t(o?o:e)},a,a.exports,e,r,o,n)}return o[i].exports}for(var s="function"==typeof require&&require,i=0;i=i)return!1;for(e.pos=u+1;e.pos?@[\]^_`{|}~-])/g;r.exports=function(e){e.inline.ruler.after("emphasis","sub",o)}},{}]},{},[1])(1)});;/*! markdown-it-sup 1.0.0 https://github.com//markdown-it/markdown-it-sup @license MIT */ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r;r="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,r.markdownitSup=e()}}(function(){return function e(r,o,n){function t(i,p){if(!o[i]){if(!r[i]){var u="function"==typeof require&&require;if(!p&&u)return u(i,!0);if(s)return s(i,!0);var f=new Error("Cannot find module '"+i+"'");throw f.code="MODULE_NOT_FOUND",f}var a=o[i]={exports:{}};r[i][0].call(a.exports,function(e){var o=r[i][1][e];return t(o?o:e)},a,a.exports,e,r,o,n)}return o[i].exports}for(var s="function"==typeof require&&require,i=0;i=i)return!1;for(e.pos=p+1;e.pos?@[\]^_`{|}~-])/g;r.exports=function(e){e.inline.ruler.after("emphasis","sup",o)}},{}]},{},[1])(1)});;!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).markdownitFootnote=e()}}(function(){return function(){return function e(o,t,n){function r(f,l){if(!t[f]){if(!o[f]){var i="function"==typeof require&&require;if(!l&&i)return i(f,!0);if(s)return s(f,!0);var u=new Error("Cannot find module '"+f+"'");throw u.code="MODULE_NOT_FOUND",u}var a=t[f]={exports:{}};o[f][0].call(a.exports,function(e){return r(o[f][1][e]||e)},a,a.exports,e,o,t,n)}return t[f].exports}for(var s="function"==typeof require&&require,f=0;f0&&(t+=":"+e[o].meta.subId),"["+t+"]"}function s(e,o,t,n,r){var s=r.rules.footnote_anchor_name(e,o,t,n,r),f=r.rules.footnote_caption(e,o,t,n,r),l=s;return e[o].meta.subId>0&&(l+=":"+e[o].meta.subId),'
    '+f+""}function f(e,o,t){return(t.xhtmlOut?'
    \n':'
    \n')+'
    \n
      \n'}function l(){return"
    \n
    \n"}function i(e,o,t,n,r){var s=r.rules.footnote_anchor_name(e,o,t,n,r);return e[o].meta.subId>0&&(s+=":"+e[o].meta.subId),'
  • '}function u(){return"
  • \n"}function a(e,o,t,n,r){var s=r.rules.footnote_anchor_name(e,o,t,n,r);return e[o].meta.subId>0&&(s+=":"+e[o].meta.subId),' \u21a9\ufe0e'}o.exports=function(e){var o=e.helpers.parseLinkLabel,t=e.utils.isSpace;e.renderer.rules.footnote_ref=s,e.renderer.rules.footnote_block_open=f,e.renderer.rules.footnote_block_close=l,e.renderer.rules.footnote_open=i,e.renderer.rules.footnote_close=u,e.renderer.rules.footnote_anchor=a,e.renderer.rules.footnote_caption=r,e.renderer.rules.footnote_anchor_name=n,e.block.ruler.before("reference","footnote_def",function(e,o,n,r){var s,f,l,i,u,a,c,p,d,h,k,b=e.bMarks[o]+e.tShift[o],v=e.eMarks[o];if(b+4>v)return!1;if(91!==e.src.charCodeAt(b))return!1;if(94!==e.src.charCodeAt(b+1))return!1;for(u=b+2;u=v||58!==e.src.charCodeAt(++u))return!1;if(r)return!0;for(u++,e.env.footnotes||(e.env.footnotes={}),e.env.footnotes.refs||(e.env.footnotes.refs={}),a=e.src.slice(b+2,u-2),e.env.footnotes.refs[":"+a]=-1,(c=new e.Token("footnote_reference_open","",1)).meta={label:a},c.level=e.level++,e.tokens.push(c),s=e.bMarks[o],f=e.tShift[o],l=e.sCount[o],i=e.parentType,k=u,p=d=e.sCount[o]+u-(e.bMarks[o]+e.tShift[o]);u=l||94!==e.src.charCodeAt(i)||91!==e.src.charCodeAt(i+1)||(n=i+2,(r=o(e,i+1))<0||(t||(e.env.footnotes||(e.env.footnotes={}),e.env.footnotes.list||(e.env.footnotes.list=[]),s=e.env.footnotes.list.length,e.md.inline.parse(e.src.slice(n,r),e.md,e.env,f=[]),e.push("footnote_ref","",0).meta={id:s},e.env.footnotes.list[s]={content:e.src.slice(n,r),tokens:f}),e.pos=r+1,e.posMax=l,0)))}),e.inline.ruler.after("footnote_inline","footnote_ref",function(e,o){var t,n,r,s,f=e.posMax,l=e.pos;if(l+3>f)return!1;if(!e.env.footnotes||!e.env.footnotes.refs)return!1;if(91!==e.src.charCodeAt(l))return!1;if(94!==e.src.charCodeAt(l+1))return!1;for(n=l+2;n=f||(n++,t=e.src.slice(l+2,n-1),void 0===e.env.footnotes.refs[":"+t]||(o||(e.env.footnotes.list||(e.env.footnotes.list=[]),e.env.footnotes.refs[":"+t]<0?(r=e.env.footnotes.list.length,e.env.footnotes.list[r]={label:t,count:0},e.env.footnotes.refs[":"+t]=r):r=e.env.footnotes.refs[":"+t],s=e.env.footnotes.list[r].count,e.env.footnotes.list[r].count++,e.push("footnote_ref","",0).meta={id:r,subId:s,label:t}),e.pos=n,e.posMax=f,0)))}),e.core.ruler.after("inline","footnote_tail",function(e){var o,t,n,r,s,f,l,i,u,a,c=!1,p={};if(e.env.footnotes&&(e.tokens=e.tokens.filter(function(e){return"footnote_reference_open"===e.type?(c=!0,u=[],a=e.meta.label,!1):"footnote_reference_close"===e.type?(c=!1,p[":"+a]=u,!1):(c&&u.push(e),!c)}),e.env.footnotes.list)){for(f=e.env.footnotes.list,l=new e.Token("footnote_block_open","",1),e.tokens.push(l),o=0,t=f.length;o0?f[o].count:1,n=0;ni?n.attrPush(r):n.attrs[i]=r}function r(n,e){for(var t=n[e].level-1,i=e-1;i>=0;i--)if(n[i].level===t)return i;return-1}function o(n,e){return s(n[e])&&d(n[e-1])&&h(n[e-2])&&p(n[e])}function c(n,e){if(n.children.unshift(l(n,e)),n.children[1].content=n.children[1].content.slice(3),n.content=n.content.slice(3),b)if(v){n.children.pop();var t="task-item-"+Math.ceil(1e7*Math.random()-1e3);n.children[0].content=n.children[0].content.slice(0,-1)+' id="'+t+'">',n.children.push(a(n.content,t,e))}else n.children.unshift(f(e)),n.children.push(u(e))}function l(n,e){var t=new e("html_inline","",0),i=x?' disabled="" ':"";return 0===n.content.indexOf("[ ] ")?t.content='':(0===n.content.indexOf("[x] ")||0===n.content.indexOf("[X] "))&&(t.content=''),t}function f(n){var e=new n("html_inline","",0);return e.content="",e}function a(n,e,t){var i=new t("html_inline","",0);return i.content='",i.attrs=[{"for":e}],i}function s(n){return"inline"===n.type}function d(n){return"paragraph_open"===n.type}function h(n){return"list_item_open"===n.type}function p(n){return 0===n.content.indexOf("[ ] ")||0===n.content.indexOf("[x] ")||0===n.content.indexOf("[X] ")}var x=!0,b=!1,v=!1;e.exports=function(n,e){e&&(x=!e.enabled,b=!!e.label,v=!!e.labelAfter),n.core.ruler.after("inline","github-task-lists",function(n){for(var e=n.tokens,t=2;t15?"\u2026"+o.slice(a-15,a):o.slice(0,a))+h+(s+15":">","<":"<",'"':""","'":"'"},l=/[&><"']/g;var m=function t(e){return"ordgroup"===e.type?1===e.body.length?t(e.body[0]):e:"color"===e.type?1===e.body.length?t(e.body[0]):e:"font"===e.type?t(e.body):e},c={contains:function(t,e){return-1!==t.indexOf(e)},deflt:function(t,e){return void 0===t?e:t},escape:function(t){return String(t).replace(l,function(t){return h[t]})},hyphenate:function(t){return t.replace(s,"-$1").toLowerCase()},getBaseElem:m,isCharacterBox:function(t){var e=m(t);return"mathord"===e.type||"textord"===e.type||"atom"===e.type},protocolFromUrl:function(t){var e=/^\s*([^\\\/#]*?)(?::|�*58|�*3a)/i.exec(t);return null!=e?e[1]:"_relative"}},u=function(){function t(t){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,t=t||{},this.displayMode=c.deflt(t.displayMode,!1),this.output=c.deflt(t.output,"htmlAndMathml"),this.leqno=c.deflt(t.leqno,!1),this.fleqn=c.deflt(t.fleqn,!1),this.throwOnError=c.deflt(t.throwOnError,!0),this.errorColor=c.deflt(t.errorColor,"#cc0000"),this.macros=t.macros||{},this.minRuleThickness=Math.max(0,c.deflt(t.minRuleThickness,0)),this.colorIsTextColor=c.deflt(t.colorIsTextColor,!1),this.strict=c.deflt(t.strict,"warn"),this.trust=c.deflt(t.trust,!1),this.maxSize=Math.max(0,c.deflt(t.maxSize,1/0)),this.maxExpand=Math.max(0,c.deflt(t.maxExpand,1e3))}var e=t.prototype;return e.reportNonstrict=function(t,e,r){var a=this.strict;if("function"==typeof a&&(a=a(t,e,r)),a&&"ignore"!==a){if(!0===a||"error"===a)throw new o("LaTeX-incompatible input and strict mode is set to 'error': "+e+" ["+t+"]",r);"warn"===a?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+e+" ["+t+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+e+" ["+t+"]")}},e.useStrictBehavior=function(t,e,r){var a=this.strict;if("function"==typeof a)try{a=a(t,e,r)}catch(t){a="error"}return!(!a||"ignore"===a)&&(!0===a||"error"===a||("warn"===a?("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+e+" ["+t+"]"),!1):("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+e+" ["+t+"]"),!1)))},e.isTrusted=function(t){t.url&&!t.protocol&&(t.protocol=c.protocolFromUrl(t.url));var e="function"==typeof this.trust?this.trust(t):this.trust;return Boolean(e)},t}(),p=function(){function t(t,e,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=t,this.size=e,this.cramped=r}var e=t.prototype;return e.sup=function(){return d[f[this.id]]},e.sub=function(){return d[g[this.id]]},e.fracNum=function(){return d[x[this.id]]},e.fracDen=function(){return d[v[this.id]]},e.cramp=function(){return d[b[this.id]]},e.text=function(){return d[y[this.id]]},e.isTight=function(){return this.size>=2},t}(),d=[new p(0,0,!1),new p(1,0,!0),new p(2,1,!1),new p(3,1,!0),new p(4,2,!1),new p(5,2,!0),new p(6,3,!1),new p(7,3,!0)],f=[4,5,4,5,6,7,6,7],g=[5,5,5,5,7,7,7,7],x=[2,3,4,5,6,7,6,7],v=[3,3,5,5,7,7,7,7],b=[1,1,3,3,5,5,7,7],y=[0,1,2,3,2,3,2,3],w={DISPLAY:d[0],TEXT:d[2],SCRIPT:d[4],SCRIPTSCRIPT:d[6]},k=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];var S=[];function M(t){for(var e=0;e=S[e]&&t<=S[e+1])return!0;return!1}k.forEach(function(t){return t.blocks.forEach(function(t){return S.push.apply(S,t)})});var z={doubleleftarrow:"M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",doublerightarrow:"M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",leftarrow:"M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",leftbrace:"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",leftbraceunder:"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",leftgroup:"M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",leftgroupunder:"M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",leftharpoon:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",leftharpoonplus:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",leftharpoondown:"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",leftharpoondownplus:"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",lefthook:"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",leftlinesegment:"M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",leftmapsto:"M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",leftToFrom:"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",longequal:"M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",midbrace:"M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",midbraceunder:"M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",oiintSize1:"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",oiintSize2:"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",oiiintSize1:"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",oiiintSize2:"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",rightarrow:"M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",rightbrace:"M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",rightbraceunder:"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",rightgroup:"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",rightgroupunder:"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",rightharpoon:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",rightharpoonplus:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",rightharpoondown:"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",rightharpoondownplus:"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",righthook:"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",rightlinesegment:"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",rightToFrom:"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",twoheadleftarrow:"M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",twoheadrightarrow:"M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",tilde1:"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",tilde2:"M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",tilde3:"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",tilde4:"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",vec:"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",widehat1:"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",widehat2:"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat3:"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat4:"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widecheck1:"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",widecheck2:"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck3:"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck4:"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",baraboveleftarrow:"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",rightarrowabovebar:"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",baraboveshortleftharpoon:"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",rightharpoonaboveshortbar:"M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",shortbaraboveleftharpoon:"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",shortrightharpoonabovebar:"M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"},A=function(){function t(t){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=t,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}var e=t.prototype;return e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){for(var t=document.createDocumentFragment(),e=0;e"},N=function(){function t(t,e,r,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,B.call(this,t,r,a),this.children=e||[]}var e=t.prototype;return e.setAttribute=function(t,e){this.attributes[t]=e},e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){return C.call(this,"span")},e.toMarkup=function(){return q.call(this,"span")},t}(),I=function(){function t(t,e,r,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,B.call(this,e,a),this.children=r||[],this.setAttribute("href",t)}var e=t.prototype;return e.setAttribute=function(t,e){this.attributes[t]=e},e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){return C.call(this,"a")},e.toMarkup=function(){return q.call(this,"a")},t}(),R=function(){function t(t,e,r){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=e,this.src=t,this.classes=["mord"],this.style=r}var e=t.prototype;return e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){var t=document.createElement("img");for(var e in t.src=this.src,t.alt=this.alt,t.className="mord",this.style)this.style.hasOwnProperty(e)&&(t.style[e]=this.style[e]);return t},e.toMarkup=function(){var t=""+this.alt+"=n[0]&&t<=n[1])return r.name}return null}(this.text.charCodeAt(0));h&&this.classes.push(h+"_fallback"),/[\xee\xef\xed\xec]/.test(this.text)&&(this.text=O[this.text])}var e=t.prototype;return e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){var t=document.createTextNode(this.text),e=null;for(var r in this.italic>0&&((e=document.createElement("span")).style.marginRight=this.italic+"em"),this.classes.length>0&&((e=e||document.createElement("span")).className=T(this.classes)),this.style)this.style.hasOwnProperty(r)&&((e=e||document.createElement("span")).style[r]=this.style[r]);return e?(e.appendChild(t),e):t},e.toMarkup=function(){var t=!1,e="0&&(r+="margin-right:"+this.italic+"em;"),this.style)this.style.hasOwnProperty(a)&&(r+=c.hyphenate(a)+":"+this.style[a]+";");r&&(t=!0,e+=' style="'+c.escape(r)+'"');var n=c.escape(this.text);return t?(e+=">",e+=n,e+=""):n},t}(),L=function(){function t(t,e){this.children=void 0,this.attributes=void 0,this.children=t||[],this.attributes=e||{}}var e=t.prototype;return e.toNode=function(){var t=document.createElementNS("http://www.w3.org/2000/svg","svg");for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);for(var r=0;r":""},t}(),P=function(){function t(t){this.attributes=void 0,this.attributes=t||{}}var e=t.prototype;return e.toNode=function(){var t=document.createElementNS("http://www.w3.org/2000/svg","line");for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);return t},e.toMarkup=function(){var t="",">"),$("math",Z,et,":",":"),$("math",Z,et,"\u2248","\\approx",!0),$("math",Z,et,"\u2245","\\cong",!0),$("math",Z,et,"\u2265","\\ge"),$("math",Z,et,"\u2265","\\geq",!0),$("math",Z,et,"\u2190","\\gets"),$("math",Z,et,">","\\gt"),$("math",Z,et,"\u2208","\\in",!0),$("math",Z,et,"\ue020","\\@not"),$("math",Z,et,"\u2282","\\subset",!0),$("math",Z,et,"\u2283","\\supset",!0),$("math",Z,et,"\u2286","\\subseteq",!0),$("math",Z,et,"\u2287","\\supseteq",!0),$("math",K,et,"\u2288","\\nsubseteq",!0),$("math",K,et,"\u2289","\\nsupseteq",!0),$("math",Z,et,"\u22a8","\\models"),$("math",Z,et,"\u2190","\\leftarrow",!0),$("math",Z,et,"\u2264","\\le"),$("math",Z,et,"\u2264","\\leq",!0),$("math",Z,et,"<","\\lt"),$("math",Z,et,"\u2192","\\rightarrow",!0),$("math",Z,et,"\u2192","\\to"),$("math",K,et,"\u2271","\\ngeq",!0),$("math",K,et,"\u2270","\\nleq",!0),$("math",Z,"spacing","\xa0","\\ "),$("math",Z,"spacing","\xa0","~"),$("math",Z,"spacing","\xa0","\\space"),$("math",Z,"spacing","\xa0","\\nobreakspace"),$("text",Z,"spacing","\xa0","\\ "),$("text",Z,"spacing","\xa0","~"),$("text",Z,"spacing","\xa0","\\space"),$("text",Z,"spacing","\xa0","\\nobreakspace"),$("math",Z,"spacing",null,"\\nobreak"),$("math",Z,"spacing",null,"\\allowbreak"),$("math",Z,"punct",",",","),$("math",Z,"punct",";",";"),$("math",K,J,"\u22bc","\\barwedge",!0),$("math",K,J,"\u22bb","\\veebar",!0),$("math",Z,J,"\u2299","\\odot",!0),$("math",Z,J,"\u2295","\\oplus",!0),$("math",Z,J,"\u2297","\\otimes",!0),$("math",Z,"textord","\u2202","\\partial",!0),$("math",Z,J,"\u2298","\\oslash",!0),$("math",K,J,"\u229a","\\circledcirc",!0),$("math",K,J,"\u22a1","\\boxdot",!0),$("math",Z,J,"\u25b3","\\bigtriangleup"),$("math",Z,J,"\u25bd","\\bigtriangledown"),$("math",Z,J,"\u2020","\\dagger"),$("math",Z,J,"\u22c4","\\diamond"),$("math",Z,J,"\u22c6","\\star"),$("math",Z,J,"\u25c3","\\triangleleft"),$("math",Z,J,"\u25b9","\\triangleright"),$("math",Z,"open","{","\\{"),$("text",Z,"textord","{","\\{"),$("text",Z,"textord","{","\\textbraceleft"),$("math",Z,"close","}","\\}"),$("text",Z,"textord","}","\\}"),$("text",Z,"textord","}","\\textbraceright"),$("math",Z,"open","{","\\lbrace"),$("math",Z,"close","}","\\rbrace"),$("math",Z,"open","[","\\lbrack"),$("text",Z,"textord","[","\\lbrack"),$("math",Z,"close","]","\\rbrack"),$("text",Z,"textord","]","\\rbrack"),$("math",Z,"open","(","\\lparen"),$("math",Z,"close",")","\\rparen"),$("text",Z,"textord","<","\\textless"),$("text",Z,"textord",">","\\textgreater"),$("math",Z,"open","\u230a","\\lfloor",!0),$("math",Z,"close","\u230b","\\rfloor",!0),$("math",Z,"open","\u2308","\\lceil",!0),$("math",Z,"close","\u2309","\\rceil",!0),$("math",Z,"textord","\\","\\backslash"),$("math",Z,"textord","\u2223","|"),$("math",Z,"textord","\u2223","\\vert"),$("text",Z,"textord","|","\\textbar"),$("math",Z,"textord","\u2225","\\|"),$("math",Z,"textord","\u2225","\\Vert"),$("text",Z,"textord","\u2225","\\textbardbl"),$("text",Z,"textord","~","\\textasciitilde"),$("text",Z,"textord","\\","\\textbackslash"),$("text",Z,"textord","^","\\textasciicircum"),$("math",Z,et,"\u2191","\\uparrow",!0),$("math",Z,et,"\u21d1","\\Uparrow",!0),$("math",Z,et,"\u2193","\\downarrow",!0),$("math",Z,et,"\u21d3","\\Downarrow",!0),$("math",Z,et,"\u2195","\\updownarrow",!0),$("math",Z,et,"\u21d5","\\Updownarrow",!0),$("math",Z,tt,"\u2210","\\coprod"),$("math",Z,tt,"\u22c1","\\bigvee"),$("math",Z,tt,"\u22c0","\\bigwedge"),$("math",Z,tt,"\u2a04","\\biguplus"),$("math",Z,tt,"\u22c2","\\bigcap"),$("math",Z,tt,"\u22c3","\\bigcup"),$("math",Z,tt,"\u222b","\\int"),$("math",Z,tt,"\u222b","\\intop"),$("math",Z,tt,"\u222c","\\iint"),$("math",Z,tt,"\u222d","\\iiint"),$("math",Z,tt,"\u220f","\\prod"),$("math",Z,tt,"\u2211","\\sum"),$("math",Z,tt,"\u2a02","\\bigotimes"),$("math",Z,tt,"\u2a01","\\bigoplus"),$("math",Z,tt,"\u2a00","\\bigodot"),$("math",Z,tt,"\u222e","\\oint"),$("math",Z,tt,"\u222f","\\oiint"),$("math",Z,tt,"\u2230","\\oiiint"),$("math",Z,tt,"\u2a06","\\bigsqcup"),$("math",Z,tt,"\u222b","\\smallint"),$("text",Z,"inner","\u2026","\\textellipsis"),$("math",Z,"inner","\u2026","\\mathellipsis"),$("text",Z,"inner","\u2026","\\ldots",!0),$("math",Z,"inner","\u2026","\\ldots",!0),$("math",Z,"inner","\u22ef","\\@cdots",!0),$("math",Z,"inner","\u22f1","\\ddots",!0),$("math",Z,"textord","\u22ee","\\varvdots"),$("math",Z,"accent-token","\u02ca","\\acute"),$("math",Z,"accent-token","\u02cb","\\grave"),$("math",Z,"accent-token","\xa8","\\ddot"),$("math",Z,"accent-token","~","\\tilde"),$("math",Z,"accent-token","\u02c9","\\bar"),$("math",Z,"accent-token","\u02d8","\\breve"),$("math",Z,"accent-token","\u02c7","\\check"),$("math",Z,"accent-token","^","\\hat"),$("math",Z,"accent-token","\u20d7","\\vec"),$("math",Z,"accent-token","\u02d9","\\dot"),$("math",Z,"accent-token","\u02da","\\mathring"),$("math",Z,Q,"\u0131","\\imath",!0),$("math",Z,Q,"\u0237","\\jmath",!0),$("text",Z,"textord","\u0131","\\i",!0),$("text",Z,"textord","\u0237","\\j",!0),$("text",Z,"textord","\xdf","\\ss",!0),$("text",Z,"textord","\xe6","\\ae",!0),$("text",Z,"textord","\xe6","\\ae",!0),$("text",Z,"textord","\u0153","\\oe",!0),$("text",Z,"textord","\xf8","\\o",!0),$("text",Z,"textord","\xc6","\\AE",!0),$("text",Z,"textord","\u0152","\\OE",!0),$("text",Z,"textord","\xd8","\\O",!0),$("text",Z,"accent-token","\u02ca","\\'"),$("text",Z,"accent-token","\u02cb","\\`"),$("text",Z,"accent-token","\u02c6","\\^"),$("text",Z,"accent-token","\u02dc","\\~"),$("text",Z,"accent-token","\u02c9","\\="),$("text",Z,"accent-token","\u02d8","\\u"),$("text",Z,"accent-token","\u02d9","\\."),$("text",Z,"accent-token","\u02da","\\r"),$("text",Z,"accent-token","\u02c7","\\v"),$("text",Z,"accent-token","\xa8",'\\"'),$("text",Z,"accent-token","\u02dd","\\H"),$("text",Z,"accent-token","\u25ef","\\textcircled");var rt={"--":!0,"---":!0,"``":!0,"''":!0};$("text",Z,"textord","\u2013","--"),$("text",Z,"textord","\u2013","\\textendash"),$("text",Z,"textord","\u2014","---"),$("text",Z,"textord","\u2014","\\textemdash"),$("text",Z,"textord","\u2018","`"),$("text",Z,"textord","\u2018","\\textquoteleft"),$("text",Z,"textord","\u2019","'"),$("text",Z,"textord","\u2019","\\textquoteright"),$("text",Z,"textord","\u201c","``"),$("text",Z,"textord","\u201c","\\textquotedblleft"),$("text",Z,"textord","\u201d","''"),$("text",Z,"textord","\u201d","\\textquotedblright"),$("math",Z,"textord","\xb0","\\degree",!0),$("text",Z,"textord","\xb0","\\degree"),$("text",Z,"textord","\xb0","\\textdegree",!0),$("math",Z,Q,"\xa3","\\pounds"),$("math",Z,Q,"\xa3","\\mathsterling",!0),$("text",Z,Q,"\xa3","\\pounds"),$("text",Z,Q,"\xa3","\\textsterling",!0),$("math",K,"textord","\u2720","\\maltese"),$("text",K,"textord","\u2720","\\maltese"),$("text",Z,"spacing","\xa0","\\ "),$("text",Z,"spacing","\xa0"," "),$("text",Z,"spacing","\xa0","~");for(var at=0;at<'0123456789/@."'.length;at++){var nt='0123456789/@."'.charAt(at);$("math",Z,"textord",nt,nt)}for(var it=0;it<'0123456789!@*()-=+[]<>|";:?/.,'.length;it++){var ot='0123456789!@*()-=+[]<>|";:?/.,'.charAt(it);$("text",Z,"textord",ot,ot)}for(var st="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",ht=0;ht=5?0:t>=3?1:2]){var r=Y[e]={cssEmPerMu:V.quad[e]/18};for(var a in V)V.hasOwnProperty(a)&&(r[a]=V[a][e])}return Y[e]}(this.size)),this._fontMetrics},e.getColor=function(){return this.phantom?"transparent":this.color},t}();kt.BASESIZE=6;var St=kt,Mt={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:1.00375,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:1.00375},zt={ex:!0,em:!0,mu:!0},At=function(t){return"string"!=typeof t&&(t=t.unit),t in Mt||t in zt||"ex"===t},Tt=function(t,e){var r;if(t.unit in Mt)r=Mt[t.unit]/e.fontMetrics().ptPerEm/e.sizeMultiplier;else if("mu"===t.unit)r=e.fontMetrics().cssEmPerMu;else{var a;if(a=e.style.isTight()?e.havingStyle(e.style.text()):e,"ex"===t.unit)r=a.fontMetrics().xHeight;else{if("em"!==t.unit)throw new o("Invalid unit: '"+t.unit+"'");r=a.fontMetrics().quad}a!==e&&(r*=a.sizeMultiplier/e.sizeMultiplier)}return Math.min(t.number*r,e.maxSize)},Bt=["\\imath","\u0131","\\jmath","\u0237","\\pounds","\\mathsterling","\\textsterling","\xa3"],Ct=function(t,e,r){return j[r][t]&&j[r][t].replace&&(t=j[r][t].replace),{value:t,metrics:G(t,e,r)}},qt=function(t,e,r,a,n){var i,o=Ct(t,e,r),s=o.metrics;if(t=o.value,s){var h=s.italic;("text"===r||a&&"mathit"===a.font)&&(h=0),i=new E(t,s.height,s.depth,h,s.skew,s.width,n)}else"undefined"!=typeof console&&console.warn("No character metrics for '"+t+"' in style '"+e+"' and mode '"+r+"'"),i=new E(t,0,0,0,0,0,n);if(a){i.maxFontSize=a.sizeMultiplier,a.style.isTight()&&i.classes.push("mtight");var l=a.getColor();l&&(i.style.color=l)}return i},Nt=function(t,e){if(T(t.classes)!==T(e.classes)||t.skew!==e.skew||t.maxFontSize!==e.maxFontSize)return!1;for(var r in t.style)if(t.style.hasOwnProperty(r)&&t.style[r]!==e.style[r])return!1;for(var a in e.style)if(e.style.hasOwnProperty(a)&&t.style[a]!==e.style[a])return!1;return!0},It=function(t){for(var e=0,r=0,a=0,n=0;ne&&(e=i.height),i.depth>r&&(r=i.depth),i.maxFontSize>a&&(a=i.maxFontSize)}t.height=e,t.depth=r,t.maxFontSize=a},Rt=function(t,e,r,a){var n=new N(t,e,r,a);return It(n),n},Ot=function(t,e,r,a){return new N(t,e,r,a)},Et=function(t){var e=new A(t);return It(e),e},Lt=function(t,e,r){var a="";switch(t){case"amsrm":a="AMS";break;case"textrm":a="Main";break;case"textsf":a="SansSerif";break;case"texttt":a="Typewriter";break;default:a=t}return a+"-"+("textbf"===e&&"textit"===r?"BoldItalic":"textbf"===e?"Bold":"textit"===e?"Italic":"Regular")},Ht={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},Pt={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Dt={fontMap:Ht,makeSymbol:qt,mathsym:function(t,e,r,a){return void 0===a&&(a=[]),"boldsymbol"===r.font&&Ct(t,"Main-Bold",e).metrics?qt(t,"Main-Bold",e,r,a.concat(["mathbf"])):"\\"===t||"main"===j[e][t].font?qt(t,"Main-Regular",e,r,a):qt(t,"AMS-Regular",e,r,a.concat(["amsrm"]))},makeSpan:Rt,makeSvgSpan:Ot,makeLineSpan:function(t,e,r){var a=Rt([t],[],e);return a.height=Math.max(r||e.fontMetrics().defaultRuleThickness,e.minRuleThickness),a.style.borderBottomWidth=a.height+"em",a.maxFontSize=1,a},makeAnchor:function(t,e,r,a){var n=new I(t,e,r,a);return It(n),n},makeFragment:Et,wrapFragment:function(t,e){return t instanceof A?Rt([],[t],e):t},makeVList:function(t,e){for(var r=function(t){if("individualShift"===t.positionType){for(var e=t.children,r=[e[0]],a=-e[0].shift-e[0].elem.depth,n=a,i=1;i0&&(i.push(pe(o,e)),o=[]),i.push(n[s]));o.length>0&&i.push(pe(o,e)),r&&((a=pe(se(r,e,!0))).classes=["tag"],i.push(a));var l=re(["katex-html"],i);if(l.setAttribute("aria-hidden","true"),a){var m=a.children[0];m.style.height=l.height+l.depth+"em",m.style.verticalAlign=-l.depth+"em"}return l}function fe(t){return new A(t)}var ge=function(){function t(t,e){this.type=void 0,this.attributes=void 0,this.children=void 0,this.type=t,this.attributes={},this.children=e||[]}var e=t.prototype;return e.setAttribute=function(t,e){this.attributes[t]=e},e.getAttribute=function(t){return this.attributes[t]},e.toNode=function(){var t=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);for(var r=0;r"},e.toText=function(){return this.children.map(function(t){return t.toText()}).join("")},t}(),xe=function(){function t(t){this.text=void 0,this.text=t}var e=t.prototype;return e.toNode=function(){return document.createTextNode(this.text)},e.toMarkup=function(){return c.escape(this.toText())},e.toText=function(){return this.text},t}(),ve={MathNode:ge,TextNode:xe,SpaceNode:function(){function t(t){this.width=void 0,this.character=void 0,this.width=t,this.character=t>=.05555&&t<=.05556?"\u200a":t>=.1666&&t<=.1667?"\u2009":t>=.2222&&t<=.2223?"\u2005":t>=.2777&&t<=.2778?"\u2005\u200a":t>=-.05556&&t<=-.05555?"\u200a\u2063":t>=-.1667&&t<=-.1666?"\u2009\u2063":t>=-.2223&&t<=-.2222?"\u205f\u2063":t>=-.2778&&t<=-.2777?"\u2005\u2063":null}var e=t.prototype;return e.toNode=function(){if(this.character)return document.createTextNode(this.character);var t=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return t.setAttribute("width",this.width+"em"),t},e.toMarkup=function(){return this.character?""+this.character+"":''},e.toText=function(){return this.character?this.character:" "},t}(),newDocumentFragment:fe},be=function(t,e,r){return!j[e][t]||!j[e][t].replace||55349===t.charCodeAt(0)||rt.hasOwnProperty(t)&&r&&(r.fontFamily&&"tt"===r.fontFamily.substr(4,2)||r.font&&"tt"===r.font.substr(4,2))||(t=j[e][t].replace),new ve.TextNode(t)},ye=function(t){return 1===t.length?t[0]:new ve.MathNode("mrow",t)},we=function(t,e){if("texttt"===e.fontFamily)return"monospace";if("textsf"===e.fontFamily)return"textit"===e.fontShape&&"textbf"===e.fontWeight?"sans-serif-bold-italic":"textit"===e.fontShape?"sans-serif-italic":"textbf"===e.fontWeight?"bold-sans-serif":"sans-serif";if("textit"===e.fontShape&&"textbf"===e.fontWeight)return"bold-italic";if("textit"===e.fontShape)return"italic";if("textbf"===e.fontWeight)return"bold";var r=e.font;if(!r||"mathnormal"===r)return null;var a=t.mode;if("mathit"===r)return"italic";if("boldsymbol"===r)return"bold-italic";if("mathbf"===r)return"bold";if("mathbb"===r)return"double-struck";if("mathfrak"===r)return"fraktur";if("mathscr"===r||"mathcal"===r)return"script";if("mathsf"===r)return"sans-serif";if("mathtt"===r)return"monospace";var n=t.text;return c.contains(["\\imath","\\jmath"],n)?null:(j[a][n]&&j[a][n].replace&&(n=j[a][n].replace),G(n,Dt.fontMap[r].fontName,a)?Dt.fontMap[r].variant:null)},ke=function(t,e,r){if(1===t.length){var a=Me(t[0],e);return r&&a instanceof ge&&"mo"===a.type&&(a.setAttribute("lspace","0em"),a.setAttribute("rspace","0em")),[a]}for(var n,i=[],o=0;o0&&(p.text=p.text.slice(0,1)+"\u0338"+p.text.slice(1),i.pop())}}}i.push(s),n=s}return i},Se=function(t,e,r){return ye(ke(t,e,r))},Me=function(t,e){if(!t)return new ve.MathNode("mrow");if(Jt[t.type])return Jt[t.type](t,e);throw new o("Got group of unknown type: '"+t.type+"'")};function ze(t,e,r,a){var n,i=ke(t,r);n=1===i.length&&i[0]instanceof ge&&c.contains(["mrow","mtable"],i[0].type)?i[0]:new ve.MathNode("mrow",i);var o=new ve.MathNode("annotation",[new ve.TextNode(e)]);o.setAttribute("encoding","application/x-tex");var s=new ve.MathNode("semantics",[n,o]),h=new ve.MathNode("math",[s]);h.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML");var l=a?"katex":"katex-mathml";return Dt.makeSpan([l],[h])}var Ae=function(t){return new St({style:t.displayMode?w.DISPLAY:w.TEXT,maxSize:t.maxSize,minRuleThickness:t.minRuleThickness})},Te=function(t,e){if(e.displayMode){var r=["katex-display"];e.leqno&&r.push("leqno"),e.fleqn&&r.push("fleqn"),t=Dt.makeSpan(r,[t])}return t},Be=function(t,e,r){var a,n=Ae(r);if("mathml"===r.output)return ze(t,e,n,!0);if("html"===r.output){var i=de(t,n);a=Dt.makeSpan(["katex"],[i])}else{var o=ze(t,e,n,!1),s=de(t,n);a=Dt.makeSpan(["katex"],[o,s])}return Te(a,r)},Ce={widehat:"^",widecheck:"\u02c7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23df",overbrace:"\u23de",overgroup:"\u23e0",undergroup:"\u23e1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21d2",xRightarrow:"\u21d2",overleftharpoon:"\u21bc",xleftharpoonup:"\u21bc",overrightharpoon:"\u21c0",xrightharpoonup:"\u21c0",xLeftarrow:"\u21d0",xLeftrightarrow:"\u21d4",xhookleftarrow:"\u21a9",xhookrightarrow:"\u21aa",xmapsto:"\u21a6",xrightharpoondown:"\u21c1",xleftharpoondown:"\u21bd",xrightleftharpoons:"\u21cc",xleftrightharpoons:"\u21cb",xtwoheadleftarrow:"\u219e",xtwoheadrightarrow:"\u21a0",xlongequal:"=",xtofrom:"\u21c4",xrightleftarrows:"\u21c4",xrightequilibrium:"\u21cc",xleftequilibrium:"\u21cb"},qe={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},Ne=function(t){return"ordgroup"===t.type?t.body.length:1},Ie=function(t,e,r,a){var n,i=t.height+t.depth+2*r;if(/fbox|color/.test(e)){if(n=Dt.makeSpan(["stretchy",e],[],a),"fbox"===e){var o=a.color&&a.getColor();o&&(n.style.borderColor=o)}}else{var s=[];/^[bx]cancel$/.test(e)&&s.push(new P({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(e)&&s.push(new P({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var h=new L(s,{width:"100%",height:i+"em"});n=Dt.makeSvgSpan([],[h],a)}return n.height=i,n.style.height=i+"em",n},Re=function(t){var e=new ve.MathNode("mo",[new ve.TextNode(Ce[t.substr(1)])]);return e.setAttribute("stretchy","true"),e},Oe=function(t,e){var r=function(){var r=4e5,a=t.label.substr(1);if(c.contains(["widehat","widecheck","widetilde","utilde"],a)){var n,i,o,s=Ne(t.base);if(s>5)"widehat"===a||"widecheck"===a?(n=420,r=2364,o=.42,i=a+"4"):(n=312,r=2340,o=.34,i="tilde4");else{var h=[1,1,2,2,3,3][s];"widehat"===a||"widecheck"===a?(r=[0,1062,2364,2364,2364][h],n=[0,239,300,360,420][h],o=[0,.24,.3,.3,.36,.42][h],i=a+h):(r=[0,600,1033,2339,2340][h],n=[0,260,286,306,312][h],o=[0,.26,.286,.3,.306,.34][h],i="tilde"+h)}var l=new H(i),m=new L([l],{width:"100%",height:o+"em",viewBox:"0 0 "+r+" "+n,preserveAspectRatio:"none"});return{span:Dt.makeSvgSpan([],[m],e),minWidth:0,height:o}}var u,p,d=[],f=qe[a],g=f[0],x=f[1],v=f[2],b=v/1e3,y=g.length;if(1===y)u=["hide-tail"],p=[f[3]];else if(2===y)u=["halfarrow-left","halfarrow-right"],p=["xMinYMin","xMaxYMin"];else{if(3!==y)throw new Error("Correct katexImagesData or update code here to support\n "+y+" children.");u=["brace-left","brace-center","brace-right"],p=["xMinYMin","xMidYMin","xMaxYMin"]}for(var w=0;w0&&(a.style.minWidth=n+"em"),a},Ee=function(t,e){var r,a,n,i=Vt(t,"supsub");i?(r=(a=Ft(i.base,"accent")).base,i.base=r,n=function(t){if(t instanceof N)return t;throw new Error("Expected span but got "+String(t)+".")}(ue(i,e)),i.base=a):r=(a=Ft(t,"accent")).base;var o=ue(r,e.havingCrampedStyle()),s=0;if(a.isShifty&&c.isCharacterBox(r)){var h=c.getBaseElem(r);s=D(ue(h,e.havingCrampedStyle())).skew}var l,m=Math.min(o.height,e.fontMetrics().xHeight);if(a.isStretchy)l=Oe(a,e),l=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"elem",elem:l,wrapperClasses:["svg-align"],wrapperStyle:s>0?{width:"calc(100% - "+2*s+"em)",marginLeft:2*s+"em"}:void 0}]},e);else{var u,p;"\\vec"===a.label?(u=Dt.staticSvg("vec",e),p=Dt.svgData.vec[1]):((u=D(u=Dt.makeOrd({mode:a.mode,text:a.label},e,"textord"))).italic=0,p=u.width),l=Dt.makeSpan(["accent-body"],[u]);var d="\\textcircled"===a.label;d&&(l.classes.push("accent-full"),m=o.height);var f=s;d||(f-=p/2),l.style.left=f+"em","\\textcircled"===a.label&&(l.style.top=".2em"),l=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"kern",size:-m},{type:"elem",elem:l}]},e)}var g=Dt.makeSpan(["mord","accent"],[l],e);return n?(n.children[0]=g,n.height=Math.max(g.height,n.height),n.classes[0]="mord",n):g},Le=function(t,e){var r=t.isStretchy?Re(t.label):new ve.MathNode("mo",[be(t.label,t.mode)]),a=new ve.MathNode("mover",[Me(t.base,e),r]);return a.setAttribute("accent","true"),a},He=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(function(t){return"\\"+t}).join("|"));Qt({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:function(t,e){var r=e[0],a=!He.test(t.funcName),n=!a||"\\widehat"===t.funcName||"\\widetilde"===t.funcName||"\\widecheck"===t.funcName;return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:a,isShifty:n,base:r}},htmlBuilder:Ee,mathmlBuilder:Le}),Qt({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!1},handler:function(t,e){var r=e[0];return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:Ee,mathmlBuilder:Le}),Qt({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:"accentUnder",mode:r.mode,label:a,base:n}},htmlBuilder:function(t,e){var r=ue(t.base,e),a=Oe(t,e),n="\\utilde"===t.label?.12:0,i=Dt.makeVList({positionType:"bottom",positionData:a.height+n,children:[{type:"elem",elem:a,wrapperClasses:["svg-align"]},{type:"kern",size:n},{type:"elem",elem:r}]},e);return Dt.makeSpan(["mord","accentunder"],[i],e)},mathmlBuilder:function(t,e){var r=Re(t.label),a=new ve.MathNode("munder",[Me(t.base,e),r]);return a.setAttribute("accentunder","true"),a}});var Pe=function(t){var e=new ve.MathNode("mpadded",t?[t]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e};Qt({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium"],props:{numArgs:1,numOptionalArgs:1},handler:function(t,e,r){var a=t.parser,n=t.funcName;return{type:"xArrow",mode:a.mode,label:n,body:e[0],below:r[0]}},htmlBuilder:function(t,e){var r,a=e.style,n=e.havingStyle(a.sup()),i=Dt.wrapFragment(ue(t.body,n,e),e);i.classes.push("x-arrow-pad"),t.below&&(n=e.havingStyle(a.sub()),(r=Dt.wrapFragment(ue(t.below,n,e),e)).classes.push("x-arrow-pad"));var o,s=Oe(t,e),h=-e.fontMetrics().axisHeight+.5*s.height,l=-e.fontMetrics().axisHeight-.5*s.height-.111;if((i.depth>.25||"\\xleftequilibrium"===t.label)&&(l-=i.depth),r){var m=-e.fontMetrics().axisHeight+r.height+.5*s.height+.111;o=Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:l},{type:"elem",elem:s,shift:h},{type:"elem",elem:r,shift:m}]},e)}else o=Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:l},{type:"elem",elem:s,shift:h}]},e);return o.children[0].children[0].children[1].classes.push("svg-align"),Dt.makeSpan(["mrel","x-arrow"],[o],e)},mathmlBuilder:function(t,e){var r,a=Re(t.label);if(t.body){var n=Pe(Me(t.body,e));if(t.below){var i=Pe(Me(t.below,e));r=new ve.MathNode("munderover",[a,i,n])}else r=new ve.MathNode("mover",[a,n])}else if(t.below){var o=Pe(Me(t.below,e));r=new ve.MathNode("munder",[a,o])}else r=Pe(),r=new ve.MathNode("mover",[a,r]);return r}}),Qt({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){for(var r=t.parser,a=Ft(e[0],"ordgroup").body,n="",i=0;i","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],Je=[0,1.2,1.8,2.4,3],Qe=[{type:"small",style:w.SCRIPTSCRIPT},{type:"small",style:w.SCRIPT},{type:"small",style:w.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],tr=[{type:"small",style:w.SCRIPTSCRIPT},{type:"small",style:w.SCRIPT},{type:"small",style:w.TEXT},{type:"stack"}],er=[{type:"small",style:w.SCRIPTSCRIPT},{type:"small",style:w.SCRIPT},{type:"small",style:w.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],rr=function(t){if("small"===t.type)return"Main-Regular";if("large"===t.type)return"Size"+t.size+"-Regular";if("stack"===t.type)return"Size4-Regular";throw new Error("Add support for delim type '"+t.type+"' here.")},ar=function(t,e,r,a){for(var n=Math.min(2,3-a.style.size);ne)return r[n]}return r[r.length-1]},nr=function(t,e,r,a,n,i){var o;"<"===t||"\\lt"===t||"\u27e8"===t?t="\\langle":">"!==t&&"\\gt"!==t&&"\u27e9"!==t||(t="\\rangle"),o=c.contains(Ke,t)?Qe:c.contains($e,t)?er:tr;var s=ar(t,e,o,a);return"small"===s.type?function(t,e,r,a,n,i){var o=Dt.makeSymbol(t,"Main-Regular",n,a),s=Ue(o,e,a,i);return r&&Ge(s,a,e),s}(t,s.style,r,a,n,i):"large"===s.type?Ye(t,s.size,r,a,n,i):_e(t,e,r,a,n,i)},ir=function(t,e){var r,a,n=e.havingBaseSizing(),i=ar("\\surd",t*n.sizeMultiplier,er,n),o=n.sizeMultiplier,s=Math.max(0,e.minRuleThickness-e.fontMetrics().sqrtRuleThickness),h=0,l=0,m=0;return"small"===i.type?(t<1?o=1:t<1.4&&(o=.7),l=(1+s)/o,(r=je("sqrtMain",h=(1+s+.08)/o,m=1e3+1e3*s+80,s,e)).style.minWidth="0.853em",a=.833/o):"large"===i.type?(m=1080*Je[i.size],l=(Je[i.size]+s)/o,h=(Je[i.size]+s+.08)/o,(r=je("sqrtSize"+i.size,h,m,s,e)).style.minWidth="1.02em",a=1/o):(h=t+s+.08,l=t+s,m=Math.floor(1e3*t+s)+80,(r=je("sqrtTall",h,m,s,e)).style.minWidth="0.742em",a=1.056),r.height=l,r.style.height=h+"em",{span:r,advanceWidth:a,ruleWidth:(e.fontMetrics().sqrtRuleThickness+s)*o}},or=function(t,e,r,a,n){if("<"===t||"\\lt"===t||"\u27e8"===t?t="\\langle":">"!==t&&"\\gt"!==t&&"\u27e9"!==t||(t="\\rangle"),c.contains($e,t)||c.contains(Ke,t))return Ye(t,e,!1,r,a,n);if(c.contains(Ze,t))return _e(t,Je[e],!1,r,a,n);throw new o("Illegal delimiter: '"+t+"'")},sr=nr,hr=function(t,e,r,a,n,i){var o=a.fontMetrics().axisHeight*a.sizeMultiplier,s=5/a.fontMetrics().ptPerEm,h=Math.max(e-o,r+o),l=Math.max(h/500*901,2*h-s);return nr(t,l,!0,a,n,i)},lr={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},mr=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27e8","\\rangle","\u27e9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function cr(t,e){var r=Yt(t);if(r&&c.contains(mr,r.text))return r;throw new o("Invalid delimiter: '"+(r?r.text:JSON.stringify(t))+"' after '"+e.funcName+"'",t)}function ur(t){if(!t.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}Qt({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1},handler:function(t,e){var r=cr(e[0],t);return{type:"delimsizing",mode:t.parser.mode,size:lr[t.funcName].size,mclass:lr[t.funcName].mclass,delim:r.text}},htmlBuilder:function(t,e){return"."===t.delim?Dt.makeSpan([t.mclass]):or(t.delim,t.size,e,t.mode,[t.mclass])},mathmlBuilder:function(t){var e=[];"."!==t.delim&&e.push(be(t.delim,t.mode));var r=new ve.MathNode("mo",e);return"mopen"===t.mclass||"mclose"===t.mclass?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r}}),Qt({type:"leftright-right",names:["\\right"],props:{numArgs:1},handler:function(t,e){var r=t.parser.gullet.macros.get("\\current@color");if(r&&"string"!=typeof r)throw new o("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:t.parser.mode,delim:cr(e[0],t).text,color:r}}}),Qt({type:"leftright",names:["\\left"],props:{numArgs:1},handler:function(t,e){var r=cr(e[0],t),a=t.parser;++a.leftrightDepth;var n=a.parseExpression(!1);--a.leftrightDepth,a.expect("\\right",!1);var i=Ft(a.parseFunction(),"leftright-right");return{type:"leftright",mode:a.mode,body:n,left:r.text,right:i.delim,rightColor:i.color}},htmlBuilder:function(t,e){ur(t);for(var r,a,n=se(t.body,e,!0,["mopen","mclose"]),i=0,o=0,s=!1,h=0;h-1?"mpadded":"menclose",[Me(t.body,e)]);switch(t.label){case"\\cancel":a.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":a.setAttribute("notation","downdiagonalstrike");break;case"\\sout":a.setAttribute("notation","horizontalstrike");break;case"\\fbox":a.setAttribute("notation","box");break;case"\\fcolorbox":case"\\colorbox":if(r=e.fontMetrics().fboxsep*e.fontMetrics().ptPerEm,a.setAttribute("width","+"+2*r+"pt"),a.setAttribute("height","+"+2*r+"pt"),a.setAttribute("lspace",r+"pt"),a.setAttribute("voffset",r+"pt"),"\\fcolorbox"===t.label){var n=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness);a.setAttribute("style","border: "+n+"em solid "+String(t.borderColor))}break;case"\\xcancel":a.setAttribute("notation","updiagonalstrike downdiagonalstrike")}return t.backgroundColor&&a.setAttribute("mathbackground",t.backgroundColor),a};Qt({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,greediness:3,argTypes:["color","text"]},handler:function(t,e,r){var a=t.parser,n=t.funcName,i=Ft(e[0],"color-token").color,o=e[1];return{type:"enclose",mode:a.mode,label:n,backgroundColor:i,body:o}},htmlBuilder:pr,mathmlBuilder:dr}),Qt({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,greediness:3,argTypes:["color","color","text"]},handler:function(t,e,r){var a=t.parser,n=t.funcName,i=Ft(e[0],"color-token").color,o=Ft(e[1],"color-token").color,s=e[2];return{type:"enclose",mode:a.mode,label:n,backgroundColor:o,borderColor:i,body:s}},htmlBuilder:pr,mathmlBuilder:dr}),Qt({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler:function(t,e){return{type:"enclose",mode:t.parser.mode,label:"\\fbox",body:e[0]}}}),Qt({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout"],props:{numArgs:1},handler:function(t,e,r){var a=t.parser,n=t.funcName,i=e[0];return{type:"enclose",mode:a.mode,label:n,body:i}},htmlBuilder:pr,mathmlBuilder:dr});var fr={};function gr(t){for(var e=t.type,r=t.names,a=t.props,n=t.handler,i=t.htmlBuilder,o=t.mathmlBuilder,s={type:e,numArgs:a.numArgs||0,greediness:1,allowedInText:!1,numOptionalArgs:0,handler:n},h=0;h0&&(b+=.25),l.push({pos:b,isDashed:t[e]})}for(y(i[0]),r=0;r0&&(M<(B+=v)&&(M=B),B=0),t.addJot&&(M+=f),z.height=S,z.depth=M,b+=S,z.pos=b,b+=M+B,h[r]=z,y(i[r+1])}var C,q,N=b/2+e.fontMetrics().axisHeight,I=t.cols||[],R=[];for(a=0,q=0;a=s)){var P=void 0;(a>0||t.hskipBeforeAndAfter)&&0!==(P=c.deflt(O.pregap,p))&&((C=Dt.makeSpan(["arraycolsep"],[])).style.width=P+"em",R.push(C));var D=[];for(r=0;r0){for(var G=Dt.makeLineSpan("hline",e,m),Y=Dt.makeLineSpan("hdashline",e,m),W=[{type:"elem",elem:h,shift:0}];l.length>0;){var X=l.pop(),_=X.pos-N;X.isDashed?W.push({type:"elem",elem:Y,shift:_}):W.push({type:"elem",elem:G,shift:_})}h=Dt.makeVList({positionType:"individualShift",children:W},e)}return Dt.makeSpan(["mord"],[h],e)},wr={c:"center ",l:"left ",r:"right "},kr=function(t,e){var r=new ve.MathNode("mtable",t.body.map(function(t){return new ve.MathNode("mtr",t.map(function(t){return new ve.MathNode("mtd",[Me(t,e)])}))})),a=.5===t.arraystretch?.1:.16+t.arraystretch-1+(t.addJot?.09:0);r.setAttribute("rowspacing",a+"em");var n="",i="";if(t.cols){var o=t.cols,s="",h=!1,l=0,m=o.length;"separator"===o[0].type&&(n+="top ",l=1),"separator"===o[o.length-1].type&&(n+="bottom ",m-=1);for(var c=l;c0?"left ":"",n+=g[g.length-1].length>0?"right ":"";for(var x=1;x0&&c&&(d=1),a[u]={type:"align",align:p,pregap:d,postgap:0}}return n.colSeparationType=c?"align":"alignat",n};gr({type:"array",names:["array","darray"],props:{numArgs:1},handler:function(t,e){var r={cols:(Yt(e[0])?[e[0]]:Ft(e[0],"ordgroup").body).map(function(t){var e=Gt(t).text;if(-1!=="lcr".indexOf(e))return{type:"align",align:e};if("|"===e)return{type:"separator",separator:"|"};if(":"===e)return{type:"separator",separator:":"};throw new o("Unknown column alignment: "+e,t)}),hskipBeforeAndAfter:!0};return vr(t.parser,r,br(t.envName))},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix"],props:{numArgs:0},handler:function(t){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName],r=vr(t.parser,{hskipBeforeAndAfter:!1},br(t.envName));return e?{type:"leftright",mode:t.mode,body:[r],left:e[0],right:e[1],rightColor:void 0}:r},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["smallmatrix"],props:{numArgs:0},handler:function(t){var e=vr(t.parser,{arraystretch:.5},"script");return e.colSeparationType="small",e},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["subarray"],props:{numArgs:1},handler:function(t,e){var r=(Yt(e[0])?[e[0]]:Ft(e[0],"ordgroup").body).map(function(t){var e=Gt(t).text;if(-1!=="lc".indexOf(e))return{type:"align",align:e};throw new o("Unknown column alignment: "+e,t)});if(r.length>1)throw new o("{subarray} can contain only one column");var a={cols:r,hskipBeforeAndAfter:!1,arraystretch:.5};if((a=vr(t.parser,a,"script")).body[0].length>1)throw new o("{subarray} can contain only one column");return a},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["cases","dcases"],props:{numArgs:0},handler:function(t){var e=vr(t.parser,{arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},br(t.envName));return{type:"leftright",mode:t.mode,body:[e],left:"\\{",right:".",rightColor:void 0}},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["aligned"],props:{numArgs:0},handler:Sr,htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["gathered"],props:{numArgs:0},handler:function(t){return vr(t.parser,{cols:[{type:"align",align:"c"}],addJot:!0},"display")},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["alignedat"],props:{numArgs:1},handler:Sr,htmlBuilder:yr,mathmlBuilder:kr}),Qt({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler:function(t,e){throw new o(t.funcName+" valid only within array environment")}});var Mr=fr;Qt({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];if("ordgroup"!==n.type)throw new o("Invalid environment name",n);for(var i="",s=0;s=w.SCRIPT.id?r.text():w.DISPLAY:"text"===t&&r.size===w.DISPLAY.size?r=w.TEXT:"script"===t?r=w.SCRIPT:"scriptscript"===t&&(r=w.SCRIPTSCRIPT),r},Rr=function(t,e){var r,a=Ir(t.size,e.style),n=a.fracNum(),i=a.fracDen();r=e.havingStyle(n);var o=ue(t.numer,r,e);if(t.continued){var s=8.5/e.fontMetrics().ptPerEm,h=3.5/e.fontMetrics().ptPerEm;o.height=o.height0?3*c:7*c,d=e.fontMetrics().denom1):(m>0?(u=e.fontMetrics().num2,p=c):(u=e.fontMetrics().num3,p=3*c),d=e.fontMetrics().denom2),l){var y=e.fontMetrics().axisHeight;u-o.depth-(y+.5*m)0&&(e="."===(e=t)?null:e),e};Qt({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,greediness:6,argTypes:["math","math","size","text","math","math"]},handler:function(t,e){var r=t.parser,a=e[4],n=e[5],i=Vt(e[0],"atom");i&&(i=Ut(e[0],"open"));var o=i?Lr(i.text):null,s=Vt(e[1],"atom");s&&(s=Ut(e[1],"close"));var h,l=s?Lr(s.text):null,m=Ft(e[2],"size"),c=null;h=!!m.isBlank||(c=m.value).number>0;var u="auto",p=Vt(e[3],"ordgroup");if(p){if(p.body.length>0){var d=Ft(p.body[0],"textord");u=Er[Number(d.text)]}}else p=Ft(e[3],"textord"),u=Er[Number(p.text)];return{type:"genfrac",mode:r.mode,numer:a,denom:n,continued:!1,hasBarLine:h,barSize:c,leftDelim:o,rightDelim:l,size:u}},htmlBuilder:Rr,mathmlBuilder:Or}),Qt({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler:function(t,e){var r=t.parser,a=(t.funcName,t.token);return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:Ft(e[0],"size").value,token:a}}}),Qt({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:function(t,e){var r=t.parser,a=(t.funcName,e[0]),n=function(t){if(!t)throw new Error("Expected non-null, but got "+String(t));return t}(Ft(e[1],"infix").size),i=e[2],o=n.number>0;return{type:"genfrac",mode:r.mode,numer:a,denom:i,continued:!1,hasBarLine:o,barSize:n,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:Rr,mathmlBuilder:Or});var Hr=function(t,e){var r,a,n=e.style,i=Vt(t,"supsub");i?(r=i.sup?ue(i.sup,e.havingStyle(n.sup()),e):ue(i.sub,e.havingStyle(n.sub()),e),a=Ft(i.base,"horizBrace")):a=Ft(t,"horizBrace");var o,s=ue(a.base,e.havingBaseStyle(w.DISPLAY)),h=Oe(a,e);if(a.isOver?(o=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:h}]},e)).children[0].children[0].children[1].classes.push("svg-align"):(o=Dt.makeVList({positionType:"bottom",positionData:s.depth+.1+h.height,children:[{type:"elem",elem:h},{type:"kern",size:.1},{type:"elem",elem:s}]},e)).children[0].children[0].children[0].classes.push("svg-align"),r){var l=Dt.makeSpan(["mord",a.isOver?"mover":"munder"],[o],e);o=a.isOver?Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.2},{type:"elem",elem:r}]},e):Dt.makeVList({positionType:"bottom",positionData:l.depth+.2+r.height+r.depth,children:[{type:"elem",elem:r},{type:"kern",size:.2},{type:"elem",elem:l}]},e)}return Dt.makeSpan(["mord",a.isOver?"mover":"munder"],[o],e)};Qt({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=t.funcName;return{type:"horizBrace",mode:r.mode,label:a,isOver:/^\\over/.test(a),base:e[0]}},htmlBuilder:Hr,mathmlBuilder:function(t,e){var r=Re(t.label);return new ve.MathNode(t.isOver?"mover":"munder",[Me(t.base,e),r])}}),Qt({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:function(t,e){var r=t.parser,a=e[1],n=Ft(e[0],"url").url;return r.settings.isTrusted({command:"\\href",url:n})?{type:"href",mode:r.mode,href:n,body:ee(a)}:r.formatUnsupportedCmd("\\href")},htmlBuilder:function(t,e){var r=se(t.body,e,!1);return Dt.makeAnchor(t.href,[],r,e)},mathmlBuilder:function(t,e){var r=Se(t.body,e);return r instanceof ge||(r=new ge("mrow",[r])),r.setAttribute("href",t.href),r}}),Qt({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:function(t,e){var r=t.parser,a=Ft(e[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:a}))return r.formatUnsupportedCmd("\\url");for(var n=[],i=0;i0&&(a=Tt(t.totalheight,e)-r,a=Number(a.toFixed(2)));var n=0;t.width.number>0&&(n=Tt(t.width,e));var i={height:r+a+"em"};n>0&&(i.width=n+"em"),a>0&&(i.verticalAlign=-a+"em");var o=new R(t.src,t.alt,i);return o.height=r,o.depth=a,o},mathmlBuilder:function(t,e){var r=new ve.MathNode("mglyph",[]);r.setAttribute("alt",t.alt);var a=Tt(t.height,e),n=0;if(t.totalheight.number>0&&(n=(n=Tt(t.totalheight,e)-a).toFixed(2),r.setAttribute("valign","-"+n+"em")),r.setAttribute("height",a+n+"em"),t.width.number>0){var i=Tt(t.width,e);r.setAttribute("width",i+"em")}return r.setAttribute("src",t.src),r}}),Qt({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],allowedInText:!0},handler:function(t,e){var r=t.parser,a=t.funcName,n=Ft(e[0],"size");if(r.settings.strict){var i="m"===a[1],o="mu"===n.value.unit;i?(o||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" supports only mu units, not "+n.value.unit+" units"),"math"!==r.mode&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" works only in math mode")):o&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:n.value}},htmlBuilder:function(t,e){return Dt.makeGlue(t.dimension,e)},mathmlBuilder:function(t,e){var r=Tt(t.dimension,e);return new ve.SpaceNode(r)}}),Qt({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:"lap",mode:r.mode,alignment:a.slice(5),body:n}},htmlBuilder:function(t,e){var r;"clap"===t.alignment?(r=Dt.makeSpan([],[ue(t.body,e)]),r=Dt.makeSpan(["inner"],[r],e)):r=Dt.makeSpan(["inner"],[ue(t.body,e)]);var a=Dt.makeSpan(["fix"],[]),n=Dt.makeSpan([t.alignment],[r,a],e),i=Dt.makeSpan(["strut"]);return i.style.height=n.height+n.depth+"em",i.style.verticalAlign=-n.depth+"em",n.children.unshift(i),n=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n}]},e),Dt.makeSpan(["mord"],[n],e)},mathmlBuilder:function(t,e){var r=new ve.MathNode("mpadded",[Me(t.body,e)]);if("rlap"!==t.alignment){var a="llap"===t.alignment?"-1":"-0.5";r.setAttribute("lspace",a+"width")}return r.setAttribute("width","0px"),r}}),Qt({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(t,e){var r=t.funcName,a=t.parser,n=a.mode;a.switchMode("math");var i="\\("===r?"\\)":"$",o=a.parseExpression(!1,i);return a.expect(i),a.switchMode(n),{type:"styling",mode:a.mode,style:"text",body:o}}}),Qt({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(t,e){throw new o("Mismatched "+t.funcName)}});var Dr=function(t,e){switch(e.style.size){case w.DISPLAY.size:return t.display;case w.TEXT.size:return t.text;case w.SCRIPT.size:return t.script;case w.SCRIPTSCRIPT.size:return t.scriptscript;default:return t.text}};Qt({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4},handler:function(t,e){return{type:"mathchoice",mode:t.parser.mode,display:ee(e[0]),text:ee(e[1]),script:ee(e[2]),scriptscript:ee(e[3])}},htmlBuilder:function(t,e){var r=Dr(t,e),a=se(r,e,!1);return Dt.makeFragment(a)},mathmlBuilder:function(t,e){var r=Dr(t,e);return Se(r,e)}});var Fr=function(t,e,r,a,n,i,o){var s,h,l;if(t=Dt.makeSpan([],[t]),e){var m=ue(e,a.havingStyle(n.sup()),a);h={elem:m,kern:Math.max(a.fontMetrics().bigOpSpacing1,a.fontMetrics().bigOpSpacing3-m.depth)}}if(r){var c=ue(r,a.havingStyle(n.sub()),a);s={elem:c,kern:Math.max(a.fontMetrics().bigOpSpacing2,a.fontMetrics().bigOpSpacing4-c.height)}}if(h&&s){var u=a.fontMetrics().bigOpSpacing5+s.elem.height+s.elem.depth+s.kern+t.depth+o;l=Dt.makeVList({positionType:"bottom",positionData:u,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:-i+"em"},{type:"kern",size:s.kern},{type:"elem",elem:t},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:i+"em"},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]},a)}else if(s){var p=t.height-o;l=Dt.makeVList({positionType:"top",positionData:p,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:-i+"em"},{type:"kern",size:s.kern},{type:"elem",elem:t}]},a)}else{if(!h)return t;var d=t.depth+o;l=Dt.makeVList({positionType:"bottom",positionData:d,children:[{type:"elem",elem:t},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:i+"em"},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]},a)}return Dt.makeSpan(["mop","op-limits"],[l],a)},Vr=["\\smallint"],Ur=function(t,e){var r,a,n,i=!1,o=Vt(t,"supsub");o?(r=o.sup,a=o.sub,n=Ft(o.base,"op"),i=!0):n=Ft(t,"op");var s,h=e.style,l=!1;if(h.size===w.DISPLAY.size&&n.symbol&&!c.contains(Vr,n.name)&&(l=!0),n.symbol){var m=l?"Size2-Regular":"Size1-Regular",u="";if("\\oiint"!==n.name&&"\\oiiint"!==n.name||(u=n.name.substr(1),n.name="oiint"===u?"\\iint":"\\iiint"),s=Dt.makeSymbol(n.name,m,"math",e,["mop","op-symbol",l?"large-op":"small-op"]),u.length>0){var p=s.italic,d=Dt.staticSvg(u+"Size"+(l?"2":"1"),e);s=Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:0},{type:"elem",elem:d,shift:l?.08:0}]},e),n.name="\\"+u,s.classes.unshift("mop"),s.italic=p}}else if(n.body){var f=se(n.body,e,!0);1===f.length&&f[0]instanceof E?(s=f[0]).classes[0]="mop":s=Dt.makeSpan(["mop"],Dt.tryCombineChars(f),e)}else{for(var g=[],x=1;x0){for(var h=n.body.map(function(t){var e=t.text;return"string"==typeof e?{type:"textord",mode:t.mode,text:e}:t}),l=se(h,e.withFont("mathrm"),!0),m=0;m=0?s.setAttribute("height","+"+n+"em"):(s.setAttribute("height",n+"em"),s.setAttribute("depth","+"+-n+"em")),s.setAttribute("voffset",n+"em"),s}});var jr=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];Qt({type:"sizing",names:jr,props:{numArgs:0,allowedInText:!0},handler:function(t,e){var r=t.breakOnTokenText,a=t.funcName,n=t.parser,i=n.parseExpression(!1,r);return{type:"sizing",mode:n.mode,size:jr.indexOf(a)+1,body:i}},htmlBuilder:function(t,e){var r=e.havingSize(t.size);return _r(t.body,r,e)},mathmlBuilder:function(t,e){var r=e.havingSize(t.size),a=ke(t.body,r),n=new ve.MathNode("mstyle",a);return n.setAttribute("mathsize",r.sizeMultiplier+"em"),n}}),Qt({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:function(t,e,r){var a=t.parser,n=!1,i=!1,o=r[0]&&Ft(r[0],"ordgroup");if(o)for(var s="",h=0;hr.height+r.depth+i&&(i=(i+c-r.height-r.depth)/2);var u=h.height-r.height-i-l;r.style.paddingLeft=m+"em";var p=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+u)},{type:"elem",elem:h},{type:"kern",size:l}]},e);if(t.index){var d=e.havingStyle(w.SCRIPTSCRIPT),f=ue(t.index,d,e),g=.6*(p.height-p.depth),x=Dt.makeVList({positionType:"shift",positionData:-g,children:[{type:"elem",elem:f}]},e),v=Dt.makeSpan(["root"],[x]);return Dt.makeSpan(["mord","sqrt"],[v,p],e)}return Dt.makeSpan(["mord","sqrt"],[p],e)},mathmlBuilder:function(t,e){var r=t.body,a=t.index;return a?new ve.MathNode("mroot",[Me(r,e),Me(a,e)]):new ve.MathNode("msqrt",[Me(r,e)])}});var $r={display:w.DISPLAY,text:w.TEXT,script:w.SCRIPT,scriptscript:w.SCRIPTSCRIPT};Qt({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0},handler:function(t,e){var r=t.breakOnTokenText,a=t.funcName,n=t.parser,i=n.parseExpression(!0,r),o=a.slice(1,a.length-5);return{type:"styling",mode:n.mode,style:o,body:i}},htmlBuilder:function(t,e){var r=$r[t.style],a=e.havingStyle(r).withFont("");return _r(t.body,a,e)},mathmlBuilder:function(t,e){var r=$r[t.style],a=e.havingStyle(r),n=ke(t.body,a),i=new ve.MathNode("mstyle",n),o={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[t.style];return i.setAttribute("scriptlevel",o[0]),i.setAttribute("displaystyle",o[1]),i}});te({type:"supsub",htmlBuilder:function(t,e){var r=function(t,e){var r=t.base;return r?"op"===r.type?r.limits&&(e.style.size===w.DISPLAY.size||r.alwaysHandleSupSub)?Ur:null:"operatorname"===r.type?r.alwaysHandleSupSub&&(e.style.size===w.DISPLAY.size||r.limits)?Xr:null:"accent"===r.type?c.isCharacterBox(r.base)?Ee:null:"horizBrace"===r.type&&!t.sub===r.isOver?Hr:null:null}(t,e);if(r)return r(t,e);var a,n,i,o=t.base,s=t.sup,h=t.sub,l=ue(o,e),m=e.fontMetrics(),u=0,p=0,d=o&&c.isCharacterBox(o);if(s){var f=e.havingStyle(e.style.sup());a=ue(s,f,e),d||(u=l.height-f.fontMetrics().supDrop*f.sizeMultiplier/e.sizeMultiplier)}if(h){var g=e.havingStyle(e.style.sub());n=ue(h,g,e),d||(p=l.depth+g.fontMetrics().subDrop*g.sizeMultiplier/e.sizeMultiplier)}i=e.style===w.DISPLAY?m.sup1:e.style.cramped?m.sup3:m.sup2;var x,v=e.sizeMultiplier,b=.5/m.ptPerEm/v+"em",y=null;if(n){var k=t.base&&"op"===t.base.type&&t.base.name&&("\\oiint"===t.base.name||"\\oiiint"===t.base.name);(l instanceof E||k)&&(y=-l.italic+"em")}if(a&&n){u=Math.max(u,i,a.depth+.25*m.xHeight),p=Math.max(p,m.sub2);var S=4*m.defaultRuleThickness;if(u-a.depth-(n.height-p)0&&(u+=M,p-=M)}var z=[{type:"elem",elem:n,shift:p,marginRight:b,marginLeft:y},{type:"elem",elem:a,shift:-u,marginRight:b}];x=Dt.makeVList({positionType:"individualShift",children:z},e)}else if(n){p=Math.max(p,m.sub1,n.height-.8*m.xHeight);var A=[{type:"elem",elem:n,marginLeft:y,marginRight:b}];x=Dt.makeVList({positionType:"shift",positionData:p,children:A},e)}else{if(!a)throw new Error("supsub must have either sup or sub.");u=Math.max(u,i,a.depth+.25*m.xHeight),x=Dt.makeVList({positionType:"shift",positionData:-u,children:[{type:"elem",elem:a,marginRight:b}]},e)}var T=me(l,"right")||"mord";return Dt.makeSpan([T],[l,Dt.makeSpan(["msupsub"],[x])],e)},mathmlBuilder:function(t,e){var r,a=!1,n=Vt(t.base,"horizBrace");n&&!!t.sup===n.isOver&&(a=!0,r=n.isOver),!t.base||"op"!==t.base.type&&"operatorname"!==t.base.type||(t.base.parentIsSupSub=!0);var i,o=[Me(t.base,e)];if(t.sub&&o.push(Me(t.sub,e)),t.sup&&o.push(Me(t.sup,e)),a)i=r?"mover":"munder";else if(t.sub)if(t.sup){var s=t.base;i=s&&"op"===s.type&&s.limits&&e.style===w.DISPLAY?"munderover":s&&"operatorname"===s.type&&s.alwaysHandleSupSub&&(e.style===w.DISPLAY||s.limits)?"munderover":"msubsup"}else{var h=t.base;i=h&&"op"===h.type&&h.limits&&(e.style===w.DISPLAY||h.alwaysHandleSupSub)?"munder":h&&"operatorname"===h.type&&h.alwaysHandleSupSub&&(h.limits||e.style===w.DISPLAY)?"munder":"msub"}else{var l=t.base;i=l&&"op"===l.type&&l.limits&&(e.style===w.DISPLAY||l.alwaysHandleSupSub)?"mover":l&&"operatorname"===l.type&&l.alwaysHandleSupSub&&(l.limits||e.style===w.DISPLAY)?"mover":"msup"}return new ve.MathNode(i,o)}}),te({type:"atom",htmlBuilder:function(t,e){return Dt.mathsym(t.text,t.mode,e,["m"+t.family])},mathmlBuilder:function(t,e){var r=new ve.MathNode("mo",[be(t.text,t.mode)]);if("bin"===t.family){var a=we(t,e);"bold-italic"===a&&r.setAttribute("mathvariant",a)}else"punct"===t.family?r.setAttribute("separator","true"):"open"!==t.family&&"close"!==t.family||r.setAttribute("stretchy","false");return r}});var Zr={mi:"italic",mn:"normal",mtext:"normal"};te({type:"mathord",htmlBuilder:function(t,e){return Dt.makeOrd(t,e,"mathord")},mathmlBuilder:function(t,e){var r=new ve.MathNode("mi",[be(t.text,t.mode,e)]),a=we(t,e)||"italic";return a!==Zr[r.type]&&r.setAttribute("mathvariant",a),r}}),te({type:"textord",htmlBuilder:function(t,e){return Dt.makeOrd(t,e,"textord")},mathmlBuilder:function(t,e){var r,a=be(t.text,t.mode,e),n=we(t,e)||"normal";return r="text"===t.mode?new ve.MathNode("mtext",[a]):/[0-9]/.test(t.text)?new ve.MathNode("mn",[a]):"\\prime"===t.text?new ve.MathNode("mo",[a]):new ve.MathNode("mi",[a]),n!==Zr[r.type]&&r.setAttribute("mathvariant",n),r}});var Kr={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},Jr={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};te({type:"spacing",htmlBuilder:function(t,e){if(Jr.hasOwnProperty(t.text)){var r=Jr[t.text].className||"";if("text"===t.mode){var a=Dt.makeOrd(t,e,"textord");return a.classes.push(r),a}return Dt.makeSpan(["mspace",r],[Dt.mathsym(t.text,t.mode,e)],e)}if(Kr.hasOwnProperty(t.text))return Dt.makeSpan(["mspace",Kr[t.text]],[],e);throw new o('Unknown type of space "'+t.text+'"')},mathmlBuilder:function(t,e){if(!Jr.hasOwnProperty(t.text)){if(Kr.hasOwnProperty(t.text))return new ve.MathNode("mspace");throw new o('Unknown type of space "'+t.text+'"')}return new ve.MathNode("mtext",[new ve.TextNode("\xa0")])}});var Qr=function(){var t=new ve.MathNode("mtd",[]);return t.setAttribute("width","50%"),t};te({type:"tag",mathmlBuilder:function(t,e){var r=new ve.MathNode("mtable",[new ve.MathNode("mtr",[Qr(),new ve.MathNode("mtd",[Se(t.body,e)]),Qr(),new ve.MathNode("mtd",[Se(t.tag,e)])])]);return r.setAttribute("width","100%"),r}});var ta={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},ea={"\\textbf":"textbf","\\textmd":"textmd"},ra={"\\textit":"textit","\\textup":"textup"},aa=function(t,e){var r=t.font;return r?ta[r]?e.withTextFontFamily(ta[r]):ea[r]?e.withTextFontWeight(ea[r]):e.withTextFontShape(ra[r]):e};Qt({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup"],props:{numArgs:1,argTypes:["text"],greediness:2,allowedInText:!0},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:"text",mode:r.mode,body:ee(n),font:a}},htmlBuilder:function(t,e){var r=aa(t,e),a=se(t.body,r,!0);return Dt.makeSpan(["mord","text"],Dt.tryCombineChars(a),r)},mathmlBuilder:function(t,e){var r=aa(t,e);return Se(t.body,r)}}),Qt({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){return{type:"underline",mode:t.parser.mode,body:e[0]}},htmlBuilder:function(t,e){var r=ue(t.body,e),a=Dt.makeLineSpan("underline-line",e),n=e.fontMetrics().defaultRuleThickness,i=Dt.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:n},{type:"elem",elem:a},{type:"kern",size:3*n},{type:"elem",elem:r}]},e);return Dt.makeSpan(["mord","underline"],[i],e)},mathmlBuilder:function(t,e){var r=new ve.MathNode("mo",[new ve.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new ve.MathNode("munder",[Me(t.body,e),r]);return a.setAttribute("accentunder","true"),a}}),Qt({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler:function(t,e,r){throw new o("\\verb ended by end of line instead of matching delimiter")},htmlBuilder:function(t,e){for(var r=na(t),a=[],n=e.havingStyle(e.style.text()),i=0;i0&&(this.undefStack[this.undefStack.length-1][t]=e)}else{var n=this.undefStack[this.undefStack.length-1];n&&!n.hasOwnProperty(t)&&(n[t]=this.current[t])}this.current[t]=e},t}(),ca={},ua=ca;function pa(t,e){ca[t]=e}pa("\\@firstoftwo",function(t){return{tokens:t.consumeArgs(2)[0],numArgs:0}}),pa("\\@secondoftwo",function(t){return{tokens:t.consumeArgs(2)[1],numArgs:0}}),pa("\\@ifnextchar",function(t){var e=t.consumeArgs(3),r=t.future();return 1===e[0].length&&e[0][0].text===r.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}}),pa("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),pa("\\TextOrMath",function(t){var e=t.consumeArgs(2);return"text"===t.mode?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});var da={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};pa("\\char",function(t){var e,r=t.popToken(),a="";if("'"===r.text)e=8,r=t.popToken();else if('"'===r.text)e=16,r=t.popToken();else if("`"===r.text)if("\\"===(r=t.popToken()).text[0])a=r.text.charCodeAt(1);else{if("EOF"===r.text)throw new o("\\char` missing argument");a=r.text.charCodeAt(0)}else e=10;if(e){if(null==(a=da[r.text])||a>=e)throw new o("Invalid base-"+e+" digit "+r.text);for(var n;null!=(n=da[t.future().text])&&n":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};pa("\\dots",function(t){var e="\\dotso",r=t.expandAfterFuture().text;return r in xa?e=xa[r]:"\\not"===r.substr(0,4)?e="\\dotsb":r in j.math&&c.contains(["bin","rel"],j.math[r].group)&&(e="\\dotsb"),e});var va={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};pa("\\dotso",function(t){return t.future().text in va?"\\ldots\\,":"\\ldots"}),pa("\\dotsc",function(t){var e=t.future().text;return e in va&&","!==e?"\\ldots\\,":"\\ldots"}),pa("\\cdots",function(t){return t.future().text in va?"\\@cdots\\,":"\\@cdots"}),pa("\\dotsb","\\cdots"),pa("\\dotsm","\\cdots"),pa("\\dotsi","\\!\\cdots"),pa("\\dotsx","\\ldots\\,"),pa("\\DOTSI","\\relax"),pa("\\DOTSB","\\relax"),pa("\\DOTSX","\\relax"),pa("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),pa("\\,","\\tmspace+{3mu}{.1667em}"),pa("\\thinspace","\\,"),pa("\\>","\\mskip{4mu}"),pa("\\:","\\tmspace+{4mu}{.2222em}"),pa("\\medspace","\\:"),pa("\\;","\\tmspace+{5mu}{.2777em}"),pa("\\thickspace","\\;"),pa("\\!","\\tmspace-{3mu}{.1667em}"),pa("\\negthinspace","\\!"),pa("\\negmedspace","\\tmspace-{4mu}{.2222em}"),pa("\\negthickspace","\\tmspace-{5mu}{.277em}"),pa("\\enspace","\\kern.5em "),pa("\\enskip","\\hskip.5em\\relax"),pa("\\quad","\\hskip1em\\relax"),pa("\\qquad","\\hskip2em\\relax"),pa("\\tag","\\@ifstar\\tag@literal\\tag@paren"),pa("\\tag@paren","\\tag@literal{({#1})}"),pa("\\tag@literal",function(t){if(t.macros.get("\\df@tag"))throw new o("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"}),pa("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),pa("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),pa("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),pa("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),pa("\\pmb","\\html@mathml{\\@binrel{#1}{\\mathrlap{#1}\\kern0.5px#1}}{\\mathbf{#1}}"),pa("\\\\","\\newline"),pa("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var ba=F["Main-Regular"]["T".charCodeAt(0)][1]-.7*F["Main-Regular"]["A".charCodeAt(0)][1]+"em";pa("\\LaTeX","\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{"+ba+"}{\\scriptstyle A}\\kern-.15em\\TeX}{LaTeX}}"),pa("\\KaTeX","\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{"+ba+"}{\\scriptstyle A}\\kern-.15em\\TeX}{KaTeX}}"),pa("\\hspace","\\@ifstar\\@hspacer\\@hspace"),pa("\\@hspace","\\hskip #1\\relax"),pa("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),pa("\\ordinarycolon",":"),pa("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),pa("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),pa("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),pa("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),pa("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),pa("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),pa("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),pa("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),pa("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),pa("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),pa("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),pa("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),pa("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),pa("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),pa("\u2237","\\dblcolon"),pa("\u2239","\\eqcolon"),pa("\u2254","\\coloneqq"),pa("\u2255","\\eqqcolon"),pa("\u2a74","\\Coloneqq"),pa("\\ratio","\\vcentcolon"),pa("\\coloncolon","\\dblcolon"),pa("\\colonequals","\\coloneqq"),pa("\\coloncolonequals","\\Coloneqq"),pa("\\equalscolon","\\eqqcolon"),pa("\\equalscoloncolon","\\Eqqcolon"),pa("\\colonminus","\\coloneq"),pa("\\coloncolonminus","\\Coloneq"),pa("\\minuscolon","\\eqcolon"),pa("\\minuscoloncolon","\\Eqcolon"),pa("\\coloncolonapprox","\\Colonapprox"),pa("\\coloncolonsim","\\Colonsim"),pa("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),pa("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),pa("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),pa("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),pa("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220c}}"),pa("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),pa("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),pa("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}"),pa("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}"),pa("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}"),pa("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}"),pa("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}"),pa("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}"),pa("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}"),pa("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}"),pa("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}"),pa("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}"),pa("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228a}"),pa("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2acb}"),pa("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228b}"),pa("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2acc}"),pa("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27e6}}"),pa("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27e7}}"),pa("\u27e6","\\llbracket"),pa("\u27e7","\\rrbracket"),pa("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}"),pa("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}"),pa("\u2983","\\lBrace"),pa("\u2984","\\rBrace"),pa("\\darr","\\downarrow"),pa("\\dArr","\\Downarrow"),pa("\\Darr","\\Downarrow"),pa("\\lang","\\langle"),pa("\\rang","\\rangle"),pa("\\uarr","\\uparrow"),pa("\\uArr","\\Uparrow"),pa("\\Uarr","\\Uparrow"),pa("\\N","\\mathbb{N}"),pa("\\R","\\mathbb{R}"),pa("\\Z","\\mathbb{Z}"),pa("\\alef","\\aleph"),pa("\\alefsym","\\aleph"),pa("\\Alpha","\\mathrm{A}"),pa("\\Beta","\\mathrm{B}"),pa("\\bull","\\bullet"),pa("\\Chi","\\mathrm{X}"),pa("\\clubs","\\clubsuit"),pa("\\cnums","\\mathbb{C}"),pa("\\Complex","\\mathbb{C}"),pa("\\Dagger","\\ddagger"),pa("\\diamonds","\\diamondsuit"),pa("\\empty","\\emptyset"),pa("\\Epsilon","\\mathrm{E}"),pa("\\Eta","\\mathrm{H}"),pa("\\exist","\\exists"),pa("\\harr","\\leftrightarrow"),pa("\\hArr","\\Leftrightarrow"),pa("\\Harr","\\Leftrightarrow"),pa("\\hearts","\\heartsuit"),pa("\\image","\\Im"),pa("\\infin","\\infty"),pa("\\Iota","\\mathrm{I}"),pa("\\isin","\\in"),pa("\\Kappa","\\mathrm{K}"),pa("\\larr","\\leftarrow"),pa("\\lArr","\\Leftarrow"),pa("\\Larr","\\Leftarrow"),pa("\\lrarr","\\leftrightarrow"),pa("\\lrArr","\\Leftrightarrow"),pa("\\Lrarr","\\Leftrightarrow"),pa("\\Mu","\\mathrm{M}"),pa("\\natnums","\\mathbb{N}"),pa("\\Nu","\\mathrm{N}"),pa("\\Omicron","\\mathrm{O}"),pa("\\plusmn","\\pm"),pa("\\rarr","\\rightarrow"),pa("\\rArr","\\Rightarrow"),pa("\\Rarr","\\Rightarrow"),pa("\\real","\\Re"),pa("\\reals","\\mathbb{R}"),pa("\\Reals","\\mathbb{R}"),pa("\\Rho","\\mathrm{P}"),pa("\\sdot","\\cdot"),pa("\\sect","\\S"),pa("\\spades","\\spadesuit"),pa("\\sub","\\subset"),pa("\\sube","\\subseteq"),pa("\\supe","\\supseteq"),pa("\\Tau","\\mathrm{T}"),pa("\\thetasym","\\vartheta"),pa("\\weierp","\\wp"),pa("\\Zeta","\\mathrm{Z}"),pa("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),pa("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),pa("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits"),pa("\\blue","\\textcolor{##6495ed}{#1}"),pa("\\orange","\\textcolor{##ffa500}{#1}"),pa("\\pink","\\textcolor{##ff00af}{#1}"),pa("\\red","\\textcolor{##df0030}{#1}"),pa("\\green","\\textcolor{##28ae7b}{#1}"),pa("\\gray","\\textcolor{gray}{#1}"),pa("\\purple","\\textcolor{##9d38bd}{#1}"),pa("\\blueA","\\textcolor{##ccfaff}{#1}"),pa("\\blueB","\\textcolor{##80f6ff}{#1}"),pa("\\blueC","\\textcolor{##63d9ea}{#1}"),pa("\\blueD","\\textcolor{##11accd}{#1}"),pa("\\blueE","\\textcolor{##0c7f99}{#1}"),pa("\\tealA","\\textcolor{##94fff5}{#1}"),pa("\\tealB","\\textcolor{##26edd5}{#1}"),pa("\\tealC","\\textcolor{##01d1c1}{#1}"),pa("\\tealD","\\textcolor{##01a995}{#1}"),pa("\\tealE","\\textcolor{##208170}{#1}"),pa("\\greenA","\\textcolor{##b6ffb0}{#1}"),pa("\\greenB","\\textcolor{##8af281}{#1}"),pa("\\greenC","\\textcolor{##74cf70}{#1}"),pa("\\greenD","\\textcolor{##1fab54}{#1}"),pa("\\greenE","\\textcolor{##0d923f}{#1}"),pa("\\goldA","\\textcolor{##ffd0a9}{#1}"),pa("\\goldB","\\textcolor{##ffbb71}{#1}"),pa("\\goldC","\\textcolor{##ff9c39}{#1}"),pa("\\goldD","\\textcolor{##e07d10}{#1}"),pa("\\goldE","\\textcolor{##a75a05}{#1}"),pa("\\redA","\\textcolor{##fca9a9}{#1}"),pa("\\redB","\\textcolor{##ff8482}{#1}"),pa("\\redC","\\textcolor{##f9685d}{#1}"),pa("\\redD","\\textcolor{##e84d39}{#1}"),pa("\\redE","\\textcolor{##bc2612}{#1}"),pa("\\maroonA","\\textcolor{##ffbde0}{#1}"),pa("\\maroonB","\\textcolor{##ff92c6}{#1}"),pa("\\maroonC","\\textcolor{##ed5fa6}{#1}"),pa("\\maroonD","\\textcolor{##ca337c}{#1}"),pa("\\maroonE","\\textcolor{##9e034e}{#1}"),pa("\\purpleA","\\textcolor{##ddd7ff}{#1}"),pa("\\purpleB","\\textcolor{##c6b9fc}{#1}"),pa("\\purpleC","\\textcolor{##aa87ff}{#1}"),pa("\\purpleD","\\textcolor{##7854ab}{#1}"),pa("\\purpleE","\\textcolor{##543b78}{#1}"),pa("\\mintA","\\textcolor{##f5f9e8}{#1}"),pa("\\mintB","\\textcolor{##edf2df}{#1}"),pa("\\mintC","\\textcolor{##e0e5cc}{#1}"),pa("\\grayA","\\textcolor{##f6f7f7}{#1}"),pa("\\grayB","\\textcolor{##f0f1f2}{#1}"),pa("\\grayC","\\textcolor{##e3e5e6}{#1}"),pa("\\grayD","\\textcolor{##d6d8da}{#1}"),pa("\\grayE","\\textcolor{##babec2}{#1}"),pa("\\grayF","\\textcolor{##888d93}{#1}"),pa("\\grayG","\\textcolor{##626569}{#1}"),pa("\\grayH","\\textcolor{##3b3e40}{#1}"),pa("\\grayI","\\textcolor{##21242c}{#1}"),pa("\\kaBlue","\\textcolor{##314453}{#1}"),pa("\\kaGreen","\\textcolor{##71B307}{#1}");var ya={"\\relax":!0,"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},wa=function(){function t(t,e,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=e,this.expansionCount=0,this.feed(t),this.macros=new ma(ua,e.macros),this.mode=r,this.stack=[]}var e=t.prototype;return e.feed=function(t){this.lexer=new la(t,this.settings)},e.switchMode=function(t){this.mode=t},e.beginGroup=function(){this.macros.beginGroup()},e.endGroup=function(){this.macros.endGroup()},e.future=function(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]},e.popToken=function(){return this.future(),this.stack.pop()},e.pushToken=function(t){this.stack.push(t)},e.pushTokens=function(t){var e;(e=this.stack).push.apply(e,t)},e.consumeSpaces=function(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}},e.consumeArgs=function(t){for(var e=[],r=0;rthis.settings.maxExpand)throw new o("Too many expansions: infinite loop or need to increase maxExpand setting");var a=r.tokens;if(r.numArgs)for(var n=this.consumeArgs(r.numArgs),i=(a=a.slice()).length-1;i>=0;--i){var s=a[i];if("#"===s.text){if(0===i)throw new o("Incomplete placeholder at end of macro body",s);if("#"===(s=a[--i]).text)a.splice(i+1,1);else{if(!/^[1-9]$/.test(s.text))throw new o("Not a valid argument number",s);var h;(h=a).splice.apply(h,[i,2].concat(n[+s.text-1]))}}}return this.pushTokens(a),a},e.expandAfterFuture=function(){return this.expandOnce(),this.future()},e.expandNextToken=function(){for(;;){var t=this.expandOnce();if(t instanceof n){if("\\relax"!==t.text)return this.stack.pop();this.stack.pop()}}throw new Error},e.expandMacro=function(t){if(this.macros.get(t)){var e=[],r=this.stack.length;for(this.pushToken(new n(t));this.stack.length>r;){this.expandOnce()instanceof n&&e.push(this.stack.pop())}return e}},e.expandMacroAsText=function(t){var e=this.expandMacro(t);return e?e.map(function(t){return t.text}).join(""):e},e._getExpansion=function(t){var e=this.macros.get(t);if(null==e)return e;var r="function"==typeof e?e(this):e;if("string"==typeof r){var a=0;if(-1!==r.indexOf("#"))for(var n=r.replace(/##/g,"");-1!==n.indexOf("#"+(a+1));)++a;for(var i=new la(r,this.settings),o=[],s=i.lex();"EOF"!==s.text;)o.push(s),s=i.lex();return o.reverse(),{tokens:o,numArgs:a}}return r},e.isDefined=function(t){return this.macros.has(t)||ia.hasOwnProperty(t)||j.math.hasOwnProperty(t)||j.text.hasOwnProperty(t)||ya.hasOwnProperty(t)},t}(),ka={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030c":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030a":{text:"\\r",math:"\\mathring"},"\u030b":{text:"\\H"}},Sa={"\xe1":"a\u0301","\xe0":"a\u0300","\xe4":"a\u0308","\u01df":"a\u0308\u0304","\xe3":"a\u0303","\u0101":"a\u0304","\u0103":"a\u0306","\u1eaf":"a\u0306\u0301","\u1eb1":"a\u0306\u0300","\u1eb5":"a\u0306\u0303","\u01ce":"a\u030c","\xe2":"a\u0302","\u1ea5":"a\u0302\u0301","\u1ea7":"a\u0302\u0300","\u1eab":"a\u0302\u0303","\u0227":"a\u0307","\u01e1":"a\u0307\u0304","\xe5":"a\u030a","\u01fb":"a\u030a\u0301","\u1e03":"b\u0307","\u0107":"c\u0301","\u010d":"c\u030c","\u0109":"c\u0302","\u010b":"c\u0307","\u010f":"d\u030c","\u1e0b":"d\u0307","\xe9":"e\u0301","\xe8":"e\u0300","\xeb":"e\u0308","\u1ebd":"e\u0303","\u0113":"e\u0304","\u1e17":"e\u0304\u0301","\u1e15":"e\u0304\u0300","\u0115":"e\u0306","\u011b":"e\u030c","\xea":"e\u0302","\u1ebf":"e\u0302\u0301","\u1ec1":"e\u0302\u0300","\u1ec5":"e\u0302\u0303","\u0117":"e\u0307","\u1e1f":"f\u0307","\u01f5":"g\u0301","\u1e21":"g\u0304","\u011f":"g\u0306","\u01e7":"g\u030c","\u011d":"g\u0302","\u0121":"g\u0307","\u1e27":"h\u0308","\u021f":"h\u030c","\u0125":"h\u0302","\u1e23":"h\u0307","\xed":"i\u0301","\xec":"i\u0300","\xef":"i\u0308","\u1e2f":"i\u0308\u0301","\u0129":"i\u0303","\u012b":"i\u0304","\u012d":"i\u0306","\u01d0":"i\u030c","\xee":"i\u0302","\u01f0":"j\u030c","\u0135":"j\u0302","\u1e31":"k\u0301","\u01e9":"k\u030c","\u013a":"l\u0301","\u013e":"l\u030c","\u1e3f":"m\u0301","\u1e41":"m\u0307","\u0144":"n\u0301","\u01f9":"n\u0300","\xf1":"n\u0303","\u0148":"n\u030c","\u1e45":"n\u0307","\xf3":"o\u0301","\xf2":"o\u0300","\xf6":"o\u0308","\u022b":"o\u0308\u0304","\xf5":"o\u0303","\u1e4d":"o\u0303\u0301","\u1e4f":"o\u0303\u0308","\u022d":"o\u0303\u0304","\u014d":"o\u0304","\u1e53":"o\u0304\u0301","\u1e51":"o\u0304\u0300","\u014f":"o\u0306","\u01d2":"o\u030c","\xf4":"o\u0302","\u1ed1":"o\u0302\u0301","\u1ed3":"o\u0302\u0300","\u1ed7":"o\u0302\u0303","\u022f":"o\u0307","\u0231":"o\u0307\u0304","\u0151":"o\u030b","\u1e55":"p\u0301","\u1e57":"p\u0307","\u0155":"r\u0301","\u0159":"r\u030c","\u1e59":"r\u0307","\u015b":"s\u0301","\u1e65":"s\u0301\u0307","\u0161":"s\u030c","\u1e67":"s\u030c\u0307","\u015d":"s\u0302","\u1e61":"s\u0307","\u1e97":"t\u0308","\u0165":"t\u030c","\u1e6b":"t\u0307","\xfa":"u\u0301","\xf9":"u\u0300","\xfc":"u\u0308","\u01d8":"u\u0308\u0301","\u01dc":"u\u0308\u0300","\u01d6":"u\u0308\u0304","\u01da":"u\u0308\u030c","\u0169":"u\u0303","\u1e79":"u\u0303\u0301","\u016b":"u\u0304","\u1e7b":"u\u0304\u0308","\u016d":"u\u0306","\u01d4":"u\u030c","\xfb":"u\u0302","\u016f":"u\u030a","\u0171":"u\u030b","\u1e7d":"v\u0303","\u1e83":"w\u0301","\u1e81":"w\u0300","\u1e85":"w\u0308","\u0175":"w\u0302","\u1e87":"w\u0307","\u1e98":"w\u030a","\u1e8d":"x\u0308","\u1e8b":"x\u0307","\xfd":"y\u0301","\u1ef3":"y\u0300","\xff":"y\u0308","\u1ef9":"y\u0303","\u0233":"y\u0304","\u0177":"y\u0302","\u1e8f":"y\u0307","\u1e99":"y\u030a","\u017a":"z\u0301","\u017e":"z\u030c","\u1e91":"z\u0302","\u017c":"z\u0307","\xc1":"A\u0301","\xc0":"A\u0300","\xc4":"A\u0308","\u01de":"A\u0308\u0304","\xc3":"A\u0303","\u0100":"A\u0304","\u0102":"A\u0306","\u1eae":"A\u0306\u0301","\u1eb0":"A\u0306\u0300","\u1eb4":"A\u0306\u0303","\u01cd":"A\u030c","\xc2":"A\u0302","\u1ea4":"A\u0302\u0301","\u1ea6":"A\u0302\u0300","\u1eaa":"A\u0302\u0303","\u0226":"A\u0307","\u01e0":"A\u0307\u0304","\xc5":"A\u030a","\u01fa":"A\u030a\u0301","\u1e02":"B\u0307","\u0106":"C\u0301","\u010c":"C\u030c","\u0108":"C\u0302","\u010a":"C\u0307","\u010e":"D\u030c","\u1e0a":"D\u0307","\xc9":"E\u0301","\xc8":"E\u0300","\xcb":"E\u0308","\u1ebc":"E\u0303","\u0112":"E\u0304","\u1e16":"E\u0304\u0301","\u1e14":"E\u0304\u0300","\u0114":"E\u0306","\u011a":"E\u030c","\xca":"E\u0302","\u1ebe":"E\u0302\u0301","\u1ec0":"E\u0302\u0300","\u1ec4":"E\u0302\u0303","\u0116":"E\u0307","\u1e1e":"F\u0307","\u01f4":"G\u0301","\u1e20":"G\u0304","\u011e":"G\u0306","\u01e6":"G\u030c","\u011c":"G\u0302","\u0120":"G\u0307","\u1e26":"H\u0308","\u021e":"H\u030c","\u0124":"H\u0302","\u1e22":"H\u0307","\xcd":"I\u0301","\xcc":"I\u0300","\xcf":"I\u0308","\u1e2e":"I\u0308\u0301","\u0128":"I\u0303","\u012a":"I\u0304","\u012c":"I\u0306","\u01cf":"I\u030c","\xce":"I\u0302","\u0130":"I\u0307","\u0134":"J\u0302","\u1e30":"K\u0301","\u01e8":"K\u030c","\u0139":"L\u0301","\u013d":"L\u030c","\u1e3e":"M\u0301","\u1e40":"M\u0307","\u0143":"N\u0301","\u01f8":"N\u0300","\xd1":"N\u0303","\u0147":"N\u030c","\u1e44":"N\u0307","\xd3":"O\u0301","\xd2":"O\u0300","\xd6":"O\u0308","\u022a":"O\u0308\u0304","\xd5":"O\u0303","\u1e4c":"O\u0303\u0301","\u1e4e":"O\u0303\u0308","\u022c":"O\u0303\u0304","\u014c":"O\u0304","\u1e52":"O\u0304\u0301","\u1e50":"O\u0304\u0300","\u014e":"O\u0306","\u01d1":"O\u030c","\xd4":"O\u0302","\u1ed0":"O\u0302\u0301","\u1ed2":"O\u0302\u0300","\u1ed6":"O\u0302\u0303","\u022e":"O\u0307","\u0230":"O\u0307\u0304","\u0150":"O\u030b","\u1e54":"P\u0301","\u1e56":"P\u0307","\u0154":"R\u0301","\u0158":"R\u030c","\u1e58":"R\u0307","\u015a":"S\u0301","\u1e64":"S\u0301\u0307","\u0160":"S\u030c","\u1e66":"S\u030c\u0307","\u015c":"S\u0302","\u1e60":"S\u0307","\u0164":"T\u030c","\u1e6a":"T\u0307","\xda":"U\u0301","\xd9":"U\u0300","\xdc":"U\u0308","\u01d7":"U\u0308\u0301","\u01db":"U\u0308\u0300","\u01d5":"U\u0308\u0304","\u01d9":"U\u0308\u030c","\u0168":"U\u0303","\u1e78":"U\u0303\u0301","\u016a":"U\u0304","\u1e7a":"U\u0304\u0308","\u016c":"U\u0306","\u01d3":"U\u030c","\xdb":"U\u0302","\u016e":"U\u030a","\u0170":"U\u030b","\u1e7c":"V\u0303","\u1e82":"W\u0301","\u1e80":"W\u0300","\u1e84":"W\u0308","\u0174":"W\u0302","\u1e86":"W\u0307","\u1e8c":"X\u0308","\u1e8a":"X\u0307","\xdd":"Y\u0301","\u1ef2":"Y\u0300","\u0178":"Y\u0308","\u1ef8":"Y\u0303","\u0232":"Y\u0304","\u0176":"Y\u0302","\u1e8e":"Y\u0307","\u0179":"Z\u0301","\u017d":"Z\u030c","\u1e90":"Z\u0302","\u017b":"Z\u0307","\u03ac":"\u03b1\u0301","\u1f70":"\u03b1\u0300","\u1fb1":"\u03b1\u0304","\u1fb0":"\u03b1\u0306","\u03ad":"\u03b5\u0301","\u1f72":"\u03b5\u0300","\u03ae":"\u03b7\u0301","\u1f74":"\u03b7\u0300","\u03af":"\u03b9\u0301","\u1f76":"\u03b9\u0300","\u03ca":"\u03b9\u0308","\u0390":"\u03b9\u0308\u0301","\u1fd2":"\u03b9\u0308\u0300","\u1fd1":"\u03b9\u0304","\u1fd0":"\u03b9\u0306","\u03cc":"\u03bf\u0301","\u1f78":"\u03bf\u0300","\u03cd":"\u03c5\u0301","\u1f7a":"\u03c5\u0300","\u03cb":"\u03c5\u0308","\u03b0":"\u03c5\u0308\u0301","\u1fe2":"\u03c5\u0308\u0300","\u1fe1":"\u03c5\u0304","\u1fe0":"\u03c5\u0306","\u03ce":"\u03c9\u0301","\u1f7c":"\u03c9\u0300","\u038e":"\u03a5\u0301","\u1fea":"\u03a5\u0300","\u03ab":"\u03a5\u0308","\u1fe9":"\u03a5\u0304","\u1fe8":"\u03a5\u0306","\u038f":"\u03a9\u0301","\u1ffa":"\u03a9\u0300"},Ma=function(){function t(t,e){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new wa(t,e,this.mode),this.settings=e,this.leftrightDepth=0}var e=t.prototype;return e.expect=function(t,e){if(void 0===e&&(e=!0),this.fetch().text!==t)throw new o("Expected '"+t+"', got '"+this.fetch().text+"'",this.fetch());e&&this.consume()},e.consume=function(){this.nextToken=null},e.fetch=function(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken},e.switchMode=function(t){this.mode=t,this.gullet.switchMode(t)},e.parse=function(){this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");var t=this.parseExpression(!1);return this.expect("EOF"),this.gullet.endGroup(),t},e.parseExpression=function(e,r){for(var a=[];;){"math"===this.mode&&this.consumeSpaces();var n=this.fetch();if(-1!==t.endOfExpression.indexOf(n.text))break;if(r&&n.text===r)break;if(e&&ia[n.text]&&ia[n.text].infix)break;var i=this.parseAtom(r);if(!i)break;a.push(i)}return"text"===this.mode&&this.formLigatures(a),this.handleInfixNodes(a)},e.handleInfixNodes=function(t){for(var e,r=-1,a=0;a0&&!l||0===s&&!l&&"math"===this.mode,c=this.parseGroupOfType("argument to '"+t+"'",h,l,a,m);if(!c){if(l){i.push(null);continue}throw new o("Expected group after '"+t+"'",this.fetch())}(l?i:n).push(c)}return{args:n,optArgs:i}},e.parseGroupOfType=function(t,e,r,a,n){switch(e){case"color":return n&&this.consumeSpaces(),this.parseColorGroup(r);case"size":return n&&this.consumeSpaces(),this.parseSizeGroup(r);case"url":return this.parseUrlGroup(r,n);case"math":case"text":return this.parseGroup(t,r,a,void 0,e,n);case"hbox":var i=this.parseGroup(t,r,a,void 0,"text",n);return i?{type:"styling",mode:i.mode,body:[i],style:"text"}:i;case"raw":if(n&&this.consumeSpaces(),r&&"{"===this.fetch().text)return null;var s=this.parseStringGroup("raw",r,!0);if(s)return{type:"raw",mode:"text",string:s.text};throw new o("Expected raw group",this.fetch());case"original":case null:case void 0:return this.parseGroup(t,r,a,void 0,void 0,n);default:throw new o("Unknown group type as "+t,this.fetch())}},e.consumeSpaces=function(){for(;" "===this.fetch().text;)this.consume()},e.parseStringGroup=function(t,e,r){var a=e?"[":"{",n=e?"]":"}",i=this.fetch();if(i.text!==a){if(e)return null;if(r&&"EOF"!==i.text&&/[^{}[\]]/.test(i.text))return this.consume(),i}var s=this.mode;this.mode="text",this.expect(a);for(var h,l="",m=this.fetch(),c=0,u=m;(h=this.fetch()).text!==n||r&&c>0;){switch(h.text){case"EOF":throw new o("Unexpected end of input in "+t,m.range(u,l));case a:c++;break;case n:c--}l+=(u=h).text,this.consume()}return this.expect(n),this.mode=s,m.range(u,l)},e.parseRegexGroup=function(t,e){var r=this.mode;this.mode="text";for(var a,n=this.fetch(),i=n,s="";"EOF"!==(a=this.fetch()).text&&t.test(s+a.text);)s+=(i=a).text,this.consume();if(""===s)throw new o("Invalid "+e+": '"+n.text+"'",n);return this.mode=r,n.range(i,s)},e.parseColorGroup=function(t){var e=this.parseStringGroup("color",t);if(!e)return null;var r=/^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i.exec(e.text);if(!r)throw new o("Invalid color: '"+e.text+"'",e);var a=r[0];return/^[0-9a-f]{6}$/i.test(a)&&(a="#"+a),{type:"color-token",mode:this.mode,color:a}},e.parseSizeGroup=function(t){var e,r=!1;if(!(e=t||"{"===this.fetch().text?this.parseStringGroup("size",t):this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/,"size")))return null;t||0!==e.text.length||(e.text="0pt",r=!0);var a=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e.text);if(!a)throw new o("Invalid size: '"+e.text+"'",e);var n={number:+(a[1]+a[2]),unit:a[3]};if(!At(n))throw new o("Invalid unit: '"+n.unit+"'",e);return{type:"size",mode:this.mode,value:n,isBlank:r}},e.parseUrlGroup=function(t,e){this.gullet.lexer.setCatcode("%",13);var r=this.parseStringGroup("url",t,!0);if(this.gullet.lexer.setCatcode("%",14),!r)return null;var a=r.text.replace(/\\([#$%&~_^{}])/g,"$1");return{type:"url",mode:this.mode,url:a}},e.parseGroup=function(e,r,n,i,s,h){var l=this.mode;s&&this.switchMode(s),h&&this.consumeSpaces();var m,c=this.fetch(),u=c.text;if(r?"["===u:"{"===u||"\\begingroup"===u){this.consume();var p=t.endOfGroup[u];this.gullet.beginGroup();var d=this.parseExpression(!1,p),f=this.fetch();this.expect(p),this.gullet.endGroup(),m={type:"ordgroup",mode:this.mode,loc:a.range(c,f),body:d,semisimple:"\\begingroup"===u||void 0}}else if(r)m=null;else if(null==(m=this.parseFunction(i,e,n)||this.parseSymbol())&&"\\"===u[0]&&!ya.hasOwnProperty(u)){if(this.settings.throwOnError)throw new o("Undefined control sequence: "+u,c);m=this.formatUnsupportedCmd(u),this.consume()}return s&&this.switchMode(l),m},e.formLigatures=function(t){for(var e=t.length-1,r=0;r=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+e[0]+'" used in math mode',t);var h,l=j[this.mode][e].group,m=a.range(t);if(W.hasOwnProperty(l)){var c=l;h={type:"atom",mode:this.mode,family:c,loc:m,text:e}}else h={type:l,mode:this.mode,loc:m,text:e};i=h}else{if(!(e.charCodeAt(0)>=128))return null;this.settings.strict&&(M(e.charCodeAt(0))?"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+e[0]+'" used in math mode',t):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+e[0]+'" ('+e.charCodeAt(0)+")",t)),i={type:"textord",mode:"text",loc:a.range(t),text:e}}if(this.consume(),s)for(var u=0;u 0) { - this.requestPermissions(this.initialPermissions); - } - - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = this.messageQueue[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var message = _step.value; - this.postMessage(message.action, message.data, message.callback); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator["return"] != null) { - _iterator["return"](); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - this.messageQueue = []; - - if (this.loggingEnabled) { - console.log("onReadyData", data); - } - - this.activateThemes(data.activeThemeUrls || []); - - if (this.onReadyCallback) { - this.onReadyCallback(); - } - } - }, { - key: "getSelfComponentUUID", - value: function getSelfComponentUUID() { - return this.uuid; - } - }, { - key: "isRunningInDesktopApplication", - value: function isRunningInDesktopApplication() { - return this.environment === "desktop"; - } - }, { - key: "setComponentDataValueForKey", - value: function setComponentDataValueForKey(key, value) { - this.componentData[key] = value; - this.postMessage("set-component-data", { - componentData: this.componentData - }, function (data) {}); - } - }, { - key: "clearComponentData", - value: function clearComponentData() { - this.componentData = {}; - this.postMessage("set-component-data", { - componentData: this.componentData - }, function (data) {}); - } - }, { - key: "componentDataValueForKey", - value: function componentDataValueForKey(key) { - return this.componentData[key]; - } - }, { - key: "postMessage", - value: function postMessage(action, data, callback) { - if (!this.sessionKey) { - this.messageQueue.push({ - action: action, - data: data, - callback: callback - }); - return; - } - - var message = { - action: action, - data: data, - messageId: this.generateUUID(), - sessionKey: this.sessionKey, - api: "component" - }; - var sentMessage = JSON.parse(JSON.stringify(message)); - sentMessage.callback = callback; - this.sentMessages.push(sentMessage); // Mobile (React Native) requires a string for the postMessage API. - - if (this.isMobile) { - message = JSON.stringify(message); - } - - if (this.loggingEnabled) { - console.log("Posting message:", message); - } - - window.parent.postMessage(message, this.origin); - } - }, { - key: "setSize", - value: function setSize(type, width, height) { - this.postMessage("set-size", { - type: type, - width: width, - height: height - }, function (data) {}); - } - }, { - key: "requestPermissions", - value: function requestPermissions(permissions, callback) { - this.postMessage("request-permissions", { - permissions: permissions - }, function (data) { - callback && callback(); - }.bind(this)); - } - }, { - key: "streamItems", - value: function streamItems(contentTypes, callback) { - if (!Array.isArray(contentTypes)) { - contentTypes = [contentTypes]; - } - - this.postMessage("stream-items", { - content_types: contentTypes - }, function (data) { - callback(data.items); - }.bind(this)); - } - }, { - key: "streamContextItem", - value: function streamContextItem(callback) { - var _this2 = this; - - this.postMessage("stream-context-item", null, function (data) { - var item = data.item; - /* - If this is a new context item than the context item the component was currently entertaining, - we want to immediately commit any pending saves, because if you send the new context item to the - component before it has commited its presave, it will end up first replacing the UI with new context item, - and when the debouncer executes to read the component UI, it will be reading the new UI for the previous item. - */ - - var isNewItem = !_this2.lastStreamedItem || _this2.lastStreamedItem.uuid !== item.uuid; - - if (isNewItem && _this2.pendingSaveTimeout) { - clearTimeout(_this2.pendingSaveTimeout); - - _this2._performSavingOfItems(_this2.pendingSaveParams); - - _this2.pendingSaveTimeout = null; - _this2.pendingSaveParams = null; - } - - _this2.lastStreamedItem = item; - callback(_this2.lastStreamedItem); - }); - } - }, { - key: "selectItem", - value: function selectItem(item) { - this.postMessage("select-item", { - item: this.jsonObjectForItem(item) - }); - } - }, { - key: "createItem", - value: function createItem(item, callback) { - this.postMessage("create-item", { - item: this.jsonObjectForItem(item) - }, function (data) { - var item = data.item; // A previous version of the SN app had an issue where the item in the reply to create-item - // would be nested inside "items" and not "item". So handle both cases here. - - if (!item && data.items && data.items.length > 0) { - item = data.items[0]; - } - - this.associateItem(item); - callback && callback(item); - }.bind(this)); - } - }, { - key: "createItems", - value: function createItems(items, callback) { - var _this3 = this; - - var mapped = items.map(function (item) { - return _this3.jsonObjectForItem(item); - }); - this.postMessage("create-items", { - items: mapped - }, function (data) { - callback && callback(data.items); - }.bind(this)); - } - }, { - key: "associateItem", - value: function associateItem(item) { - this.postMessage("associate-item", { - item: this.jsonObjectForItem(item) - }); - } - }, { - key: "deassociateItem", - value: function deassociateItem(item) { - this.postMessage("deassociate-item", { - item: this.jsonObjectForItem(item) - }); - } - }, { - key: "clearSelection", - value: function clearSelection() { - this.postMessage("clear-selection", { - content_type: "Tag" - }); - } - }, { - key: "deleteItem", - value: function deleteItem(item, callback) { - this.deleteItems([item], callback); - } - }, { - key: "deleteItems", - value: function deleteItems(items, callback) { - var params = { - items: items.map(function (item) { - return this.jsonObjectForItem(item); - }.bind(this)) - }; - this.postMessage("delete-items", params, function (data) { - callback && callback(data); - }); - } - }, { - key: "sendCustomEvent", - value: function sendCustomEvent(action, data, callback) { - this.postMessage(action, data, function (data) { - callback && callback(data); - }.bind(this)); - } - }, { - key: "saveItem", - value: function saveItem(item, callback) { - var skipDebouncer = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - this.saveItems([item], callback, skipDebouncer); - } - /* Presave allows clients to perform any actions last second before the save actually occurs (like setting previews). - Saves debounce by default, so if a client needs to compute a property on an item before saving, it's best to - hook into the debounce cycle so that clients don't have to implement their own debouncing. - */ - - }, { - key: "saveItemWithPresave", - value: function saveItemWithPresave(item, presave, callback) { - this.saveItemsWithPresave([item], presave, callback); - } - }, { - key: "saveItemsWithPresave", - value: function saveItemsWithPresave(items, presave, callback) { - this.saveItems(items, callback, false, presave); - } - }, { - key: "_performSavingOfItems", - value: function _performSavingOfItems(_ref) { - var items = _ref.items, - presave = _ref.presave, - callback = _ref.callback; - // presave block allows client to gain the benefit of performing something in the debounce cycle. - presave && presave(); - var mappedItems = []; - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; - - try { - for (var _iterator2 = items[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var item = _step2.value; - mappedItems.push(this.jsonObjectForItem(item)); - } - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) { - _iterator2["return"](); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } - } - } - - this.postMessage("save-items", { - items: mappedItems - }, function (data) { - callback && callback(); - }); - } - /* - skipDebouncer allows saves to go through right away rather than waiting for timeout. - This should be used when saving items via other means besides keystrokes. - */ - - }, { - key: "saveItems", - value: function saveItems(items, callback) { - var _this4 = this; - - var skipDebouncer = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - var presave = arguments.length > 3 ? arguments[3] : undefined; - - // We need to make sure that when we clear a pending save timeout, - // we carry over those pending items into the new save. - if (!this.pendingSaveItems) { - this.pendingSaveItems = []; - } - - if (this.coallesedSaving == true && !skipDebouncer) { - if (this.pendingSaveTimeout) { - clearTimeout(this.pendingSaveTimeout); - } - - var incomingIds = items.map(function (item) { - return item.uuid; - }); // Replace any existing save items with incoming values - // Only keep items here who are not in incomingIds - - var preexistingItems = this.pendingSaveItems.filter(function (item) { - return !incomingIds.includes(item.uuid); - }); // Add new items, now that we've made sure it's cleared of incoming items. - - this.pendingSaveItems = preexistingItems.concat(items); // We'll potentially need to commit early if stream-context-item message comes in - - this.pendingSaveParams = { - items: this.pendingSaveItems, - presave: presave, - callback: callback - }; - this.pendingSaveTimeout = setTimeout(function () { - _this4._performSavingOfItems(_this4.pendingSaveParams); - - _this4.pendingSaveItems = []; - _this4.pendingSaveTimeout = null; - _this4.pendingSaveParams = null; - }, this.coallesedSavingDelay); - } else { - this._performSavingOfItems({ - items: items, - presave: presave, - callback: callback - }); - } - } - }, { - key: "jsonObjectForItem", - value: function jsonObjectForItem(item) { - var copy = Object.assign({}, item); - copy.children = null; - copy.parent = null; - return copy; - } - }, { - key: "getItemAppDataValue", - value: function getItemAppDataValue(item, key) { - var AppDomain = "org.standardnotes.sn"; - var data = item.content.appData && item.content.appData[AppDomain]; - - if (data) { - return data[key]; - } else { - return null; - } - } - /* Themes */ - - }, { - key: "activateThemes", - value: function activateThemes(incomingUrls) { - if (this.loggingEnabled) { - console.log("Incoming themes", incomingUrls); - } - - if (this.activeThemes.sort().toString() == incomingUrls.sort().toString()) { - // incoming are same as active, do nothing - return; - } - - var themesToActivate = incomingUrls || []; - var themesToDeactivate = []; - var _iteratorNormalCompletion3 = true; - var _didIteratorError3 = false; - var _iteratorError3 = undefined; - - try { - for (var _iterator3 = this.activeThemes[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { - var activeUrl = _step3.value; - - if (!incomingUrls.includes(activeUrl)) { - // active not present in incoming, deactivate it - themesToDeactivate.push(activeUrl); - } else { - // already present in active themes, remove it from themesToActivate - themesToActivate = themesToActivate.filter(function (candidate) { - return candidate != activeUrl; - }); - } - } - } catch (err) { - _didIteratorError3 = true; - _iteratorError3 = err; - } finally { - try { - if (!_iteratorNormalCompletion3 && _iterator3["return"] != null) { - _iterator3["return"](); - } - } finally { - if (_didIteratorError3) { - throw _iteratorError3; - } - } - } - - if (this.loggingEnabled) { - console.log("Deactivating themes:", themesToDeactivate); - console.log("Activating themes:", themesToActivate); - } - - for (var _i = 0, _themesToDeactivate = themesToDeactivate; _i < _themesToDeactivate.length; _i++) { - var theme = _themesToDeactivate[_i]; - this.deactivateTheme(theme); - } - - this.activeThemes = incomingUrls; - var _iteratorNormalCompletion4 = true; - var _didIteratorError4 = false; - var _iteratorError4 = undefined; - - try { - for (var _iterator4 = themesToActivate[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { - var url = _step4.value; - - if (!url) { - continue; - } - - var link = document.createElement("link"); - link.id = btoa(url); - link.href = url; - link.type = "text/css"; - link.rel = "stylesheet"; - link.media = "screen,print"; - link.className = "custom-theme"; - document.getElementsByTagName("head")[0].appendChild(link); - } - } catch (err) { - _didIteratorError4 = true; - _iteratorError4 = err; - } finally { - try { - if (!_iteratorNormalCompletion4 && _iterator4["return"] != null) { - _iterator4["return"](); - } - } finally { - if (_didIteratorError4) { - throw _iteratorError4; - } - } - } - } - }, { - key: "themeElementForUrl", - value: function themeElementForUrl(url) { - var elements = Array.from(document.getElementsByClassName("custom-theme")).slice(); - return elements.find(function (element) { - // We used to search here by `href`, but on desktop, with local file:// urls, that didn't work for some reason. - return element.id == btoa(url); - }); - } - }, { - key: "deactivateTheme", - value: function deactivateTheme(url) { - var element = this.themeElementForUrl(url); - - if (element) { - element.disabled = true; - element.parentNode.removeChild(element); - } - } - /* Theme caching is currently disabled. Might be enabled in the future if neccessary. */ - - /* - activateCachedThemes() { - let themes = this.getCachedThemeUrls(); - let writeToCache = false; - if(this.loggingEnabled) { console.log("Activating cached themes", themes); } - this.activateThemes(themes, writeToCache); - } - cacheThemeUrls(urls) { - if(this.loggingEnabled) { console.log("Caching theme urls", urls); } - localStorage.setItem("cachedThemeUrls", JSON.stringify(urls)); - } - decacheThemeUrls() { - localStorage.removeItem("cachedThemeUrls"); - } - getCachedThemeUrls() { - let urls = localStorage.getItem("cachedThemeUrls"); - if(urls) { - return JSON.parse(urls); - } else { - return []; - } - } - */ - - /* Utilities */ - - }, { - key: "generateUUID", - value: function generateUUID() { - var crypto = window.crypto || window.msCrypto; - - if (crypto) { - var buf = new Uint32Array(4); - crypto.getRandomValues(buf); - var idx = -1; - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - idx++; - var r = buf[idx >> 3] >> idx % 8 * 4 & 15; - var v = c == 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); - } else { - var d = new Date().getTime(); - - if (window.performance && typeof window.performance.now === "function") { - d += performance.now(); //use high-precision timer if available - } - - var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = (d + Math.random() * 16) % 16 | 0; - d = Math.floor(d / 16); - return (c == 'x' ? r : r & 0x3 | 0x8).toString(16); - }); - return uuid; - } - } - }]); - - return ComponentManager; -}(); - -if (typeof module != "undefined" && typeof module.exports != "undefined") { - module.exports = ComponentManager; -} - -if (window) { - window.ComponentManager = ComponentManager; -} -//# sourceMappingURL=dist.js.map -;(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i 1 && arguments[1] !== undefined ? arguments[1] : 90; - - if (string.length <= limit) { - return string; - } else { - return string.substring(0, limit) + "..."; - } - } - - function save() { - componentManager.saveItem(workingNote); - } - - if (workingNote) { - // Be sure to capture this object as a variable, as workingNote may be reassigned in `streamContextItem`, so by the time - // you modify it in the presave block, it may not be the same object anymore, so the presave values will not be applied to - // the right object, and it will save incorrectly. - var note = workingNote; - componentManager.saveItemWithPresave(note, function () { - window.upmath.updateText(); - var html = window.upmath.getHTML(); - var strippedHtml = truncateString(strip(html)); - note.content.preview_plain = strippedHtml; - note.content.preview_html = null; - note.content.text = text; - }); - } - }); // Tab handler - - editor.addEventListener('keydown', function (event) { - if (!event.shiftKey && event.which == 9) { - event.preventDefault(); - console.log(document); // Using document.execCommand gives us undo support - - if (!document.execCommand("insertText", false, "\t")) { - // document.execCommand works great on Chrome/Safari but not Firefox - var start = this.selectionStart; - var end = this.selectionEnd; - var spaces = " "; // Insert 4 spaces - - this.value = this.value.substring(0, start) + spaces + this.value.substring(end); // Place cursor 4 spaces away from where - // the tab key was pressed - - this.selectionStart = this.selectionEnd = start + 4; - } - } - }); -}); -; -/** -* Markdown and LaTeX Editor -* -* (c) Roman Parpalak, 2016-2018 -*/ - -(function (document, window) { - 'use strict'; - - var defaults = { - html: true, - // Enable HTML tags in source - xhtmlOut: false, - // Use '/' to close single tags (
    ) - breaks: false, - // Convert '\n' in paragraphs into
    - langPrefix: 'language-', - // CSS language prefix for fenced blocks - linkify: true, - // autoconvert URL-like texts to links - typographer: true, - // Enable smartypants and other sweet transforms - quotes: '""\'\'', - // option for tex plugin - _habr: { - protocol: '' - }, - // no protocol for habrahabr markup - // options below are for demo only - _highlight: true, - _strict: false - }; - - function domSetResultView(val) { - var eNode = document.body; - ['result-as-html', 'result-as-htmltex', 'result-as-habr', 'result-as-src', 'result-as-debug'].forEach(function (className) { - if (eNode.classList) { - eNode.classList.remove(className); - } else { - eNode.className = eNode.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' '); - } - }); - - if (eNode.classList) { - eNode.classList.add('result-as-' + val); - } else { - eNode.className += ' ' + 'result-as-' + val; - } - } - - function ParserCollection(defaults, imageLoader, markdownit, setResultView, sourceGetter, sourceSetter, domSetPreviewHTML, domSetHighlightedContent, updateCallback) { - var _mdPreview = markdownit(defaults).use(markdownitS2Tex).use(markdownitSub).use(markdownitSup); - - var _mdHtmlAndImages = markdownit(defaults).use(markdownitS2Tex).use(markdownitSub).use(markdownitSup); - - var _mdHtmlAndTex = markdownit(defaults).use(markdownitS2Tex, { - noreplace: true - }).use(markdownitSub).use(markdownitSup); - - var _mdHtmlHabrAndImages = markdownit(defaults).use(markdownitS2Tex, defaults._habr).use(markdownitSub).use(markdownitSup); - - var _mdMdAndImages = markdownit('zero').use(markdownitS2Tex); - /** - * Detects if the paragraph contains the only formula. - * Parser gives the class 'tex-block' to such formulas. - * - * @param tokens - * @param idx - * @returns {boolean} - */ - - - function hasBlockFormula(tokens, idx) { - if (idx >= 0 && tokens[idx] && tokens[idx].children) { - for (var i = tokens[idx].children.length; i--;) { - if (tokens[idx].children[i].tag === 'tex-block') { - return true; - } - } - } - - return false; - } - /** - * Inject line numbers for sync scroll. Notes: - * - We track only headings and paragraphs on first level. That's enough. - * - Footnotes content causes jumps. Level limit filter it automatically. - * - * @param tokens - * @param idx - * @param options - * @param env - * @param self - */ - - - function injectLineNumbersAndCentering(tokens, idx, options, env, self) { - var line; - - if (tokens[idx].map && tokens[idx].level === 0) { - line = tokens[idx].map[0]; - tokens[idx].attrPush(['class', 'line']); - tokens[idx].attrPush(['data-line', line + '']); - } // Hack (maybe it is better to use block renderers?) - - - if (hasBlockFormula(tokens, idx + 1)) { - tokens[idx].attrPush(['align', 'center']); - tokens[idx].attrPush(['style', 'text-align: center;']); - } - - return self.renderToken(tokens, idx, options, env, self); - } // Habrahabr does not ignore

    tags and meanwhile uses whitespaces - - - function habrHeading(tokens, idx, options, env, self) { - var prefix = ""; - - if (idx > 0 && tokens[idx - 1].type === 'paragraph_close' && !hasBlockFormula(tokens, idx - 2)) { - prefix = "\n"; - } - - return prefix + self.renderToken(tokens, idx, options, env, self); - } - - function habrParagraphOpen(tokens, idx, options, env, self) { - var prefix = ""; - - if (idx > 0 && tokens[idx - 1].type === 'paragraph_close' && !hasBlockFormula(tokens, idx - 2)) { - prefix = "\n"; - } - - return prefix; //+ self.renderToken(tokens, idx, options, env, self); - } - - function habrParagraphClose(tokens, idx, options, env, self) { - var prefix = "\n"; - return prefix; //+ self.renderToken(tokens, idx, options, env, self); - } - - function injectCentering(tokens, idx, options, env, self) { - // Hack (maybe it is better to use block renderers?) - if (hasBlockFormula(tokens, idx + 1)) { - tokens[idx].attrPush(['align', 'center']); - tokens[idx].attrPush(['style', 'text-align: center;']); - } - - return self.renderToken(tokens, idx, options, env, self); - } - - _mdPreview.renderer.rules.paragraph_open = _mdPreview.renderer.rules.heading_open = injectLineNumbersAndCentering; - _mdHtmlAndImages.renderer.rules.paragraph_open = _mdHtmlAndImages.renderer.rules.heading_open = injectCentering; - _mdHtmlHabrAndImages.renderer.rules.heading_open = habrHeading; - _mdHtmlHabrAndImages.renderer.rules.paragraph_open = habrParagraphOpen; - _mdHtmlHabrAndImages.renderer.rules.paragraph_close = habrParagraphClose; // A copy of Markdown-it original backticks parser. - // We want to prevent from parsing dollars inside backticks as TeX delimeters (`$$`). - // But we do not want HTML in result. - - _mdMdAndImages.inline.ruler.before('backticks', 'backticks2', function (state, silent) { - var start, - max, - marker, - matchStart, - matchEnd, - token, - pos = state.pos, - ch = state.src.charCodeAt(pos); - - if (ch !== 0x60 - /* ` */ - ) { - return false; - } - - start = pos; - pos++; - max = state.posMax; - - while (pos < max && state.src.charCodeAt(pos) === 0x60 - /* ` */ - ) { - pos++; - } - - marker = state.src.slice(start, pos); - matchStart = matchEnd = pos; - - while ((matchStart = state.src.indexOf('`', matchEnd)) !== -1) { - matchEnd = matchStart + 1; - - while (matchEnd < max && state.src.charCodeAt(matchEnd) === 0x60 - /* ` */ - ) { - matchEnd++; - } - - if (matchEnd - matchStart === marker.length) { - if (!silent) { - token = state.push('backticks2_inline', 'code', 0); // <-- The change - - token.markup = marker; - token.content = state.src.slice(pos, matchStart); - } - - state.pos = matchEnd; - return true; - } - } - - if (!silent) { - state.pending += marker; - } - - state.pos += marker.length; - return true; - }); - - _mdMdAndImages.renderer.rules.backticks2_inline = function (tokens, idx - /*, options, env, slf*/ - ) { - var token = tokens[idx]; - return token.markup + token.content + token.markup; - }; // Prevents HTML escaping. - - - _mdMdAndImages.renderer.rules.text = function (tokens, idx - /*, options, env */ - ) { - return tokens[idx].content; - }; - /** - * Habrahabr "source" tag - * - * @param tokens - * @param idx - * @param options - * @param env - * @param self - * @returns {string} - */ - - - _mdHtmlHabrAndImages.renderer.rules.fence = function (tokens, idx, options, env, self) { - var token = tokens[idx], - info = token.info ? _mdHtmlHabrAndImages.utils.unescapeAll(token.info).trim() : '', - langName = '', - highlighted; - - if (info) { - langName = info.split(/\s+/g)[0]; - token.attrPush(['lang', langName]); - } - - if (options.highlight) { - highlighted = options.highlight(token.content, langName) || _mdHtmlHabrAndImages.utils.escapeHtml(token.content); - } else { - highlighted = _mdHtmlHabrAndImages.utils.escapeHtml(token.content); - } - - return '\n' + highlighted + '\n'; - }; - - function getHabraMarkup(source) { - var html = _mdHtmlHabrAndImages.render(source); - - html = html.replace(' lastSrcElemPos ? srcScrollHeight - allowedHeight : lastSrcElemPos); - mapResult.push(document.querySelector('.result-html').scrollHeight); - return [mapSrc, mapResult]; - } - - documentReady(function () { - var eTextarea = document.getElementById('editor-source'), - eResultHtml = document.getElementsByClassName('result-html')[0]; - var recalcHeight = debounce(function () { - decorator.recalcHeight(); - }, 100); - var scrollMap = new ScrollMap(domFindScrollMarks); - var parserCollection = new ParserCollection(defaults, new ImageLoader(new ImagePreloader(), location.protocol === 'https:' ? 'https:' : 'http:'), window.markdownit, domSetResultView, function domGetSource() { - return eTextarea.value; - }, function domSetSource(text) { - eTextarea.value = text; - decorator.update(); - }, domSetPreviewHTML, domSetHighlightedContent, function (source) { - // reset lines mapping cache on content update - scrollMap.reset(); - }); - parserCollection.updateResult(); // start the decorator - - var decorator = new TextareaDecorator(eTextarea, mdParser); // .source has been changed after TextareaDecorator call - - var eNodeSource = document.getElementsByClassName('source')[0]; - var syncScroll = new SyncScroll(scrollMap, new Animator(function () { - return eNodeSource.scrollTop; - }, function (y) { - eNodeSource.scrollTop = y; - }), new Animator(function () { - return eResultHtml.scrollTop; - }, function (y) { - eResultHtml.scrollTop = y; - }), eNodeSource, eResultHtml, document.querySelector('[id^="container-block"]')); // Sync scroll listeners - // var updateText = debounce(parserCollection.updateResult, 240, {maxWait: 3000}); - // We'll update text on our own - - var _updateText = parserCollection.updateResult; // eTextarea.addEventListener('keyup', updateText); - // eTextarea.addEventListener('paste', updateText); - // eTextarea.addEventListener('cut', updateText); - // eTextarea.addEventListener('mouseup', updateText); - - eTextarea.addEventListener('touchstart', syncScroll.switchScrollToSrc); - eTextarea.addEventListener('mouseover', syncScroll.switchScrollToSrc); - eResultHtml.addEventListener('touchstart', syncScroll.switchScrollToResult); - eResultHtml.addEventListener('mouseover', syncScroll.switchScrollToResult); - syncScroll.switchScrollToSrc(); - Array.prototype.forEach.call(document.getElementsByClassName('control-item'), function (eNode, index) { - eNode.addEventListener('click', function () { - var view = this.getAttribute('data-result-as'); - - if (!view) { - return; - } - - parserCollection.switchView(view); - - if (view !== 'preview') { - // Selecting all block content. - var contentBlocks = document.getElementsByClassName('result-src-content'); - - if (contentBlocks.length) { - setTimeout(function () { - selectText(contentBlocks[0]); - }, 0); - } - } - }); - }); // Interface element listeners - - document.querySelector('._download-source').addEventListener('click', function () { - var blob = new Blob([parserCollection.getSource()], { - type: 'text/markdown;charset=utf-8' - }); - saveAs(blob, 'source.md'); - }); - document.querySelector('._download-result').addEventListener('click', function () { - var blob = new Blob([parserCollection.getDisplayedResult()], { - type: 'text/html;charset=utf-8' - }); - saveAs(blob, parserCollection.getDisplayedResultFilename()); - }); - document.querySelector('._upload-source').addEventListener('click', function () { - var eNode = document.getElementById('fileElem'); // Fire click on file input - - (eNode.onclick || eNode.click || function () {}).call(eNode); - }); - document.getElementById('fileElem').addEventListener('change', function () { - // A file has been chosen - if (!this.files || !FileReader) { - return; - } - - var reader = new FileReader(), - fileInput = this; - - reader.onload = function () { - parserCollection.setSource(this.result); - fileInput.value = fileInput.defaultValue; - }; - - reader.readAsText(this.files[0]); - }); - - (function () { - var eSlider = document.querySelector('.slider'), - dragSlider = new Draggabilly(eSlider, { - axis: 'x' - }), - sourceBlock = document.getElementById('source-block'), - resultBLock = document.getElementById('result-block'), - windowWidth; - - function setWidth(percent) { - sourceBlock.style.width = 'calc(' + percent + '% - 3px)'; - resultBLock.style.width = 'calc(' + (100 - percent) + '% - 3px)'; - scrollMap.reset(); - } - - eSlider.addEventListener('dblclick', function () { - setWidth(50); - }); - dragSlider.on('dragStart', function (event, pointer, moveVector) { - windowWidth = window.innerWidth; - }); - dragSlider.on('dragMove', function (event, pointer, moveVector) { - setWidth(100.0 * pointer.pageX / windowWidth); - }); - })(); - - window.upmath = { - updateText: function updateText() { - _updateText(); - - decorator.recalcHeight(); - decorator.update(); - }, - getHTML: function getHTML() { - var result = document.getElementsByClassName('result-html'); - return eResultHtml.innerHTML; - } - }; // Need to recalculate line positions on window resize - - window.addEventListener('resize', function () { - scrollMap.reset(); - recalcHeight(); - }); - }); -})(document, window); - -; -/** -* Renders LaTeX formulae via KaTeX. -* -* Previously connects service to the markdown-it renderer. -* -* Inspired by -* -* @copyright 2015 Roman Parpalak -*/ - -(function (w) { - 'use strict'; - - function scanDelims(state, start) { - var pos = state.pos, - lastChar, - nextChar, - count, - isLastWhiteSpace, - isLastPunctChar, - isNextWhiteSpace, - isNextPunctChar, - can_open = true, - can_close = true, - max = state.posMax, - isWhiteSpace = state.md.utils.isWhiteSpace, - isPunctChar = state.md.utils.isPunctChar, - isMdAsciiPunct = state.md.utils.isMdAsciiPunct; // treat beginning of the line as a whitespace - - lastChar = start > 0 ? state.src.charCodeAt(start - 1) : 0x20; - - if (pos >= max) { - can_open = false; - } - - count = pos - start; // treat end of the line as a whitespace - - nextChar = pos < max ? state.src.charCodeAt(pos) : 0x20; - isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar)); - isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar)); - isLastWhiteSpace = isWhiteSpace(lastChar); - isNextWhiteSpace = isWhiteSpace(nextChar); - - if (isNextWhiteSpace) { - can_open = false; - } else if (isNextPunctChar) { - if (!(isLastWhiteSpace || isLastPunctChar)) { - can_open = false; - } - } - - if (isLastWhiteSpace) { - can_close = false; - } else if (isLastPunctChar) { - if (!(isNextWhiteSpace || isNextPunctChar)) { - can_close = false; - } - } - - return { - can_open: can_open, - can_close: can_close, - delims: count - }; - } - - function makeMath_inline(open, close) { - return function math_inline(state, silent) { - var startCount, - found, - res, - token, - closeDelim, - max = state.posMax, - start = state.pos, - openDelim = state.src.slice(start, start + open.length); - - if (openDelim !== open) { - return false; - } - - if (silent) { - return false; - } // Don’t run any pairs in validation mode - - - res = scanDelims(state, start + open.length); - startCount = res.delims; - - if (!res.can_open) { - state.pos += startCount; // Earlier we checked !silent, but this implementation does not need it - - state.pending += state.src.slice(start, state.pos); - return true; - } - - state.pos = start + open.length; - - while (state.pos < max) { - closeDelim = state.src.slice(state.pos, state.pos + close.length); - - if (closeDelim === close) { - res = scanDelims(state, state.pos + close.length); - - if (res.can_close) { - found = true; - break; - } - } - - state.md.inline.skipToken(state); - } - - if (!found) { - // Parser failed to find ending tag, so it is not a valid math - state.pos = start; - return false; - } // Found! - // Detecting single formula with a line number - - - var m = false, - tag = 'tex-inline'; - - if (start == 0) { - var srcEnd = state.src.substring(state.pos + close.length); - m = srcEnd.match(/^\s*(\([ \t]*\S+[ \t]*\))\s*$/); - - if (m || srcEnd == '') { - tag = 'tex-block'; - } - } - - if (m) { - token = state.push('math_number', 'tex-number', 0); - token.content = m[1]; - token.markup = '()'; - } - - state.posMax = state.pos; - state.pos = start + close.length; // Earlier we checked !silent, but this implementation does not need it - - token = state.push('math_inline', tag, 0); - token.content = state.src.slice(state.pos, state.posMax); - token.markup = open; - state.pos = m ? max : state.posMax + close.length; - state.posMax = max; - return true; - }; - } - - w.markdownitS2Tex = function math_plugin(md, options) { - // Default options - options = _typeof(options) === 'object' ? options : {}; - var inlineOpen = options.inlineOpen || '$$', - inlineClose = options.inlineClose || '$$'; - var math_inline = makeMath_inline(inlineOpen, inlineClose); - md.inline.ruler.before('escape', 'math_inline', math_inline); - - md.renderer.rules.math_inline = function () { - return function (tokens, idx) { - var formula = tokens[idx].content; - - if (options.noreplace) { - var str = inlineOpen + formula + inlineClose; - return str.replace(/&/g, '&').replace(/>/g, '>').replace(/' + tokens[idx].content + ''; - }; - }; -})(window); - -; -/** -* Markdown parser with latex extension -* -* (c) Roman Parpalak, 2015 -* Based on code by Colin Kuebler, 2012 -*/ - -function MarkdownParser(i) { - /* INIT */ - var api = this; // variables used internally - - i = i ? 'i' : ''; - var parseInlineRE = null, - parseBlockRE = null, - ruleMap = {}, - ruleBlockMap = {}, - ruleInlineMap = {}, - runInBlocks = {}, - markers = {}; - var subRules, - subRulesMap = {}, - subRulesRE = {}; - - function addBlockRule(s, rule) { - var re = new RegExp('^(' + s + ')$', i); - ruleMap[rule] = re; - ruleBlockMap[rule] = re; - } - - function addInlineRule(s, rule) { - var re = new RegExp('^(' + s + ')$', i); - ruleMap[rule] = re; - ruleInlineMap[rule] = re; - } - - function addSubruleMap(s, rule, block) { - if (!subRulesMap[block]) { - subRulesMap[block] = {}; - } - - subRulesMap[block][rule] = new RegExp('^(' + s + ')$', i); - } - - api.addInlineRules = function (rules) { - var ruleSrc = []; - - for (var rule in rules) { - if (rules.hasOwnProperty(rule)) { - var s = rules[rule].source; - ruleSrc.push(s); - addInlineRule(s, rule); - } - } - - parseInlineRE = new RegExp('(' + ruleSrc.join('|') + ')', i); - return this; - }; - - api.addSubRules = function (rules) { - subRules = rules; - - for (var block in rules) { - if (rules.hasOwnProperty(block)) { - var rules2 = rules[block], - p = []; - - for (var rule in rules2) { - if (rules2.hasOwnProperty(rule)) { - var s = rules2[rule].source; - addSubruleMap(s, rule, block); - p.push(s); - } - } - - subRulesRE[block] = new RegExp('(' + p.join('|') + ')', i); - } - } - - return this; - }; - - api.addBlockRules = function (rules) { - var ruleArray = []; - - for (var rule in rules) { - if (rules.hasOwnProperty(rule)) { - var s = rules[rule].source; - ruleArray.push(s); - addBlockRule(s, rule); - } - } - - parseBlockRE = new RegExp('(' + ruleArray.join('|') + ')', i); - return this; - }; - - api.addRunIn = function (rules) { - runInBlocks = rules; - return this; - }; - - api.addMarkers = function (m) { - markers = m; - return this; - }; - - function tokenizeBlock(block, className, lineNum, result) { - var re = parseInlineRE; // Process specific rules for the given block type className - - if (className in subRules) { - if (subRules[className] === null) { - result.push({ - token: block, - block: className, - line: lineNum - }); - return; - } else { - re = subRulesRE[className]; - } - } // Token for a block marker - - - if (typeof markers[className] !== 'undefined') { - var matches = block.match(markers[className]); - - if (matches[2]) { - result.push({ - token: matches[1], - block: className + '-mark', - line: lineNum - }); - block = matches[2]; - lineNum = 0; // Write block position only once - } - } - - var items = block.split(re), - j = 0, - token; - - for (; j < items.length; j++) { - token = items[j]; - - if (token != '') { - result.push({ - token: token, - block: className, - line: lineNum - }); - lineNum = 0; // Write block position only once - } - } - } - - api.tokenize = function (input) { - input = input.replace('\r', ''); - var result = [], - classNames = [], - blocks = input.split(parseBlockRE), - blockNum = blocks.length, - i, - prevIndex = 0, - prevBlockClass; // Merge blocks separated by line breaks - - for (i = 0; i < blockNum; i++) { - if (blocks[i] === '') { - continue; - } - - var className = identify(blocks[i], ruleBlockMap); - - if (prevIndex > 0 && className in runInBlocks) { - var allowedPrevBlocks = runInBlocks[className].allowedBlocks; - - if (allowedPrevBlocks && allowedPrevBlocks.indexOf(prevBlockClass) >= 0) { - blocks[prevIndex] += blocks[i]; - blocks[i] = ''; - classNames[i] = ''; - continue; - } - } - - classNames[i] = className; - prevIndex = i; - prevBlockClass = className; - } - - var lineBreakCnt = 0; - - for (i = 0; i < blockNum; i++) { - var block = blocks[i]; - - if (block !== '') { - var lineNum = 0; - - if (classNames[i] != 'empty') { - // TODO move to config - lineNum = lineBreakCnt; - lineBreakCnt = 0; // Storing diff between line numbers - } - - tokenizeBlock(block, classNames[i], lineNum, result); - lineBreakCnt += substrCount('\n', block); - } - } - - return result; - }; - - api.identifyInline = function (tokenObj) { - var className = tokenObj.block, - map = ruleInlineMap; - - if (className in subRules) { - if (subRules[className] === null) { - return ''; - } else { - map = subRulesMap[className]; - } - } - - return identify(tokenObj.token, map); - }; - - function identify(token, ruleMap) { - for (var rule in ruleMap) { - if (ruleMap.hasOwnProperty(rule) && ruleMap[rule].test(token)) { - return rule; - } - } - - return ''; - } - - return api; -} // Markdown syntax parser - - -var mdParser = new MarkdownParser(); -mdParser.addBlockRules({ - latexBlock: /[ \t]*\$\$\n?(?:[^\n]+\n)*(?:[^\n]*[^\\\n])?\$\$(?:[ \t]*\([ \t]*\S+[ \t]*\))?[ \t]*(?:\n|$)/, - empty: /(?:[ \t]*\n)+/, - fence: /```[\s\S]*?(?:$|```(?:\n|$))/, - reference: /\[[^\]]+\]\:[^\n]*(?:\n|$)/, - header: /#{1,6} [^\n]*(?:\n|$)/, - header2: /[^\n]+\n[ \t]*[=-]{2,}(?:\n|$)/, - rule: /(?:[\*]{3,}|[\-]{3,}|[\_]{3,})(?:\n|$)/, - list: /[ ]{0,3}(?:[+\-\*]|\d+\.)[ \t]+[^\n]*(?:\n[ \t]*[^\n\t ]+[ \t]*)*(?:\n|$)/, - quote: /[ ]{0,3}>[^\n]*(?:\n|$)/, - paragraph: /[\s\S]*?(?:\n|$)/ -}).addInlineRules({ - latex: /\$\$(?:[\s\S]*?[^\\])?\$\$/, - link: /\[.+?\][\(\[].*?[\)\]]/, - bold: /(?:\s|^)__[\s\S]*?\S__|\*\*[\s\S]*?\S\*\*/, - italic: /(?:\s|^)_[\s\S]*?[^\\\s]_|\*[^\\\s]\*|\*\S[\s\S]*?[^\\\s]\*/, - strike: /~~.+?~~/, - sup: /\^.+?\^/, - sub: /~.+?~/, - code: /``.+?``|`.*?[^`\\]`(?!`)/ -}).addSubRules({ - fence: null, - rule: null, - latexBlock: { - comment: /%[^\n]*?(?=\$\$)|%[^\n]*/, - reference: /[ \t]*\([ \t]*\S+[ \t]*\)[ \t\n]*$/, - index: /(?:\^|_)(?:\\[a-zA-Zа-яА-я]+[\*]?(?:\{.*?\})|\{[a-zA-Zа-яА-я0-9]*?\}|[a-zA-Zа-яА-я0-9])/, - bracket: /(?:(?:\\left|\\right)?[\{\}\[\]\(\)\|])/, - keyword: /\\[a-zA-Zа-яА-я]+[\*]?/, - keyword2: /\\[^a-zA-Zа-яА-я0-9]/, - keyword3: /&/, - delimeter: /\$\$/ - } -}).addRunIn({ - paragraph: { - allowedBlocks: ['paragraph', 'quote', 'list'] - } -}).addMarkers({ - list: /^([ ]{0,3}(?:[+\-\*]|\d+\.)[ \t]+)([\s\S]*)$/, - quote: /^([ ]{0,3}(?:>[ \t]*)+)([\s\S]*)$/ -}); -; -'use strict'; -/** - * DOMContentLoaded polyfill - * - * @param fn - */ - - -function documentReady(fn) { - if (document.readyState != 'loading') { - fn(); - } else { - document.addEventListener('DOMContentLoaded', fn); - } -} -/** - * Find the index of a maximum value in values array - * which is less than maxValue. - * - * @param maxValue - * @param values - * - * @returns {object} - */ - - -function findBisect(maxValue, values) { - var a = 0, - b = values.length - 1, - f_a = values[a]; - - if (f_a >= maxValue) { - return { - val: a, - part: 0 - }; - } - - var f_b = values[b]; - - if (f_b < maxValue) { - return { - val: b, - part: 0 - }; - } - - while (b - a > 1) { - var c = a + Math.round((b - a) / 2), - f_c = values[c]; - - if (f_c >= maxValue) { - b = c; - f_b = f_c; - } else { - a = c; - f_a = f_c; - } - } - - return { - val: a, - part: (maxValue - f_a) / (f_b - f_a) - }; -} -/** - * Count the number of occurances of a substring in a string - * - * @param substr - * @param str - * @returns {number} - */ - - -function substrCount(substr, str) { - var count = -1, - index = -2; - - while (index != -1) { - count++; - index = str.indexOf(substr, index + 1); - } - - return count; -} -/** - * Selects the content of the given DOM node. - * - * @param eNode - */ - - -function selectText(eNode) { - if (!window.getSelection) { - return; - } - - var selection = window.getSelection(), - range = document.createRange(); - range.selectNodeContents(eNode); - selection.removeAllRanges(); - selection.addRange(range); -} -/** - * Realistic animation module based on one-dimensional physical model. - * - * @param positionGetter - * @param positionSetter - * @constructor - */ - - -function Animator(positionGetter, positionSetter) { - var x = 0, - x1 = 0, - x2 = 0, - v = 0, - animationTime = 200, - timerId, - startedAt = null; - - var loop = function loop(timestamp) { - if (startedAt === null) { - startedAt = timestamp; - } - - var moveTime = timestamp - startedAt; - - if (moveTime < moveDuration) { - // New position and velocity - x = x2 + A * (Math.cos(omega * (moveTime - moveDuration)) - 1); - v = A * omega * Math.sin(omega * (moveDuration - moveTime)); - positionSetter(x); - timerId = requestAnimationFrame(loop); - - if (isReInit) { - /** - * If the position has been forced, we run the animation again. - */ - initMotion(reInitPosition, x); - isReInit = false; - startedAt = timestamp; - } - } else { - // Stop the animation - startedAt = null; - v = 0; - positionSetter(x2); - cancelAnimationFrame(timerId); - - if (isReInit) { - isReInit = false; - } - } - }; - /** - * The moveDuration of animation. It can be less than animationTime in case of high speed. - */ - - - var moveDuration; - /** - * Motion parameters. See the loop formulas. - */ - - var A, omega; - /** - * Flag fired when the final position has been changed during running amination. - */ - - var isReInit = false; - /** - * New value for final position (that has been changed during running amination). - */ - - var reInitPosition; - /** - * Calculate parameters A and omega for the position given by formula - * - * x(t) = x0 + A * (Math.cos(omega * (t - t0)) - 1); - * - * @param newPosition - * @param oldPosition - */ - - function initMotion(newPosition, oldPosition) { - var k; - x2 = newPosition; - x1 = oldPosition; - - if (Math.abs(v) < 0.00001) { - // Rest - k = Math.PI; - moveDuration = animationTime; - } else { - // Motion - var alpha = (x2 - x1) / v / animationTime; // Motion parameter - - /** - * Instead of solving non-linear equation alpha * k = tan(k/2) - * we use approximation 0.5/a = 1 - (k/pi)^2 - */ - - if (alpha < 0 || alpha > 0.5) { - k = Math.PI * Math.sqrt(1 - 0.5 / alpha); - } else { - k = 0.1; - } - /** - * After approximate value of k is determined, we redefine alpha - * since its value affects the animation. It means that the total - * animation duration (moveDuration) differs from animationTime. - * However, the difference does not impact the user experience. - */ - - - var alpha1 = (1 - Math.cos(k)) / k / Math.sin(k); - moveDuration = (x2 - x1) / alpha1 / v; - } - - omega = k / moveDuration; - A = (x2 - x1) / (1 - Math.cos(k)); - } - /** - * Public control method - * - * @param nextPos - */ - - - this.setPos = function (nextPos) { - isReInit = startedAt !== null; - - if (!isReInit) { - x = positionGetter(); - initMotion(nextPos, x); - timerId = requestAnimationFrame(loop); - } else { - reInitPosition = nextPos; - } - }; - - this.stop = function () { - startedAt = null; - v = 0; - cancelAnimationFrame(timerId); - isReInit = false; - }; -} - -function escapeRegExp(str) { - return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string -} -/** - * See http://stackoverflow.com/questions/1144783/replacing-all-occurrences-of-a-string-in-javascript - * @param search - * @param replacement - * @returns {string} - */ - - -String.prototype.replaceAll = function (search, replacement) { - var target = this; - return target.replace(new RegExp(escapeRegExp(search), 'g'), replacement); -}; -/** - * - * @constructor - */ - - -function ImagePreloader() { - var data = {}, - uniqueIndex = 0; - - function ajaxReady() { - var svg; - - if (this.status >= 200 && this.status < 400) { - svg = this.responseText; - } else { - // We reached our target server, but it returned an error - svg = '' + '' + '' + '' + '' + '' + '' + ''; - } - - setImage(this.responseURL || this.s2Url, svg); - } - - function loadImage(url) { - var request = new XMLHttpRequest(); - request.open('GET', url, true); - request.s2Url = url; - request.onload = ajaxReady; - - request.onerror = function () {// There was a connection error of some sort - }; - - request.send(); - return request; - } - - this.onLoad = function (url, callback) { - if (!data[url]) { - data[url] = { - svg: null, - baseline: null, - request: loadImage(url), - callback: callback - }; - } else if (data[url].svg !== null) { - callback(url, data[url].svg, data[url].baseline); - } // In case of duplicate pictures we skip duplicates (when data[url].svg === null) - - }; - /** - * Make ids in svg unique across the html code by adding a prefix. - * - * @param svg - * @returns {*} - */ - - - function makeSvgIdsUnique(svg) { - var m = svg.match(/id=["']([^"']*)["']/g); - - if (!m) { - return svg; - } - - var i = m.length, - id, - newId, - curStr; - - for (; i--;) { - curStr = m[i]; - id = curStr.match(/id=["']([^"']*)["']/)[1]; - newId = 's' + uniqueIndex + id; - svg = svg.replaceAll(curStr, 'id="' + newId + '"').replaceAll('#' + id, '#' + newId); - } - - uniqueIndex++; - return svg; - } - /** - * Stores sizes, source and removes the xhr object. - * @param url - * @param svg - */ - - - var setImage = function setImage(url, svg) { - var urlData = data[url]; - - if (!urlData) { - return; - } - - svg = makeSvgIdsUnique(svg); - var m = svg.match(/postMessage\((?:"|")([\d\|\.\-eE]*)(?:"|")/); // [""2.15299|31.42377|11.65223|"", "2.15299|31.42377|11.65223|"] - - if (m) { - var baselineShift = m && m[1] ? m[1].split('|').shift() : 0; // 2.15299 - } else { - // svg can be empty like "" - // Mark as something is wrong. - baselineShift = null; - } - - urlData.callback(url, svg, baselineShift); - urlData.svg = svg; - urlData.baseline = baselineShift; - urlData.request = null; - urlData.callback = null; - }; - /** - * External API - * - * @param url - * @returns {null} - */ - - - this.getImageDataFromUrl = function (url) { - var urlData = data[url]; - return urlData ? urlData : null; - }; -} -/** - * - * @param preloader - * @param protocol Needed for support the "file:" protocol. - * @constructor - */ - - -function ImageLoader(preloader, protocol) { - var curItems = [], - // current formula content - prevItems = [], - // previous formula content - map = {}, - // maps formula content to index - n = 0, - // current formula number - placeholderTimer = null, - placeholderIndex = null, - placeholderUrl = null; - /** - * Find if user has edited only one formula formula. - */ - - function detectPlaceholderFormula() { - if (n == prevItems.length) { - var editNum = 0, - index, - i = n; - - for (; i--;) { - if (curItems[i] != prevItems[i]) { - editNum++; - index = i; - } - } - - if (editNum == 1) { - if (placeholderIndex === null) { - // A formula has been changed. - // Use previous one as a placeholder. - placeholderIndex = index; - placeholderUrl = prevItems[index]; - return; - } - - if (placeholderIndex === index) { - // Formula has been changed again since previous change, - // but the previous image has not been loaded yet. - // Keep previous placeholder. - return; - } - } - } // Many formulas has been changed. We do not display any placeholders. - - - placeholderIndex = null; - placeholderUrl = null; - } - - function buildMap() { - map = {}; - - for (var i = n; i--;) { - var url = curItems[i]; - - if (typeof map[url] === 'undefined') { - map[url] = [i]; - } else { - map[url].push(i); - } - } - } - /** - * Start parsing process. - */ - - - this.reset = function () { - curItems = []; - n = 0; - }; - /** - * Insert SVG images. - * - * @param url - * @param svg - * @param baselineShift - */ - - - var callback = function callback(url, svg, baselineShift) { - var indexes = map[url], - i; - - if (indexes && (i = indexes.length)) { - for (; i--;) { - var index = indexes[i]; - insertPicture(index, svg, baselineShift, index === placeholderIndex ? 'fade-in' : 'replace'); - - if (index === placeholderIndex) { - // Clear the fade out timer if the new image has just bee - clearTimeout(placeholderTimer); - placeholderIndex = null; - placeholderUrl = null; - } - } - } - }; - /** - * Mark formula as loading. - * Use previous image but transparent. - * - * @param index - * @param svg - * @param baselineShift - * @param mode One of 'replace', 'fade-in', 'fade-out' - */ - - - function insertPicture(index, svg, baselineShift, mode) { - var id = 's2tex_' + index, - oldSvgNode = document.getElementById(id), - parentNode = oldSvgNode.parentNode, - startOpacity = '1', - // mode == 'fade-in' ? '0.5' : '1', // sometimes images opacity can be '1' yet. How can one track it? - finalOpacity = mode == 'fade-out' ? '0.5' : '1', - newSvgAttrs = ' - - divNode.removeChild(newSvgNode); - parentNode.insertBefore(newSvgNode, oldSvgNode); - parentNode.removeChild(oldSvgNode); - - if (finalOpacity != startOpacity) { - placeholderTimer = setTimeout(function () { - document.getElementById(id).style.opacity = finalOpacity; - }, 0); - } - } - /** - * Finish the parsing process. - */ - - - this.fixDom = function () { - detectPlaceholderFormula(); - buildMap(); - - for (var i = n; i--;) { - preloader.onLoad(curItems[i], callback); - } - - if (placeholderIndex !== null) { - var data = preloader.getImageDataFromUrl(placeholderUrl); - - if (data !== null && data.callback === null) { - insertPicture(placeholderIndex, data.svg, data.baseline, 'fade-out'); - } - } - - prevItems = curItems.slice(0); - }; -} -/** - * Access to the map between blocks in sync scroll. - * - * @param mapBuilder - * @constructor - */ - - -function ScrollMap(mapBuilder) { - var map = null; - - this.reset = function () { - map = [null, null]; - }; - - this.getPosition = function (eBlockNode, fromIndex, toIndex) { - var offsetHeight = eBlockNode.offsetHeight; - var scrollTop = eBlockNode.scrollTop; - - if (scrollTop == 0) { - return 0; - } - - if (map[fromIndex] === null) { - map = mapBuilder(); - } - - var maxMapIndex = map[fromIndex].length - 1; - - if (map[fromIndex][maxMapIndex] <= scrollTop + offsetHeight) { - return map[toIndex][maxMapIndex] - offsetHeight; - } - - var scrollShift = offsetHeight / 2, - scrollLevel = scrollTop + scrollShift, - blockIndex = findBisect(scrollLevel, map[fromIndex]), - srcScrollLevel = parseFloat(map[toIndex][blockIndex.val] * (1 - blockIndex.part)); - - if (map[toIndex][blockIndex.val + 1]) { - srcScrollLevel += parseFloat(map[toIndex][blockIndex.val + 1] * blockIndex.part); - } - - return srcScrollLevel - scrollShift; - }; -} -/** - * Controls sync scroll of the source and preview blocks - * - * @param scrollMap - * @param animatorSrc - * @param animatorResult - * @param eSrc - * @param eResult - * @param eContainer - * @constructor - */ - - -function SyncScroll(scrollMap, animatorSrc, animatorResult, eSrc, eResult, eContainer) { - // Synchronize scroll position from source to result - var syncResultScroll = function syncResultScroll() { - animatorResult.setPos(scrollMap.getPosition(eSrc, 0, 1)); - }; // Synchronize scroll position from result to source - - - var syncSrcScroll = function syncSrcScroll() { - animatorSrc.setPos(scrollMap.getPosition(eResult, 1, 0)); - }; - - this.switchScrollToSrc = function () { - eResult.removeEventListener('scroll', syncSrcScroll); - eSrc.removeEventListener('scroll', syncResultScroll); - eSrc.addEventListener('scroll', syncResultScroll); - eContainer.id = 'container-block-source'; // animatorSrc.stop(); - }; - - this.switchScrollToResult = function () { - eSrc.removeEventListener('scroll', syncResultScroll); - eResult.removeEventListener('scroll', syncSrcScroll); - eResult.addEventListener('scroll', syncSrcScroll); - eContainer.id = 'container-block-result'; // animatorResult.stop(); - }; -} -/** - * Functions from lodash.js - * @see https://github.com/lodash/lodash/ - */ - - -var now = Date.now || function () { - return new Date().getTime(); -}; - -function debounce(func, wait, options) { - var args, - maxTimeoutId, - result, - stamp, - thisArg, - timeoutId, - trailingCall, - lastCalled = 0, - leading = false, - maxWait = false, - trailing = true; - - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - - wait = wait < 0 ? 0 : +wait || 0; - - if (_typeof(options) === 'object') { - leading = !!options.leading; - maxWait = 'maxWait' in options && Math.max(+options.maxWait || 0, wait); - trailing = 'trailing' in options ? !!options.trailing : trailing; - } - - function cancel() { - if (timeoutId) { - clearTimeout(timeoutId); - } - - if (maxTimeoutId) { - clearTimeout(maxTimeoutId); - } - - lastCalled = 0; - maxTimeoutId = timeoutId = trailingCall = undefined; - } - - function complete(isCalled, id) { - if (id) { - clearTimeout(id); - } - - maxTimeoutId = timeoutId = trailingCall = undefined; - - if (isCalled) { - lastCalled = now(); - result = func.apply(thisArg, args); - - if (!timeoutId && !maxTimeoutId) { - args = thisArg = undefined; - } - } - } - - function delayed() { - var remaining = wait - (now() - stamp); - - if (remaining <= 0 || remaining > wait) { - complete(trailingCall, maxTimeoutId); - } else { - timeoutId = setTimeout(delayed, remaining); - } - } - - function maxDelayed() { - complete(trailing, timeoutId); - } - - function debounced() { - args = arguments; - stamp = now(); - thisArg = this; - trailingCall = trailing && (timeoutId || !leading); - - if (maxWait === false) { - var leadingCall = leading && !timeoutId; - } else { - if (!maxTimeoutId && !leading) { - lastCalled = stamp; - } - - var remaining = maxWait - (stamp - lastCalled), - isCalled = remaining <= 0 || remaining > maxWait; - - if (isCalled) { - if (maxTimeoutId) { - maxTimeoutId = clearTimeout(maxTimeoutId); - } - - lastCalled = stamp; - result = func.apply(thisArg, args); - } else if (!maxTimeoutId) { - maxTimeoutId = setTimeout(maxDelayed, remaining); - } - } - - if (isCalled && timeoutId) { - timeoutId = clearTimeout(timeoutId); - } else if (!timeoutId && wait !== maxWait) { - timeoutId = setTimeout(delayed, wait); - } - - if (leadingCall) { - isCalled = true; - result = func.apply(thisArg, args); - } - - if (isCalled && !timeoutId && !maxTimeoutId) { - args = thisArg = undefined; - } - - return result; - } - - debounced.cancel = cancel; - return debounced; -} - -; -/** -* TextareaDecorator.js -* written by Colin Kuebler 2012 -* Updated by Roman Parpalak, 2015. -* Part of LDT, dual licensed under GPLv3 and MIT -* Builds and maintains a styled output layer under a textarea input layer -*/ - -function TextareaDecorator(textarea, parser) { - /* INIT */ - var api = this, - output; - - if (textarea.className !== 'ldt-textarea') { - // construct editor DOM - var parent = document.createElement("div"); - output = document.createElement("pre"); - output.className = 'ldt-pre'; - parent.appendChild(output); - var label = document.createElement("label"); - label.className = 'ldt-label'; - parent.appendChild(label); // replace the textarea with RTA DOM and reattach on label - - textarea.parentNode.replaceChild(parent, textarea); - label.appendChild(textarea); // transfer the CSS styles to our editor - - parent.className = 'ldt ' + textarea.className; - textarea.className = 'ldt-textarea'; - } else { - output = textarea.parentNode.previousSibling; - } - /** - * Composes token class. - * - * Tokens are grouped into blocks. - * Also a token have its own type. - * - * @param blockClass token block type - * @param inlineClass token type - * @returns {string} - */ - - - function getClass(blockClass, inlineClass) { - return blockClass + ' ' + inlineClass; - } - /** - * Detect changes between a token and its DOM representation. - * - * @param newToken hash object - * @param oldNode DOM node converted from old hash object - * - * @returns {boolean} - */ - - - function compareTokens(newToken, oldNode) { - if (newToken.token !== oldNode.textContent) { - return false; - } - - var className = oldNode.className, - oldBlock = className.slice(0, className.indexOf(' ')); - - if (oldBlock !== newToken.block) { - return false; - } - - var line = oldNode.getAttribute('data-line'); - - if (line && line != newToken.line) { - return false; - } - - return true; - } - /** - * Updates a DOM node by a token - * - * @param node - * @param token - * @param inlineClass - */ - - - function fillTokenNode(node, token, inlineClass) { - node.textContent = node.innerText = token.token; - var c = getClass(token.block, inlineClass); - - if (token.line) { - node.className = c + ' block-start'; - node.setAttribute('data-line', token.line); - } else { - node.className = c; - } - } // coloring algorithm - - - var color = function color(input, output, parser) { - var lastChar = input !== '' && input.substring(input.length - 1) || ''; - - if (lastChar == "\r" || lastChar == "\n") { - // Hack for the case when the last line in textarea is empty - input += ' '; - } - - var nodes = output.childNodes, - tokens = parser.tokenize(input), - firstDiff, - lastDiffNew, - lastDiffOld; // find the first difference - - for (firstDiff = 0; firstDiff < tokens.length && firstDiff < nodes.length; firstDiff++) { - if (!compareTokens(tokens[firstDiff], nodes[firstDiff])) { - break; - } - } // trim the length of output nodes to the size of the input - - - while (tokens.length < nodes.length) { - output.removeChild(nodes[firstDiff]); - } // find the last difference - - - for (lastDiffNew = tokens.length - 1, lastDiffOld = nodes.length - 1; firstDiff < lastDiffOld; lastDiffNew--, lastDiffOld--) { - if (!compareTokens(tokens[lastDiffNew], nodes[lastDiffOld])) { - break; - } - } // update modified nodes - - - for (; firstDiff <= lastDiffOld; firstDiff++) { - var token = tokens[firstDiff]; - fillTokenNode(nodes[firstDiff], token, parser.identifyInline(token)); - } // add in modified nodes - - - for (var insertionPt = nodes[firstDiff] || null; firstDiff <= lastDiffNew; firstDiff++) { - var span = document.createElement("span"); - token = tokens[firstDiff]; - fillTokenNode(span, token, parser.identifyInline(token)); - output.insertBefore(span, insertionPt); - } - }; - - api.input = textarea; - api.output = output; - - api.recalcHeight = function () { - api.input.style.height = Math.max(api.output.offsetHeight, 100) + 'px'; - }; - - api.update = function () { - var input = textarea.value; - - if (input) { - color(input, output, parser); - } else { - // clear the display - output.innerHTML = ''; - } - - api.recalcHeight(); - }; // detect all changes to the textarea, - // including keyboard input, cut/copy/paste, drag & drop, etc - - - if (textarea.addEventListener) { - // standards browsers: oninput event - textarea.addEventListener("input", api.update, false); - } else { - // MSIE: detect changes to the 'value' property - textarea.attachEvent("onpropertychange", function (e) { - if (e.propertyName.toLowerCase() === 'value') { - api.update(); - } - }); - } // initial highlighting - - - api.update(); - return api; -} -/* FileSaver.js - * A saveAs() FileSaver implementation. - * 2015-05-07.2 - * - * By Eli Grey, http://eligrey.com - * License: X11/MIT - * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md - */ - -/*global self */ - -/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */ - -/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */ - - -var saveAs = saveAs || function (view) { - "use strict"; // IE <10 is explicitly unsupported - - if (typeof navigator !== "undefined" && /MSIE [1-9]\./.test(navigator.userAgent)) { - return; - } - - var doc = view.document // only get URL when necessary in case Blob.js hasn't overridden it yet - , - get_URL = function get_URL() { - return view.URL || view.webkitURL || view; - }, - save_link = doc.createElementNS("http://www.w3.org/1999/xhtml", "a"), - can_use_save_link = "download" in save_link, - click = function click(node) { - var event = doc.createEvent("MouseEvents"); - event.initMouseEvent("click", true, false, view, 0, 0, 0, 0, 0, false, false, false, false, 0, null); - node.dispatchEvent(event); - }, - webkit_req_fs = view.webkitRequestFileSystem, - req_fs = view.requestFileSystem || webkit_req_fs || view.mozRequestFileSystem, - throw_outside = function throw_outside(ex) { - (view.setImmediate || view.setTimeout)(function () { - throw ex; - }, 0); - }, - force_saveable_type = "application/octet-stream", - fs_min_size = 0 // See https://code.google.com/p/chromium/issues/detail?id=375297#c7 and - // https://github.com/eligrey/FileSaver.js/commit/485930a#commitcomment-8768047 - // for the reasoning behind the timeout and revocation flow - , - arbitrary_revoke_timeout = 500 // in ms - , - revoke = function revoke(file) { - var revoker = function revoker() { - if (typeof file === "string") { - // file is an object URL - get_URL().revokeObjectURL(file); - } else { - // file is a File - file.remove(); - } - }; - - if (view.chrome) { - revoker(); - } else { - setTimeout(revoker, arbitrary_revoke_timeout); - } - }, - dispatch = function dispatch(filesaver, event_types, event) { - event_types = [].concat(event_types); - var i = event_types.length; - - while (i--) { - var listener = filesaver["on" + event_types[i]]; - - if (typeof listener === "function") { - try { - listener.call(filesaver, event || filesaver); - } catch (ex) { - throw_outside(ex); - } - } - } - }, - auto_bom = function auto_bom(blob) { - // prepend BOM for UTF-8 XML and text/* types (including HTML) - if (/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) { - return new Blob(["\uFEFF", blob], { - type: blob.type - }); - } - - return blob; - }, - FileSaver = function FileSaver(blob, name) { - blob = auto_bom(blob); // First try a.download, then web filesystem, then object URLs - - var filesaver = this, - type = blob.type, - blob_changed = false, - object_url, - target_view, - dispatch_all = function dispatch_all() { - dispatch(filesaver, "writestart progress write writeend".split(" ")); - } // on any filesys errors revert to saving with object URLs - , - fs_error = function fs_error() { - // don't create more object URLs than needed - if (blob_changed || !object_url) { - object_url = get_URL().createObjectURL(blob); - } - - if (target_view) { - target_view.location.href = object_url; - } else { - var new_tab = view.open(object_url, "_blank"); - - if (new_tab == undefined && typeof safari !== "undefined") { - //Apple do not allow window.open, see http://bit.ly/1kZffRI - view.location.href = object_url; - } - } - - filesaver.readyState = filesaver.DONE; - dispatch_all(); - revoke(object_url); - }, - abortable = function abortable(func) { - return function () { - if (filesaver.readyState !== filesaver.DONE) { - return func.apply(this, arguments); - } - }; - }, - create_if_not_found = { - create: true, - exclusive: false - }, - slice; - - filesaver.readyState = filesaver.INIT; - - if (!name) { - name = "download"; - } - - if (can_use_save_link) { - object_url = get_URL().createObjectURL(blob); - save_link.href = object_url; - save_link.download = name; - click(save_link); - filesaver.readyState = filesaver.DONE; - dispatch_all(); - revoke(object_url); - return; - } // Object and web filesystem URLs have a problem saving in Google Chrome when - // viewed in a tab, so I force save with application/octet-stream - // http://code.google.com/p/chromium/issues/detail?id=91158 - // Update: Google errantly closed 91158, I submitted it again: - // https://code.google.com/p/chromium/issues/detail?id=389642 - - - if (view.chrome && type && type !== force_saveable_type) { - slice = blob.slice || blob.webkitSlice; - blob = slice.call(blob, 0, blob.size, force_saveable_type); - blob_changed = true; - } // Since I can't be sure that the guessed media type will trigger a download - // in WebKit, I append .download to the filename. - // https://bugs.webkit.org/show_bug.cgi?id=65440 - - - if (webkit_req_fs && name !== "download") { - name += ".download"; - } - - if (type === force_saveable_type || webkit_req_fs) { - target_view = view; - } - - if (!req_fs) { - fs_error(); - return; - } - - fs_min_size += blob.size; - req_fs(view.TEMPORARY, fs_min_size, abortable(function (fs) { - fs.root.getDirectory("saved", create_if_not_found, abortable(function (dir) { - var save = function save() { - dir.getFile(name, create_if_not_found, abortable(function (file) { - file.createWriter(abortable(function (writer) { - writer.onwriteend = function (event) { - target_view.location.href = file.toURL(); - filesaver.readyState = filesaver.DONE; - dispatch(filesaver, "writeend", event); - revoke(file); - }; - - writer.onerror = function () { - var error = writer.error; - - if (error.code !== error.ABORT_ERR) { - fs_error(); - } - }; - - "writestart progress write abort".split(" ").forEach(function (event) { - writer["on" + event] = filesaver["on" + event]; - }); - writer.write(blob); - - filesaver.abort = function () { - writer.abort(); - filesaver.readyState = filesaver.DONE; - }; - - filesaver.readyState = filesaver.WRITING; - }), fs_error); - }), fs_error); - }; - - dir.getFile(name, { - create: false - }, abortable(function (file) { - // delete file if it already exists - file.remove(); - save(); - }), abortable(function (ex) { - if (ex.code === ex.NOT_FOUND_ERR) { - save(); - } else { - fs_error(); - } - })); - }), fs_error); - }), fs_error); - }, - FS_proto = FileSaver.prototype, - saveAs = function saveAs(blob, name) { - return new FileSaver(blob, name); - }; // IE 10+ (native saveAs) - - - if (typeof navigator !== "undefined" && navigator.msSaveOrOpenBlob) { - return function (blob, name) { - return navigator.msSaveOrOpenBlob(auto_bom(blob), name); - }; - } - - FS_proto.abort = function () { - var filesaver = this; - filesaver.readyState = filesaver.DONE; - dispatch(filesaver, "abort"); - }; - - FS_proto.readyState = FS_proto.INIT = 0; - FS_proto.WRITING = 1; - FS_proto.DONE = 2; - FS_proto.error = FS_proto.onwritestart = FS_proto.onprogress = FS_proto.onwrite = FS_proto.onabort = FS_proto.onerror = FS_proto.onwriteend = null; - return saveAs; -}(typeof self !== "undefined" && self || typeof window !== "undefined" && window || (void 0).content); // `self` is undefined in Firefox for Android content script context -// while `this` is nsIContentFrameMessageManager -// with an attribute `content` that corresponds to the window - - -if (typeof module !== "undefined" && module.exports) { - module.exports.saveAs = saveAs; -} else if (typeof define !== "undefined" && define !== null && define.amd != null) { - define([], function () { - return saveAs; - }); -} - -},{}]},{},[1]); +function MarkdownParser(c){var e=this;c=c?"i":"";var p,d=null,f=null,i={},g={},a={},b={},v={},h={},x={};function y(e,t){for(var r in t)if(t.hasOwnProperty(r)&&t[r].test(e))return r;return""}return e.addInlineRules=function(e){var t,r,n,o=[];for(t in e)e.hasOwnProperty(t)&&(n=e[t].source,o.push(n),r=n,n=t,r=new RegExp("^("+r+")$",c),i[n]=r,a[n]=r);return d=new RegExp("("+o.join("|")+")",c),this},e.addSubRules=function(e){for(var t in p=e)if(e.hasOwnProperty(t)){var r,n,o=e[t],i=[];for(r in o)o.hasOwnProperty(r)&&(n=o[r].source,a=n,s=r,h[l=t]||(h[l]={}),h[l][s]=new RegExp("^("+a+")$",c),i.push(n));x[t]=new RegExp("("+i.join("|")+")",c)}var a,s,l;return this},e.addBlockRules=function(e){var t,r,n,o=[];for(t in e)e.hasOwnProperty(t)&&(n=e[t].source,o.push(n),r=n,n=t,r=new RegExp("^("+r+")$",c),i[n]=r,g[n]=r);return f=new RegExp("("+o.join("|")+")",c),this},e.addRunIn=function(e){return b=e,this},e.addMarkers=function(e){return v=e,this},e.tokenize=function(e){for(var t,r=[],n=[],o=(e=e.replace("\r","")).split(f),i=o.length,a=0,s=0;s"+t+"\n"},this.getSource=o,this.setSource=function(e){i(e),this.updateResult()};var f=null,g="html";this.updateResult=function(){var e=o();f!==e&&(f=e,t.reset(),a(c.render(e)),t.fixDom(),"htmltex"===g?s("result-src-content",u.render(e),"html"):"debug"===g?s("result-src-content",JSON.stringify(h.parse(e,{references:{}}),null,2),"json"):s("result-src-content","habr"===g?m.render(e).replace("{m(),c.recalcHeight(),c.update()},getHTML:()=>{d.getElementsByClassName("result-html");return r.innerHTML}},f.addEventListener("resize",function(){n.reset(),e()})})}(document,window),function(){"use strict";function h(e,t){var r=e.pos,n=!0,o=!0,i=e.posMax,a=e.md.utils.isWhiteSpace,s=e.md.utils.isPunctChar,l=e.md.utils.isMdAsciiPunct,c=0/g,">").replace(/'+e[t].content+""}}}();var mdParser=new MarkdownParser;function documentReady(e){"loading"!=document.readyState?e():document.addEventListener("DOMContentLoaded",e)}function findBisect(e,t){var r=0,n=t.length-1,o=t[r];if(e<=o)return{val:r,part:0};var i=t[n];if(i';t(this.responseURL||this.s2Url,e)}this.onLoad=function(e,t){var r;o[e]?null!==o[e].svg&&t(e,o[e].svg,o[e].baseline):o[e]={svg:null,baseline:null,request:(r=e,(e=new XMLHttpRequest).open("GET",r,!0),e.s2Url=r,e.onload=n,e.onerror=function(){},e.send(),e),callback:t}};var t=function(e,t){var r,n=o[e];n&&(r=(r=(t=function(e){var t=e.match(/id=["']([^"']*)["']/g);if(!t)return e;for(var r,n,o,i=t.length;i--;)r=(o=t[i]).match(/id=["']([^"']*)["']/)[1],n="s"+a+r,e=e.replaceAll(o,'id="'+n+'"').replaceAll("#"+r,"#"+n);return a++,e}(t)).match(/postMessage\((?:"|")([\d\|\.\-eE]*)(?:"|")/))?r&&r[1]?r[1].split("|").shift():0:null,n.callback(e,t,r),n.svg=t,n.baseline=r,n.request=null,n.callback=null)};this.getImageDataFromUrl=function(e){e=o[e];return e||null}}function ImageLoader(r,e){var n=[],o=[],a={},i=0,s=null,l=null,c=null;this.reset=function(){n=[],i=0};function h(e,t,r){var n,o=a[e];if(o&&(n=o.length))for(;n--;){var i=o[n];u(i,t,r,i===l?"fade-in":"replace"),i===l&&(clearTimeout(s),c=l=null)}}function u(e,t,r,n){var o="s2tex_"+e,i=document.getElementById(o),e=i.parentNode,a="fade-out"==n?"0.5":"1",n='[^\n]*(?:\n|$)/,paragraph:/[\s\S]*?(?:\n|$)/}).addInlineRules({latex:/\$\$(?:[\s\S]*?[^\\])?\$\$/,link:/\[.+?\][\(\[].*?[\)\]]/,bold:/(?:\s|^)__[\s\S]*?\S__|\*\*[\s\S]*?\S\*\*/,italic:/(?:\s|^)_[\s\S]*?[^\\\s]_|\*[^\\\s]\*|\*\S[\s\S]*?[^\\\s]\*/,strike:/~~.+?~~/,sup:/\^.+?\^/,sub:/~.+?~/,code:/``.+?``|`.*?[^`\\]`(?!`)/}).addSubRules({fence:null,rule:null,latexBlock:{comment:/%[^\n]*?(?=\$\$)|%[^\n]*/,reference:/[ \t]*\([ \t]*\S+[ \t]*\)[ \t\n]*$/,index:/(?:\^|_)(?:\\[a-zA-Zа-яА-я]+[\*]?(?:\{.*?\})|\{[a-zA-Zа-яА-я0-9]*?\}|[a-zA-Zа-яА-я0-9])/,bracket:/(?:(?:\\left|\\right)?[\{\}\[\]\(\)\|])/,keyword:/\\[a-zA-Zа-яА-я]+[\*]?/,keyword2:/\\[^a-zA-Zа-яА-я0-9]/,keyword3:/&/,delimeter:/\$\$/}}).addRunIn({paragraph:{allowedBlocks:["paragraph","quote","list"]}}).addMarkers({list:/^([ ]{0,3}(?:[+\-\*]|\d+\.)[ \t]+)([\s\S]*)$/,quote:/^([ ]{0,3}(?:>[ \t]*)+)([\s\S]*)$/}),String.prototype.replaceAll=function(e,t){return this.replace(new RegExp(escapeRegExp(e),"g"),t)};var now=Date.now||function(){return(new Date).getTime()};function debounce(n,o,e){var i,a,s,l,c,h,u,m=0,p=!1,d=!1,f=!0;if("function"!=typeof n)throw new TypeError(FUNC_ERROR_TEXT);function t(e,t){t&&clearTimeout(t),a=h=u=void 0,e&&(m=now(),s=n.apply(c,i),h||a||(i=c=void 0))}function g(){var e=o-(now()-l);e<=0||o"+c(e[t].content)+"\n"},o.fence=function(e,t,r,n,o){var i=e[t],a=i.info?l(i.info).trim():"",s="";return a&&(s=a.split(/\s+/g)[0]),0===(e=r.highlight&&r.highlight(i.content,s)||c(i.content)).indexOf(""+e+"\n"):"

    "+e+"
    \n"},o.image=function(e,t,r,n,o){var i=e[t];return i.attrs[i.attrIndex("alt")][1]=o.renderInlineAsText(i.children,r,n),o.renderToken(e,t,r)},o.hardbreak=function(e,t,r){return r.xhtmlOut?"
    \n":"
    \n"},o.softbreak=function(e,t,r){return r.breaks?r.xhtmlOut?"
    \n":"
    \n":"\n"},o.text=function(e,t){return c(e[t].content)},o.html_block=function(e,t){return e[t].content},o.html_inline=function(e,t){return e[t].content},i.prototype.renderAttrs=function(e){var t,r,n;if(!e.attrs)return"";for(n="",t=0,r=e.attrs.length;t\n":">")},i.prototype.renderInline=function(e,t,r){for(var n,o="",i=this.rules,a=0,s=e.length;a",w.map=n=[t,0],e.md.block.tokenize(e,t,h),(w=e.push("blockquote_close","blockquote",-1)).markup=">",e.lineMax=_,e.parentType=f,n[1]=e.line,a=0;a|$))/i,/<\/(script|pre|style)>/i,!0],[/^/,!0],[/^<\?/,/\?>/,!0],[/^/,!0],[/^/,!0],[new RegExp("^|$))","i"),/^$/,!0],[new RegExp(e.source+"\\s*$"),/^$/,!1]];t.exports=function(e,t,r,n){var o,i,a,s=e.bMarks[t]+e.tShift[t],l=e.eMarks[t];if(4<=e.sCount[t]-e.blkIndent)return!1;if(!e.md.options.html)return!1;if(60!==e.src.charCodeAt(s))return!1;for(a=e.src.slice(s,l),o=0;o=e.blkIndent&&(l=e.bMarks[p]+e.tShift[p])<(c=e.eMarks[p])&&(45===(u=e.src.charCodeAt(l))||61===u)&&(l=e.skipChars(l,u),c<=(l=e.skipSpaces(l)))){h=61===u?1:2;break}if(!(e.sCount[p]<0)){for(o=!1,i=0,a=d.length;i=e.blkIndent&&(A=!0),0<=(y=E(e,t))){if(l=!0,k=e.bMarks[t]+e.tShift[t],k=Number(e.src.substr(k,y-k-1)),A&&1!==k)return!1}else{if(!(0<=(y=z(e,t))))return!1;l=!1}if(A&&e.skipSpaces(y)>=e.eMarks[t])return!1;if(u=e.src.charCodeAt(y-1),n)return!0;for(A=e.tokens.length,l?(C=e.push("ordered_list_open","ol",1),1!==k&&(C.attrs=[["start",k]])):C=e.push("bullet_list_open","ul",1),C.map=n=[t,0],C.markup=String.fromCharCode(u),p=t,w=!1,S=e.md.block.ruler.getRules("list"),k=e.parentType,e.parentType="list";p=this.eMarks[e]},o.prototype.skipEmptyLines=function(e){for(var t=this.lineMax;e=e.eMarks[l])return!1;if(124!==(o=e.src.charCodeAt(a++))&&45!==o&&58!==o)return!1;for(;am.length)return!1;if(n)return!0;for((u=e.push("table_open","table",1)).map=d=[t,0],(u=e.push("thead_open","thead",1)).map=[t,t+1],(u=e.push("tr_open","tr",1)).map=[t,t+1],s=0;s\s]/i.test(a.content)&&0/i.test(a.content)&&m++),!(0/,l=/^<([a-zA-Z][a-zA-Z0-9+.\-]{1,31}):([^<>\x00-\x20]*)>/;t.exports=function(e,t){var r,n,o,i,a=e.pos;return 60===e.src.charCodeAt(a)&&(!((r=e.src.slice(a)).indexOf(">")<0)&&(l.test(r)?(n=(a=r.match(l))[0].slice(1,-1),o=e.md.normalizeLink(n),!!e.md.validateLink(o)&&(t||((i=e.push("link_open","a",1)).attrs=[["href",o]],i.markup="autolink",i.info="auto",(i=e.push("text","",0)).content=e.md.normalizeLinkText(n),(i=e.push("link_close","a",-1)).markup="autolink",i.info="auto"),e.pos+=a[0].length,!0)):!!s.test(r)&&(n=(r=r.match(s))[0].slice(1,-1),o=e.md.normalizeLink("mailto:"+n),!!e.md.validateLink(o)&&(t||((i=e.push("link_open","a",1)).attrs=[["href",o]],i.markup="autolink",i.info="auto",(i=e.push("text","",0)).content=e.md.normalizeLinkText(n),(i=e.push("link_close","a",-1)).markup="autolink",i.info="auto"),e.pos+=r[0].length,!0))))}},{}],38:[function(e,t,r){"use strict";t.exports=function(e,t){var r,n,o,i,a,s,l=e.pos;if(96!==e.src.charCodeAt(l))return!1;for(r=l,l++,n=e.posMax;l?@[]^_`{|}~-".split("").forEach(function(e){a[e.charCodeAt(0)]=1}),t.exports=function(e,t){var r,n=e.pos,o=e.posMax;if(92!==e.src.charCodeAt(n))return!1;if(++n",GT:">",Gt:"≫",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",Hacek:"ˇ",hairsp:" ",half:"½",hamilt:"ℋ",HARDcy:"Ъ",hardcy:"ъ",harrcir:"⥈",harr:"↔",hArr:"⇔",harrw:"↭",Hat:"^",hbar:"ℏ",Hcirc:"Ĥ",hcirc:"ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",hfr:"𝔥",Hfr:"ℌ",HilbertSpace:"ℋ",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",hopf:"𝕙",Hopf:"ℍ",horbar:"―",HorizontalLine:"─",hscr:"𝒽",Hscr:"ℋ",hslash:"ℏ",Hstrok:"Ħ",hstrok:"ħ",HumpDownHump:"≎",HumpEqual:"≏",hybull:"⁃",hyphen:"‐",Iacute:"Í",iacute:"í",ic:"⁣",Icirc:"Î",icirc:"î",Icy:"И",icy:"и",Idot:"İ",IEcy:"Е",iecy:"е",iexcl:"¡",iff:"⇔",ifr:"𝔦",Ifr:"ℑ",Igrave:"Ì",igrave:"ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",IJlig:"IJ",ijlig:"ij",Imacr:"Ī",imacr:"ī",image:"ℑ",ImaginaryI:"ⅈ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",Im:"ℑ",imof:"⊷",imped:"Ƶ",Implies:"⇒",incare:"℅",in:"∈",infin:"∞",infintie:"⧝",inodot:"ı",intcal:"⊺",int:"∫",Int:"∬",integers:"ℤ",Integral:"∫",intercal:"⊺",Intersection:"⋂",intlarhk:"⨗",intprod:"⨼",InvisibleComma:"⁣",InvisibleTimes:"⁢",IOcy:"Ё",iocy:"ё",Iogon:"Į",iogon:"į",Iopf:"𝕀",iopf:"𝕚",Iota:"Ι",iota:"ι",iprod:"⨼",iquest:"¿",iscr:"𝒾",Iscr:"ℐ",isin:"∈",isindot:"⋵",isinE:"⋹",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",Itilde:"Ĩ",itilde:"ĩ",Iukcy:"І",iukcy:"і",Iuml:"Ï",iuml:"ï",Jcirc:"Ĵ",jcirc:"ĵ",Jcy:"Й",jcy:"й",Jfr:"𝔍",jfr:"𝔧",jmath:"ȷ",Jopf:"𝕁",jopf:"𝕛",Jscr:"𝒥",jscr:"𝒿",Jsercy:"Ј",jsercy:"ј",Jukcy:"Є",jukcy:"є",Kappa:"Κ",kappa:"κ",kappav:"ϰ",Kcedil:"Ķ",kcedil:"ķ",Kcy:"К",kcy:"к",Kfr:"𝔎",kfr:"𝔨",kgreen:"ĸ",KHcy:"Х",khcy:"х",KJcy:"Ќ",kjcy:"ќ",Kopf:"𝕂",kopf:"𝕜",Kscr:"𝒦",kscr:"𝓀",lAarr:"⇚",Lacute:"Ĺ",lacute:"ĺ",laemptyv:"⦴",lagran:"ℒ",Lambda:"Λ",lambda:"λ",lang:"⟨",Lang:"⟪",langd:"⦑",langle:"⟨",lap:"⪅",Laplacetrf:"ℒ",laquo:"«",larrb:"⇤",larrbfs:"⤟",larr:"←",Larr:"↞",lArr:"⇐",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",latail:"⤙",lAtail:"⤛",lat:"⪫",late:"⪭",lates:"⪭︀",lbarr:"⤌",lBarr:"⤎",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",Lcaron:"Ľ",lcaron:"ľ",Lcedil:"Ļ",lcedil:"ļ",lceil:"⌈",lcub:"{",Lcy:"Л",lcy:"л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",le:"≤",lE:"≦",LeftAngleBracket:"⟨",LeftArrowBar:"⇤",leftarrow:"←",LeftArrow:"←",Leftarrow:"⇐",LeftArrowRightArrow:"⇆",leftarrowtail:"↢",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVectorBar:"⥙",LeftDownVector:"⇃",LeftFloor:"⌊",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",leftrightarrow:"↔",LeftRightArrow:"↔",Leftrightarrow:"⇔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",LeftRightVector:"⥎",LeftTeeArrow:"↤",LeftTee:"⊣",LeftTeeVector:"⥚",leftthreetimes:"⋋",LeftTriangleBar:"⧏",LeftTriangle:"⊲",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVectorBar:"⥘",LeftUpVector:"↿",LeftVectorBar:"⥒",LeftVector:"↼",lEg:"⪋",leg:"⋚",leq:"≤",leqq:"≦",leqslant:"⩽",lescc:"⪨",les:"⩽",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",lessgtr:"≶",LessLess:"⪡",lesssim:"≲",LessSlantEqual:"⩽",LessTilde:"≲",lfisht:"⥼",lfloor:"⌊",Lfr:"𝔏",lfr:"𝔩",lg:"≶",lgE:"⪑",lHar:"⥢",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",LJcy:"Љ",ljcy:"љ",llarr:"⇇",ll:"≪",Ll:"⋘",llcorner:"⌞",Lleftarrow:"⇚",llhard:"⥫",lltri:"◺",Lmidot:"Ŀ",lmidot:"ŀ",lmoustache:"⎰",lmoust:"⎰",lnap:"⪉",lnapprox:"⪉",lne:"⪇",lnE:"≨",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",longleftarrow:"⟵",LongLeftArrow:"⟵",Longleftarrow:"⟸",longleftrightarrow:"⟷",LongLeftRightArrow:"⟷",Longleftrightarrow:"⟺",longmapsto:"⟼",longrightarrow:"⟶",LongRightArrow:"⟶",Longrightarrow:"⟹",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",Lopf:"𝕃",lopf:"𝕝",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",LowerLeftArrow:"↙",LowerRightArrow:"↘",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",lscr:"𝓁",Lscr:"ℒ",lsh:"↰",Lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",Lstrok:"Ł",lstrok:"ł",ltcc:"⪦",ltcir:"⩹",lt:"<",LT:"<",Lt:"≪",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltri:"◃",ltrie:"⊴",ltrif:"◂",ltrPar:"⦖",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",macr:"¯",male:"♂",malt:"✠",maltese:"✠",Map:"⤅",map:"↦",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",Mcy:"М",mcy:"м",mdash:"—",mDDot:"∺",measuredangle:"∡",MediumSpace:" ",Mellintrf:"ℳ",Mfr:"𝔐",mfr:"𝔪",mho:"℧",micro:"µ",midast:"*",midcir:"⫰",mid:"∣",middot:"·",minusb:"⊟",minus:"−",minusd:"∸",minusdu:"⨪",MinusPlus:"∓",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",Mopf:"𝕄",mopf:"𝕞",mp:"∓",mscr:"𝓂",Mscr:"ℳ",mstpos:"∾",Mu:"Μ",mu:"μ",multimap:"⊸",mumap:"⊸",nabla:"∇",Nacute:"Ń",nacute:"ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natural:"♮",naturals:"ℕ",natur:"♮",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",Ncaron:"Ň",ncaron:"ň",Ncedil:"Ņ",ncedil:"ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",Ncy:"Н",ncy:"н",ndash:"–",nearhk:"⤤",nearr:"↗",neArr:"⇗",nearrow:"↗",ne:"≠",nedot:"≐̸",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",nequiv:"≢",nesear:"⤨",nesim:"≂̸",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",nexist:"∄",nexists:"∄",Nfr:"𝔑",nfr:"𝔫",ngE:"≧̸",nge:"≱",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",nGg:"⋙̸",ngsim:"≵",nGt:"≫⃒",ngt:"≯",ngtr:"≯",nGtv:"≫̸",nharr:"↮",nhArr:"⇎",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",NJcy:"Њ",njcy:"њ",nlarr:"↚",nlArr:"⇍",nldr:"‥",nlE:"≦̸",nle:"≰",nleftarrow:"↚",nLeftarrow:"⇍",nleftrightarrow:"↮",nLeftrightarrow:"⇎",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nLl:"⋘̸",nlsim:"≴",nLt:"≪⃒",nlt:"≮",nltri:"⋪",nltrie:"⋬",nLtv:"≪̸",nmid:"∤",NoBreak:"⁠",NonBreakingSpace:" ",nopf:"𝕟",Nopf:"ℕ",Not:"⫬",not:"¬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",notin:"∉",notindot:"⋵̸",notinE:"⋹̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",NotLeftTriangleBar:"⧏̸",NotLeftTriangle:"⋪",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangleBar:"⧐̸",NotRightTriangle:"⋫",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",nparallel:"∦",npar:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",nprec:"⊀",npreceq:"⪯̸",npre:"⪯̸",nrarrc:"⤳̸",nrarr:"↛",nrArr:"⇏",nrarrw:"↝̸",nrightarrow:"↛",nRightarrow:"⇏",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",Nscr:"𝒩",nscr:"𝓃",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsubE:"⫅̸",nsube:"⊈",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupE:"⫆̸",nsupe:"⊉",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",Ntilde:"Ñ",ntilde:"ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",Nu:"Ν",nu:"ν",num:"#",numero:"№",numsp:" ",nvap:"≍⃒",nvdash:"⊬",nvDash:"⊭",nVdash:"⊮",nVDash:"⊯",nvge:"≥⃒",nvgt:">⃒",nvHarr:"⤄",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwarhk:"⤣",nwarr:"↖",nwArr:"⇖",nwarrow:"↖",nwnear:"⤧",Oacute:"Ó",oacute:"ó",oast:"⊛",Ocirc:"Ô",ocirc:"ô",ocir:"⊚",Ocy:"О",ocy:"о",odash:"⊝",Odblac:"Ő",odblac:"ő",odiv:"⨸",odot:"⊙",odsold:"⦼",OElig:"Œ",oelig:"œ",ofcir:"⦿",Ofr:"𝔒",ofr:"𝔬",ogon:"˛",Ograve:"Ò",ograve:"ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",Omacr:"Ō",omacr:"ō",Omega:"Ω",omega:"ω",Omicron:"Ο",omicron:"ο",omid:"⦶",ominus:"⊖",Oopf:"𝕆",oopf:"𝕠",opar:"⦷",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",operp:"⦹",oplus:"⊕",orarr:"↻",Or:"⩔",or:"∨",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oS:"Ⓢ",Oscr:"𝒪",oscr:"ℴ",Oslash:"Ø",oslash:"ø",osol:"⊘",Otilde:"Õ",otilde:"õ",otimesas:"⨶",Otimes:"⨷",otimes:"⊗",Ouml:"Ö",ouml:"ö",ovbar:"⌽",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",para:"¶",parallel:"∥",par:"∥",parsim:"⫳",parsl:"⫽",part:"∂",PartialD:"∂",Pcy:"П",pcy:"п",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",Pfr:"𝔓",pfr:"𝔭",Phi:"Φ",phi:"φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",Pi:"Π",pi:"π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plus:"+",plusdo:"∔",plusdu:"⨥",pluse:"⩲",PlusMinus:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",Poincareplane:"ℌ",pointint:"⨕",popf:"𝕡",Popf:"ℙ",pound:"£",prap:"⪷",Pr:"⪻",pr:"≺",prcue:"≼",precapprox:"⪷",prec:"≺",preccurlyeq:"≼",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",pre:"⪯",prE:"⪳",precsim:"≾",prime:"′",Prime:"″",primes:"ℙ",prnap:"⪹",prnE:"⪵",prnsim:"⋨",prod:"∏",Product:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",Proportional:"∝",Proportion:"∷",propto:"∝",prsim:"≾",prurel:"⊰",Pscr:"𝒫",pscr:"𝓅",Psi:"Ψ",psi:"ψ",puncsp:" ",Qfr:"𝔔",qfr:"𝔮",qint:"⨌",qopf:"𝕢",Qopf:"ℚ",qprime:"⁗",Qscr:"𝒬",qscr:"𝓆",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",quot:'"',QUOT:'"',rAarr:"⇛",race:"∽̱",Racute:"Ŕ",racute:"ŕ",radic:"√",raemptyv:"⦳",rang:"⟩",Rang:"⟫",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarr:"→",Rarr:"↠",rArr:"⇒",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",Rarrtl:"⤖",rarrtl:"↣",rarrw:"↝",ratail:"⤚",rAtail:"⤜",ratio:"∶",rationals:"ℚ",rbarr:"⤍",rBarr:"⤏",RBarr:"⤐",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",Rcaron:"Ř",rcaron:"ř",Rcedil:"Ŗ",rcedil:"ŗ",rceil:"⌉",rcub:"}",Rcy:"Р",rcy:"р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",Re:"ℜ",rect:"▭",reg:"®",REG:"®",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",rfisht:"⥽",rfloor:"⌋",rfr:"𝔯",Rfr:"ℜ",rHar:"⥤",rhard:"⇁",rharu:"⇀",rharul:"⥬",Rho:"Ρ",rho:"ρ",rhov:"ϱ",RightAngleBracket:"⟩",RightArrowBar:"⇥",rightarrow:"→",RightArrow:"→",Rightarrow:"⇒",RightArrowLeftArrow:"⇄",rightarrowtail:"↣",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVectorBar:"⥕",RightDownVector:"⇂",RightFloor:"⌋",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",RightTeeArrow:"↦",RightTee:"⊢",RightTeeVector:"⥛",rightthreetimes:"⋌",RightTriangleBar:"⧐",RightTriangle:"⊳",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVectorBar:"⥔",RightUpVector:"↾",RightVectorBar:"⥓",RightVector:"⇀",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoustache:"⎱",rmoust:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",ropf:"𝕣",Ropf:"ℝ",roplus:"⨮",rotimes:"⨵",RoundImplies:"⥰",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",Rrightarrow:"⇛",rsaquo:"›",rscr:"𝓇",Rscr:"ℛ",rsh:"↱",Rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",RuleDelayed:"⧴",ruluhar:"⥨",rx:"℞",Sacute:"Ś",sacute:"ś",sbquo:"‚",scap:"⪸",Scaron:"Š",scaron:"š",Sc:"⪼",sc:"≻",sccue:"≽",sce:"⪰",scE:"⪴",Scedil:"Ş",scedil:"ş",Scirc:"Ŝ",scirc:"ŝ",scnap:"⪺",scnE:"⪶",scnsim:"⋩",scpolint:"⨓",scsim:"≿",Scy:"С",scy:"с",sdotb:"⊡",sdot:"⋅",sdote:"⩦",searhk:"⤥",searr:"↘",seArr:"⇘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",Sfr:"𝔖",sfr:"𝔰",sfrown:"⌢",sharp:"♯",SHCHcy:"Щ",shchcy:"щ",SHcy:"Ш",shcy:"ш",ShortDownArrow:"↓",ShortLeftArrow:"←",shortmid:"∣",shortparallel:"∥",ShortRightArrow:"→",ShortUpArrow:"↑",shy:"­",Sigma:"Σ",sigma:"σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",SmallCircle:"∘",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",SOFTcy:"Ь",softcy:"ь",solbar:"⌿",solb:"⧄",sol:"/",Sopf:"𝕊",sopf:"𝕤",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",Sqrt:"√",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",square:"□",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",squarf:"▪",squ:"□",squf:"▪",srarr:"→",Sscr:"𝒮",sscr:"𝓈",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",Star:"⋆",star:"☆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",sub:"⊂",Sub:"⋐",subdot:"⪽",subE:"⫅",sube:"⊆",subedot:"⫃",submult:"⫁",subnE:"⫋",subne:"⊊",subplus:"⪿",subrarr:"⥹",subset:"⊂",Subset:"⋐",subseteq:"⊆",subseteqq:"⫅",SubsetEqual:"⊆",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succapprox:"⪸",succ:"≻",succcurlyeq:"≽",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",SuchThat:"∋",sum:"∑",Sum:"∑",sung:"♪",sup1:"¹",sup2:"²",sup3:"³",sup:"⊃",Sup:"⋑",supdot:"⪾",supdsub:"⫘",supE:"⫆",supe:"⊇",supedot:"⫄",Superset:"⊃",SupersetEqual:"⊇",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supnE:"⫌",supne:"⊋",supplus:"⫀",supset:"⊃",Supset:"⋑",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swarhk:"⤦",swarr:"↙",swArr:"⇙",swarrow:"↙",swnwar:"⤪",szlig:"ß",Tab:"\t",target:"⌖",Tau:"Τ",tau:"τ",tbrk:"⎴",Tcaron:"Ť",tcaron:"ť",Tcedil:"Ţ",tcedil:"ţ",Tcy:"Т",tcy:"т",tdot:"⃛",telrec:"⌕",Tfr:"𝔗",tfr:"𝔱",there4:"∴",therefore:"∴",Therefore:"∴",Theta:"Θ",theta:"θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",ThickSpace:"  ",ThinSpace:" ",thinsp:" ",thkap:"≈",thksim:"∼",THORN:"Þ",thorn:"þ",tilde:"˜",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",timesbar:"⨱",timesb:"⊠",times:"×",timesd:"⨰",tint:"∭",toea:"⤨",topbot:"⌶",topcir:"⫱",top:"⊤",Topf:"𝕋",topf:"𝕥",topfork:"⫚",tosa:"⤩",tprime:"‴",trade:"™",TRADE:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",TripleDot:"⃛",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",Tscr:"𝒯",tscr:"𝓉",TScy:"Ц",tscy:"ц",TSHcy:"Ћ",tshcy:"ћ",Tstrok:"Ŧ",tstrok:"ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",Uacute:"Ú",uacute:"ú",uarr:"↑",Uarr:"↟",uArr:"⇑",Uarrocir:"⥉",Ubrcy:"Ў",ubrcy:"ў",Ubreve:"Ŭ",ubreve:"ŭ",Ucirc:"Û",ucirc:"û",Ucy:"У",ucy:"у",udarr:"⇅",Udblac:"Ű",udblac:"ű",udhar:"⥮",ufisht:"⥾",Ufr:"𝔘",ufr:"𝔲",Ugrave:"Ù",ugrave:"ù",uHar:"⥣",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",Umacr:"Ū",umacr:"ū",uml:"¨",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",Uogon:"Ų",uogon:"ų",Uopf:"𝕌",uopf:"𝕦",UpArrowBar:"⤒",uparrow:"↑",UpArrow:"↑",Uparrow:"⇑",UpArrowDownArrow:"⇅",updownarrow:"↕",UpDownArrow:"↕",Updownarrow:"⇕",UpEquilibrium:"⥮",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",UpperLeftArrow:"↖",UpperRightArrow:"↗",upsi:"υ",Upsi:"ϒ",upsih:"ϒ",Upsilon:"Υ",upsilon:"υ",UpTeeArrow:"↥",UpTee:"⊥",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",Uring:"Ů",uring:"ů",urtri:"◹",Uscr:"𝒰",uscr:"𝓊",utdot:"⋰",Utilde:"Ũ",utilde:"ũ",utri:"▵",utrif:"▴",uuarr:"⇈",Uuml:"Ü",uuml:"ü",uwangle:"⦧",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",varr:"↕",vArr:"⇕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",vBar:"⫨",Vbar:"⫫",vBarv:"⫩",Vcy:"В",vcy:"в",vdash:"⊢",vDash:"⊨",Vdash:"⊩",VDash:"⊫",Vdashl:"⫦",veebar:"⊻",vee:"∨",Vee:"⋁",veeeq:"≚",vellip:"⋮",verbar:"|",Verbar:"‖",vert:"|",Vert:"‖",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",Vfr:"𝔙",vfr:"𝔳",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",Vopf:"𝕍",vopf:"𝕧",vprop:"∝",vrtri:"⊳",Vscr:"𝒱",vscr:"𝓋",vsubnE:"⫋︀",vsubne:"⊊︀",vsupnE:"⫌︀",vsupne:"⊋︀",Vvdash:"⊪",vzigzag:"⦚",Wcirc:"Ŵ",wcirc:"ŵ",wedbar:"⩟",wedge:"∧",Wedge:"⋀",wedgeq:"≙",weierp:"℘",Wfr:"𝔚",wfr:"𝔴",Wopf:"𝕎",wopf:"𝕨",wp:"℘",wr:"≀",wreath:"≀",Wscr:"𝒲",wscr:"𝓌",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",Xfr:"𝔛",xfr:"𝔵",xharr:"⟷",xhArr:"⟺",Xi:"Ξ",xi:"ξ",xlarr:"⟵",xlArr:"⟸",xmap:"⟼",xnis:"⋻",xodot:"⨀",Xopf:"𝕏",xopf:"𝕩",xoplus:"⨁",xotime:"⨂",xrarr:"⟶",xrArr:"⟹",Xscr:"𝒳",xscr:"𝓍",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",Yacute:"Ý",yacute:"ý",YAcy:"Я",yacy:"я",Ycirc:"Ŷ",ycirc:"ŷ",Ycy:"Ы",ycy:"ы",yen:"¥",Yfr:"𝔜",yfr:"𝔶",YIcy:"Ї",yicy:"ї",Yopf:"𝕐",yopf:"𝕪",Yscr:"𝒴",yscr:"𝓎",YUcy:"Ю",yucy:"ю",yuml:"ÿ",Yuml:"Ÿ",Zacute:"Ź",zacute:"ź",Zcaron:"Ž",zcaron:"ž",Zcy:"З",zcy:"з",Zdot:"Ż",zdot:"ż",zeetrf:"ℨ",ZeroWidthSpace:"​",Zeta:"Ζ",zeta:"ζ",zfr:"𝔷",Zfr:"ℨ",ZHcy:"Ж",zhcy:"ж",zigrarr:"⇝",zopf:"𝕫",Zopf:"ℤ",Zscr:"𝒵",zscr:"𝓏",zwj:"‍",zwnj:"‌"}},{}],53:[function(n,e,t){"use strict";function o(r){return Array.prototype.slice.call(arguments,1).forEach(function(t){t&&Object.keys(t).forEach(function(e){r[e]=t[e]})}),r}function s(e){return Object.prototype.toString.call(e)}function l(e){return"[object Function]"===s(e)}function c(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}var i={fuzzyLink:!0,fuzzyEmail:!0,fuzzyIP:!1};var a={"http:":{validate:function(e,t,r){t=e.slice(t);return r.re.http||(r.re.http=new RegExp("^\\/\\/"+r.re.src_auth+r.re.src_host_port_strict+r.re.src_path,"i")),r.re.http.test(t)?t.match(r.re.http)[0].length:0}},"https:":"http:","ftp:":"http:","//":{validate:function(e,t,r){var n=e.slice(t);return r.re.no_http||(r.re.no_http=new RegExp("^"+r.re.src_auth+"(?:localhost|(?:(?:"+r.re.src_domain+")\\.)+"+r.re.src_domain_root+")"+r.re.src_port+r.re.src_host_terminator+r.re.src_path,"i")),!r.re.no_http.test(n)||3<=t&&":"===e[t-3]||3<=t&&"/"===e[t-3]?0:n.match(r.re.no_http)[0].length}},"mailto:":{validate:function(e,t,r){t=e.slice(t);return r.re.mailto||(r.re.mailto=new RegExp("^"+r.re.src_email_name+"@"+r.re.src_host_strict,"i")),r.re.mailto.test(t)?t.match(r.re.mailto)[0].length:0}}},h="a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]",u="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф".split("|");function m(){return function(e,t){t.normalize(e)}}function p(o){var t=o.re=n("./lib/re")(o.__opts__),e=o.__tlds__.slice();function r(e){return e.replace("%TLDS%",t.src_tlds)}o.onCompile(),o.__tlds_replaced__||e.push(h),e.push(t.src_xn),t.src_tlds=e.join("|"),t.email_fuzzy=RegExp(r(t.tpl_email_fuzzy),"i"),t.link_fuzzy=RegExp(r(t.tpl_link_fuzzy),"i"),t.link_no_ip_fuzzy=RegExp(r(t.tpl_link_no_ip_fuzzy),"i"),t.host_fuzzy_test=RegExp(r(t.tpl_host_fuzzy_test),"i");var i=[];function a(e,t){throw new Error('(LinkifyIt) Invalid schema "'+e+'": '+t)}o.__compiled__={},Object.keys(o.__schemas__).forEach(function(e){var t=o.__schemas__[e];if(null!==t){var r,n={validate:null,link:null};if(o.__compiled__[e]=n,"[object Object]"===s(t))return"[object RegExp]"===s(t.validate)?n.validate=(r=t.validate,function(e,t){t=e.slice(t);return r.test(t)?t.match(r)[0].length:0}):l(t.validate)?n.validate=t.validate:a(e,t),void(l(t.normalize)?n.normalize=t.normalize:t.normalize?a(e,t):n.normalize=m());"[object String]"!==s(t)?a(e,t):i.push(e)}}),i.forEach(function(e){o.__compiled__[o.__schemas__[e]]&&(o.__compiled__[e].validate=o.__compiled__[o.__schemas__[e]].validate,o.__compiled__[e].normalize=o.__compiled__[o.__schemas__[e]].normalize)}),o.__compiled__[""]={validate:null,normalize:m()};var e=Object.keys(o.__compiled__).filter(function(e){return 0<|]|"+t.src_ZPCc+"))("+e+")","i"),o.re.schema_search=RegExp("(^|(?!_)(?:[><|]|"+t.src_ZPCc+"))("+e+")","ig"),o.re.pretest=RegExp("("+o.re.schema_test.source+")|("+o.re.host_fuzzy_test.source+")|@","i"),(e=o).__index__=-1,e.__text_cache__=""}function r(e,t){var r=e.__index__,n=e.__last_index__,o=e.__text_cache__.slice(r,n);this.schema=e.__schema__.toLowerCase(),this.index=r+t,this.lastIndex=n+t,this.raw=o,this.text=o,this.url=o}function d(e,t){t=new r(e,t);return e.__compiled__[t.schema].normalize(t,e),t}function f(e,t){if(!(this instanceof f))return new f(e,t);var r;t||(r=e,Object.keys(r||{}).reduce(function(e,t){return e||i.hasOwnProperty(t)},!1)&&(t=e,e={})),this.__opts__=o({},i,t),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=o({},a,e),this.__compiled__={},this.__tlds__=u,this.__tlds_replaced__=!1,this.re={},p(this)}f.prototype.add=function(e,t){return this.__schemas__[e]=t,p(this),this},f.prototype.set=function(e){return this.__opts__=o(this.__opts__,e),this},f.prototype.test=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return!1;var t,r,n,o,i,a,s;if(this.re.schema_test.test(e))for((a=this.re.schema_search).lastIndex=0;null!==(t=a.exec(e));)if(n=this.testSchemaAt(e,t[2],a.lastIndex)){this.__schema__=t[2],this.__index__=t.index+t[1].length,this.__last_index__=t.index+t[0].length+n;break}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&0<=(s=e.search(this.re.host_fuzzy_test))&&(this.__index__<0||sthis.__last_index__)&&(this.__schema__="mailto:",this.__index__=o,this.__last_index__=i)),0<=this.__index__},f.prototype.pretest=function(e){return this.re.pretest.test(e)},f.prototype.testSchemaAt=function(e,t,r){return this.__compiled__[t.toLowerCase()]?this.__compiled__[t.toLowerCase()].validate(e,r,this):0},f.prototype.match=function(e){var t=0,r=[];0<=this.__index__&&this.__text_cache__===e&&(r.push(d(this,t)),t=this.__last_index__);for(var n=t?e.slice(t):e;this.test(n);)r.push(d(this,t)),n=n.slice(this.__last_index__),t+=this.__last_index__;return r.length?r:null},f.prototype.tlds=function(e,t){return e=Array.isArray(e)?e:[e],t?this.__tlds__=this.__tlds__.concat(e).sort().filter(function(e,t,r){return e!==r[t-1]}).reverse():(this.__tlds__=e.slice(),this.__tlds_replaced__=!0),p(this),this},f.prototype.normalize=function(e){e.schema||(e.url="http://"+e.url),"mailto:"!==e.schema||/^mailto:/i.test(e.url)||(e.url="mailto:"+e.url)},f.prototype.onCompile=function(){},e.exports=f},{"./lib/re":54}],54:[function(n,e,t){"use strict";e.exports=function(e){var t={};t.src_Any=n("uc.micro/properties/Any/regex").source,t.src_Cc=n("uc.micro/categories/Cc/regex").source,t.src_Z=n("uc.micro/categories/Z/regex").source,t.src_P=n("uc.micro/categories/P/regex").source,t.src_ZPCc=[t.src_Z,t.src_P,t.src_Cc].join("|"),t.src_ZCc=[t.src_Z,t.src_Cc].join("|");var r="[><|]";return t.src_pseudo_letter="(?:(?![><|]|"+t.src_ZPCc+")"+t.src_Any+")",t.src_ip4="(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",t.src_auth="(?:(?:(?!"+t.src_ZCc+"|[@/\\[\\]()]).)+@)?",t.src_port="(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",t.src_host_terminator="(?=$|[><|]|"+t.src_ZPCc+")(?!-|_|:\\d|\\.-|\\.(?!$|"+t.src_ZPCc+"))",t.src_path="(?:[/?#](?:(?!"+t.src_ZCc+"|"+r+"|[()[\\]{}.,\"'?!\\-]).|\\[(?:(?!"+t.src_ZCc+"|\\]).)*\\]|\\((?:(?!"+t.src_ZCc+"|[)]).)*\\)|\\{(?:(?!"+t.src_ZCc+'|[}]).)*\\}|\\"(?:(?!'+t.src_ZCc+'|["]).)+\\"|\\\'(?:(?!'+t.src_ZCc+"|[']).)+\\'|\\'(?="+t.src_pseudo_letter+"|[-]).|\\.{2,4}[a-zA-Z0-9%/]|\\.(?!"+t.src_ZCc+"|[.]).|"+(e&&e["---"]?"\\-(?!--(?:[^-]|$))(?:-*)|":"\\-+|")+"\\,(?!"+t.src_ZCc+").|\\!(?!"+t.src_ZCc+"|[!]).|\\?(?!"+t.src_ZCc+"|[?]).)+|\\/)?",t.src_email_name='[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*',t.src_xn="xn--[a-z0-9\\-]{1,59}",t.src_domain_root="(?:"+t.src_xn+"|"+t.src_pseudo_letter+"{1,63})",t.src_domain="(?:"+t.src_xn+"|(?:"+t.src_pseudo_letter+")|(?:"+t.src_pseudo_letter+"(?:-|"+t.src_pseudo_letter+"){0,61}"+t.src_pseudo_letter+"))",t.src_host="(?:(?:(?:(?:"+t.src_domain+")\\.)*"+t.src_domain+"))",t.tpl_host_fuzzy="(?:"+t.src_ip4+"|(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%)))",t.tpl_host_no_ip_fuzzy="(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%))",t.src_host_strict=t.src_host+t.src_host_terminator,t.tpl_host_fuzzy_strict=t.tpl_host_fuzzy+t.src_host_terminator,t.src_host_port_strict=t.src_host+t.src_port+t.src_host_terminator,t.tpl_host_port_fuzzy_strict=t.tpl_host_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_port_no_ip_fuzzy_strict=t.tpl_host_no_ip_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_fuzzy_test="localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:"+t.src_ZPCc+"|>|$))",t.tpl_email_fuzzy='(^|[><|]|"|\\(|'+t.src_ZCc+")("+t.src_email_name+"@"+t.tpl_host_fuzzy_strict+")",t.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`||]|"+t.src_ZPCc+"))((?![$+<=>^`||])"+t.tpl_host_port_fuzzy_strict+t.src_path+")",t.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`||]|"+t.src_ZPCc+"))((?![$+<=>^`||])"+t.tpl_host_port_no_ip_fuzzy_strict+t.src_path+")",t}},{"uc.micro/categories/Cc/regex":61,"uc.micro/categories/P/regex":63,"uc.micro/categories/Z/regex":64,"uc.micro/properties/Any/regex":66}],55:[function(e,t,r){"use strict";var o={};function n(e,t){var c=function(e){var t,r,n=o[e];if(n)return n;for(n=o[e]=[],t=0;t<128;t++)r=String.fromCharCode(t),n.push(r);for(t=0;t>10),56320+(1023&i))),s+=9):a+="�";return a})}n.defaultChars=";/?:@&=+$,#",n.componentChars="",t.exports=n},{}],56:[function(e,t,r){"use strict";var c={};function h(e,t,r){var n,o,i,a,s,l="";for("string"!=typeof t&&(r=t,t=h.defaultChars),void 0===r&&(r=!0),s=function(e){var t,r,n=c[e];if(n)return n;for(n=c[e]=[],t=0;t<128;t++)r=String.fromCharCode(t),/^[0-9a-z]$/i.test(r)?n.push(r):n.push("%"+("0"+t.toString(16).toUpperCase()).slice(-2));for(t=0;t",'"',"`"," ","\r","\n","\t"]),i=["'"].concat(i),w=["%","/","?",";","#"].concat(i),k=["/","?","#"],_=/^[+a-z0-9A-Z_-]{0,63}$/,S=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,C={javascript:!0,"javascript:":!0},A={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};n.prototype.parse=function(e,t){var r,n,o;if(l=(l=e).trim(),!t&&1===e.split("#").length){var i=y.exec(l);if(i)return this.pathname=i[1],i[2]&&(this.search=i[2]),this}i=x.exec(l);if(i&&(r=(i=i[0]).toLowerCase(),this.protocol=i,l=l.substr(i.length)),(t||i||l.match(/^\/\/[^@\/]+@[^@\/]+/))&&(!(o="//"===l.substr(0,2))||i&&C[i]||(l=l.substr(2),this.slashes=!0)),!C[i]&&(o||i&&!A[i])){var a=-1;for(h=0;h= 0x80 (not a basic code point)","invalid-input":"Invalid input"},m=b-1,x=Math.floor,y=String.fromCharCode;function w(e){throw new RangeError(u[e])}function p(e,t){for(var r=e.length,n=[];r--;)n[r]=t(e[r]);return n}function d(e,t){var r=e.split("@"),n="";return 1>>10&1023|55296),e=56320|1023&e),t+=y(e)}).join("")}function _(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function S(e,t,r){var n=0;for(e=r?x(e/s):e>>1,e+=x(e/t);m*v>>1x((g-h)/i))&&w("overflow"),h+=s*i,!(s<(s=a<=m?1:m+v<=a?v:a-m));a+=b)i>x(g/(s=b-s))&&w("overflow"),i*=s;m=S(h-o,t=l.length+1,0==o),x(h/t)>g-u&&w("overflow"),u+=x(h/t),h%=t,l.splice(h++,0,u)}return f(l)}function A(e){for(var t,r,n,o,i,a,s,l,c,h,u=[],m=(e=k(e)).length,p=128,d=72,f=t=0;fx((g-t)/(l=r+1))&&w("overflow"),t+=(o-p)*l,p=o,f=0;fg&&w("overflow"),s==p){for(i=t,a=b;!(i<(c=a<=d?1:d+v<=a?v:a-d));a+=b)u.push(y(_(c+(h=i-c)%(c=b-c),0))),i=x(h/c);u.push(y(_(i,0))),d=S(t,l,r==n),t=0,++r}++t,++p}return u.join("")}if(o={version:"1.4.1",ucs2:{decode:k,encode:f},decode:C,encode:A,toASCII:function(e){return d(e,function(e){return c.test(e)?"xn--"+A(e):e})},toUnicode:function(e){return d(e,function(e){return l.test(e)?C(e.slice(4).toLowerCase()):e})}},0,t&&r)if(z.exports==t)r.exports=o;else for(i in o)o.hasOwnProperty(i)&&(t[i]=o[i]);else e.punycode=o}(this)}.call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],61:[function(e,t,r){t.exports=/[\0-\x1F\x7F-\x9F]/},{}],62:[function(e,t,r){t.exports=/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/},{}],63:[function(e,t,r){t.exports=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4E\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDF55-\uDF59]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD806[\uDC3B\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/},{}],64:[function(e,t,r){t.exports=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/},{}],65:[function(e,t,r){"use strict";r.Any=e("./properties/Any/regex"),r.Cc=e("./categories/Cc/regex"),r.Cf=e("./categories/Cf/regex"),r.P=e("./categories/P/regex"),r.Z=e("./categories/Z/regex")},{"./categories/Cc/regex":61,"./categories/Cf/regex":62,"./categories/P/regex":63,"./categories/Z/regex":64,"./properties/Any/regex":66}],66:[function(e,t,r){t.exports=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/},{}],67:[function(e,t,r){"use strict";t.exports=e("./lib/")},{"./lib/":9}]},{},[67])(67)}),function(e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).markdownitSub=e()}(function(){return function n(o,i,a){function s(r,e){if(!i[r]){if(!o[r]){var t="function"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);t=new Error("Cannot find module '"+r+"'");throw t.code="MODULE_NOT_FOUND",t}t=i[r]={exports:{}};o[r][0].call(t.exports,function(e){var t=o[r][1][e];return s(t||e)},t,t.exports,n,o,i,a)}return i[r].exports}for(var l="function"==typeof require&&require,e=0;e?@[\]^_`{|}~-])/g;t.exports=function(e){e.inline.ruler.after("emphasis","sub",r)}},{}]},{},[1])(1)}),function(e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).markdownitSup=e()}(function(){return function n(o,i,a){function s(r,e){if(!i[r]){if(!o[r]){var t="function"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);t=new Error("Cannot find module '"+r+"'");throw t.code="MODULE_NOT_FOUND",t}t=i[r]={exports:{}};o[r][0].call(t.exports,function(e){var t=o[r][1][e];return s(t||e)},t,t.exports,n,o,i,a)}return i[r].exports}for(var l="function"==typeof require&&require,e=0;e?@[\]^_`{|}~-])/g;t.exports=function(e){e.inline.ruler.after("emphasis","sup",r)}},{}]},{},[1])(1)}),function(e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).markdownitFootnote=e()}(function(){return function n(o,i,a){function s(t,e){if(!i[t]){if(!o[t]){var r="function"==typeof require&&require;if(!e&&r)return r(t,!0);if(l)return l(t,!0);r=new Error("Cannot find module '"+t+"'");throw r.code="MODULE_NOT_FOUND",r}r=i[t]={exports:{}};o[t][0].call(r.exports,function(e){return s(o[t][1][e]||e)},r,r.exports,n,o,i,a)}return i[t].exports}for(var l="function"==typeof require&&require,e=0;e'+n+""}function s(e,t,r){return(r.xhtmlOut?'
    \n':'
    \n')+'
    \n
      \n'}function l(){return"
    \n
    \n"}function c(e,t,r,n,o){o=o.rules.footnote_anchor_name(e,t,r,n,o);return 0'}function h(){return"\n"}function u(e,t,r,n,o){o=o.rules.footnote_anchor_name(e,t,r,n,o);return 0↩︎'}t.exports=function(e){var a=e.helpers.parseLinkLabel,d=e.utils.isSpace;e.renderer.rules.footnote_ref=i,e.renderer.rules.footnote_block_open=s,e.renderer.rules.footnote_block_close=l,e.renderer.rules.footnote_open=c,e.renderer.rules.footnote_close=h,e.renderer.rules.footnote_anchor=u,e.renderer.rules.footnote_caption=o,e.renderer.rules.footnote_anchor_name=n,e.block.ruler.before("reference","footnote_def",function(e,t,r,n){var o,i,a,s,l,c,h,u,m=e.bMarks[t]+e.tShift[t],p=e.eMarks[t];if(p':0!==r.content.indexOf("[x] ")&&0!==r.content.indexOf("[X] ")||(o.content=''),o)),e.children[1].content=e.children[1].content.slice(3),e.content=e.content.slice(3),l&&(c?(e.children.pop(),o="task-item-"+Math.ceil(1e7*Math.random()-1e3),e.children[0].content=e.children[0].content.slice(0,-1)+' id="'+o+'">',e.children.push(function(e,t,r){r=new r("html_inline","",0);return r.content='",r.attrs=[{for:t}],r}(e.content,o,t))):(e.children.unshift(function(e){e=new e("html_inline","",0);return e.content="",e}(t))))}var s=!0,l=!1,c=!1;t.exports=function(e,t){t&&(s=!t.enabled,l=!!t.label,c=!!t.labelAfter),e.core.ruler.after("inline","github-task-lists",function(e){for(var t,r,n=e.tokens,o=2;o":">","<":"<",'"':""","'":"'"},h=/[&><"']/g,V={contains:function(e,t){return-1!==e.indexOf(t)},deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(h,function(e){return c[e]})},hyphenate:function(e){return e.replace(l,"-$1").toLowerCase()},getBaseElem:s,isCharacterBox:function(e){e=s(e);return"mathord"===e.type||"textord"===e.type||"atom"===e.type},protocolFromUrl:function(e){e=/^\s*([^\\\/#]*?)(?::|�*58|�*3a)/i.exec(e);return null!=e?e[1]:"_relative"}},m=((ce=_.prototype).reportNonstrict=function(e,t,r){var n=this.strict;if((n="function"==typeof n?n(e,t,r):n)&&"ignore"!==n){if(!0===n||"error"===n)throw new j("LaTeX-incompatible input and strict mode is set to 'error': "+t+" ["+e+"]",r);"warn"===n?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+n+"': "+t+" ["+e+"]")}},ce.useStrictBehavior=function(e,t,r){var n=this.strict;if("function"==typeof n)try{n=n(e,t,r)}catch(e){n="error"}return!(!n||"ignore"===n||!0!==n&&"error"!==n&&("warn"===n?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+n+"': "+t+" ["+e+"]"),1))},ce.isTrusted=function(e){e.url&&!e.protocol&&(e.protocol=V.protocolFromUrl(e.url));e="function"==typeof this.trust?this.trust(e):this.trust;return Boolean(e)},_),p=((ue=k.prototype).sup=function(){return d[f[this.id]]},ue.sub=function(){return d[g[this.id]]},ue.fracNum=function(){return d[b[this.id]]},ue.fracDen=function(){return d[v[this.id]]},ue.cramp=function(){return d[x[this.id]]},ue.text=function(){return d[y[this.id]]},k),d=[new p(0,0,!(ue.isTight=function(){return 2<=this.size})),new p(1,0,!0),new p(2,1,!1),new p(3,1,!0),new p(4,2,!1),new p(5,2,!0),new p(6,3,!1),new p(7,3,!0)],f=[4,5,4,5,6,7,6,7],g=[5,5,5,5,7,7,7,7],b=[2,3,4,5,6,7,6,7],v=[3,3,5,5,7,7,7,7],x=[1,1,3,3,5,5,7,7],y=[0,1,2,3,2,3,2,3],$={DISPLAY:d[0],TEXT:d[2],SCRIPT:d[4],SCRIPTSCRIPT:d[6]},w=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];function k(e,t,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=t,this.cramped=r}function _(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.displayMode=V.deflt((e=e||{}).displayMode,!1),this.output=V.deflt(e.output,"htmlAndMathml"),this.leqno=V.deflt(e.leqno,!1),this.fleqn=V.deflt(e.fleqn,!1),this.throwOnError=V.deflt(e.throwOnError,!0),this.errorColor=V.deflt(e.errorColor,"#cc0000"),this.macros=e.macros||{},this.minRuleThickness=Math.max(0,V.deflt(e.minRuleThickness,0)),this.colorIsTextColor=V.deflt(e.colorIsTextColor,!1),this.strict=V.deflt(e.strict,"warn"),this.trust=V.deflt(e.trust,!1),this.maxSize=Math.max(0,V.deflt(e.maxSize,1/0)),this.maxExpand=Math.max(0,V.deflt(e.maxExpand,1e3))}var S=[];function C(e){for(var t=0;t=S[t]&&e<=S[t+1])return 1}w.forEach(function(e){return e.blocks.forEach(function(e){return S.push.apply(S,e)})});function A(e){return e.filter(function(e){return e}).join(" ")}function M(e,t,r){this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=r||{},t&&(t.style.isTight()&&this.classes.push("mtight"),(t=t.getColor())&&(this.style.color=t))}function z(e){var t,r,n=document.createElement(e);for(t in n.className=A(this.classes),this.style)this.style.hasOwnProperty(t)&&(n.style[t]=this.style[t]);for(r in this.attributes)this.attributes.hasOwnProperty(r)&&n.setAttribute(r,this.attributes[r]);for(var o=0;o"}var T={doubleleftarrow:"M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",doublerightarrow:"M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",leftarrow:"M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",leftbrace:"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",leftbraceunder:"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",leftgroup:"M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",leftgroupunder:"M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",leftharpoon:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",leftharpoonplus:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",leftharpoondown:"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",leftharpoondownplus:"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",lefthook:"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",leftlinesegment:"M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",leftmapsto:"M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",leftToFrom:"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",longequal:"M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",midbrace:"M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",midbraceunder:"M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",oiintSize1:"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",oiintSize2:"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",oiiintSize1:"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",oiiintSize2:"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",rightarrow:"M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",rightbrace:"M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",rightbraceunder:"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",rightgroup:"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",rightgroupunder:"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",rightharpoon:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",rightharpoonplus:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",rightharpoondown:"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",rightharpoondownplus:"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",righthook:"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",rightlinesegment:"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",rightToFrom:"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",twoheadleftarrow:"M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",twoheadrightarrow:"M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",tilde1:"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",tilde2:"M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",tilde3:"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",tilde4:"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",vec:"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",widehat1:"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",widehat2:"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat3:"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat4:"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widecheck1:"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",widecheck2:"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck3:"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck4:"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",baraboveleftarrow:"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",rightarrowabovebar:"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",baraboveshortleftharpoon:"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",rightharpoonaboveshortbar:"M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",shortbaraboveleftharpoon:"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",shortrightharpoonabovebar:"M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"},D=((r=X.prototype).hasClass=function(e){return V.contains(this.classes,e)},r.toNode=function(){for(var e=document.createDocumentFragment(),t=0;t"},G),B={"î":"ı̂","ï":"ı̈","í":"ı́","ì":"ı̀"},N=((r=W.prototype).hasClass=function(e){return V.contains(this.classes,e)},r.toNode=function(){var e,t=document.createTextNode(this.text),r=null;for(e in 0"):o},W),R=((ce=U.prototype).toNode=function(){var e,t=document.createElementNS("http://www.w3.org/2000/svg","svg");for(e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);for(var r=0;r"},U),O=((ue=H.prototype).toNode=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","path");return this.alternate?e.setAttribute("d",this.alternate):e.setAttribute("d",T[this.pathName]),e},ue.toMarkup=function(){return this.alternate?"":""},H),F=((p=P.prototype).toNode=function(){var e,t=document.createElementNS("http://www.w3.org/2000/svg","line");for(e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);return t},p.toMarkup=function(){var e,t=""},P);function P(e){this.attributes=void 0,this.attributes=e||{}}function H(e,t){this.pathName=void 0,this.alternate=void 0,this.pathName=e,this.alternate=t}function U(e,t){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=t||{}}function W(e,t,r,n,o,i,a,s){this.text=void 0,this.height=void 0,this.depth=void 0,this.italic=void 0,this.skew=void 0,this.width=void 0,this.maxFontSize=void 0,this.classes=void 0,this.style=void 0,this.text=e,this.height=t||0,this.depth=r||0,this.italic=n||0,this.skew=o||0,this.width=i||0,this.classes=a||[],this.style=s||{},this.maxFontSize=0;s=function(e){for(var t=0;t=o[0]&&e<=o[1])return r.name}return null}(this.text.charCodeAt(0));s&&this.classes.push(s+"_fallback"),/[\xee\xef\xed\xec]/.test(this.text)&&(this.text=B[this.text])}function G(e,t,r){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=t,this.src=e,this.classes=["mord"],this.style=r}function Z(e,t,r,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,M.call(this,t,n),this.children=r||[],this.setAttribute("href",e)}function Y(e,t,r,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,M.call(this,e,r,n),this.children=t||[]}function X(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}function K(e){if(e instanceof N)return e;throw new Error("Expected symbolNode but got "+String(e)+".")}var J={"AMS-Regular":{65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473]},"Fraktur-Regular":{33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],163:[0,.69444,0,0,.86853],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],163:[0,.69444,0,0,.76909],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],305:[0,.43056,0,.02778,.32246],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],567:[.19444,.43056,0,.08334,.38403],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.12,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,1],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.67,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.9,0,0,.278],8943:[-.19,.31,0,0,1.172],8945:[-.1,.82,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.744,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.744,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333]},"Math-Italic":{65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059]},"Math-Regular":{65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059]},"SansSerif-Bold":{33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212]},"Size1-Regular":{40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},Q={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},ee={"Å":"A","Ç":"C","Ð":"D","Þ":"o","å":"a","ç":"c","ð":"d","þ":"o","А":"A","Б":"B","В":"B","Г":"F","Д":"A","Е":"E","Ж":"K","З":"3","И":"N","Й":"N","К":"K","Л":"N","М":"M","Н":"H","О":"O","П":"N","Р":"P","С":"C","Т":"T","У":"y","Ф":"O","Х":"X","Ц":"U","Ч":"h","Ш":"W","Щ":"W","Ъ":"B","Ы":"X","Ь":"B","Э":"3","Ю":"X","Я":"R","а":"a","б":"b","в":"a","г":"r","д":"y","е":"e","ж":"m","з":"e","и":"n","й":"n","к":"n","л":"n","м":"m","н":"n","о":"o","п":"n","р":"p","с":"c","т":"o","у":"y","ф":"b","х":"x","ц":"n","ч":"n","ш":"w","щ":"w","ъ":"a","ы":"m","ь":"a","э":"e","ю":"m","я":"r"};function te(e,t,r){if(!J[t])throw new Error("Font metrics not found for font: "+t+".");var n=e.charCodeAt(0),o=J[t][n];if(!o&&e[0]in ee&&(n=ee[e[0]].charCodeAt(0),o=J[t][n]),o||"text"!==r||C(n)&&(o=J[t][77]),o)return{depth:o[0],height:o[1],italic:o[2],skew:o[3],width:o[4]}}var re={},ne={bin:1,close:1,inner:1,open:1,punct:1,rel:1},oe={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},ie={math:{},text:{}},ae=ie;function se(e,t,r,n,o,i){ie[e][o]={font:t,group:r,replace:n},i&&n&&(ie[e][n]=ie[e][o])}var le="main",r="ams",ce="bin",he="mathord",ue="op-token",p="rel";se("math",le,p,"≡","\\equiv",!0),se("math",le,p,"≺","\\prec",!0),se("math",le,p,"≻","\\succ",!0),se("math",le,p,"∼","\\sim",!0),se("math",le,p,"⊥","\\perp"),se("math",le,p,"⪯","\\preceq",!0),se("math",le,p,"⪰","\\succeq",!0),se("math",le,p,"≃","\\simeq",!0),se("math",le,p,"∣","\\mid",!0),se("math",le,p,"≪","\\ll",!0),se("math",le,p,"≫","\\gg",!0),se("math",le,p,"≍","\\asymp",!0),se("math",le,p,"∥","\\parallel"),se("math",le,p,"⋈","\\bowtie",!0),se("math",le,p,"⌣","\\smile",!0),se("math",le,p,"⊑","\\sqsubseteq",!0),se("math",le,p,"⊒","\\sqsupseteq",!0),se("math",le,p,"≐","\\doteq",!0),se("math",le,p,"⌢","\\frown",!0),se("math",le,p,"∋","\\ni",!0),se("math",le,p,"∝","\\propto",!0),se("math",le,p,"⊢","\\vdash",!0),se("math",le,p,"⊣","\\dashv",!0),se("math",le,p,"∋","\\owns"),se("math",le,"punct",".","\\ldotp"),se("math",le,"punct","⋅","\\cdotp"),se("math",le,"textord","#","\\#"),se("text",le,"textord","#","\\#"),se("math",le,"textord","&","\\&"),se("text",le,"textord","&","\\&"),se("math",le,"textord","ℵ","\\aleph",!0),se("math",le,"textord","∀","\\forall",!0),se("math",le,"textord","ℏ","\\hbar",!0),se("math",le,"textord","∃","\\exists",!0),se("math",le,"textord","∇","\\nabla",!0),se("math",le,"textord","♭","\\flat",!0),se("math",le,"textord","ℓ","\\ell",!0),se("math",le,"textord","♮","\\natural",!0),se("math",le,"textord","♣","\\clubsuit",!0),se("math",le,"textord","℘","\\wp",!0),se("math",le,"textord","♯","\\sharp",!0),se("math",le,"textord","♢","\\diamondsuit",!0),se("math",le,"textord","ℜ","\\Re",!0),se("math",le,"textord","♡","\\heartsuit",!0),se("math",le,"textord","ℑ","\\Im",!0),se("math",le,"textord","♠","\\spadesuit",!0),se("text",le,"textord","§","\\S",!0),se("text",le,"textord","¶","\\P",!0),se("math",le,"textord","†","\\dag"),se("text",le,"textord","†","\\dag"),se("text",le,"textord","†","\\textdagger"),se("math",le,"textord","‡","\\ddag"),se("text",le,"textord","‡","\\ddag"),se("text",le,"textord","‡","\\textdaggerdbl"),se("math",le,"close","⎱","\\rmoustache",!0),se("math",le,"open","⎰","\\lmoustache",!0),se("math",le,"close","⟯","\\rgroup",!0),se("math",le,"open","⟮","\\lgroup",!0),se("math",le,ce,"∓","\\mp",!0),se("math",le,ce,"⊖","\\ominus",!0),se("math",le,ce,"⊎","\\uplus",!0),se("math",le,ce,"⊓","\\sqcap",!0),se("math",le,ce,"∗","\\ast"),se("math",le,ce,"⊔","\\sqcup",!0),se("math",le,ce,"◯","\\bigcirc"),se("math",le,ce,"∙","\\bullet"),se("math",le,ce,"‡","\\ddagger"),se("math",le,ce,"≀","\\wr",!0),se("math",le,ce,"⨿","\\amalg"),se("math",le,ce,"&","\\And"),se("math",le,p,"⟵","\\longleftarrow",!0),se("math",le,p,"⇐","\\Leftarrow",!0),se("math",le,p,"⟸","\\Longleftarrow",!0),se("math",le,p,"⟶","\\longrightarrow",!0),se("math",le,p,"⇒","\\Rightarrow",!0),se("math",le,p,"⟹","\\Longrightarrow",!0),se("math",le,p,"↔","\\leftrightarrow",!0),se("math",le,p,"⟷","\\longleftrightarrow",!0),se("math",le,p,"⇔","\\Leftrightarrow",!0),se("math",le,p,"⟺","\\Longleftrightarrow",!0),se("math",le,p,"↦","\\mapsto",!0),se("math",le,p,"⟼","\\longmapsto",!0),se("math",le,p,"↗","\\nearrow",!0),se("math",le,p,"↩","\\hookleftarrow",!0),se("math",le,p,"↪","\\hookrightarrow",!0),se("math",le,p,"↘","\\searrow",!0),se("math",le,p,"↼","\\leftharpoonup",!0),se("math",le,p,"⇀","\\rightharpoonup",!0),se("math",le,p,"↙","\\swarrow",!0),se("math",le,p,"↽","\\leftharpoondown",!0),se("math",le,p,"⇁","\\rightharpoondown",!0),se("math",le,p,"↖","\\nwarrow",!0),se("math",le,p,"⇌","\\rightleftharpoons",!0),se("math",r,p,"≮","\\nless",!0),se("math",r,p,"","\\@nleqslant"),se("math",r,p,"","\\@nleqq"),se("math",r,p,"⪇","\\lneq",!0),se("math",r,p,"≨","\\lneqq",!0),se("math",r,p,"","\\@lvertneqq"),se("math",r,p,"⋦","\\lnsim",!0),se("math",r,p,"⪉","\\lnapprox",!0),se("math",r,p,"⊀","\\nprec",!0),se("math",r,p,"⋠","\\npreceq",!0),se("math",r,p,"⋨","\\precnsim",!0),se("math",r,p,"⪹","\\precnapprox",!0),se("math",r,p,"≁","\\nsim",!0),se("math",r,p,"","\\@nshortmid"),se("math",r,p,"∤","\\nmid",!0),se("math",r,p,"⊬","\\nvdash",!0),se("math",r,p,"⊭","\\nvDash",!0),se("math",r,p,"⋪","\\ntriangleleft"),se("math",r,p,"⋬","\\ntrianglelefteq",!0),se("math",r,p,"⊊","\\subsetneq",!0),se("math",r,p,"","\\@varsubsetneq"),se("math",r,p,"⫋","\\subsetneqq",!0),se("math",r,p,"","\\@varsubsetneqq"),se("math",r,p,"≯","\\ngtr",!0),se("math",r,p,"","\\@ngeqslant"),se("math",r,p,"","\\@ngeqq"),se("math",r,p,"⪈","\\gneq",!0),se("math",r,p,"≩","\\gneqq",!0),se("math",r,p,"","\\@gvertneqq"),se("math",r,p,"⋧","\\gnsim",!0),se("math",r,p,"⪊","\\gnapprox",!0),se("math",r,p,"⊁","\\nsucc",!0),se("math",r,p,"⋡","\\nsucceq",!0),se("math",r,p,"⋩","\\succnsim",!0),se("math",r,p,"⪺","\\succnapprox",!0),se("math",r,p,"≆","\\ncong",!0),se("math",r,p,"","\\@nshortparallel"),se("math",r,p,"∦","\\nparallel",!0),se("math",r,p,"⊯","\\nVDash",!0),se("math",r,p,"⋫","\\ntriangleright"),se("math",r,p,"⋭","\\ntrianglerighteq",!0),se("math",r,p,"","\\@nsupseteqq"),se("math",r,p,"⊋","\\supsetneq",!0),se("math",r,p,"","\\@varsupsetneq"),se("math",r,p,"⫌","\\supsetneqq",!0),se("math",r,p,"","\\@varsupsetneqq"),se("math",r,p,"⊮","\\nVdash",!0),se("math",r,p,"⪵","\\precneqq",!0),se("math",r,p,"⪶","\\succneqq",!0),se("math",r,p,"","\\@nsubseteqq"),se("math",r,ce,"⊴","\\unlhd"),se("math",r,ce,"⊵","\\unrhd"),se("math",r,p,"↚","\\nleftarrow",!0),se("math",r,p,"↛","\\nrightarrow",!0),se("math",r,p,"⇍","\\nLeftarrow",!0),se("math",r,p,"⇏","\\nRightarrow",!0),se("math",r,p,"↮","\\nleftrightarrow",!0),se("math",r,p,"⇎","\\nLeftrightarrow",!0),se("math",r,p,"△","\\vartriangle"),se("math",r,"textord","ℏ","\\hslash"),se("math",r,"textord","▽","\\triangledown"),se("math",r,"textord","◊","\\lozenge"),se("math",r,"textord","Ⓢ","\\circledS"),se("math",r,"textord","®","\\circledR"),se("text",r,"textord","®","\\circledR"),se("math",r,"textord","∡","\\measuredangle",!0),se("math",r,"textord","∄","\\nexists"),se("math",r,"textord","℧","\\mho"),se("math",r,"textord","Ⅎ","\\Finv",!0),se("math",r,"textord","⅁","\\Game",!0),se("math",r,"textord","‵","\\backprime"),se("math",r,"textord","▲","\\blacktriangle"),se("math",r,"textord","▼","\\blacktriangledown"),se("math",r,"textord","■","\\blacksquare"),se("math",r,"textord","⧫","\\blacklozenge"),se("math",r,"textord","★","\\bigstar"),se("math",r,"textord","∢","\\sphericalangle",!0),se("math",r,"textord","∁","\\complement",!0),se("math",r,"textord","ð","\\eth",!0),se("math",r,"textord","╱","\\diagup"),se("math",r,"textord","╲","\\diagdown"),se("math",r,"textord","□","\\square"),se("math",r,"textord","□","\\Box"),se("math",r,"textord","◊","\\Diamond"),se("math",r,"textord","¥","\\yen",!0),se("text",r,"textord","¥","\\yen",!0),se("math",r,"textord","✓","\\checkmark",!0),se("text",r,"textord","✓","\\checkmark"),se("math",r,"textord","ℶ","\\beth",!0),se("math",r,"textord","ℸ","\\daleth",!0),se("math",r,"textord","ℷ","\\gimel",!0),se("math",r,"textord","ϝ","\\digamma",!0),se("math",r,"textord","ϰ","\\varkappa"),se("math",r,"open","┌","\\ulcorner",!0),se("math",r,"close","┐","\\urcorner",!0),se("math",r,"open","└","\\llcorner",!0),se("math",r,"close","┘","\\lrcorner",!0),se("math",r,p,"≦","\\leqq",!0),se("math",r,p,"⩽","\\leqslant",!0),se("math",r,p,"⪕","\\eqslantless",!0),se("math",r,p,"≲","\\lesssim",!0),se("math",r,p,"⪅","\\lessapprox",!0),se("math",r,p,"≊","\\approxeq",!0),se("math",r,ce,"⋖","\\lessdot"),se("math",r,p,"⋘","\\lll",!0),se("math",r,p,"≶","\\lessgtr",!0),se("math",r,p,"⋚","\\lesseqgtr",!0),se("math",r,p,"⪋","\\lesseqqgtr",!0),se("math",r,p,"≑","\\doteqdot"),se("math",r,p,"≓","\\risingdotseq",!0),se("math",r,p,"≒","\\fallingdotseq",!0),se("math",r,p,"∽","\\backsim",!0),se("math",r,p,"⋍","\\backsimeq",!0),se("math",r,p,"⫅","\\subseteqq",!0),se("math",r,p,"⋐","\\Subset",!0),se("math",r,p,"⊏","\\sqsubset",!0),se("math",r,p,"≼","\\preccurlyeq",!0),se("math",r,p,"⋞","\\curlyeqprec",!0),se("math",r,p,"≾","\\precsim",!0),se("math",r,p,"⪷","\\precapprox",!0),se("math",r,p,"⊲","\\vartriangleleft"),se("math",r,p,"⊴","\\trianglelefteq"),se("math",r,p,"⊨","\\vDash",!0),se("math",r,p,"⊪","\\Vvdash",!0),se("math",r,p,"⌣","\\smallsmile"),se("math",r,p,"⌢","\\smallfrown"),se("math",r,p,"≏","\\bumpeq",!0),se("math",r,p,"≎","\\Bumpeq",!0),se("math",r,p,"≧","\\geqq",!0),se("math",r,p,"⩾","\\geqslant",!0),se("math",r,p,"⪖","\\eqslantgtr",!0),se("math",r,p,"≳","\\gtrsim",!0),se("math",r,p,"⪆","\\gtrapprox",!0),se("math",r,ce,"⋗","\\gtrdot"),se("math",r,p,"⋙","\\ggg",!0),se("math",r,p,"≷","\\gtrless",!0),se("math",r,p,"⋛","\\gtreqless",!0),se("math",r,p,"⪌","\\gtreqqless",!0),se("math",r,p,"≖","\\eqcirc",!0),se("math",r,p,"≗","\\circeq",!0),se("math",r,p,"≜","\\triangleq",!0),se("math",r,p,"∼","\\thicksim"),se("math",r,p,"≈","\\thickapprox"),se("math",r,p,"⫆","\\supseteqq",!0),se("math",r,p,"⋑","\\Supset",!0),se("math",r,p,"⊐","\\sqsupset",!0),se("math",r,p,"≽","\\succcurlyeq",!0),se("math",r,p,"⋟","\\curlyeqsucc",!0),se("math",r,p,"≿","\\succsim",!0),se("math",r,p,"⪸","\\succapprox",!0),se("math",r,p,"⊳","\\vartriangleright"),se("math",r,p,"⊵","\\trianglerighteq"),se("math",r,p,"⊩","\\Vdash",!0),se("math",r,p,"∣","\\shortmid"),se("math",r,p,"∥","\\shortparallel"),se("math",r,p,"≬","\\between",!0),se("math",r,p,"⋔","\\pitchfork",!0),se("math",r,p,"∝","\\varpropto"),se("math",r,p,"◀","\\blacktriangleleft"),se("math",r,p,"∴","\\therefore",!0),se("math",r,p,"∍","\\backepsilon"),se("math",r,p,"▶","\\blacktriangleright"),se("math",r,p,"∵","\\because",!0),se("math",r,p,"⋘","\\llless"),se("math",r,p,"⋙","\\gggtr"),se("math",r,ce,"⊲","\\lhd"),se("math",r,ce,"⊳","\\rhd"),se("math",r,p,"≂","\\eqsim",!0),se("math",le,p,"⋈","\\Join"),se("math",r,p,"≑","\\Doteq",!0),se("math",r,ce,"∔","\\dotplus",!0),se("math",r,ce,"∖","\\smallsetminus"),se("math",r,ce,"⋒","\\Cap",!0),se("math",r,ce,"⋓","\\Cup",!0),se("math",r,ce,"⩞","\\doublebarwedge",!0),se("math",r,ce,"⊟","\\boxminus",!0),se("math",r,ce,"⊞","\\boxplus",!0),se("math",r,ce,"⋇","\\divideontimes",!0),se("math",r,ce,"⋉","\\ltimes",!0),se("math",r,ce,"⋊","\\rtimes",!0),se("math",r,ce,"⋋","\\leftthreetimes",!0),se("math",r,ce,"⋌","\\rightthreetimes",!0),se("math",r,ce,"⋏","\\curlywedge",!0),se("math",r,ce,"⋎","\\curlyvee",!0),se("math",r,ce,"⊝","\\circleddash",!0),se("math",r,ce,"⊛","\\circledast",!0),se("math",r,ce,"⋅","\\centerdot"),se("math",r,ce,"⊺","\\intercal",!0),se("math",r,ce,"⋒","\\doublecap"),se("math",r,ce,"⋓","\\doublecup"),se("math",r,ce,"⊠","\\boxtimes",!0),se("math",r,p,"⇢","\\dashrightarrow",!0),se("math",r,p,"⇠","\\dashleftarrow",!0),se("math",r,p,"⇇","\\leftleftarrows",!0),se("math",r,p,"⇆","\\leftrightarrows",!0),se("math",r,p,"⇚","\\Lleftarrow",!0),se("math",r,p,"↞","\\twoheadleftarrow",!0),se("math",r,p,"↢","\\leftarrowtail",!0),se("math",r,p,"↫","\\looparrowleft",!0),se("math",r,p,"⇋","\\leftrightharpoons",!0),se("math",r,p,"↶","\\curvearrowleft",!0),se("math",r,p,"↺","\\circlearrowleft",!0),se("math",r,p,"↰","\\Lsh",!0),se("math",r,p,"⇈","\\upuparrows",!0),se("math",r,p,"↿","\\upharpoonleft",!0),se("math",r,p,"⇃","\\downharpoonleft",!0),se("math",r,p,"⊸","\\multimap",!0),se("math",r,p,"↭","\\leftrightsquigarrow",!0),se("math",r,p,"⇉","\\rightrightarrows",!0),se("math",r,p,"⇄","\\rightleftarrows",!0),se("math",r,p,"↠","\\twoheadrightarrow",!0),se("math",r,p,"↣","\\rightarrowtail",!0),se("math",r,p,"↬","\\looparrowright",!0),se("math",r,p,"↷","\\curvearrowright",!0),se("math",r,p,"↻","\\circlearrowright",!0),se("math",r,p,"↱","\\Rsh",!0),se("math",r,p,"⇊","\\downdownarrows",!0),se("math",r,p,"↾","\\upharpoonright",!0),se("math",r,p,"⇂","\\downharpoonright",!0),se("math",r,p,"⇝","\\rightsquigarrow",!0),se("math",r,p,"⇝","\\leadsto"),se("math",r,p,"⇛","\\Rrightarrow",!0),se("math",r,p,"↾","\\restriction"),se("math",le,"textord","‘","`"),se("math",le,"textord","$","\\$"),se("text",le,"textord","$","\\$"),se("text",le,"textord","$","\\textdollar"),se("math",le,"textord","%","\\%"),se("text",le,"textord","%","\\%"),se("math",le,"textord","_","\\_"),se("text",le,"textord","_","\\_"),se("text",le,"textord","_","\\textunderscore"),se("math",le,"textord","∠","\\angle",!0),se("math",le,"textord","∞","\\infty",!0),se("math",le,"textord","′","\\prime"),se("math",le,"textord","△","\\triangle"),se("math",le,"textord","Γ","\\Gamma",!0),se("math",le,"textord","Δ","\\Delta",!0),se("math",le,"textord","Θ","\\Theta",!0),se("math",le,"textord","Λ","\\Lambda",!0),se("math",le,"textord","Ξ","\\Xi",!0),se("math",le,"textord","Π","\\Pi",!0),se("math",le,"textord","Σ","\\Sigma",!0),se("math",le,"textord","Υ","\\Upsilon",!0),se("math",le,"textord","Φ","\\Phi",!0),se("math",le,"textord","Ψ","\\Psi",!0),se("math",le,"textord","Ω","\\Omega",!0),se("math",le,"textord","A","Α"),se("math",le,"textord","B","Β"),se("math",le,"textord","E","Ε"),se("math",le,"textord","Z","Ζ"),se("math",le,"textord","H","Η"),se("math",le,"textord","I","Ι"),se("math",le,"textord","K","Κ"),se("math",le,"textord","M","Μ"),se("math",le,"textord","N","Ν"),se("math",le,"textord","O","Ο"),se("math",le,"textord","P","Ρ"),se("math",le,"textord","T","Τ"),se("math",le,"textord","X","Χ"),se("math",le,"textord","¬","\\neg",!0),se("math",le,"textord","¬","\\lnot"),se("math",le,"textord","⊤","\\top"),se("math",le,"textord","⊥","\\bot"),se("math",le,"textord","∅","\\emptyset"),se("math",r,"textord","∅","\\varnothing"),se("math",le,he,"α","\\alpha",!0),se("math",le,he,"β","\\beta",!0),se("math",le,he,"γ","\\gamma",!0),se("math",le,he,"δ","\\delta",!0),se("math",le,he,"ϵ","\\epsilon",!0),se("math",le,he,"ζ","\\zeta",!0),se("math",le,he,"η","\\eta",!0),se("math",le,he,"θ","\\theta",!0),se("math",le,he,"ι","\\iota",!0),se("math",le,he,"κ","\\kappa",!0),se("math",le,he,"λ","\\lambda",!0),se("math",le,he,"μ","\\mu",!0),se("math",le,he,"ν","\\nu",!0),se("math",le,he,"ξ","\\xi",!0),se("math",le,he,"ο","\\omicron",!0),se("math",le,he,"π","\\pi",!0),se("math",le,he,"ρ","\\rho",!0),se("math",le,he,"σ","\\sigma",!0),se("math",le,he,"τ","\\tau",!0),se("math",le,he,"υ","\\upsilon",!0),se("math",le,he,"ϕ","\\phi",!0),se("math",le,he,"χ","\\chi",!0),se("math",le,he,"ψ","\\psi",!0),se("math",le,he,"ω","\\omega",!0),se("math",le,he,"ε","\\varepsilon",!0),se("math",le,he,"ϑ","\\vartheta",!0),se("math",le,he,"ϖ","\\varpi",!0),se("math",le,he,"ϱ","\\varrho",!0),se("math",le,he,"ς","\\varsigma",!0),se("math",le,he,"φ","\\varphi",!0),se("math",le,ce,"∗","*"),se("math",le,ce,"+","+"),se("math",le,ce,"−","-"),se("math",le,ce,"⋅","\\cdot",!0),se("math",le,ce,"∘","\\circ"),se("math",le,ce,"÷","\\div",!0),se("math",le,ce,"±","\\pm",!0),se("math",le,ce,"×","\\times",!0),se("math",le,ce,"∩","\\cap",!0),se("math",le,ce,"∪","\\cup",!0),se("math",le,ce,"∖","\\setminus"),se("math",le,ce,"∧","\\land"),se("math",le,ce,"∨","\\lor"),se("math",le,ce,"∧","\\wedge",!0),se("math",le,ce,"∨","\\vee",!0),se("math",le,"textord","√","\\surd"),se("math",le,"open","(","("),se("math",le,"open","[","["),se("math",le,"open","⟨","\\langle",!0),se("math",le,"open","∣","\\lvert"),se("math",le,"open","∥","\\lVert"),se("math",le,"close",")",")"),se("math",le,"close","]","]"),se("math",le,"close","?","?"),se("math",le,"close","!","!"),se("math",le,"close","⟩","\\rangle",!0),se("math",le,"close","∣","\\rvert"),se("math",le,"close","∥","\\rVert"),se("math",le,p,"=","="),se("math",le,p,"<","<"),se("math",le,p,">",">"),se("math",le,p,":",":"),se("math",le,p,"≈","\\approx",!0),se("math",le,p,"≅","\\cong",!0),se("math",le,p,"≥","\\ge"),se("math",le,p,"≥","\\geq",!0),se("math",le,p,"←","\\gets"),se("math",le,p,">","\\gt"),se("math",le,p,"∈","\\in",!0),se("math",le,p,"","\\@not"),se("math",le,p,"⊂","\\subset",!0),se("math",le,p,"⊃","\\supset",!0),se("math",le,p,"⊆","\\subseteq",!0),se("math",le,p,"⊇","\\supseteq",!0),se("math",r,p,"⊈","\\nsubseteq",!0),se("math",r,p,"⊉","\\nsupseteq",!0),se("math",le,p,"⊨","\\models"),se("math",le,p,"←","\\leftarrow",!0),se("math",le,p,"≤","\\le"),se("math",le,p,"≤","\\leq",!0),se("math",le,p,"<","\\lt"),se("math",le,p,"→","\\rightarrow",!0),se("math",le,p,"→","\\to"),se("math",r,p,"≱","\\ngeq",!0),se("math",r,p,"≰","\\nleq",!0),se("math",le,"spacing"," ","\\ "),se("math",le,"spacing"," ","~"),se("math",le,"spacing"," ","\\space"),se("math",le,"spacing"," ","\\nobreakspace"),se("text",le,"spacing"," ","\\ "),se("text",le,"spacing"," ","~"),se("text",le,"spacing"," ","\\space"),se("text",le,"spacing"," ","\\nobreakspace"),se("math",le,"spacing",null,"\\nobreak"),se("math",le,"spacing",null,"\\allowbreak"),se("math",le,"punct",",",","),se("math",le,"punct",";",";"),se("math",r,ce,"⊼","\\barwedge",!0),se("math",r,ce,"⊻","\\veebar",!0),se("math",le,ce,"⊙","\\odot",!0),se("math",le,ce,"⊕","\\oplus",!0),se("math",le,ce,"⊗","\\otimes",!0),se("math",le,"textord","∂","\\partial",!0),se("math",le,ce,"⊘","\\oslash",!0),se("math",r,ce,"⊚","\\circledcirc",!0),se("math",r,ce,"⊡","\\boxdot",!0),se("math",le,ce,"△","\\bigtriangleup"),se("math",le,ce,"▽","\\bigtriangledown"),se("math",le,ce,"†","\\dagger"),se("math",le,ce,"⋄","\\diamond"),se("math",le,ce,"⋆","\\star"),se("math",le,ce,"◃","\\triangleleft"),se("math",le,ce,"▹","\\triangleright"),se("math",le,"open","{","\\{"),se("text",le,"textord","{","\\{"),se("text",le,"textord","{","\\textbraceleft"),se("math",le,"close","}","\\}"),se("text",le,"textord","}","\\}"),se("text",le,"textord","}","\\textbraceright"),se("math",le,"open","{","\\lbrace"),se("math",le,"close","}","\\rbrace"),se("math",le,"open","[","\\lbrack"),se("text",le,"textord","[","\\lbrack"),se("math",le,"close","]","\\rbrack"),se("text",le,"textord","]","\\rbrack"),se("math",le,"open","(","\\lparen"),se("math",le,"close",")","\\rparen"),se("text",le,"textord","<","\\textless"),se("text",le,"textord",">","\\textgreater"),se("math",le,"open","⌊","\\lfloor",!0),se("math",le,"close","⌋","\\rfloor",!0),se("math",le,"open","⌈","\\lceil",!0),se("math",le,"close","⌉","\\rceil",!0),se("math",le,"textord","\\","\\backslash"),se("math",le,"textord","∣","|"),se("math",le,"textord","∣","\\vert"),se("text",le,"textord","|","\\textbar"),se("math",le,"textord","∥","\\|"),se("math",le,"textord","∥","\\Vert"),se("text",le,"textord","∥","\\textbardbl"),se("text",le,"textord","~","\\textasciitilde"),se("text",le,"textord","\\","\\textbackslash"),se("text",le,"textord","^","\\textasciicircum"),se("math",le,p,"↑","\\uparrow",!0),se("math",le,p,"⇑","\\Uparrow",!0),se("math",le,p,"↓","\\downarrow",!0),se("math",le,p,"⇓","\\Downarrow",!0),se("math",le,p,"↕","\\updownarrow",!0),se("math",le,p,"⇕","\\Updownarrow",!0),se("math",le,ue,"∐","\\coprod"),se("math",le,ue,"⋁","\\bigvee"),se("math",le,ue,"⋀","\\bigwedge"),se("math",le,ue,"⨄","\\biguplus"),se("math",le,ue,"⋂","\\bigcap"),se("math",le,ue,"⋃","\\bigcup"),se("math",le,ue,"∫","\\int"),se("math",le,ue,"∫","\\intop"),se("math",le,ue,"∬","\\iint"),se("math",le,ue,"∭","\\iiint"),se("math",le,ue,"∏","\\prod"),se("math",le,ue,"∑","\\sum"),se("math",le,ue,"⨂","\\bigotimes"),se("math",le,ue,"⨁","\\bigoplus"),se("math",le,ue,"⨀","\\bigodot"),se("math",le,ue,"∮","\\oint"),se("math",le,ue,"∯","\\oiint"),se("math",le,ue,"∰","\\oiiint"),se("math",le,ue,"⨆","\\bigsqcup"),se("math",le,ue,"∫","\\smallint"),se("text",le,"inner","…","\\textellipsis"),se("math",le,"inner","…","\\mathellipsis"),se("text",le,"inner","…","\\ldots",!0),se("math",le,"inner","…","\\ldots",!0),se("math",le,"inner","⋯","\\@cdots",!0),se("math",le,"inner","⋱","\\ddots",!0),se("math",le,"textord","⋮","\\varvdots"),se("math",le,"accent-token","ˊ","\\acute"),se("math",le,"accent-token","ˋ","\\grave"),se("math",le,"accent-token","¨","\\ddot"),se("math",le,"accent-token","~","\\tilde"),se("math",le,"accent-token","ˉ","\\bar"),se("math",le,"accent-token","˘","\\breve"),se("math",le,"accent-token","ˇ","\\check"),se("math",le,"accent-token","^","\\hat"),se("math",le,"accent-token","⃗","\\vec"),se("math",le,"accent-token","˙","\\dot"),se("math",le,"accent-token","˚","\\mathring"),se("math",le,he,"ı","\\imath",!0),se("math",le,he,"ȷ","\\jmath",!0),se("text",le,"textord","ı","\\i",!0),se("text",le,"textord","ȷ","\\j",!0),se("text",le,"textord","ß","\\ss",!0),se("text",le,"textord","æ","\\ae",!0),se("text",le,"textord","æ","\\ae",!0),se("text",le,"textord","œ","\\oe",!0),se("text",le,"textord","ø","\\o",!0),se("text",le,"textord","Æ","\\AE",!0),se("text",le,"textord","Œ","\\OE",!0),se("text",le,"textord","Ø","\\O",!0),se("text",le,"accent-token","ˊ","\\'"),se("text",le,"accent-token","ˋ","\\`"),se("text",le,"accent-token","ˆ","\\^"),se("text",le,"accent-token","˜","\\~"),se("text",le,"accent-token","ˉ","\\="),se("text",le,"accent-token","˘","\\u"),se("text",le,"accent-token","˙","\\."),se("text",le,"accent-token","˚","\\r"),se("text",le,"accent-token","ˇ","\\v"),se("text",le,"accent-token","¨",'\\"'),se("text",le,"accent-token","˝","\\H"),se("text",le,"accent-token","◯","\\textcircled");var me={"--":!0,"---":!0,"``":!0,"''":!0};se("text",le,"textord","–","--"),se("text",le,"textord","–","\\textendash"),se("text",le,"textord","—","---"),se("text",le,"textord","—","\\textemdash"),se("text",le,"textord","‘","`"),se("text",le,"textord","‘","\\textquoteleft"),se("text",le,"textord","’","'"),se("text",le,"textord","’","\\textquoteright"),se("text",le,"textord","“","``"),se("text",le,"textord","“","\\textquotedblleft"),se("text",le,"textord","”","''"),se("text",le,"textord","”","\\textquotedblright"),se("math",le,"textord","°","\\degree",!0),se("text",le,"textord","°","\\degree"),se("text",le,"textord","°","\\textdegree",!0),se("math",le,he,"£","\\pounds"),se("math",le,he,"£","\\mathsterling",!0),se("text",le,he,"£","\\pounds"),se("text",le,he,"£","\\textsterling",!0),se("math",r,"textord","✠","\\maltese"),se("text",r,"textord","✠","\\maltese"),se("text",le,"spacing"," ","\\ "),se("text",le,"spacing"," "," "),se("text",le,"spacing"," ","~");for(var pe=0;pe<'0123456789/@."'.length;pe++){var de='0123456789/@."'.charAt(pe);se("math",le,"textord",de,de)}for(var fe=0;fe<'0123456789!@*()-=+[]<>|";:?/.,'.length;fe++){var ge='0123456789!@*()-=+[]<>|";:?/.,'.charAt(fe);se("text",le,"textord",ge,ge)}for(var be="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",ve=0;vet&&(t=i.height),i.depth>r&&(r=i.depth),i.maxFontSize>n&&(n=i.maxFontSize)}e.height=t,e.depth=r,e.maxFontSize=n}function Oe(e,t,r,n){return n=new q(e,t,r,n),Re(n),n}function Fe(e,t,r,n){return new q(e,t,r,n)}function Pe(e){return e=new D(e),Re(e),e}function He(e,t,r){var n="";switch(e){case"amsrm":n="AMS";break;case"textrm":n="Main";break;case"textsf":n="SansSerif";break;case"texttt":n="Typewriter";break;default:n=e}return n+"-"+("textbf"===t&&"textit"===r?"BoldItalic":"textbf"===t?"Bold":"textit"===t?"Italic":"Regular")}var Ue=ue,je={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:1.00375,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:1.00375},Ve={ex:!0,em:!0,mu:!0},$e=["\\imath","ı","\\jmath","ȷ","\\pounds","\\mathsterling","\\textsterling","£"],We={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},Ge={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Ze={fontMap:We,makeSymbol:Ne,mathsym:function(e,t,r,n){return void 0===n&&(n=[]),"boldsymbol"===r.font&&Be(e,"Main-Bold",t).metrics?Ne(e,"Main-Bold",t,r,n.concat(["mathbf"])):"\\"===e||"main"===ae[t][e].font?Ne(e,"Main-Regular",t,r,n):Ne(e,"AMS-Regular",t,r,n.concat(["amsrm"]))},makeSpan:Oe,makeSvgSpan:Fe,makeLineSpan:function(e,t,r){e=Oe([e],[],t);return e.height=Math.max(r||t.fontMetrics().defaultRuleThickness,t.minRuleThickness),e.style.borderBottomWidth=e.height+"em",e.maxFontSize=1,e},makeAnchor:function(e,t,r,n){n=new I(e,t,r,n);return Re(n),n},makeFragment:Pe,wrapFragment:function(e,t){return e instanceof D?Oe([],[e],t):e},makeVList:function(e,t){for(var r=function(e){if("individualShift"===e.positionType){for(var t=e.children,r=[t[0]],n=-t[0].shift-t[0].elem.depth,o=n,i=1;i"},r.toText=function(){return this.children.map(function(e){return e.toText()}).join("")},It),zt=((r=qt.prototype).toNode=function(){return document.createTextNode(this.text)},r.toMarkup=function(){return V.escape(this.toText())},r.toText=function(){return this.text},qt),Et={MathNode:Mt,TextNode:zt,SpaceNode:((r=Dt.prototype).toNode=function(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",this.width+"em"),e},r.toMarkup=function(){return this.character?""+this.character+"":''},r.toText=function(){return this.character||" "},Dt),newDocumentFragment:wt},Tt=function(e,t){if(!e)return new Et.MathNode("mrow");if(ot[e.type])return ot[e.type](e,t);throw new j("Got group of unknown type: '"+e.type+"'")};function Dt(e){this.width=void 0,this.character=void 0,this.width=e,this.character=.05555<=e&&e<=.05556?" ":.1666<=e&&e<=.1667?" ":.2222<=e&&e<=.2223?" ":.2777<=e&&e<=.2778?"  ":-.05556<=e&&e<=-.05555?" ⁣":-.1667<=e&&e<=-.1666?" ⁣":-.2223<=e&&e<=-.2222?" ⁣":-.2778<=e&&e<=-.2777?" ⁣":null}function qt(e){this.text=void 0,this.text=e}function It(e,t){this.type=void 0,this.attributes=void 0,this.children=void 0,this.type=e,this.attributes={},this.children=t||[]}function Lt(e,t,r,n){var r=Ct(e,r),r=1===r.length&&r[0]instanceof Mt&&V.contains(["mrow","mtable"],r[0].type)?r[0]:new Et.MathNode("mrow",r),t=new Et.MathNode("annotation",[new Et.TextNode(t)]);t.setAttribute("encoding","application/x-tex");t=new Et.MathNode("semantics",[r,t]),t=new Et.MathNode("math",[t]);return t.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),Ze.makeSpan([n?"katex":"katex-mathml"],[t])}function Bt(e){return(e=new Et.MathNode("mo",[new Et.TextNode(Ht[e.substr(1)])])).setAttribute("stretchy","true"),e}function Nt(g,b){var e=(r=function(){var e=4e5,t=g.label.substr(1);if(V.contains(["widehat","widecheck","widetilde","utilde"],t)){var r,n=jt(g.base);o=5 but got "+String(e)+".")}(vt(o,t)),o.base=r):l=(r=Ye(e,"accent")).base,o=vt(l,t.havingCrampedStyle()),e=0,r.isShifty&&V.isCharacterBox(l)&&(i=V.getBaseElem(l),e=K(vt(i,t.havingCrampedStyle())).skew);var i,a,s,l=Math.min(o.height,t.fontMetrics().xHeight);return a=r.isStretchy?(a=Nt(r,t),Ze.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"elem",elem:a,wrapperClasses:["svg-align"],wrapperStyle:0"!==e&&"\\gt"!==e&&"⟩"!==e||(e="\\rangle");var a=V.contains(lr,e)?hr:V.contains(ar,e)?mr:ur;return"small"===(a=Kt(e,t,a,n)).type?function(e,t,r,n,o){e=Ze.makeSymbol(e,"Main-Regular",i,n),o=rr(e,t,n,o);return r&&nr(o,n,t),o}(e,a.style,r,n,o):"large"===a.type?Zt(e,a.size,r,n,i,o):Yt(e,t,r,n,i,o)}function Qt(e,t,r,n,o){if("<"===e||"\\lt"===e||"⟨"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"⟩"!==e||(e="\\rangle"),V.contains(ar,e)||V.contains(lr,e))return Zt(e,t,!1,r,n,o);if(V.contains(sr,e))return Yt(e,cr[t],!1,r,n,o);throw new j("Illegal delimiter: '"+e+"'")}function er(e,t,r,n,o,i){var a=n.fontMetrics().axisHeight*n.sizeMultiplier,s=5/n.fontMetrics().ptPerEm,a=Math.max(t-a,r+a),s=Math.max(a/500*901,2*a-s);return Jt(e,s,!0,n,o,i)}var tr=function(e,t,r){r=te(ae.math[e]&&ae.math[e].replace||e,t,r);if(!r)throw new Error("Unsupported symbol "+e+" and font size "+t+".");return r},rr=function(e,t,r,n){t=r.havingBaseStyle(t),e=Ze.makeSpan(n.concat(t.sizingClasses(r)),[e],r),r=t.sizeMultiplier/r.sizeMultiplier;return e.height*=r,e.depth*=r,e.maxFontSize=t.sizeMultiplier,e},nr=function(e,t,r){r=t.havingBaseStyle(r),t=(1-t.sizeMultiplier/r.sizeMultiplier)*t.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=t+"em",e.height-=t,e.depth+=t},or=function(e,t,r){return{type:"elem",elem:Ze.makeSpan(["delimsizinginner","Size1-Regular"===t?"delim-size1":"delim-size4"],[Ze.makeSpan([],[Ze.makeSymbol(e,t,r)])])}},ir={type:"kern",size:-.005},ar=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","\\surd"],sr=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱"],lr=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],cr=[0,1.2,1.8,2.4,3],hr=[{type:"small",style:$.SCRIPTSCRIPT},{type:"small",style:$.SCRIPT},{type:"small",style:$.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],ur=[{type:"small",style:$.SCRIPTSCRIPT},{type:"small",style:$.SCRIPT},{type:"small",style:$.TEXT},{type:"stack"}],mr=[{type:"small",style:$.SCRIPTSCRIPT},{type:"small",style:$.SCRIPT},{type:"small",style:$.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],pr=function(e){if("small"===e.type)return"Main-Regular";if("large"===e.type)return"Size"+e.size+"-Regular";if("stack"===e.type)return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},dr=Jt,fr={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},gr=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function br(e,t){var r=Qe(e);if(r&&V.contains(gr,r.text))return r;throw new j("Invalid delimiter: '"+(r?r.text:JSON.stringify(e))+"' after '"+t.funcName+"'",e)}function vr(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}it({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1},handler:function(e,t){t=br(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:fr[e.funcName].size,mclass:fr[e.funcName].mclass,delim:t.text}},htmlBuilder:function(e,t){return"."===e.delim?Ze.makeSpan([e.mclass]):Qt(e.delim,e.size,t,e.mode,[e.mclass])},mathmlBuilder:function(e){var t=[];"."!==e.delim&&t.push(kt(e.delim,e.mode));t=new Et.MathNode("mo",t);return"mopen"===e.mclass||"mclose"===e.mclass?t.setAttribute("fence","true"):t.setAttribute("fence","false"),t}}),it({type:"leftright-right",names:["\\right"],props:{numArgs:1},handler:function(e,t){var r=e.parser.gullet.macros.get("\\current@color");if(r&&"string"!=typeof r)throw new j("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:e.parser.mode,delim:br(t[0],e).text,color:r}}}),it({type:"leftright",names:["\\left"],props:{numArgs:1},handler:function(e,t){var r=br(t[0],e),n=e.parser;++n.leftrightDepth;t=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);e=Ye(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:t,left:r.text,right:e.delim,rightColor:e.color}},htmlBuilder:function(e,t){vr(e);for(var r,n,o=lt(e.body,t,!0,["mopen","mclose"]),i=0,a=0,s=!1,l=0;l=$.SCRIPT.id?t.text():$.DISPLAY:"text"===e&&t.size===$.DISPLAY.size?t=$.TEXT:"script"===e?t=$.SCRIPT:"scriptscript"===e&&(t=$.SCRIPTSCRIPT),t}function Fr(e,t){var r=Or(e.size,t.style),n=r.fracNum(),o=r.fracDen(),i=t.havingStyle(n),n=vt(e.numer,i,t);e.continued&&(h=8.5/t.fontMetrics().ptPerEm,u=3.5/t.fontMetrics().ptPerEm,n.height=n.heighti.height+i.depth+l&&(l=(l+m-i.height-i.depth)/2);l=u.height-i.height-l-s;i.style.paddingLeft=h.advanceWidth+"em";u=Ze.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i,wrapperClasses:["svg-align"]},{type:"kern",size:-(i.height+l)},{type:"elem",elem:u},{type:"kern",size:s}]},t);if(e.index){s=t.havingStyle($.SCRIPTSCRIPT),e=vt(e.index,s,t),s=.6*(u.height-u.depth),e=Ze.makeVList({positionType:"shift",positionData:-s,children:[{type:"elem",elem:e}]},t),e=Ze.makeSpan(["root"],[e]);return Ze.makeSpan(["mord","sqrt"],[e,u],t)}return Ze.makeSpan(["mord","sqrt"],[u],t)},mathmlBuilder:function(e,t){var r=e.body,e=e.index;return e?new Et.MathNode("mroot",[Tt(r,t),Tt(e,t)]):new Et.MathNode("msqrt",[Tt(r,t)])}});var tn={display:$.DISPLAY,text:$.TEXT,script:$.SCRIPT,scriptscript:$.SCRIPTSCRIPT};it({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0},handler:function(e,t){var r=e.breakOnTokenText,n=e.funcName,e=e.parser,r=e.parseExpression(!0,r),n=n.slice(1,n.length-5);return{type:"styling",mode:e.mode,style:n,body:r}},htmlBuilder:function(e,t){var r=tn[e.style],r=t.havingStyle(r).withFont("");return Qr(e.body,r,t)},mathmlBuilder:function(e,t){var r=tn[e.style],r=t.havingStyle(r),r=Ct(e.body,r),r=new Et.MathNode("mstyle",r),e={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[e.style];return r.setAttribute("scriptlevel",e[0]),r.setAttribute("displaystyle",e[1]),r}}),at({type:"supsub",htmlBuilder:function(e,t){var r=(u=(h=e).base)?"op"===u.type?u.limits&&(t.style.size===$.DISPLAY.size||u.alwaysHandleSupSub)?Gr:null:"operatorname"===u.type?u.alwaysHandleSupSub&&(t.style.size===$.DISPLAY.size||u.limits)?Jr:null:"accent"===u.type?V.isCharacterBox(u.base)?Rt:null:"horizBrace"===u.type&&!h.sub===u.isOver?jr:null:null;if(r)return r(e,t);var n,o,i=e.base,a=e.sup,s=e.sub,l=vt(i,t),c=t.fontMetrics(),h=0,u=0,r=i&&V.isCharacterBox(i);a&&(i=t.havingStyle(t.style.sup()),n=vt(a,i,t),r||(h=l.height-i.fontMetrics().supDrop*i.sizeMultiplier/t.sizeMultiplier)),s&&(m=t.havingStyle(t.style.sub()),o=vt(s,m,t),r||(u=l.depth+m.fontMetrics().subDrop*m.sizeMultiplier/t.sizeMultiplier));var s=t.style===$.DISPLAY?c.sup1:t.style.cramped?c.sup3:c.sup2,r=t.sizeMultiplier,m=.5/c.ptPerEm/r+"em",r=null;if(o&&(p=e.base&&"op"===e.base.type&&e.base.name&&("\\oiint"===e.base.name||"\\oiiint"===e.base.name),(l instanceof N||p)&&(r=-l.italic+"em")),n&&o){h=Math.max(h,s,n.depth+.25*c.xHeight),u=Math.max(u,c.sub2);var p=4*c.defaultRuleThickness;h-n.depth-(o.height-u)":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};wn("\\dots",function(e){var t="\\dotso",e=e.expandAfterFuture().text;return e in Cn?t=Cn[e]:("\\not"===e.substr(0,4)||e in ae.math&&V.contains(["bin","rel"],ae.math[e].group))&&(t="\\dotsb"),t});var An={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};wn("\\dotso",function(e){return e.future().text in An?"\\ldots\\,":"\\ldots"}),wn("\\dotsc",function(e){e=e.future().text;return e in An&&","!==e?"\\ldots\\,":"\\ldots"}),wn("\\cdots",function(e){return e.future().text in An?"\\@cdots\\,":"\\@cdots"}),wn("\\dotsb","\\cdots"),wn("\\dotsm","\\cdots"),wn("\\dotsi","\\!\\cdots"),wn("\\dotsx","\\ldots\\,"),wn("\\DOTSI","\\relax"),wn("\\DOTSB","\\relax"),wn("\\DOTSX","\\relax"),wn("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),wn("\\,","\\tmspace+{3mu}{.1667em}"),wn("\\thinspace","\\,"),wn("\\>","\\mskip{4mu}"),wn("\\:","\\tmspace+{4mu}{.2222em}"),wn("\\medspace","\\:"),wn("\\;","\\tmspace+{5mu}{.2777em}"),wn("\\thickspace","\\;"),wn("\\!","\\tmspace-{3mu}{.1667em}"),wn("\\negthinspace","\\!"),wn("\\negmedspace","\\tmspace-{4mu}{.2222em}"),wn("\\negthickspace","\\tmspace-{5mu}{.277em}"),wn("\\enspace","\\kern.5em "),wn("\\enskip","\\hskip.5em\\relax"),wn("\\quad","\\hskip1em\\relax"),wn("\\qquad","\\hskip2em\\relax"),wn("\\tag","\\@ifstar\\tag@literal\\tag@paren"),wn("\\tag@paren","\\tag@literal{({#1})}"),wn("\\tag@literal",function(e){if(e.macros.get("\\df@tag"))throw new j("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"}),wn("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),wn("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),wn("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),wn("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),wn("\\pmb","\\html@mathml{\\@binrel{#1}{\\mathrlap{#1}\\kern0.5px#1}}{\\mathbf{#1}}"),wn("\\\\","\\newline"),wn("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");r=J["Main-Regular"]["T".charCodeAt(0)][1]-.7*J["Main-Regular"]["A".charCodeAt(0)][1]+"em";wn("\\LaTeX","\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{"+r+"}{\\scriptstyle A}\\kern-.15em\\TeX}{LaTeX}}"),wn("\\KaTeX","\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{"+r+"}{\\scriptstyle A}\\kern-.15em\\TeX}{KaTeX}}"),wn("\\hspace","\\@ifstar\\@hspacer\\@hspace"),wn("\\@hspace","\\hskip #1\\relax"),wn("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),wn("\\ordinarycolon",":"),wn("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),wn("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),wn("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),wn("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),wn("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),wn("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),wn("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),wn("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),wn("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),wn("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),wn("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),wn("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),wn("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),wn("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),wn("∷","\\dblcolon"),wn("∹","\\eqcolon"),wn("≔","\\coloneqq"),wn("≕","\\eqqcolon"),wn("⩴","\\Coloneqq"),wn("\\ratio","\\vcentcolon"),wn("\\coloncolon","\\dblcolon"),wn("\\colonequals","\\coloneqq"),wn("\\coloncolonequals","\\Coloneqq"),wn("\\equalscolon","\\eqqcolon"),wn("\\equalscoloncolon","\\Eqqcolon"),wn("\\colonminus","\\coloneq"),wn("\\coloncolonminus","\\Coloneq"),wn("\\minuscolon","\\eqcolon"),wn("\\minuscoloncolon","\\Eqcolon"),wn("\\coloncolonapprox","\\Colonapprox"),wn("\\coloncolonsim","\\Colonsim"),wn("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),wn("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),wn("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),wn("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),wn("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}"),wn("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),wn("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),wn("\\gvertneqq","\\html@mathml{\\@gvertneqq}{≩}"),wn("\\lvertneqq","\\html@mathml{\\@lvertneqq}{≨}"),wn("\\ngeqq","\\html@mathml{\\@ngeqq}{≱}"),wn("\\ngeqslant","\\html@mathml{\\@ngeqslant}{≱}"),wn("\\nleqq","\\html@mathml{\\@nleqq}{≰}"),wn("\\nleqslant","\\html@mathml{\\@nleqslant}{≰}"),wn("\\nshortmid","\\html@mathml{\\@nshortmid}{∤}"),wn("\\nshortparallel","\\html@mathml{\\@nshortparallel}{∦}"),wn("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{⊈}"),wn("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{⊉}"),wn("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{⊊}"),wn("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{⫋}"),wn("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{⊋}"),wn("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{⫌}"),wn("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}"),wn("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}"),wn("⟦","\\llbracket"),wn("⟧","\\rrbracket"),wn("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}"),wn("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}"),wn("⦃","\\lBrace"),wn("⦄","\\rBrace"),wn("\\darr","\\downarrow"),wn("\\dArr","\\Downarrow"),wn("\\Darr","\\Downarrow"),wn("\\lang","\\langle"),wn("\\rang","\\rangle"),wn("\\uarr","\\uparrow"),wn("\\uArr","\\Uparrow"),wn("\\Uarr","\\Uparrow"),wn("\\N","\\mathbb{N}"),wn("\\R","\\mathbb{R}"),wn("\\Z","\\mathbb{Z}"),wn("\\alef","\\aleph"),wn("\\alefsym","\\aleph"),wn("\\Alpha","\\mathrm{A}"),wn("\\Beta","\\mathrm{B}"),wn("\\bull","\\bullet"),wn("\\Chi","\\mathrm{X}"),wn("\\clubs","\\clubsuit"),wn("\\cnums","\\mathbb{C}"),wn("\\Complex","\\mathbb{C}"),wn("\\Dagger","\\ddagger"),wn("\\diamonds","\\diamondsuit"),wn("\\empty","\\emptyset"),wn("\\Epsilon","\\mathrm{E}"),wn("\\Eta","\\mathrm{H}"),wn("\\exist","\\exists"),wn("\\harr","\\leftrightarrow"),wn("\\hArr","\\Leftrightarrow"),wn("\\Harr","\\Leftrightarrow"),wn("\\hearts","\\heartsuit"),wn("\\image","\\Im"),wn("\\infin","\\infty"),wn("\\Iota","\\mathrm{I}"),wn("\\isin","\\in"),wn("\\Kappa","\\mathrm{K}"),wn("\\larr","\\leftarrow"),wn("\\lArr","\\Leftarrow"),wn("\\Larr","\\Leftarrow"),wn("\\lrarr","\\leftrightarrow"),wn("\\lrArr","\\Leftrightarrow"),wn("\\Lrarr","\\Leftrightarrow"),wn("\\Mu","\\mathrm{M}"),wn("\\natnums","\\mathbb{N}"),wn("\\Nu","\\mathrm{N}"),wn("\\Omicron","\\mathrm{O}"),wn("\\plusmn","\\pm"),wn("\\rarr","\\rightarrow"),wn("\\rArr","\\Rightarrow"),wn("\\Rarr","\\Rightarrow"),wn("\\real","\\Re"),wn("\\reals","\\mathbb{R}"),wn("\\Reals","\\mathbb{R}"),wn("\\Rho","\\mathrm{P}"),wn("\\sdot","\\cdot"),wn("\\sect","\\S"),wn("\\spades","\\spadesuit"),wn("\\sub","\\subset"),wn("\\sube","\\subseteq"),wn("\\supe","\\supseteq"),wn("\\Tau","\\mathrm{T}"),wn("\\thetasym","\\vartheta"),wn("\\weierp","\\wp"),wn("\\Zeta","\\mathrm{Z}"),wn("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),wn("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),wn("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits"),wn("\\blue","\\textcolor{##6495ed}{#1}"),wn("\\orange","\\textcolor{##ffa500}{#1}"),wn("\\pink","\\textcolor{##ff00af}{#1}"),wn("\\red","\\textcolor{##df0030}{#1}"),wn("\\green","\\textcolor{##28ae7b}{#1}"),wn("\\gray","\\textcolor{gray}{#1}"),wn("\\purple","\\textcolor{##9d38bd}{#1}"),wn("\\blueA","\\textcolor{##ccfaff}{#1}"),wn("\\blueB","\\textcolor{##80f6ff}{#1}"),wn("\\blueC","\\textcolor{##63d9ea}{#1}"),wn("\\blueD","\\textcolor{##11accd}{#1}"),wn("\\blueE","\\textcolor{##0c7f99}{#1}"),wn("\\tealA","\\textcolor{##94fff5}{#1}"),wn("\\tealB","\\textcolor{##26edd5}{#1}"),wn("\\tealC","\\textcolor{##01d1c1}{#1}"),wn("\\tealD","\\textcolor{##01a995}{#1}"),wn("\\tealE","\\textcolor{##208170}{#1}"),wn("\\greenA","\\textcolor{##b6ffb0}{#1}"),wn("\\greenB","\\textcolor{##8af281}{#1}"),wn("\\greenC","\\textcolor{##74cf70}{#1}"),wn("\\greenD","\\textcolor{##1fab54}{#1}"),wn("\\greenE","\\textcolor{##0d923f}{#1}"),wn("\\goldA","\\textcolor{##ffd0a9}{#1}"),wn("\\goldB","\\textcolor{##ffbb71}{#1}"),wn("\\goldC","\\textcolor{##ff9c39}{#1}"),wn("\\goldD","\\textcolor{##e07d10}{#1}"),wn("\\goldE","\\textcolor{##a75a05}{#1}"),wn("\\redA","\\textcolor{##fca9a9}{#1}"),wn("\\redB","\\textcolor{##ff8482}{#1}"),wn("\\redC","\\textcolor{##f9685d}{#1}"),wn("\\redD","\\textcolor{##e84d39}{#1}"),wn("\\redE","\\textcolor{##bc2612}{#1}"),wn("\\maroonA","\\textcolor{##ffbde0}{#1}"),wn("\\maroonB","\\textcolor{##ff92c6}{#1}"),wn("\\maroonC","\\textcolor{##ed5fa6}{#1}"),wn("\\maroonD","\\textcolor{##ca337c}{#1}"),wn("\\maroonE","\\textcolor{##9e034e}{#1}"),wn("\\purpleA","\\textcolor{##ddd7ff}{#1}"),wn("\\purpleB","\\textcolor{##c6b9fc}{#1}"),wn("\\purpleC","\\textcolor{##aa87ff}{#1}"),wn("\\purpleD","\\textcolor{##7854ab}{#1}"),wn("\\purpleE","\\textcolor{##543b78}{#1}"),wn("\\mintA","\\textcolor{##f5f9e8}{#1}"),wn("\\mintB","\\textcolor{##edf2df}{#1}"),wn("\\mintC","\\textcolor{##e0e5cc}{#1}"),wn("\\grayA","\\textcolor{##f6f7f7}{#1}"),wn("\\grayB","\\textcolor{##f0f1f2}{#1}"),wn("\\grayC","\\textcolor{##e3e5e6}{#1}"),wn("\\grayD","\\textcolor{##d6d8da}{#1}"),wn("\\grayE","\\textcolor{##babec2}{#1}"),wn("\\grayF","\\textcolor{##888d93}{#1}"),wn("\\grayG","\\textcolor{##626569}{#1}"),wn("\\grayH","\\textcolor{##3b3e40}{#1}"),wn("\\grayI","\\textcolor{##21242c}{#1}"),wn("\\kaBlue","\\textcolor{##314453}{#1}"),wn("\\kaGreen","\\textcolor{##71B307}{#1}");var Mn={"\\relax":!0,"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},zn=((r=In.prototype).feed=function(e){this.lexer=new fn(e,this.settings)},r.switchMode=function(e){this.mode=e},r.beginGroup=function(){this.macros.beginGroup()},r.endGroup=function(){this.macros.endGroup()},r.future=function(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]},r.popToken=function(){return this.future(),this.stack.pop()},r.pushToken=function(e){this.stack.push(e)},r.pushTokens=function(e){var t;(t=this.stack).push.apply(t,e)},r.consumeSpaces=function(){for(;" "===this.future().text;)this.stack.pop()},r.consumeArgs=function(e){for(var t=[],r=0;rthis.settings.maxExpand)throw new j("Too many expansions: infinite loop or need to increase maxExpand setting");var r=t.tokens;if(t.numArgs)for(var n=this.consumeArgs(t.numArgs),o=(r=r.slice()).length-1;0<=o;--o){var i=r[o];if("#"===i.text){if(0===o)throw new j("Incomplete placeholder at end of macro body",i);if("#"===(i=r[--o]).text)r.splice(o+1,1);else{if(!/^[1-9]$/.test(i.text))throw new j("Not a valid argument number",i);r.splice.apply(r,[o,2].concat(n[+i.text-1]))}}}return this.pushTokens(r),r},r.expandAfterFuture=function(){return this.expandOnce(),this.future()},r.expandNextToken=function(){for(;;){var e=this.expandOnce();if(e instanceof o){if("\\relax"!==e.text)return this.stack.pop();this.stack.pop()}}throw new Error},r.expandMacro=function(e){if(this.macros.get(e)){var t=[],r=this.stack.length;for(this.pushToken(new o(e));this.stack.length>r;)this.expandOnce()instanceof o&&t.push(this.stack.pop());return t}},r.expandMacroAsText=function(e){e=this.expandMacro(e);return e&&e.map(function(e){return e.text}).join("")},r._getExpansion=function(e){e=this.macros.get(e);if(null==e)return e;e="function"==typeof e?e(this):e;if("string"!=typeof e)return e;var t=0;if(-1!==e.indexOf("#"))for(var r=e.replace(/##/g,"");-1!==r.indexOf("#"+(t+1));)++t;for(var n=new fn(e,this.settings),o=[],i=n.lex();"EOF"!==i.text;)o.push(i),i=n.lex();return o.reverse(),{tokens:o,numArgs:t}},r.isDefined=function(e){return this.macros.has(e)||mn.hasOwnProperty(e)||ae.math.hasOwnProperty(e)||ae.text.hasOwnProperty(e)||Mn.hasOwnProperty(e)},In),En={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"}},Tn={"á":"á","à":"à","ä":"ä","ǟ":"ǟ","ã":"ã","ā":"ā","ă":"ă","ắ":"ắ","ằ":"ằ","ẵ":"ẵ","ǎ":"ǎ","â":"â","ấ":"ấ","ầ":"ầ","ẫ":"ẫ","ȧ":"ȧ","ǡ":"ǡ","å":"å","ǻ":"ǻ","ḃ":"ḃ","ć":"ć","č":"č","ĉ":"ĉ","ċ":"ċ","ď":"ď","ḋ":"ḋ","é":"é","è":"è","ë":"ë","ẽ":"ẽ","ē":"ē","ḗ":"ḗ","ḕ":"ḕ","ĕ":"ĕ","ě":"ě","ê":"ê","ế":"ế","ề":"ề","ễ":"ễ","ė":"ė","ḟ":"ḟ","ǵ":"ǵ","ḡ":"ḡ","ğ":"ğ","ǧ":"ǧ","ĝ":"ĝ","ġ":"ġ","ḧ":"ḧ","ȟ":"ȟ","ĥ":"ĥ","ḣ":"ḣ","í":"í","ì":"ì","ï":"ï","ḯ":"ḯ","ĩ":"ĩ","ī":"ī","ĭ":"ĭ","ǐ":"ǐ","î":"î","ǰ":"ǰ","ĵ":"ĵ","ḱ":"ḱ","ǩ":"ǩ","ĺ":"ĺ","ľ":"ľ","ḿ":"ḿ","ṁ":"ṁ","ń":"ń","ǹ":"ǹ","ñ":"ñ","ň":"ň","ṅ":"ṅ","ó":"ó","ò":"ò","ö":"ö","ȫ":"ȫ","õ":"õ","ṍ":"ṍ","ṏ":"ṏ","ȭ":"ȭ","ō":"ō","ṓ":"ṓ","ṑ":"ṑ","ŏ":"ŏ","ǒ":"ǒ","ô":"ô","ố":"ố","ồ":"ồ","ỗ":"ỗ","ȯ":"ȯ","ȱ":"ȱ","ő":"ő","ṕ":"ṕ","ṗ":"ṗ","ŕ":"ŕ","ř":"ř","ṙ":"ṙ","ś":"ś","ṥ":"ṥ","š":"š","ṧ":"ṧ","ŝ":"ŝ","ṡ":"ṡ","ẗ":"ẗ","ť":"ť","ṫ":"ṫ","ú":"ú","ù":"ù","ü":"ü","ǘ":"ǘ","ǜ":"ǜ","ǖ":"ǖ","ǚ":"ǚ","ũ":"ũ","ṹ":"ṹ","ū":"ū","ṻ":"ṻ","ŭ":"ŭ","ǔ":"ǔ","û":"û","ů":"ů","ű":"ű","ṽ":"ṽ","ẃ":"ẃ","ẁ":"ẁ","ẅ":"ẅ","ŵ":"ŵ","ẇ":"ẇ","ẘ":"ẘ","ẍ":"ẍ","ẋ":"ẋ","ý":"ý","ỳ":"ỳ","ÿ":"ÿ","ỹ":"ỹ","ȳ":"ȳ","ŷ":"ŷ","ẏ":"ẏ","ẙ":"ẙ","ź":"ź","ž":"ž","ẑ":"ẑ","ż":"ż","Á":"Á","À":"À","Ä":"Ä","Ǟ":"Ǟ","Ã":"Ã","Ā":"Ā","Ă":"Ă","Ắ":"Ắ","Ằ":"Ằ","Ẵ":"Ẵ","Ǎ":"Ǎ","Â":"Â","Ấ":"Ấ","Ầ":"Ầ","Ẫ":"Ẫ","Ȧ":"Ȧ","Ǡ":"Ǡ","Å":"Å","Ǻ":"Ǻ","Ḃ":"Ḃ","Ć":"Ć","Č":"Č","Ĉ":"Ĉ","Ċ":"Ċ","Ď":"Ď","Ḋ":"Ḋ","É":"É","È":"È","Ë":"Ë","Ẽ":"Ẽ","Ē":"Ē","Ḗ":"Ḗ","Ḕ":"Ḕ","Ĕ":"Ĕ","Ě":"Ě","Ê":"Ê","Ế":"Ế","Ề":"Ề","Ễ":"Ễ","Ė":"Ė","Ḟ":"Ḟ","Ǵ":"Ǵ","Ḡ":"Ḡ","Ğ":"Ğ","Ǧ":"Ǧ","Ĝ":"Ĝ","Ġ":"Ġ","Ḧ":"Ḧ","Ȟ":"Ȟ","Ĥ":"Ĥ","Ḣ":"Ḣ","Í":"Í","Ì":"Ì","Ï":"Ï","Ḯ":"Ḯ","Ĩ":"Ĩ","Ī":"Ī","Ĭ":"Ĭ","Ǐ":"Ǐ","Î":"Î","İ":"İ","Ĵ":"Ĵ","Ḱ":"Ḱ","Ǩ":"Ǩ","Ĺ":"Ĺ","Ľ":"Ľ","Ḿ":"Ḿ","Ṁ":"Ṁ","Ń":"Ń","Ǹ":"Ǹ","Ñ":"Ñ","Ň":"Ň","Ṅ":"Ṅ","Ó":"Ó","Ò":"Ò","Ö":"Ö","Ȫ":"Ȫ","Õ":"Õ","Ṍ":"Ṍ","Ṏ":"Ṏ","Ȭ":"Ȭ","Ō":"Ō","Ṓ":"Ṓ","Ṑ":"Ṑ","Ŏ":"Ŏ","Ǒ":"Ǒ","Ô":"Ô","Ố":"Ố","Ồ":"Ồ","Ỗ":"Ỗ","Ȯ":"Ȯ","Ȱ":"Ȱ","Ő":"Ő","Ṕ":"Ṕ","Ṗ":"Ṗ","Ŕ":"Ŕ","Ř":"Ř","Ṙ":"Ṙ","Ś":"Ś","Ṥ":"Ṥ","Š":"Š","Ṧ":"Ṧ","Ŝ":"Ŝ","Ṡ":"Ṡ","Ť":"Ť","Ṫ":"Ṫ","Ú":"Ú","Ù":"Ù","Ü":"Ü","Ǘ":"Ǘ","Ǜ":"Ǜ","Ǖ":"Ǖ","Ǚ":"Ǚ","Ũ":"Ũ","Ṹ":"Ṹ","Ū":"Ū","Ṻ":"Ṻ","Ŭ":"Ŭ","Ǔ":"Ǔ","Û":"Û","Ů":"Ů","Ű":"Ű","Ṽ":"Ṽ","Ẃ":"Ẃ","Ẁ":"Ẁ","Ẅ":"Ẅ","Ŵ":"Ŵ","Ẇ":"Ẇ","Ẍ":"Ẍ","Ẋ":"Ẋ","Ý":"Ý","Ỳ":"Ỳ","Ÿ":"Ÿ","Ỹ":"Ỹ","Ȳ":"Ȳ","Ŷ":"Ŷ","Ẏ":"Ẏ","Ź":"Ź","Ž":"Ž","Ẑ":"Ẑ","Ż":"Ż","ά":"ά","ὰ":"ὰ","ᾱ":"ᾱ","ᾰ":"ᾰ","έ":"έ","ὲ":"ὲ","ή":"ή","ὴ":"ὴ","ί":"ί","ὶ":"ὶ","ϊ":"ϊ","ΐ":"ΐ","ῒ":"ῒ","ῑ":"ῑ","ῐ":"ῐ","ό":"ό","ὸ":"ὸ","ύ":"ύ","ὺ":"ὺ","ϋ":"ϋ","ΰ":"ΰ","ῢ":"ῢ","ῡ":"ῡ","ῠ":"ῠ","ώ":"ώ","ὼ":"ὼ","Ύ":"Ύ","Ὺ":"Ὺ","Ϋ":"Ϋ","Ῡ":"Ῡ","Ῠ":"Ῠ","Ώ":"Ώ","Ὼ":"Ὼ"},Dn=((r=qn.prototype).expect=function(e,t){if(void 0===t&&(t=!0),this.fetch().text!==e)throw new j("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());t&&this.consume()},r.consume=function(){this.nextToken=null},r.fetch=function(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken},r.switchMode=function(e){this.mode=e,this.gullet.switchMode(e)},r.parse=function(){this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");var e=this.parseExpression(!1);return this.expect("EOF"),this.gullet.endGroup(),e},r.parseExpression=function(e,t){for(var r=[];;){"math"===this.mode&&this.consumeSpaces();var n=this.fetch();if(-1!==qn.endOfExpression.indexOf(n.text))break;if(t&&n.text===t)break;if(e&&mn[n.text]&&mn[n.text].infix)break;n=this.parseAtom(t);if(!n)break;r.push(n)}return"text"===this.mode&&this.formLigatures(r),this.handleInfixNodes(r)},r.handleInfixNodes=function(e){for(var t,r=-1,n=0;n{"use strict";var i,n={d:(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},e={};let a,r,t;n.d(e,{default:()=>w}),(h=a=a||{}).SetSize="set-size",h.StreamItems="stream-items",h.StreamContextItem="stream-context-item",h.SaveItems="save-items",h.SelectItem="select-item",h.AssociateItem="associate-item",h.DeassociateItem="deassociate-item",h.ClearSelection="clear-selection",h.CreateItem="create-item",h.CreateItems="create-items",h.DeleteItems="delete-items",h.SetComponentData="set-component-data",h.InstallLocalComponent="install-local-component",h.ToggleActivateComponent="toggle-activate-component",h.RequestPermissions="request-permissions",h.PresentConflictResolution="present-conflict-resolution",h.DuplicateItem="duplicate-item",h.ComponentRegistered="component-registered",h.ActivateThemes="themes",h.Reply="reply",h.SaveSuccess="save-success",h.SaveError="save-error",h.ThemesActivated="themes-activated",h.KeyDown="key-down",h.KeyUp="key-up",h.Click="click",(h=r=r||{})[h.Web=1]="Web",h[h.Desktop=2]="Desktop",h[h.Mobile=3]="Mobile",(h=t=t||{}).Any="*",h.Item="SF|Item",h.RootKey="SN|RootKey|NoSync",h.ItemsKey="SN|ItemsKey",h.EncryptedStorage="SN|EncryptedStorage",h.Note="Note",h.Tag="Tag",h.SmartTag="SN|SmartTag",h.Component="SN|Component",h.Editor="SN|Editor",h.ActionsExtension="Extension",h.UserPrefs="SN|UserPreferences",h.HistorySession="SN|HistorySession",h.Theme="SN|Theme",h.Mfa="SF|MFA",h.ServerExtension="SF|Extension",h.FilesafeCredentials="SN|FileSafe|Credentials",h.FilesafeFileMetadata="SN|FileSafe|FileMetadata",h.FilesafeIntegration="SN|FileSafe|Integration",h.ExtensionRepo="SN|ExtensionRepo";var s=new Uint8Array(16);const l=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;for(var c,o,h,u=[],m=0;m<256;++m)u.push((m+256).toString(16).substr(1));function p(e,t,r){var n=(e=e||{}).random||(e.rng||function(){if(!i&&!(i="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return i(s)})();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){r=r||0;for(var o=0;o<16;++o)t[r+o]=n[o];return t}return function(e,t){var t=1{var t={[r.Web]:"web",[r.Desktop]:"desktop",[r.Mobile]:"mobile"};return null!==(e=t[e])&&void 0!==e?e:t[r.Web]},f=e=>null!=e,g=()=>{};class b{static get isSupported(){return!(!window.console&&!console)}static get info(){return b.isSupported&&this.enabled?console.log.bind(console):g}static get error(){return b.isSupported?console.error.bind(console):g}}function v(t,e){var r,n=Object.keys(t);return Object.getOwnPropertySymbols&&(r=Object.getOwnPropertySymbols(t),e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)),n}function x(t){for(var e=1;e{if(b.info("Components API Message received:",e.data),!document.referrer||new URL(document.referrer).origin===new URL(e.origin).origin){var t=e["data"],t=(e=>{if("string"!=typeof e)return!1;try{var t=JSON.parse(e),r=Object.prototype.toString.call(t);return"[object Object]"===r||"[object Array]"===r}catch(e){return!1}})(t)?JSON.parse(t):t;if(t){if(void 0===this.component.origin&&t.action===a.ComponentRegistered)this.component.origin=e.origin;else if(e.origin!==this.component.origin)return;this.handleMessage(t)}else b.error("Invalid data received. Skipping...")}},this.contentWindow.document.addEventListener("message",this.messageHandler,!1),this.contentWindow.addEventListener("message",this.messageHandler,!1),b.info("Waiting for messages...")}registerKeyboardEventListeners(){this.keyDownEventListener=e=>{b.info("A key has been pressed: ".concat(e.key)),e.ctrlKey?this.keyDownEvent(o.Ctrl):e.shiftKey?this.keyDownEvent(o.Shift):!e.metaKey&&"Meta"!==e.key||this.keyDownEvent(o.Meta)},this.keyUpEventListener=e=>{b.info("A key has been released: ".concat(e.key)),"Control"===e.key?this.keyUpEvent(o.Ctrl):"Shift"===e.key?this.keyUpEvent(o.Shift):"Meta"===e.key&&this.keyUpEvent(o.Meta)},this.contentWindow.addEventListener("keydown",this.keyDownEventListener,!1),this.contentWindow.addEventListener("keyup",this.keyUpEventListener,!1)}registerMouseEventListeners(){this.clickEventListener=e=>{b.info("A click has been performed."),this.mouseClickEvent()},this.contentWindow.addEventListener("click",this.clickEventListener,!1)}handleMessage(t){switch(t.action){case a.ComponentRegistered:this.component.sessionKey=t.sessionKey,t.componentData&&(this.component.data=t.componentData),this.onReady(t.data),b.info("Component successfully registered with payload:",t);break;case a.ActivateThemes:this.activateThemes(t.data.themes);break;default:{var e,r;if(!t.original)return;const a=null===(e=this.sentMessages)||void 0===e?void 0:e.filter(e=>{return e.messageId===(null===(e=t.original)||void 0===e?void 0:e.messageId)})[0];if(!a){const t=this.contentWindow.document.title,e=("The extension '".concat(t,"' is attempting to communicate with Standard Notes, ")+"but an error is preventing it from doing so. Please restart this extension and try again.").replace(" "," ");return void b.info(e)}null==a||null===(r=a.callback)||void 0===r||r.call(a,t.data);break}}}onReady(e){this.component.environment=e.environment,this.component.platform=e.platform,this.component.uuid=e.uuid,this.initialPermissions&&0{t&&t()})}activateThemes(){let t=0e!==o):n.push(o);b.info("Deactivating themes:",n),b.info("Activating themes:",e);for(const t of n)this.deactivateTheme(t);this.component.activeThemes=t;for(const t of e)if(t){const r=this.contentWindow.document.createElement("link");r.id=btoa(t),r.href=t,r.type="text/css",r.rel="stylesheet",r.media="screen,print",r.className="custom-theme",this.contentWindow.document.getElementsByTagName("head")[0].appendChild(r)}this.onThemesChangeCallback&&this.onThemesChangeCallback()}}}themeElementForUrl(t){return Array.from(this.contentWindow.document.getElementsByClassName("custom-theme")).slice().find(e=>e.id==btoa(t))}deactivateTheme(e){const t=this.themeElementForUrl(e);t&&t.parentNode&&(t.setAttribute("disabled","true"),t.parentNode.removeChild(t))}generateUUID(){return p()}get platform(){return this.component.platform}get environment(){return this.component.environment}streamItems(e,t){this.postMessage(a.StreamItems,{content_types:e},e=>{t(e.items)})}streamContextItem(t){this.postMessage(a.StreamContextItem,{},e=>{e=e.item;this.lastStreamedItem&&this.lastStreamedItem.uuid===e.uuid||!this.pendingSaveTimeout||(clearTimeout(this.pendingSaveTimeout),this.performSavingOfItems(this.pendingSaveParams),this.pendingSaveTimeout=void 0,this.pendingSaveParams=void 0),this.lastStreamedItem=e,t(this.lastStreamedItem)})}selectItem(e){this.postMessage(a.SelectItem,{item:this.jsonObjectForItem(e)})}clearSelection(){this.postMessage(a.ClearSelection,{content_type:t.Tag})}createItem(e,r){this.postMessage(a.CreateItem,{item:this.jsonObjectForItem(e)},e=>{let t=e["item"];!t&&e.items&&0this.jsonObjectForItem(e));this.postMessage(a.CreateItems,{items:e},e=>{t&&t(e.items)})}associateItem(e){this.postMessage(a.AssociateItem,{item:this.jsonObjectForItem(e)})}deassociateItem(e){this.postMessage(a.DeassociateItem,{item:this.jsonObjectForItem(e)})}deleteItem(e,t){this.deleteItems([e],t)}deleteItems(e,t){e={items:e.map(e=>this.jsonObjectForItem(e))};this.postMessage(a.DeleteItems,e,e=>{t&&t(e)})}sendCustomEvent(e,t,r){this.postMessage(e,t,e=>{r&&r(e)})}saveItem(e,t){this.saveItems([e],t,2{this.concernTimeouts.forEach(e=>clearTimeout(e)),alert("This editor is unable to communicate with Standard Notes. Your changes may not be saved. Please backup your changes, then restart the application and try again.")},5e3);this.concernTimeouts.push(e),r&&r();const o=[];for(const i of t)o.push(this.jsonObjectForItem(i));this.postMessage(a.SaveItems,{items:o},()=>{this.concernTimeouts.forEach(e=>clearTimeout(e)),null==n||n()})}saveItems(e,t){let r=2e.uuid),o=this.pendingSaveItems.filter(e=>!r.includes(e.uuid));this.pendingSaveItems=o.concat(e),this.pendingSaveParams={items:this.pendingSaveItems,presave:n,callback:t},this.pendingSaveTimeout=setTimeout(()=>{this.performSavingOfItems(this.pendingSaveParams),this.pendingSaveItems=[],this.pendingSaveTimeout=void 0,this.pendingSaveParams=null},this.coallesedSavingDelay)}else this.performSavingOfItems({items:e,presave:n,callback:t})}setSize(e,t){this.postMessage(a.SetSize,{type:"container",width:e,height:t})}keyDownEvent(e){this.postMessage(a.KeyDown,{keyboardModifier:e})}keyUpEvent(e){this.postMessage(a.KeyUp,{keyboardModifier:e})}mouseClickEvent(){this.postMessage(a.Click,{})}jsonObjectForItem(e){const t=Object.assign({},e);return t.children=null,t.parent=null,t}getItemAppDataValue(e,t){var r,n;return null==e||null===(r=e.content)||void 0===r||null===(n=r.appData)||void 0===n?void 0:n["org.standardnotes.sn"][t]}}return e.default})()}),function n(o,i,a){function s(t,e){if(!i[t]){if(!o[t]){var r="function"==typeof require&&require;if(!e&&r)return r(t,!0);if(l)return l(t,!0);throw(r=new Error("Cannot find module '"+t+"'")).code="MODULE_NOT_FOUND",r}r=i[t]={exports:{}},o[t][0].call(r.exports,function(e){return s(o[t][1][e]||e)},r,r.exports,n,o,i,a)}return i[t].exports}for(var l="function"==typeof require&&require,e=0;e - + Markdown Math @@ -18,61 +18,35 @@
    - - - - - + + + + +
    -
    +
    + +
    + +
    + +
    -
    - +
    + +
    + + diff --git a/public/components/org.standardnotes.fancy-markdown-editor/package.json b/public/components/org.standardnotes.fancy-markdown-editor/package.json index 21c53c7e0..9691774a9 100644 --- a/public/components/org.standardnotes.fancy-markdown-editor/package.json +++ b/public/components/org.standardnotes.fancy-markdown-editor/package.json @@ -1,6 +1,6 @@ { "name": "sn-fancy-markdown-editor", - "version": "1.3.4", + "version": "1.3.5", "description": "", "main": "index.js", "scripts": { @@ -11,6 +11,7 @@ "@babel/cli": "^7.7.7", "@babel/core": "^7.7.7", "@babel/preset-env": "^7.7.7", + "@standardnotes/component-relay": "2.2.0", "draggabilly": "^2.2.0", "grunt": "^1.0.4", "grunt-babel": "^8.0.0", @@ -18,15 +19,16 @@ "grunt-contrib-concat": "^1.0.1", "grunt-contrib-copy": "^1.0.0", "grunt-contrib-sass": "^1.0.0", + "grunt-contrib-uglify": "^5.0.1", "grunt-contrib-watch": "^1.1.0", "grunt-newer": "^1.3.0", + "grunt-remove-comments": "^0.1.6", "katex": "^0.11.1", "markdown-it": "^10.0.0", "markdown-it-footnote": "^3.0.2", "markdown-it-sub": "^1.0.0", "markdown-it-sup": "^1.0.0", "markdown-it-task-lists": "^2.1.1", - "sn-components-api": "1.2.8", "sn-stylekit": "2.0.20" } } diff --git a/public/components/org.standardnotes.minimal-markdown-editor/dist/dist.css b/public/components/org.standardnotes.minimal-markdown-editor/dist/dist.css index 3f918d5d4..7939d8b07 100644 --- a/public/components/org.standardnotes.minimal-markdown-editor/dist/dist.css +++ b/public/components/org.standardnotes.minimal-markdown-editor/dist/dist.css @@ -492,3 +492,5 @@ html { .CodeMirror .cm-link, .CodeMirror .cm-string, .CodeMirror .cm-keyword { color: var(--sn-stylekit-info-color); } + +/*# sourceMappingURL=app.css.map */ diff --git a/public/components/org.standardnotes.minimal-markdown-editor/dist/dist.js b/public/components/org.standardnotes.minimal-markdown-editor/dist/dist.js index 23c88033f..8f6fac33d 100644 --- a/public/components/org.standardnotes.minimal-markdown-editor/dist/dist.js +++ b/public/components/org.standardnotes.minimal-markdown-editor/dist/dist.js @@ -9811,696 +9811,8 @@ return CodeMirror; }))); -;"use strict"; - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -var ComponentManager = -/*#__PURE__*/ -function () { - function ComponentManager(permissions, onReady) { - _classCallCheck(this, ComponentManager); - - this.sentMessages = []; - this.messageQueue = []; - this.loggingEnabled = false; - this.acceptsThemes = true; - this.activeThemes = []; - this.initialPermissions = permissions; - this.onReadyCallback = onReady; - this.coallesedSaving = true; - this.coallesedSavingDelay = 250; - this.registerMessageHandler(); - } - - _createClass(ComponentManager, [{ - key: "registerMessageHandler", - value: function registerMessageHandler() { - var _this = this; - - var messageHandler = function messageHandler(event) { - if (_this.loggingEnabled) { - console.log("Components API Message received:", event.data); - } // We don't have access to window.parent.origin due to cross-domain restrictions. - // Check referrer if available, otherwise defer to checking for first-run value. - // Craft URL objects so that example.com === example.com/ - - - if (document.referrer) { - var referrer = new URL(document.referrer).origin; - var eventOrigin = new URL(event.origin).origin; - - if (referrer !== eventOrigin) { - return; - } - } // The first message will be the most reliable one, so we won't change it after any subsequent events, - // in case you receive an event from another window. - - - if (!_this.origin) { - _this.origin = event.origin; - } else if (event.origin !== _this.origin) { - // If event origin doesn't match first-run value, return. - return; - } // Mobile environment sends data as JSON string - - - var data = event.data; - var parsedData = typeof data === "string" ? JSON.parse(data) : data; - - _this.handleMessage(parsedData); - }; - /* - Mobile (React Native) uses `document`, web/desktop uses `window`.addEventListener - for postMessage API to work properly. - Update May 2019: - As part of transitioning React Native webview into the community package, - we'll now only need to use window.addEventListener. - However, we want to maintain backward compatibility for Mobile < v3.0.5, so we'll keep document.addEventListener - Also, even with the new version of react-native-webview, Android may still require document.addEventListener (while iOS still only requires window.addEventListener) - https://github.com/react-native-community/react-native-webview/issues/323#issuecomment-467767933 - */ - - - document.addEventListener("message", function (event) { - messageHandler(event); - }, false); - window.addEventListener("message", function (event) { - messageHandler(event); - }, false); - } - }, { - key: "handleMessage", - value: function handleMessage(payload) { - if (payload.action === "component-registered") { - this.sessionKey = payload.sessionKey; - this.componentData = payload.componentData; - this.onReady(payload.data); - - if (this.loggingEnabled) { - console.log("Component successfully registered with payload:", payload); - } - } else if (payload.action === "themes") { - if (this.acceptsThemes) { - this.activateThemes(payload.data.themes); - } - } else if (payload.original) { - // get callback from queue - var originalMessage = this.sentMessages.filter(function (message) { - return message.messageId === payload.original.messageId; - })[0]; - - if (!originalMessage) { - // Connection must have been reset. Alert the user. - alert("This extension is attempting to communicate with Standard Notes, but an error is preventing it from doing so. Please restart this extension and try again."); - } - - if (originalMessage.callback) { - originalMessage.callback(payload.data); - } - } - } - }, { - key: "onReady", - value: function onReady(data) { - this.environment = data.environment; - this.platform = data.platform; - this.uuid = data.uuid; - this.isMobile = this.environment == "mobile"; - - if (this.initialPermissions && this.initialPermissions.length > 0) { - this.requestPermissions(this.initialPermissions); - } - - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = this.messageQueue[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var message = _step.value; - this.postMessage(message.action, message.data, message.callback); - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator["return"] != null) { - _iterator["return"](); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - this.messageQueue = []; - - if (this.loggingEnabled) { - console.log("onReadyData", data); - } - - this.activateThemes(data.activeThemeUrls || []); - - if (this.onReadyCallback) { - this.onReadyCallback(); - } - } - }, { - key: "getSelfComponentUUID", - value: function getSelfComponentUUID() { - return this.uuid; - } - }, { - key: "isRunningInDesktopApplication", - value: function isRunningInDesktopApplication() { - return this.environment === "desktop"; - } - }, { - key: "setComponentDataValueForKey", - value: function setComponentDataValueForKey(key, value) { - this.componentData[key] = value; - this.postMessage("set-component-data", { - componentData: this.componentData - }, function (data) {}); - } - }, { - key: "clearComponentData", - value: function clearComponentData() { - this.componentData = {}; - this.postMessage("set-component-data", { - componentData: this.componentData - }, function (data) {}); - } - }, { - key: "componentDataValueForKey", - value: function componentDataValueForKey(key) { - return this.componentData[key]; - } - }, { - key: "postMessage", - value: function postMessage(action, data, callback) { - if (!this.sessionKey) { - this.messageQueue.push({ - action: action, - data: data, - callback: callback - }); - return; - } - - var message = { - action: action, - data: data, - messageId: this.generateUUID(), - sessionKey: this.sessionKey, - api: "component" - }; - var sentMessage = JSON.parse(JSON.stringify(message)); - sentMessage.callback = callback; - this.sentMessages.push(sentMessage); // Mobile (React Native) requires a string for the postMessage API. - - if (this.isMobile) { - message = JSON.stringify(message); - } - - if (this.loggingEnabled) { - console.log("Posting message:", message); - } - - window.parent.postMessage(message, this.origin); - } - }, { - key: "setSize", - value: function setSize(type, width, height) { - this.postMessage("set-size", { - type: type, - width: width, - height: height - }, function (data) {}); - } - }, { - key: "requestPermissions", - value: function requestPermissions(permissions, callback) { - this.postMessage("request-permissions", { - permissions: permissions - }, function (data) { - callback && callback(); - }.bind(this)); - } - }, { - key: "streamItems", - value: function streamItems(contentTypes, callback) { - if (!Array.isArray(contentTypes)) { - contentTypes = [contentTypes]; - } - - this.postMessage("stream-items", { - content_types: contentTypes - }, function (data) { - callback(data.items); - }.bind(this)); - } - }, { - key: "streamContextItem", - value: function streamContextItem(callback) { - var _this2 = this; - - this.postMessage("stream-context-item", null, function (data) { - var item = data.item; - /* - If this is a new context item than the context item the component was currently entertaining, - we want to immediately commit any pending saves, because if you send the new context item to the - component before it has commited its presave, it will end up first replacing the UI with new context item, - and when the debouncer executes to read the component UI, it will be reading the new UI for the previous item. - */ - - var isNewItem = !_this2.lastStreamedItem || _this2.lastStreamedItem.uuid !== item.uuid; - - if (isNewItem && _this2.pendingSaveTimeout) { - clearTimeout(_this2.pendingSaveTimeout); - - _this2._performSavingOfItems(_this2.pendingSaveParams); - - _this2.pendingSaveTimeout = null; - _this2.pendingSaveParams = null; - } - - _this2.lastStreamedItem = item; - callback(_this2.lastStreamedItem); - }); - } - }, { - key: "selectItem", - value: function selectItem(item) { - this.postMessage("select-item", { - item: this.jsonObjectForItem(item) - }); - } - }, { - key: "createItem", - value: function createItem(item, callback) { - this.postMessage("create-item", { - item: this.jsonObjectForItem(item) - }, function (data) { - var item = data.item; // A previous version of the SN app had an issue where the item in the reply to create-item - // would be nested inside "items" and not "item". So handle both cases here. - - if (!item && data.items && data.items.length > 0) { - item = data.items[0]; - } - - this.associateItem(item); - callback && callback(item); - }.bind(this)); - } - }, { - key: "createItems", - value: function createItems(items, callback) { - var _this3 = this; - - var mapped = items.map(function (item) { - return _this3.jsonObjectForItem(item); - }); - this.postMessage("create-items", { - items: mapped - }, function (data) { - callback && callback(data.items); - }.bind(this)); - } - }, { - key: "associateItem", - value: function associateItem(item) { - this.postMessage("associate-item", { - item: this.jsonObjectForItem(item) - }); - } - }, { - key: "deassociateItem", - value: function deassociateItem(item) { - this.postMessage("deassociate-item", { - item: this.jsonObjectForItem(item) - }); - } - }, { - key: "clearSelection", - value: function clearSelection() { - this.postMessage("clear-selection", { - content_type: "Tag" - }); - } - }, { - key: "deleteItem", - value: function deleteItem(item, callback) { - this.deleteItems([item], callback); - } - }, { - key: "deleteItems", - value: function deleteItems(items, callback) { - var params = { - items: items.map(function (item) { - return this.jsonObjectForItem(item); - }.bind(this)) - }; - this.postMessage("delete-items", params, function (data) { - callback && callback(data); - }); - } - }, { - key: "sendCustomEvent", - value: function sendCustomEvent(action, data, callback) { - this.postMessage(action, data, function (data) { - callback && callback(data); - }.bind(this)); - } - }, { - key: "saveItem", - value: function saveItem(item, callback) { - var skipDebouncer = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - this.saveItems([item], callback, skipDebouncer); - } - /* Presave allows clients to perform any actions last second before the save actually occurs (like setting previews). - Saves debounce by default, so if a client needs to compute a property on an item before saving, it's best to - hook into the debounce cycle so that clients don't have to implement their own debouncing. - */ - - }, { - key: "saveItemWithPresave", - value: function saveItemWithPresave(item, presave, callback) { - this.saveItemsWithPresave([item], presave, callback); - } - }, { - key: "saveItemsWithPresave", - value: function saveItemsWithPresave(items, presave, callback) { - this.saveItems(items, callback, false, presave); - } - }, { - key: "_performSavingOfItems", - value: function _performSavingOfItems(_ref) { - var items = _ref.items, - presave = _ref.presave, - callback = _ref.callback; - // presave block allows client to gain the benefit of performing something in the debounce cycle. - presave && presave(); - var mappedItems = []; - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; - - try { - for (var _iterator2 = items[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var item = _step2.value; - mappedItems.push(this.jsonObjectForItem(item)); - } - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) { - _iterator2["return"](); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } - } - } - - this.postMessage("save-items", { - items: mappedItems - }, function (data) { - callback && callback(); - }); - } - /* - skipDebouncer allows saves to go through right away rather than waiting for timeout. - This should be used when saving items via other means besides keystrokes. - */ - - }, { - key: "saveItems", - value: function saveItems(items, callback) { - var _this4 = this; - - var skipDebouncer = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - var presave = arguments.length > 3 ? arguments[3] : undefined; - - // We need to make sure that when we clear a pending save timeout, - // we carry over those pending items into the new save. - if (!this.pendingSaveItems) { - this.pendingSaveItems = []; - } - - if (this.coallesedSaving == true && !skipDebouncer) { - if (this.pendingSaveTimeout) { - clearTimeout(this.pendingSaveTimeout); - } - - var incomingIds = items.map(function (item) { - return item.uuid; - }); // Replace any existing save items with incoming values - // Only keep items here who are not in incomingIds - - var preexistingItems = this.pendingSaveItems.filter(function (item) { - return !incomingIds.includes(item.uuid); - }); // Add new items, now that we've made sure it's cleared of incoming items. - - this.pendingSaveItems = preexistingItems.concat(items); // We'll potentially need to commit early if stream-context-item message comes in - - this.pendingSaveParams = { - items: this.pendingSaveItems, - presave: presave, - callback: callback - }; - this.pendingSaveTimeout = setTimeout(function () { - _this4._performSavingOfItems(_this4.pendingSaveParams); - - _this4.pendingSaveItems = []; - _this4.pendingSaveTimeout = null; - _this4.pendingSaveParams = null; - }, this.coallesedSavingDelay); - } else { - this._performSavingOfItems({ - items: items, - presave: presave, - callback: callback - }); - } - } - }, { - key: "jsonObjectForItem", - value: function jsonObjectForItem(item) { - var copy = Object.assign({}, item); - copy.children = null; - copy.parent = null; - return copy; - } - }, { - key: "getItemAppDataValue", - value: function getItemAppDataValue(item, key) { - var AppDomain = "org.standardnotes.sn"; - var data = item.content.appData && item.content.appData[AppDomain]; - - if (data) { - return data[key]; - } else { - return null; - } - } - /* Themes */ - - }, { - key: "activateThemes", - value: function activateThemes(incomingUrls) { - if (this.loggingEnabled) { - console.log("Incoming themes", incomingUrls); - } - - if (this.activeThemes.sort().toString() == incomingUrls.sort().toString()) { - // incoming are same as active, do nothing - return; - } - - var themesToActivate = incomingUrls || []; - var themesToDeactivate = []; - var _iteratorNormalCompletion3 = true; - var _didIteratorError3 = false; - var _iteratorError3 = undefined; - - try { - for (var _iterator3 = this.activeThemes[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { - var activeUrl = _step3.value; - - if (!incomingUrls.includes(activeUrl)) { - // active not present in incoming, deactivate it - themesToDeactivate.push(activeUrl); - } else { - // already present in active themes, remove it from themesToActivate - themesToActivate = themesToActivate.filter(function (candidate) { - return candidate != activeUrl; - }); - } - } - } catch (err) { - _didIteratorError3 = true; - _iteratorError3 = err; - } finally { - try { - if (!_iteratorNormalCompletion3 && _iterator3["return"] != null) { - _iterator3["return"](); - } - } finally { - if (_didIteratorError3) { - throw _iteratorError3; - } - } - } - - if (this.loggingEnabled) { - console.log("Deactivating themes:", themesToDeactivate); - console.log("Activating themes:", themesToActivate); - } - - for (var _i = 0, _themesToDeactivate = themesToDeactivate; _i < _themesToDeactivate.length; _i++) { - var theme = _themesToDeactivate[_i]; - this.deactivateTheme(theme); - } - - this.activeThemes = incomingUrls; - var _iteratorNormalCompletion4 = true; - var _didIteratorError4 = false; - var _iteratorError4 = undefined; - - try { - for (var _iterator4 = themesToActivate[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { - var url = _step4.value; - - if (!url) { - continue; - } - - var link = document.createElement("link"); - link.id = btoa(url); - link.href = url; - link.type = "text/css"; - link.rel = "stylesheet"; - link.media = "screen,print"; - link.className = "custom-theme"; - document.getElementsByTagName("head")[0].appendChild(link); - } - } catch (err) { - _didIteratorError4 = true; - _iteratorError4 = err; - } finally { - try { - if (!_iteratorNormalCompletion4 && _iterator4["return"] != null) { - _iterator4["return"](); - } - } finally { - if (_didIteratorError4) { - throw _iteratorError4; - } - } - } - } - }, { - key: "themeElementForUrl", - value: function themeElementForUrl(url) { - var elements = Array.from(document.getElementsByClassName("custom-theme")).slice(); - return elements.find(function (element) { - // We used to search here by `href`, but on desktop, with local file:// urls, that didn't work for some reason. - return element.id == btoa(url); - }); - } - }, { - key: "deactivateTheme", - value: function deactivateTheme(url) { - var element = this.themeElementForUrl(url); - - if (element) { - element.disabled = true; - element.parentNode.removeChild(element); - } - } - /* Theme caching is currently disabled. Might be enabled in the future if neccessary. */ - - /* - activateCachedThemes() { - let themes = this.getCachedThemeUrls(); - let writeToCache = false; - if(this.loggingEnabled) { console.log("Activating cached themes", themes); } - this.activateThemes(themes, writeToCache); - } - cacheThemeUrls(urls) { - if(this.loggingEnabled) { console.log("Caching theme urls", urls); } - localStorage.setItem("cachedThemeUrls", JSON.stringify(urls)); - } - decacheThemeUrls() { - localStorage.removeItem("cachedThemeUrls"); - } - getCachedThemeUrls() { - let urls = localStorage.getItem("cachedThemeUrls"); - if(urls) { - return JSON.parse(urls); - } else { - return []; - } - } - */ - - /* Utilities */ - - }, { - key: "generateUUID", - value: function generateUUID() { - var crypto = window.crypto || window.msCrypto; - - if (crypto) { - var buf = new Uint32Array(4); - crypto.getRandomValues(buf); - var idx = -1; - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - idx++; - var r = buf[idx >> 3] >> idx % 8 * 4 & 15; - var v = c == 'x' ? r : r & 0x3 | 0x8; - return v.toString(16); - }); - } else { - var d = new Date().getTime(); - - if (window.performance && typeof window.performance.now === "function") { - d += performance.now(); //use high-precision timer if available - } - - var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = (d + Math.random() * 16) % 16 | 0; - d = Math.floor(d / 16); - return (c == 'x' ? r : r & 0x3 | 0x8).toString(16); - }); - return uuid; - } - } - }]); - - return ComponentManager; -}(); - -if (typeof module != "undefined" && typeof module.exports != "undefined") { - module.exports = ComponentManager; -} - -if (window) { - window.ComponentManager = ComponentManager; -} -//# sourceMappingURL=dist.js.map -;// CodeMirror, copyright (c) by Marijn Haverbeke and others +;!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("ComponentRelay",[],t):"object"==typeof exports?exports.ComponentRelay=t():e.ComponentRelay=t()}(self,(function(){return(()=>{"use strict";var e={d:(t,s)=>{for(var n in s)e.o(s,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:s[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)},t={};let s,n,i,o;var a;e.d(t,{default:()=>w}),function(e){e.SetSize="set-size",e.StreamItems="stream-items",e.StreamContextItem="stream-context-item",e.SaveItems="save-items",e.SelectItem="select-item",e.AssociateItem="associate-item",e.DeassociateItem="deassociate-item",e.ClearSelection="clear-selection",e.CreateItem="create-item",e.CreateItems="create-items",e.DeleteItems="delete-items",e.SetComponentData="set-component-data",e.InstallLocalComponent="install-local-component",e.ToggleActivateComponent="toggle-activate-component",e.RequestPermissions="request-permissions",e.PresentConflictResolution="present-conflict-resolution",e.DuplicateItem="duplicate-item",e.ComponentRegistered="component-registered",e.ActivateThemes="themes",e.Reply="reply",e.SaveSuccess="save-success",e.SaveError="save-error",e.ThemesActivated="themes-activated",e.KeyDown="key-down",e.KeyUp="key-up",e.Click="click"}(s||(s={})),function(e){e[e.Web=1]="Web",e[e.Desktop=2]="Desktop",e[e.Mobile=3]="Mobile"}(n||(n={})),function(e){e.Any="*",e.Item="SF|Item",e.RootKey="SN|RootKey|NoSync",e.ItemsKey="SN|ItemsKey",e.EncryptedStorage="SN|EncryptedStorage",e.Note="Note",e.Tag="Tag",e.SmartTag="SN|SmartTag",e.Component="SN|Component",e.Editor="SN|Editor",e.ActionsExtension="Extension",e.UserPrefs="SN|UserPreferences",e.HistorySession="SN|HistorySession",e.Theme="SN|Theme",e.Mfa="SF|MFA",e.ServerExtension="SF|Extension",e.FilesafeCredentials="SN|FileSafe|Credentials",e.FilesafeFileMetadata="SN|FileSafe|FileMetadata",e.FilesafeIntegration="SN|FileSafe|Integration",e.ExtensionRepo="SN|ExtensionRepo"}(i||(i={})),function(e){e.Pinned="pinned",e.Archived="archived",e.Locked="locked",e.UserModifiedDate="client_updated_at",e.DefaultEditor="defaultEditor",e.MobileRules="mobileRules",e.NotAvailableOnMobile="notAvailableOnMobile",e.MobileActive="mobileActive",e.LastSize="lastSize",e.PrefersPlainEditor="prefersPlainEditor",e.ComponentInstallError="installError"}(o||(o={}));var r=new Uint8Array(16);function c(){if(!a&&!(a="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return a(r)}const m=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,l=function(e){return"string"==typeof e&&m.test(e)};for(var d=[],h=0;h<256;++h)d.push((h+256).toString(16).substr(1));const p=function(e,t,s){var n=(e=e||{}).random||(e.rng||c)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){s=s||0;for(var i=0;i<16;++i)t[s+i]=n[i];return t}return function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,s=(d[e[t+0]]+d[e[t+1]]+d[e[t+2]]+d[e[t+3]]+"-"+d[e[t+4]]+d[e[t+5]]+"-"+d[e[t+6]]+d[e[t+7]]+"-"+d[e[t+8]]+d[e[t+9]]+"-"+d[e[t+10]]+d[e[t+11]]+d[e[t+12]]+d[e[t+13]]+d[e[t+14]]+d[e[t+15]]).toLowerCase();if(!l(s))throw TypeError("Stringified UUID is invalid");return s}(n)},u=e=>{var t;const s={[n.Web]:"web",[n.Desktop]:"desktop",[n.Mobile]:"mobile"};return null!==(t=s[e])&&void 0!==t?t:s[n.Web]},v=e=>null!=e,g=()=>{};class f{static get isSupported(){return!(!window.console&&!console)}static get info(){return f.isSupported&&this.enabled?console.log.bind(console):g}static get error(){return f.isSupported?console.error.bind(console):g}}var y,S,b,I;function k(e,t){var s=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),s.push.apply(s,n)}return s}function E(e){for(var t=1;t0&&(this.initialPermissions=s),v(null==n?void 0:n.coallesedSaving)&&(this.coallesedSaving=n.coallesedSaving),v(null==n?void 0:n.coallesedSavingDelay)&&(this.coallesedSavingDelay=n.coallesedSavingDelay),v(null==n?void 0:n.acceptsThemes)&&(this.component.acceptsThemes=null===(a=null==n?void 0:n.acceptsThemes)||void 0===a||a),v(i)&&(this.onReadyCallback=i),v(o)&&(this.onThemesChangeCallback=o),f.enabled=null!==(t=null==n?void 0:n.debug)&&void 0!==t&&t}deinit(){this.onReadyCallback=void 0,this.component={acceptsThemes:!0,activeThemes:[]},this.messageQueue=[],this.sentMessages=[],this.lastStreamedItem=void 0,this.pendingSaveItems=void 0,this.pendingSaveTimeout=void 0,this.pendingSaveParams=void 0,this.messageHandler&&(this.contentWindow.document.removeEventListener("message",this.messageHandler),this.contentWindow.removeEventListener("message",this.messageHandler)),this.keyDownEventListener&&this.contentWindow.removeEventListener("keydown",this.keyDownEventListener),this.keyUpEventListener&&this.contentWindow.removeEventListener("keyup",this.keyUpEventListener),this.clickEventListener&&this.contentWindow.removeEventListener("click",this.clickEventListener)}registerMessageHandler(){this.messageHandler=e=>{if(f.info("Components API Message received:",e.data),document.referrer&&new URL(document.referrer).origin!==new URL(e.origin).origin)return;const{data:t}=e,n=(e=>{if("string"!=typeof e)return!1;try{const t=JSON.parse(e),s=Object.prototype.toString.call(t);return"[object Object]"===s||"[object Array]"===s}catch(e){return!1}})(t)?JSON.parse(t):t;if(n){if(void 0===this.component.origin&&n.action===s.ComponentRegistered)this.component.origin=e.origin;else if(e.origin!==this.component.origin)return;this.handleMessage(n)}else f.error("Invalid data received. Skipping...")},this.contentWindow.document.addEventListener("message",this.messageHandler,!1),this.contentWindow.addEventListener("message",this.messageHandler,!1),f.info("Waiting for messages...")}registerKeyboardEventListeners(){this.keyDownEventListener=e=>{f.info("A key has been pressed: ".concat(e.key)),e.ctrlKey?this.keyDownEvent(I.Ctrl):e.shiftKey?this.keyDownEvent(I.Shift):(e.metaKey||"Meta"===e.key)&&this.keyDownEvent(I.Meta)},this.keyUpEventListener=e=>{f.info("A key has been released: ".concat(e.key)),"Control"===e.key?this.keyUpEvent(I.Ctrl):"Shift"===e.key?this.keyUpEvent(I.Shift):"Meta"===e.key&&this.keyUpEvent(I.Meta)},this.contentWindow.addEventListener("keydown",this.keyDownEventListener,!1),this.contentWindow.addEventListener("keyup",this.keyUpEventListener,!1)}registerMouseEventListeners(){this.clickEventListener=e=>{f.info("A click has been performed."),this.mouseClickEvent()},this.contentWindow.addEventListener("click",this.clickEventListener,!1)}handleMessage(e){switch(e.action){case s.ComponentRegistered:this.component.sessionKey=e.sessionKey,e.componentData&&(this.component.data=e.componentData),this.onReady(e.data),f.info("Component successfully registered with payload:",e);break;case s.ActivateThemes:this.activateThemes(e.data.themes);break;default:{var t,n;if(!e.original)return;const s=null===(t=this.sentMessages)||void 0===t?void 0:t.filter((t=>{var s;return t.messageId===(null===(s=e.original)||void 0===s?void 0:s.messageId)}))[0];if(!s){const e=this.contentWindow.document.title,t=("The extension '".concat(e,"' is attempting to communicate with Standard Notes, ")+"but an error is preventing it from doing so. Please restart this extension and try again.").replace(" "," ");return void f.info(t)}null==s||null===(n=s.callback)||void 0===n||n.call(s,e.data);break}}}onReady(e){this.component.environment=e.environment,this.component.platform=e.platform,this.component.uuid=e.uuid,this.initialPermissions&&this.initialPermissions.length>0&&this.requestPermissions(this.initialPermissions);for(const e of this.messageQueue)this.postMessage(e.action,e.data,e.callback);this.messageQueue=[],f.info("Data passed to onReady:",e),this.activateThemes(e.activeThemeUrls||[]),this.postMessage(s.ThemesActivated,{}),this.onReadyCallback&&this.onReadyCallback()}getSelfComponentUUID(){return this.component.uuid}isRunningInDesktopApplication(){return this.component.environment===u(n.Desktop)}isRunningInMobileApplication(){return this.component.environment===u(n.Mobile)}getComponentDataValueForKey(e){if(this.component.data)return this.component.data[e]}setComponentDataValueForKey(e,t){if(!this.component.data)throw new Error("The component has not been initialized.");if(!e||e&&0===e.length)throw new Error("The key for the data value should be a valid string.");this.component.data=E(E({},this.component.data),{},{[e]:t}),this.postMessage(s.SetComponentData,{componentData:this.component.data})}clearComponentData(){this.component.data={},this.postMessage(s.SetComponentData,{componentData:this.component.data})}postMessage(e,t,s){if(!this.component.sessionKey)return void this.messageQueue.push({action:e,data:t,api:b.Component,callback:s});const n={action:e,data:t,messageId:this.generateUUID(),sessionKey:this.component.sessionKey,api:b.Component},i=JSON.parse(JSON.stringify(n));let o;i.callback=s,this.sentMessages.push(i),o=this.isRunningInMobileApplication()?JSON.stringify(n):n,f.info("Posting message:",o),this.contentWindow.parent.postMessage(o,this.component.origin)}requestPermissions(e,t){this.postMessage(s.RequestPermissions,{permissions:e},(()=>{t&&t()}))}activateThemes(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(!this.component.acceptsThemes)return;f.info("Incoming themes:",e);const{activeThemes:t}=this.component;if(t&&t.sort().toString()==e.sort().toString())return;let s=e;const n=[];for(const i of t)e.includes(i)?s=s.filter((e=>e!==i)):n.push(i);f.info("Deactivating themes:",n),f.info("Activating themes:",s);for(const e of n)this.deactivateTheme(e);this.component.activeThemes=e;for(const e of s){if(!e)continue;const t=this.contentWindow.document.createElement("link");t.id=btoa(e),t.href=e,t.type="text/css",t.rel="stylesheet",t.media="screen,print",t.className="custom-theme",this.contentWindow.document.getElementsByTagName("head")[0].appendChild(t)}this.onThemesChangeCallback&&this.onThemesChangeCallback()}themeElementForUrl(e){return Array.from(this.contentWindow.document.getElementsByClassName("custom-theme")).slice().find((t=>t.id==btoa(e)))}deactivateTheme(e){const t=this.themeElementForUrl(e);t&&t.parentNode&&(t.setAttribute("disabled","true"),t.parentNode.removeChild(t))}generateUUID(){return p()}get platform(){return this.component.platform}get environment(){return this.component.environment}streamItems(e,t){this.postMessage(s.StreamItems,{content_types:e},(e=>{t(e.items)}))}streamContextItem(e){this.postMessage(s.StreamContextItem,{},(t=>{const{item:s}=t;(!this.lastStreamedItem||this.lastStreamedItem.uuid!==s.uuid)&&this.pendingSaveTimeout&&(clearTimeout(this.pendingSaveTimeout),this.performSavingOfItems(this.pendingSaveParams),this.pendingSaveTimeout=void 0,this.pendingSaveParams=void 0),this.lastStreamedItem=s,e(this.lastStreamedItem)}))}selectItem(e){this.postMessage(s.SelectItem,{item:this.jsonObjectForItem(e)})}clearSelection(){this.postMessage(s.ClearSelection,{content_type:i.Tag})}createItem(e,t){this.postMessage(s.CreateItem,{item:this.jsonObjectForItem(e)},(e=>{let{item:s}=e;!s&&e.items&&e.items.length>0&&(s=e.items[0]),this.associateItem(s),t&&t(s)}))}createItems(e,t){const n=e.map((e=>this.jsonObjectForItem(e)));this.postMessage(s.CreateItems,{items:n},(e=>{t&&t(e.items)}))}associateItem(e){this.postMessage(s.AssociateItem,{item:this.jsonObjectForItem(e)})}deassociateItem(e){this.postMessage(s.DeassociateItem,{item:this.jsonObjectForItem(e)})}deleteItem(e,t){this.deleteItems([e],t)}deleteItems(e,t){const n={items:e.map((e=>this.jsonObjectForItem(e)))};this.postMessage(s.DeleteItems,n,(e=>{t&&t(e)}))}sendCustomEvent(e,t,s){this.postMessage(e,t,(e=>{s&&s(e)}))}saveItem(e,t){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.saveItems([e],t,s)}saveItemWithPresave(e,t,s){this.saveItemsWithPresave([e],t,s)}saveItemsWithPresave(e,t,s){this.saveItems(e,s,!1,t)}performSavingOfItems(e){let{items:t,presave:n,callback:i}=e;const o=setTimeout((()=>{this.concernTimeouts.forEach((e=>clearTimeout(e))),alert("This editor is unable to communicate with Standard Notes. Your changes may not be saved. Please backup your changes, then restart the application and try again.")}),5e3);this.concernTimeouts.push(o),n&&n();const a=[];for(const e of t)a.push(this.jsonObjectForItem(e));this.postMessage(s.SaveItems,{items:a},(()=>{this.concernTimeouts.forEach((e=>clearTimeout(e))),null==i||i()}))}saveItems(e,t){let s=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3?arguments[3]:void 0;if(this.pendingSaveItems||(this.pendingSaveItems=[]),this.coallesedSaving&&!s){this.pendingSaveTimeout&&clearTimeout(this.pendingSaveTimeout);const s=e.map((e=>e.uuid)),i=this.pendingSaveItems.filter((e=>!s.includes(e.uuid)));this.pendingSaveItems=i.concat(e),this.pendingSaveParams={items:this.pendingSaveItems,presave:n,callback:t},this.pendingSaveTimeout=setTimeout((()=>{this.performSavingOfItems(this.pendingSaveParams),this.pendingSaveItems=[],this.pendingSaveTimeout=void 0,this.pendingSaveParams=null}),this.coallesedSavingDelay)}else this.performSavingOfItems({items:e,presave:n,callback:t})}setSize(e,t){this.postMessage(s.SetSize,{type:"container",width:e,height:t})}keyDownEvent(e){this.postMessage(s.KeyDown,{keyboardModifier:e})}keyUpEvent(e){this.postMessage(s.KeyUp,{keyboardModifier:e})}mouseClickEvent(){this.postMessage(s.Click,{})}jsonObjectForItem(e){const t=Object.assign({},e);return t.children=null,t.parent=null,t}getItemAppDataValue(e,t){var s,n;return null==e||null===(s=e.content)||void 0===s||null===(n=s.appData)||void 0===n?void 0:n["org.standardnotes.sn"][t]}}return t.default})()})); +//# sourceMappingURL=dist.js.map;// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: https://codemirror.net/LICENSE (function(mod) { @@ -11727,29 +11039,31 @@ CodeMirror.defineMode("gfm", function(config, modeConfig) { "use strict"; document.addEventListener("DOMContentLoaded", function (event) { - var componentManager; + var componentRelay; var workingNote, clientData; var lastValue, lastUUID; var editor; var ignoreTextChange = false; var initialLoad = true; - function loadComponentManager() { - var permissions = [{ + function loadComponentRelay() { + var initialPermissions = [{ name: "stream-context-item" }]; - componentManager = new ComponentManager(permissions, function () { - // on ready - var platform = componentManager.platform; + componentRelay = new ComponentRelay({ + initialPermissions: initialPermissions, + targetWindow: window, + onReady: function onReady() { + var platform = componentRelay.platform; - if (platform) { - document.body.classList.add(platform); - } // only use CodeMirror selection color if we're not on mobile. + if (platform) { + document.body.classList.add(platform); + } + } + }); // only use CodeMirror selection color if we're not on mobile. - - editor.setOption("styleSelectedText", !componentManager.isMobile); - }); - componentManager.streamContextItem(function (note) { + editor.setOption("styleSelectedText", !componentRelay.isMobile); + componentRelay.streamContextItem(function (note) { onReceivedNote(note); }); } @@ -11760,7 +11074,7 @@ document.addEventListener("DOMContentLoaded", function (event) { // you modify it in the presave block, it may not be the same object anymore, so the presave values will not be applied to // the right object, and it will save incorrectly. var note = workingNote; - componentManager.saveItemWithPresave(note, function () { + componentRelay.saveItemWithPresave(note, function () { lastValue = editor.getValue(); note.content.text = lastValue; note.clientData = clientData; // clear previews @@ -11820,7 +11134,7 @@ document.addEventListener("DOMContentLoaded", function (event) { } loadEditor(); - loadComponentManager(); + loadComponentRelay(); }); diff --git a/public/components/org.standardnotes.minimal-markdown-editor/package.json b/public/components/org.standardnotes.minimal-markdown-editor/package.json index 2470c224f..4997924bd 100644 --- a/public/components/org.standardnotes.minimal-markdown-editor/package.json +++ b/public/components/org.standardnotes.minimal-markdown-editor/package.json @@ -1,6 +1,6 @@ { "name": "sn-minimal-markdown-editor", - "version": "1.3.7", + "version": "1.3.8", "description": "A minimal Markdown editor for Standard Notes.", "main": "dist/dist.js", "author": "Standard Notes ", @@ -13,6 +13,7 @@ "devDependencies": { "@babel/core": "^7.11.1", "@babel/preset-env": "^7.11.0", + "@standardnotes/component-relay": "2.2.0", "babel-cli": "^6.26.0", "codemirror": "^5.56.0", "grunt": "^1.2.1", @@ -23,7 +24,6 @@ "grunt-contrib-sass": "^1.0.0", "grunt-contrib-watch": "^1.1.0", "grunt-newer": "^1.3.0", - "sn-components-api": "1.2.8", "sn-stylekit": "2.1.0" } } diff --git a/public/components/org.standardnotes.plus-editor/dist/dist.js b/public/components/org.standardnotes.plus-editor/dist/dist.js index 7e9639669..79ecd5756 100644 --- a/public/components/org.standardnotes.plus-editor/dist/dist.js +++ b/public/components/org.standardnotes.plus-editor/dist/dist.js @@ -1,2 +1,2 @@ -document.addEventListener("DOMContentLoaded",(function(){let e,t,n,o,i,a=!1,r=!0,s=!1;const l=["address","article","aside","blockquote","details","dialog","dd","div","dl","dt","fieldset","figcaption","figure","footer","form","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","li","main","nav","ol","p","pre","section","table","ul"].join(", ");function c(){if(t){const i=t;e.saveItemWithPresave(i,(()=>{o=$("#summernote").summernote("code"),i.clientData=n,i.content.text=o,i.content.preview_plain=function(e,t=90){return e.length<=t?e:e.substring(0,t)+"..."}(function(e){const t=document.implementation.createHTMLDocument("New").body;return t.innerHTML=e,t.textContent||t.innerText||""}(o)),i.content.preview_html=null}))}}function u(){return e.getComponentDataValueForKey("notes")||{}}$("#summernote").summernote({height:500,minHeight:null,maxHeight:null,focus:!0,tabDisable:!0,showDomainOnlyForAutolink:!1,toolbar:[["para",["style"]],["style",["bold","italic","underline","strikethrough","clear"]],["fontsize",["fontsize","fontname"]],["color",["color"]],["para",["ul","ol","paragraph"]],["height",["height"]],["insert",["table","link","hr","picture","video"]],["misc",["codeview","help"]]],fontNames:["Arial","Arial Black","Comic Sans MS","Courier New","Helvetica Neue","Helvetica","Impact","Lucida Grande","Monospace","Roboto","system-ui","Tahoma","Times New Roman","Verdana"],callbacks:{onInit:function(){},onImageUpload:function(){alert("Until we can encrypt image files, uploads are not currently supported. We recommend using the Image button in the toolbar and copying an image URL instead.")}}}),$("#summernote").on("summernote.change",(function(){document.querySelectorAll(l).forEach((e=>e.setAttribute("dir","auto"))),a||c()})),$("textarea.note-codable").on("input",(()=>{c()})),e=new ComponentRelay({initialPermissions:[{name:"stream-context-item"}],targetWindow:window,onReady:()=>{const t=e.platform;t&&document.body.classList.add(t)}}),e.streamContextItem((l=>{!function(l){if(l.uuid!==i&&(o=null,r=!0,i=l.uuid),t=l,l.isMetadataUpdate)return;n=l.clientData;let c=l.content.text;if(c==o)return;const m=$("#summernote");if(m){a=!0;const t=/<[a-z][\s\S]*>/i.test(c);s||(m.summernote("fullscreen.toggle"),s=!0),r&&!t&&(c=((c||"")+"").replace(/\t/g," ").replace(/\r\n|\r|\n/g,"
    "));let n=!1;if(function(e){const t=(new DOMParser).parseFromString(`${e}`,"text/html");return Array.from(t.body.childNodes).some((e=>"SCRIPT"==e.nodeName))}(c)){const t=u()[i];t?n=t.trustUnsafeContent||!1:new Promise((e=>{new Stylekit.SKAlert({title:null,text:"We’ve detected that this note contains a script or code snippet which may be unsafe to execute. Scripts executed in the editor have the ability to impersonate as the editor to Standard Notes. Press Continue to mark this script as safe and proceed, or Cancel to avoid rendering this note.",buttons:[{text:"Cancel",style:"neutral",action:function(){e(!1)}},{text:"Continue",style:"danger",action:function(){e(!0)}}]}).present()})).then((t=>{t&&(function(t,n){const o=u();o[i]={trustUnsafeContent:n},e.setComponentDataValueForKey("notes",o)}(0,t),n=t)}))}else n=!0;if(!n)return m.summernote("code",""),void m.summernote("disable");m.summernote("enable"),m.summernote("code",c),r&&(m.summernote("commit"),r=!1),a=!1}}(l)}))})); +document.addEventListener("DOMContentLoaded",(function(){let e,t,n,o,i,a=!1,r=!0,s=!1;const l=["address","article","aside","blockquote","details","dialog","dd","div","dl","dt","fieldset","figcaption","figure","footer","form","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","li","main","nav","ol","p","pre","section","table","ul"].join(", ");function c(){if(t){const i=t;e.saveItemWithPresave(i,(()=>{o=$("#summernote").summernote("code"),i.clientData=n,i.content.text=o,i.content.preview_plain=function(e,t=90){return e.length<=t?e:e.substring(0,t)+"..."}(function(e){const t=document.implementation.createHTMLDocument("New").body;return t.innerHTML=e,t.textContent||t.innerText||""}(o)),i.content.preview_html=null}))}}function u(){return e.getComponentDataValueForKey("notes")||{}}$("#summernote").summernote({height:500,minHeight:null,maxHeight:null,focus:!0,tabDisable:!0,showDomainOnlyForAutolink:!1,toolbar:[["para",["style"]],["style",["bold","italic","underline","strikethrough","clear"]],["fontsize",["fontsize","fontname"]],["color",["color"]],["para",["ul","ol","paragraph"]],["height",["height"]],["insert",["table","link","hr","picture","video"]],["misc",["codeview","help"]]],fontNames:["Arial","Arial Black","Comic Sans MS","Courier New","Helvetica Neue","Helvetica","Impact","Lucida Grande","Monospace","Roboto","system-ui","Tahoma","Times New Roman","Verdana"],callbacks:{onInit:function(){},onImageUpload:function(){alert("Until we can encrypt image files, uploads are not currently supported. We recommend using the Image button in the toolbar and copying an image URL instead.")}}}),$("#summernote").on("summernote.change",(function(){document.querySelectorAll(l).forEach((e=>e.setAttribute("dir","auto"))),a||c()})),$("textarea.note-codable").on("input",(()=>{c()})),e=new ComponentRelay({initialPermissions:[{name:"stream-context-item"}],targetWindow:window,onReady:()=>{const t=e.platform;t&&document.body.classList.add(t)}}),e.streamContextItem((l=>{!function(l){if(l.uuid!==i&&(o=null,r=!0,i=l.uuid),t=l,l.isMetadataUpdate)return;n=l.clientData;let c=l.content.text;if($(".note-editable").attr("spellcheck",JSON.stringify(l.content.spellcheck)),c==o)return;const m=$("#summernote");if(m){a=!0;const t=/<[a-z][\s\S]*>/i.test(c);s||(m.summernote("fullscreen.toggle"),s=!0),r&&!t&&(c=((c||"")+"").replace(/\t/g," ").replace(/\r\n|\r|\n/g,"
    "));let n=!1;if(function(e){const t=(new DOMParser).parseFromString(`${e}`,"text/html");return Array.from(t.body.childNodes).some((e=>"SCRIPT"==e.nodeName))}(c)){const t=u()[i];t?n=t.trustUnsafeContent||!1:new Promise((e=>{new Stylekit.SKAlert({title:null,text:"We’ve detected that this note contains a script or code snippet which may be unsafe to execute. Scripts executed in the editor have the ability to impersonate as the editor to Standard Notes. Press Continue to mark this script as safe and proceed, or Cancel to avoid rendering this note.",buttons:[{text:"Cancel",style:"neutral",action:function(){e(!1)}},{text:"Continue",style:"danger",action:function(){e(!0)}}]}).present()})).then((t=>{t&&(function(t,n){const o=u();o[i]={trustUnsafeContent:n},e.setComponentDataValueForKey("notes",o)}(0,t),n=t)}))}else n=!0;if(!n)return m.summernote("code",""),void m.summernote("disable");m.summernote("enable"),m.summernote("code",c),r&&(m.summernote("commit"),r=!1),a=!1}}(l)}))})); //# sourceMappingURL=dist.js.map \ No newline at end of file diff --git a/public/components/org.standardnotes.plus-editor/dist/vendor.js b/public/components/org.standardnotes.plus-editor/dist/vendor.js index 4c50bbd73..29ffeceb0 100644 --- a/public/components/org.standardnotes.plus-editor/dist/vendor.js +++ b/public/components/org.standardnotes.plus-editor/dist/vendor.js @@ -1,2 +1,2 @@ /*! For license information please see vendor.js.LICENSE.txt */ -if(function(t,e){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=t.document?e(t,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return e(t)}:e(t)}("undefined"!=typeof window?window:this,(function(t,e){"use strict";var n=[],o=Object.getPrototypeOf,i=n.slice,r=n.flat?function(t){return n.flat.call(t)}:function(t){return n.concat.apply([],t)},a=n.push,s=n.indexOf,l={},c=l.toString,u=l.hasOwnProperty,d=u.toString,h=d.call(Object),f={},p=function(t){return"function"==typeof t&&"number"!=typeof t.nodeType},m=function(t){return null!=t&&t===t.window},v=t.document,g={type:!0,src:!0,nonce:!0,noModule:!0};function y(t,e,n){var o,i,r=(n=n||v).createElement("script");if(r.text=t,e)for(o in g)(i=e[o]||e.getAttribute&&e.getAttribute(o))&&r.setAttribute(o,i);n.head.appendChild(r).parentNode.removeChild(r)}function b(t){return null==t?t+"":"object"==typeof t||"function"==typeof t?l[c.call(t)]||"object":typeof t}var k="3.5.1",w=function(t,e){return new w.fn.init(t,e)};function x(t){var e=!!t&&"length"in t&&t.length,n=b(t);return!p(t)&&!m(t)&&("array"===n||0===e||"number"==typeof e&&0+~]|"+F+")"+F+"*"),_=new RegExp(F+"|>"),K=new RegExp(B),V=new RegExp("^"+H+"$"),G={ID:new RegExp("^#("+H+")"),CLASS:new RegExp("^\\.("+H+")"),TAG:new RegExp("^("+H+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+B),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+F+"*(even|odd|(([+-]|)(\\d*)n|)"+F+"*(?:([+-]|)"+F+"*(\\d+)|))"+F+"*\\)|)","i"),bool:new RegExp("^(?:"+j+")$","i"),needsContext:new RegExp("^"+F+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+F+"*((?:-\\d)?\\d*)"+F+"*\\)|)(?=[^-]|$)","i")},Q=/HTML$/i,X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,tt=/[+~]/,et=new RegExp("\\\\[\\da-fA-F]{1,6}"+F+"?|\\\\([^\\r\\n\\f])","g"),nt=function(t,e){var n="0x"+t.slice(1)-65536;return e||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},ot=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,it=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},rt=function(){h()},at=kt((function(t){return!0===t.disabled&&"fieldset"===t.nodeName.toLowerCase()}),{dir:"parentNode",next:"legend"});try{P.apply(A=R.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){P={apply:A.length?function(t,e){L.apply(t,R.call(e))}:function(t,e){for(var n=t.length,o=0;t[n++]=e[o++];);t.length=n-1}}}function st(t,e,o,i){var r,s,c,u,d,p,g,y=e&&e.ownerDocument,w=e?e.nodeType:9;if(o=o||[],"string"!=typeof t||!t||1!==w&&9!==w&&11!==w)return o;if(!i&&(h(e),e=e||f,m)){if(11!==w&&(d=Z.exec(t)))if(r=d[1]){if(9===w){if(!(c=e.getElementById(r)))return o;if(c.id===r)return o.push(c),o}else if(y&&(c=y.getElementById(r))&&b(e,c)&&c.id===r)return o.push(c),o}else{if(d[2])return P.apply(o,e.getElementsByTagName(t)),o;if((r=d[3])&&n.getElementsByClassName&&e.getElementsByClassName)return P.apply(o,e.getElementsByClassName(r)),o}if(n.qsa&&!$[t+" "]&&(!v||!v.test(t))&&(1!==w||"object"!==e.nodeName.toLowerCase())){if(g=t,y=e,1===w&&(_.test(t)||W.test(t))){for((y=tt.test(t)&>(e.parentNode)||e)===e&&n.scope||((u=e.getAttribute("id"))?u=u.replace(ot,it):e.setAttribute("id",u=k)),s=(p=a(t)).length;s--;)p[s]=(u?"#"+u:":scope")+" "+bt(p[s]);g=p.join(",")}try{return P.apply(o,y.querySelectorAll(g)),o}catch(e){$(t,!0)}finally{u===k&&e.removeAttribute("id")}}}return l(t.replace(U,"$1"),e,o,i)}function lt(){var t=[];return function e(n,i){return t.push(n+" ")>o.cacheLength&&delete e[t.shift()],e[n+" "]=i}}function ct(t){return t[k]=!0,t}function ut(t){var e=f.createElement("fieldset");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function dt(t,e){for(var n=t.split("|"),i=n.length;i--;)o.attrHandle[n[i]]=e}function ht(t,e){var n=e&&t,o=n&&1===t.nodeType&&1===e.nodeType&&t.sourceIndex-e.sourceIndex;if(o)return o;if(n)for(;n=n.nextSibling;)if(n===e)return-1;return t?1:-1}function ft(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function pt(t){return function(e){var n=e.nodeName.toLowerCase();return("input"===n||"button"===n)&&e.type===t}}function mt(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&at(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function vt(t){return ct((function(e){return e=+e,ct((function(n,o){for(var i,r=t([],n.length,e),a=r.length;a--;)n[i=r[a]]&&(n[i]=!(o[i]=n[i]))}))}))}function gt(t){return t&&void 0!==t.getElementsByTagName&&t}for(e in n=st.support={},r=st.isXML=function(t){var e=t.namespaceURI,n=(t.ownerDocument||t).documentElement;return!Q.test(e||n&&n.nodeName||"HTML")},h=st.setDocument=function(t){var e,i,a=t?t.ownerDocument||t:w;return a!=f&&9===a.nodeType&&a.documentElement&&(p=(f=a).documentElement,m=!r(f),w!=f&&(i=f.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",rt,!1):i.attachEvent&&i.attachEvent("onunload",rt)),n.scope=ut((function(t){return p.appendChild(t).appendChild(f.createElement("div")),void 0!==t.querySelectorAll&&!t.querySelectorAll(":scope fieldset div").length})),n.attributes=ut((function(t){return t.className="i",!t.getAttribute("className")})),n.getElementsByTagName=ut((function(t){return t.appendChild(f.createComment("")),!t.getElementsByTagName("*").length})),n.getElementsByClassName=J.test(f.getElementsByClassName),n.getById=ut((function(t){return p.appendChild(t).id=k,!f.getElementsByName||!f.getElementsByName(k).length})),n.getById?(o.filter.ID=function(t){var e=t.replace(et,nt);return function(t){return t.getAttribute("id")===e}},o.find.ID=function(t,e){if(void 0!==e.getElementById&&m){var n=e.getElementById(t);return n?[n]:[]}}):(o.filter.ID=function(t){var e=t.replace(et,nt);return function(t){var n=void 0!==t.getAttributeNode&&t.getAttributeNode("id");return n&&n.value===e}},o.find.ID=function(t,e){if(void 0!==e.getElementById&&m){var n,o,i,r=e.getElementById(t);if(r){if((n=r.getAttributeNode("id"))&&n.value===t)return[r];for(i=e.getElementsByName(t),o=0;r=i[o++];)if((n=r.getAttributeNode("id"))&&n.value===t)return[r]}return[]}}),o.find.TAG=n.getElementsByTagName?function(t,e){return void 0!==e.getElementsByTagName?e.getElementsByTagName(t):n.qsa?e.querySelectorAll(t):void 0}:function(t,e){var n,o=[],i=0,r=e.getElementsByTagName(t);if("*"===t){for(;n=r[i++];)1===n.nodeType&&o.push(n);return o}return r},o.find.CLASS=n.getElementsByClassName&&function(t,e){if(void 0!==e.getElementsByClassName&&m)return e.getElementsByClassName(t)},g=[],v=[],(n.qsa=J.test(f.querySelectorAll))&&(ut((function(t){var e;p.appendChild(t).innerHTML="",t.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+F+"*(?:''|\"\")"),t.querySelectorAll("[selected]").length||v.push("\\["+F+"*(?:value|"+j+")"),t.querySelectorAll("[id~="+k+"-]").length||v.push("~="),(e=f.createElement("input")).setAttribute("name",""),t.appendChild(e),t.querySelectorAll("[name='']").length||v.push("\\["+F+"*name"+F+"*="+F+"*(?:''|\"\")"),t.querySelectorAll(":checked").length||v.push(":checked"),t.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]"),t.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")})),ut((function(t){t.innerHTML="";var e=f.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&v.push("name"+F+"*[*^$|!~]?="),2!==t.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),p.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),v.push(",.*:")}))),(n.matchesSelector=J.test(y=p.matches||p.webkitMatchesSelector||p.mozMatchesSelector||p.oMatchesSelector||p.msMatchesSelector))&&ut((function(t){n.disconnectedMatch=y.call(t,"*"),y.call(t,"[s!='']:x"),g.push("!=",B)})),v=v.length&&new RegExp(v.join("|")),g=g.length&&new RegExp(g.join("|")),e=J.test(p.compareDocumentPosition),b=e||J.test(p.contains)?function(t,e){var n=9===t.nodeType?t.documentElement:t,o=e&&e.parentNode;return t===o||!(!o||1!==o.nodeType||!(n.contains?n.contains(o):t.compareDocumentPosition&&16&t.compareDocumentPosition(o)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},N=e?function(t,e){if(t===e)return d=!0,0;var o=!t.compareDocumentPosition-!e.compareDocumentPosition;return o||(1&(o=(t.ownerDocument||t)==(e.ownerDocument||e)?t.compareDocumentPosition(e):1)||!n.sortDetached&&e.compareDocumentPosition(t)===o?t==f||t.ownerDocument==w&&b(w,t)?-1:e==f||e.ownerDocument==w&&b(w,e)?1:u?O(u,t)-O(u,e):0:4&o?-1:1)}:function(t,e){if(t===e)return d=!0,0;var n,o=0,i=t.parentNode,r=e.parentNode,a=[t],s=[e];if(!i||!r)return t==f?-1:e==f?1:i?-1:r?1:u?O(u,t)-O(u,e):0;if(i===r)return ht(t,e);for(n=t;n=n.parentNode;)a.unshift(n);for(n=e;n=n.parentNode;)s.unshift(n);for(;a[o]===s[o];)o++;return o?ht(a[o],s[o]):a[o]==w?-1:s[o]==w?1:0}),f},st.matches=function(t,e){return st(t,null,null,e)},st.matchesSelector=function(t,e){if(h(t),n.matchesSelector&&m&&!$[e+" "]&&(!g||!g.test(e))&&(!v||!v.test(e)))try{var o=y.call(t,e);if(o||n.disconnectedMatch||t.document&&11!==t.document.nodeType)return o}catch(t){$(e,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(et,nt),t[3]=(t[3]||t[4]||t[5]||"").replace(et,nt),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||st.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&st.error(t[0]),t},PSEUDO:function(t){var e,n=!t[6]&&t[2];return G.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":n&&K.test(n)&&(e=a(n,!0))&&(e=n.indexOf(")",n.length-e)-n.length)&&(t[0]=t[0].slice(0,e),t[2]=n.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(et,nt).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=S[t+" "];return e||(e=new RegExp("(^|"+F+")"+t+"("+F+"|$)"))&&S(t,(function(t){return e.test("string"==typeof t.className&&t.className||void 0!==t.getAttribute&&t.getAttribute("class")||"")}))},ATTR:function(t,e,n){return function(o){var i=st.attr(o,t);return null==i?"!="===e:!e||(i+="","="===e?i===n:"!="===e?i!==n:"^="===e?n&&0===i.indexOf(n):"*="===e?n&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function I(t,e,n){return p(e)?w.grep(t,(function(t,o){return!!e.call(t,o,t)!==n})):e.nodeType?w.grep(t,(function(t){return t===e!==n})):"string"!=typeof e?w.grep(t,(function(t){return-1)[^>]*|#([\w-]+))$/;(w.fn.init=function(t,e,n){var o,i;if(!t)return this;if(n=n||A,"string"==typeof t){if(!(o="<"===t[0]&&">"===t[t.length-1]&&3<=t.length?[null,t,null]:D.exec(t))||!o[1]&&e)return!e||e.jquery?(e||n).find(t):this.constructor(e).find(t);if(o[1]){if(e=e instanceof w?e[0]:e,w.merge(this,w.parseHTML(o[1],e&&e.nodeType?e.ownerDocument||e:v,!0)),N.test(o[1])&&w.isPlainObject(e))for(o in e)p(this[o])?this[o](e[o]):this.attr(o,e[o]);return this}return(i=v.getElementById(o[2]))&&(this[0]=i,this.length=1),this}return t.nodeType?(this[0]=t,this.length=1,this):p(t)?void 0!==n.ready?n.ready(t):t(w):w.makeArray(t,this)}).prototype=w.fn,A=w(v);var L=/^(?:parents|prev(?:Until|All))/,P={children:!0,contents:!0,next:!0,prev:!0};function R(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}w.fn.extend({has:function(t){var e=w(t,this),n=e.length;return this.filter((function(){for(var t=0;t\x20\t\r\n\f]*)/i,pt=/^$|^module$|\/(?:java|ecma)script/i;ut=v.createDocumentFragment().appendChild(v.createElement("div")),(dt=v.createElement("input")).setAttribute("type","radio"),dt.setAttribute("checked","checked"),dt.setAttribute("name","t"),ut.appendChild(dt),f.checkClone=ut.cloneNode(!0).cloneNode(!0).lastChild.checked,ut.innerHTML="",f.noCloneChecked=!!ut.cloneNode(!0).lastChild.defaultValue,ut.innerHTML="",f.option=!!ut.lastChild;var mt={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function vt(t,e){var n;return n=void 0!==t.getElementsByTagName?t.getElementsByTagName(e||"*"):void 0!==t.querySelectorAll?t.querySelectorAll(e||"*"):[],void 0===e||e&&$(t,e)?w.merge([t],n):n}function gt(t,e){for(var n=0,o=t.length;n",""]);var yt=/<|&#?\w+;/;function bt(t,e,n,o,i){for(var r,a,s,l,c,u,d=e.createDocumentFragment(),h=[],f=0,p=t.length;f\s*$/g;function Dt(t,e){return $(t,"table")&&$(11!==e.nodeType?e:e.firstChild,"tr")&&w(t).children("tbody")[0]||t}function Lt(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function Pt(t){return"true/"===(t.type||"").slice(0,5)?t.type=t.type.slice(5):t.removeAttribute("type"),t}function Rt(t,e){var n,o,i,r,a,s;if(1===e.nodeType){if(Q.hasData(t)&&(s=Q.get(t).events))for(i in Q.remove(e,"handle events"),s)for(n=0,o=s[i].length;n").attr(t.scriptAttrs||{}).prop({charset:t.scriptCharset,src:t.url}).on("load error",n=function(t){e.remove(),n=null,t&&i("error"===t.type?404:200,t.type)}),v.head.appendChild(e[0])},abort:function(){n&&n()}}}));var _e,Ke=[],Ve=/(=)\?(?=&|$)|\?\?/;w.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var t=Ke.pop()||w.expando+"_"+Ce.guid++;return this[t]=!0,t}}),w.ajaxPrefilter("json jsonp",(function(e,n,o){var i,r,a,s=!1!==e.jsonp&&(Ve.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ve.test(e.data)&&"data");if(s||"jsonp"===e.dataTypes[0])return i=e.jsonpCallback=p(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,s?e[s]=e[s].replace(Ve,"$1"+i):!1!==e.jsonp&&(e.url+=(Se.test(e.url)?"&":"?")+e.jsonp+"="+i),e.converters["script json"]=function(){return a||w.error(i+" was not called"),a[0]},e.dataTypes[0]="json",r=t[i],t[i]=function(){a=arguments},o.always((function(){void 0===r?w(t).removeProp(i):t[i]=r,e[i]&&(e.jsonpCallback=n.jsonpCallback,Ke.push(i)),a&&p(r)&&r(a[0]),a=r=void 0})),"script"})),f.createHTMLDocument=((_e=v.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_e.childNodes.length),w.parseHTML=function(t,e,n){return"string"!=typeof t?[]:("boolean"==typeof e&&(n=e,e=!1),e||(f.createHTMLDocument?((o=(e=v.implementation.createHTMLDocument("")).createElement("base")).href=v.location.href,e.head.appendChild(o)):e=v),r=!n&&[],(i=N.exec(t))?[e.createElement(i[1])]:(i=bt([t],e,r),r&&r.length&&w(r).remove(),w.merge([],i.childNodes)));var o,i,r},w.fn.load=function(t,e,n){var o,i,r,a=this,s=t.indexOf(" ");return-1").append(w.parseHTML(t)).find(o):t)})).always(n&&function(t,e){a.each((function(){n.apply(this,r||[t.responseText,e,t])}))}),this},w.expr.pseudos.animated=function(t){return w.grep(w.timers,(function(e){return t===e.elem})).length},w.offset={setOffset:function(t,e,n){var o,i,r,a,s,l,c=w.css(t,"position"),u=w(t),d={};"static"===c&&(t.style.position="relative"),s=u.offset(),r=w.css(t,"top"),l=w.css(t,"left"),("absolute"===c||"fixed"===c)&&-1<(r+l).indexOf("auto")?(a=(o=u.position()).top,i=o.left):(a=parseFloat(r)||0,i=parseFloat(l)||0),p(e)&&(e=e.call(t,n,w.extend({},s))),null!=e.top&&(d.top=e.top-s.top+a),null!=e.left&&(d.left=e.left-s.left+i),"using"in e?e.using.call(t,d):("number"==typeof d.top&&(d.top+="px"),"number"==typeof d.left&&(d.left+="px"),u.css(d))}},w.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each((function(e){w.offset.setOffset(this,t,e)}));var e,n,o=this[0];return o?o.getClientRects().length?(e=o.getBoundingClientRect(),n=o.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var t,e,n,o=this[0],i={top:0,left:0};if("fixed"===w.css(o,"position"))e=o.getBoundingClientRect();else{for(e=this.offset(),n=o.ownerDocument,t=o.offsetParent||n.documentElement;t&&(t===n.body||t===n.documentElement)&&"static"===w.css(t,"position");)t=t.parentNode;t&&t!==o&&1===t.nodeType&&((i=w(t).offset()).top+=w.css(t,"borderTopWidth",!0),i.left+=w.css(t,"borderLeftWidth",!0))}return{top:e.top-i.top-w.css(o,"marginTop",!0),left:e.left-i.left-w.css(o,"marginLeft",!0)}}},offsetParent:function(){return this.map((function(){for(var t=this.offsetParent;t&&"static"===w.css(t,"position");)t=t.offsetParent;return t||ot}))}}),w.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},(function(t,e){var n="pageYOffset"===e;w.fn[t]=function(o){return U(this,(function(t,o,i){var r;if(m(t)?r=t:9===t.nodeType&&(r=t.defaultView),void 0===i)return r?r[e]:t[o];r?r.scrollTo(n?r.pageXOffset:i,n?i:r.pageYOffset):t[o]=i}),t,o,arguments.length)}})),w.each(["top","left"],(function(t,e){w.cssHooks[e]=Ut(f.pixelPosition,(function(t,n){if(n)return n=zt(t,e),Ft.test(n)?w(t).position()[e]+"px":n}))})),w.each({Height:"height",Width:"width"},(function(t,e){w.each({padding:"inner"+t,content:e,"":"outer"+t},(function(n,o){w.fn[o]=function(i,r){var a=arguments.length&&(n||"boolean"!=typeof i),s=n||(!0===i||!0===r?"margin":"border");return U(this,(function(e,n,i){var r;return m(e)?0===o.indexOf("outer")?e["inner"+t]:e.document.documentElement["client"+t]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+t],r["scroll"+t],e.body["offset"+t],r["offset"+t],r["client"+t])):void 0===i?w.css(e,n,s):w.style(e,n,i,s)}),e,a?i:void 0,a)}}))})),w.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],(function(t,e){w.fn[e]=function(t){return this.on(e,t)}})),w.fn.extend({bind:function(t,e,n){return this.on(t,null,e,n)},unbind:function(t,e){return this.off(t,null,e)},delegate:function(t,e,n,o){return this.on(e,t,n,o)},undelegate:function(t,e,n){return 1===arguments.length?this.off(t,"**"):this.off(e,t||"**",n)},hover:function(t,e){return this.mouseenter(t).mouseleave(e||t)}}),w.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),(function(t,e){w.fn[e]=function(t,n){return 0this.$items.length-1||t<0))return this.sliding?this.$element.one("slid.bs.carousel",(function(){e.to(t)})):n==t?this.pause().cycle():this.slide(ndocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&t?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!t?this.scrollbarWidth:""})},e.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},e.prototype.checkScrollbar=function(){var t=window.innerWidth;if(!t){var e=document.documentElement.getBoundingClientRect();t=e.right-Math.abs(e.left)}this.bodyIsOverflowing=document.body.clientWidth
    ',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0},sanitize:!0,sanitizeFn:null,whiteList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]}},s.prototype.init=function(e,n,o){if(this.enabled=!0,this.type=e,this.$element=t(n),this.options=this.getOptions(o),this.$viewport=this.options.viewport&&t(document).find(t.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var i=this.options.trigger.split(" "),r=i.length;r--;){var a=i[r];if("click"==a)this.$element.on("click."+this.type,this.options.selector,t.proxy(this.toggle,this));else if("manual"!=a){var s="hover"==a?"mouseenter":"focusin",l="hover"==a?"mouseleave":"focusout";this.$element.on(s+"."+this.type,this.options.selector,t.proxy(this.enter,this)),this.$element.on(l+"."+this.type,this.options.selector,t.proxy(this.leave,this))}}this.options.selector?this._options=t.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},s.prototype.getDefaults=function(){return s.DEFAULTS},s.prototype.getOptions=function(n){var o=this.$element.data();for(var i in o)o.hasOwnProperty(i)&&-1!==t.inArray(i,e)&&delete o[i];return(n=t.extend({},this.getDefaults(),o,n)).delay&&"number"==typeof n.delay&&(n.delay={show:n.delay,hide:n.delay}),n.sanitize&&(n.template=a(n.template,n.whiteList,n.sanitizeFn)),n},s.prototype.getDelegateOptions=function(){var e={},n=this.getDefaults();return this._options&&t.each(this._options,(function(t,o){n[t]!=o&&(e[t]=o)})),e},s.prototype.enter=function(e){var n=e instanceof this.constructor?e:t(e.currentTarget).data("bs."+this.type);if(n||(n=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,n)),e instanceof t.Event&&(n.inState["focusin"==e.type?"focus":"hover"]=!0),n.tip().hasClass("in")||"in"==n.hoverState)n.hoverState="in";else{if(clearTimeout(n.timeout),n.hoverState="in",!n.options.delay||!n.options.delay.show)return n.show();n.timeout=setTimeout((function(){"in"==n.hoverState&&n.show()}),n.options.delay.show)}},s.prototype.isInStateTrue=function(){for(var t in this.inState)if(this.inState[t])return!0;return!1},s.prototype.leave=function(e){var n=e instanceof this.constructor?e:t(e.currentTarget).data("bs."+this.type);if(n||(n=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,n)),e instanceof t.Event&&(n.inState["focusout"==e.type?"focus":"hover"]=!1),!n.isInStateTrue()){if(clearTimeout(n.timeout),n.hoverState="out",!n.options.delay||!n.options.delay.hide)return n.hide();n.timeout=setTimeout((function(){"out"==n.hoverState&&n.hide()}),n.options.delay.hide)}},s.prototype.show=function(){var e=t.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(e);var n=t.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(e.isDefaultPrevented()||!n)return;var o=this,i=this.tip(),r=this.getUID(this.type);this.setContent(),i.attr("id",r),this.$element.attr("aria-describedby",r),this.options.animation&&i.addClass("fade");var a="function"==typeof this.options.placement?this.options.placement.call(this,i[0],this.$element[0]):this.options.placement,l=/\s?auto?\s?/i,c=l.test(a);c&&(a=a.replace(l,"")||"top"),i.detach().css({top:0,left:0,display:"block"}).addClass(a).data("bs."+this.type,this),this.options.container?i.appendTo(t(document).find(this.options.container)):i.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var u=this.getPosition(),d=i[0].offsetWidth,h=i[0].offsetHeight;if(c){var f=a,p=this.getPosition(this.$viewport);a="bottom"==a&&u.bottom+h>p.bottom?"top":"top"==a&&u.top-hp.width?"left":"left"==a&&u.left-da.top+a.height&&(i.top=a.top+a.height-l)}else{var c=e.left-r,u=e.left+r+n;ca.right&&(i.left=a.left+a.width-u)}return i},s.prototype.getTitle=function(){var t=this.$element,e=this.options;return t.attr("data-original-title")||("function"==typeof e.title?e.title.call(t[0]):e.title)},s.prototype.getUID=function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},s.prototype.tip=function(){if(!this.$tip&&(this.$tip=t(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},s.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},s.prototype.enable=function(){this.enabled=!0},s.prototype.disable=function(){this.enabled=!1},s.prototype.toggleEnabled=function(){this.enabled=!this.enabled},s.prototype.toggle=function(e){var n=this;e&&((n=t(e.currentTarget).data("bs."+this.type))||(n=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,n))),e?(n.inState.click=!n.inState.click,n.isInStateTrue()?n.enter(n):n.leave(n)):n.tip().hasClass("in")?n.leave(n):n.enter(n)},s.prototype.destroy=function(){var t=this;clearTimeout(this.timeout),this.hide((function(){t.$element.off("."+t.type).removeData("bs."+t.type),t.$tip&&t.$tip.detach(),t.$tip=null,t.$arrow=null,t.$viewport=null,t.$element=null}))},s.prototype.sanitizeHtml=function(t){return a(t,this.options.whiteList,this.options.sanitizeFn)};var l=t.fn.tooltip;t.fn.tooltip=function(e){return this.each((function(){var n=t(this),o=n.data("bs.tooltip"),i="object"==typeof e&&e;!o&&/destroy|hide/.test(e)||(o||n.data("bs.tooltip",o=new s(this,i)),"string"==typeof e&&o[e]())}))},t.fn.tooltip.Constructor=s,t.fn.tooltip.noConflict=function(){return t.fn.tooltip=l,this}}(jQuery),function(t){"use strict";var e=function(t,e){this.init("popover",t,e)};if(!t.fn.tooltip)throw new Error("Popover requires tooltip.js");e.VERSION="3.4.1",e.DEFAULTS=t.extend({},t.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),((e.prototype=t.extend({},t.fn.tooltip.Constructor.prototype)).constructor=e).prototype.getDefaults=function(){return e.DEFAULTS},e.prototype.setContent=function(){var t=this.tip(),e=this.getTitle(),n=this.getContent();if(this.options.html){var o=typeof n;this.options.sanitize&&(e=this.sanitizeHtml(e),"string"===o&&(n=this.sanitizeHtml(n))),t.find(".popover-title").html(e),t.find(".popover-content").children().detach().end()["string"===o?"html":"append"](n)}else t.find(".popover-title").text(e),t.find(".popover-content").children().detach().end().text(n);t.removeClass("fade top bottom left right in"),t.find(".popover-title").html()||t.find(".popover-title").hide()},e.prototype.hasContent=function(){return this.getTitle()||this.getContent()},e.prototype.getContent=function(){var t=this.$element,e=this.options;return t.attr("data-content")||("function"==typeof e.content?e.content.call(t[0]):e.content)},e.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var n=t.fn.popover;t.fn.popover=function(n){return this.each((function(){var o=t(this),i=o.data("bs.popover"),r="object"==typeof n&&n;!i&&/destroy|hide/.test(n)||(i||o.data("bs.popover",i=new e(this,r)),"string"==typeof n&&i[n]())}))},t.fn.popover.Constructor=e,t.fn.popover.noConflict=function(){return t.fn.popover=n,this}}(jQuery),function(t){"use strict";function e(n,o){this.$body=t(document.body),this.$scrollElement=t(n).is(document.body)?t(window):t(n),this.options=t.extend({},e.DEFAULTS,o),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",t.proxy(this.process,this)),this.refresh(),this.process()}function n(n){return this.each((function(){var o=t(this),i=o.data("bs.scrollspy"),r="object"==typeof n&&n;i||o.data("bs.scrollspy",i=new e(this,r)),"string"==typeof n&&i[n]()}))}e.VERSION="3.4.1",e.DEFAULTS={offset:10},e.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},e.prototype.refresh=function(){var e=this,n="offset",o=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),t.isWindow(this.$scrollElement[0])||(n="position",o=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map((function(){var e=t(this),i=e.data("target")||e.attr("href"),r=/^#./.test(i)&&t(i);return r&&r.length&&r.is(":visible")&&[[r[n]().top+o,i]]||null})).sort((function(t,e){return t[0]-e[0]})).each((function(){e.offsets.push(this[0]),e.targets.push(this[1])}))},e.prototype.process=function(){var t,e=this.$scrollElement.scrollTop()+this.options.offset,n=this.getScrollHeight(),o=this.options.offset+n-this.$scrollElement.height(),i=this.offsets,r=this.targets,a=this.activeTarget;if(this.scrollHeight!=n&&this.refresh(),o<=e)return a!=(t=r[r.length-1])&&this.activate(t);if(a&&e=i[t]&&(void 0===i[t+1]||e .active"),a=i&&t.support.transition&&(r.length&&r.hasClass("fade")||!!o.find("> .fade").length);function s(){r.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),n.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),a?(n[0].offsetWidth,n.addClass("in")):n.removeClass("fade"),n.parent(".dropdown-menu").length&&n.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),i&&i()}r.length&&a?r.one("bsTransitionEnd",s).emulateTransitionEnd(e.TRANSITION_DURATION):s(),r.removeClass("in")};var o=t.fn.tab;t.fn.tab=n,t.fn.tab.Constructor=e,t.fn.tab.noConflict=function(){return t.fn.tab=o,this};var i=function(e){e.preventDefault(),n.call(t(this),"show")};t(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',i).on("click.bs.tab.data-api",'[data-toggle="pill"]',i)}(jQuery),function(t){"use strict";var e=function(n,o){this.options=t.extend({},e.DEFAULTS,o);var i=this.options.target===e.DEFAULTS.target?t(this.options.target):t(document).find(this.options.target);this.$target=i.on("scroll.bs.affix.data-api",t.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",t.proxy(this.checkPositionWithEventLoop,this)),this.$element=t(n),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};function n(n){return this.each((function(){var o=t(this),i=o.data("bs.affix"),r="object"==typeof n&&n;i||o.data("bs.affix",i=new e(this,r)),"string"==typeof n&&i[n]()}))}e.VERSION="3.4.1",e.RESET="affix affix-top affix-bottom",e.DEFAULTS={offset:0,target:window},e.prototype.getState=function(t,e,n,o){var i=this.$target.scrollTop(),r=this.$element.offset(),a=this.$target.height();if(null!=n&&"top"==this.affixed)return i0||navigator.msMaxTouchPoints>0,p=u?"DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted":"input",m={isMac:navigator.appVersion.indexOf("Mac")>-1,isMSIE:u,isEdge:h,isFF:!h&&/firefox/i.test(c),isPhantom:/PhantomJS/i.test(c),isWebkit:!h&&/webkit/i.test(c),isChrome:!h&&/chrome/i.test(c),isSafari:!h&&/safari/i.test(c)&&!/chrome/i.test(c),browserVersion:l,jqueryVersion:parseFloat(i.a.fn.jquery),isSupportAmd:r,isSupportTouch:f,isFontInstalled:function(t){var e="Comic Sans MS"===t?"Courier New":"Comic Sans MS",n=document.createElement("canvas").getContext("2d");n.font="200px '"+e+"'";var o=n.measureText("mmmmmmmmmmwwwww").width;return n.font="200px "+s(t)+', "'+e+'"',o!==n.measureText("mmmmmmmmmmwwwww").width},isW3CRangeSupport:!!document.createRange,inputEventName:p,genericFontFamilies:a,validFontName:s},v=0,g={eq:function(t){return function(e){return t===e}},eq2:function(t,e){return t===e},peq2:function(t){return function(e,n){return e[t]===n[t]}},ok:function(){return!0},fail:function(){return!1},self:function(t){return t},not:function(t){return function(){return!t.apply(t,arguments)}},and:function(t,e){return function(n){return t(n)&&e(n)}},invoke:function(t,e){return function(){return t[e].apply(t,arguments)}},resetUniqueId:function(){v=0},uniqueId:function(t){var e=++v+"";return t?t+e:e},rect2bnd:function(t){var e=i()(document);return{top:t.top+e.scrollTop(),left:t.left+e.scrollLeft(),width:t.right-t.left,height:t.bottom-t.top}},invertObject:function(t){var e={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[t[n]]=n);return e},namespaceToCamel:function(t,e){return(e=e||"")+t.split(".").map((function(t){return t.substring(0,1).toUpperCase()+t.substring(1)})).join("")},debounce:function(t,e,n){var o;return function(){var i=this,r=arguments,a=function(){o=null,n||t.apply(i,r)},s=n&&!o;clearTimeout(o),o=setTimeout(a,e),s&&t.apply(i,r)}},isValidUrl:function(t){return/[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/gi.test(t)}};function y(t){return t[0]}function b(t){return t[t.length-1]}function k(t){return t.slice(1)}function w(t,e){if(t&&t.length&&e){if(t.indexOf)return-1!==t.indexOf(e);if(t.contains)return t.contains(e)}return!1}var x={head:y,last:b,initial:function(t){return t.slice(0,t.length-1)},tail:k,prev:function(t,e){if(t&&t.length&&e){var n=t.indexOf(e);return-1===n?null:t[n-1]}return null},next:function(t,e){if(t&&t.length&&e){var n=t.indexOf(e);return-1===n?null:t[n+1]}return null},find:function(t,e){for(var n=0,o=t.length;n";function U(t){return E(t)?t.nodeValue.length:t?t.childNodes.length:0}function q(t){var e=U(t);return 0===e||!E(t)&&1===e&&t.innerHTML===z||!(!x.all(t.childNodes,E)||""!==t.innerHTML)}function W(t){$(t)||U(t)||(t.innerHTML=z)}function _(t,e){for(;t;){if(e(t))return t;if(S(t))break;t=t.parentNode}return null}function K(t,e){e=e||g.fail;var n=[];return _(t,(function(t){return S(t)||n.push(t),e(t)})),n}function V(t,e){e=e||g.fail;for(var n=[];t&&!e(t);)n.push(t),t=t.nextSibling;return n}function G(t,e){var n=e.nextSibling,o=e.parentNode;return n?o.insertBefore(t,n):o.appendChild(t),t}function Q(t,e){return i.a.each(e,(function(e,n){t.appendChild(n)})),t}function X(t){return 0===t.offset}function Y(t){return t.offset===U(t.node)}function J(t){return X(t)||Y(t)}function Z(t,e){for(;t&&t!==e;){if(0!==et(t))return!1;t=t.parentNode}return!0}function tt(t,e){if(!e)return!1;for(;t&&t!==e;){if(et(t)!==U(t.parentNode)-1)return!1;t=t.parentNode}return!0}function et(t){for(var e=0;t=t.previousSibling;)e+=1;return e}function nt(t){return!!(t&&t.childNodes&&t.childNodes.length)}function ot(t,e){var n,o;if(0===t.offset){if(S(t.node))return null;n=t.node.parentNode,o=et(t.node)}else nt(t.node)?o=U(n=t.node.childNodes[t.offset-1]):(n=t.node,o=e?0:t.offset-1);return{node:n,offset:o}}function it(t,e){var n,o;if(U(t.node)===t.offset){if(S(t.node))return null;var i=at(t.node);i?(n=i,o=0):(n=t.node.parentNode,o=et(t.node)+1)}else nt(t.node)?(n=t.node.childNodes[t.offset],o=0):(n=t.node,o=e?U(t.node):t.offset+1);return{node:n,offset:o}}function rt(t,e){var n,o;if(q(t.node))return{node:n=t.node.nextSibling,offset:o=0};if(U(t.node)===t.offset){if(S(t.node))return null;var i=at(t.node);i?(n=i,o=0):(n=t.node.parentNode,o=et(t.node)+1),S(n)&&(n=t.node.nextSibling,o=0)}else if(nt(t.node)){if(o=0,q(n=t.node.childNodes[t.offset]))return null}else if(n=t.node,o=e?U(t.node):t.offset+1,q(n))return null;return{node:n,offset:o}}function at(t){if(t.nextSibling&&t.parent===t.nextSibling.parent)return E(t.nextSibling)?t.nextSibling:at(t.nextSibling)}function st(t,e){return t.node===e.node&&t.offset===e.offset}function lt(t,e){var n=e&&e.isSkipPaddingBlankHTML,o=e&&e.isNotSplitEdgePoint,i=e&&e.isDiscardEmptySplits;if(i&&(n=!0),J(t)&&(E(t.node)||o)){if(X(t))return t.node;if(Y(t))return t.node.nextSibling}if(E(t.node))return t.node.splitText(t.offset);var r=t.node.childNodes[t.offset],a=G(t.node.cloneNode(!1),t.node);return Q(a,V(r)),n||(W(t.node),W(a)),i&&(q(t.node)&&dt(t.node),q(a))?(dt(a),t.node.nextSibling):a}function ct(t,e,n){var o=K(e.node,g.eq(t));return o.length?1===o.length?lt(e,n):o.reduce((function(t,o){return t===e.node&&(t=lt(e,n)),lt({node:o,offset:t?et(t):U(o)},n)})):null}function ut(t){return document.createElement(t)}function dt(t,e){if(t&&t.parentNode){if(t.removeNode)return t.removeNode(e);var n=t.parentNode;if(!e){for(var o=[],i=0,r=t.childNodes.length;i".concat(z,"

    "),makePredByNodeName:T,isEditable:S,isControlSizing:function(t){return t&&i()(t).hasClass("note-control-sizing")},isText:E,isElement:function(t){return t&&1===t.nodeType},isVoid:$,isPara:N,isPurePara:function(t){return N(t)&&!A(t)},isHeading:function(t){return t&&/^H[1-7]/.test(t.nodeName.toUpperCase())},isInline:P,isBlock:g.not(P),isBodyInline:function(t){return P(t)&&!_(t,N)},isBody:B,isParaInline:function(t){return P(t)&&!!_(t,N)},isPre:I,isList:R,isTable:D,isData:L,isCell:j,isBlockquote:F,isBodyContainer:H,isAnchor:M,isDiv:T("DIV"),isLi:A,isBR:T("BR"),isSpan:T("SPAN"),isB:T("B"),isU:T("U"),isS:T("S"),isI:T("I"),isImg:T("IMG"),isTextarea:ht,deepestChildIsEmpty:function(t){do{if(null===t.firstElementChild||""===t.firstElementChild.innerHTML)break}while(t=t.firstElementChild);return q(t)},isEmpty:q,isEmptyAnchor:g.and(M,q),isClosestSibling:function(t,e){return t.nextSibling===e||t.previousSibling===e},withClosestSiblings:function(t,e){e=e||g.ok;var n=[];return t.previousSibling&&e(t.previousSibling)&&n.push(t.previousSibling),n.push(t),t.nextSibling&&e(t.nextSibling)&&n.push(t.nextSibling),n},nodeLength:U,isLeftEdgePoint:X,isRightEdgePoint:Y,isEdgePoint:J,isLeftEdgeOf:Z,isRightEdgeOf:tt,isLeftEdgePointOf:function(t,e){return X(t)&&Z(t.node,e)},isRightEdgePointOf:function(t,e){return Y(t)&&tt(t.node,e)},prevPoint:ot,nextPoint:it,nextPointWithEmptyNode:rt,isSamePoint:st,isVisiblePoint:function(t){if(E(t.node)||!nt(t.node)||q(t.node))return!0;var e=t.node.childNodes[t.offset-1],n=t.node.childNodes[t.offset];return!(e&&!$(e)||n&&!$(n))},prevPointUntil:function(t,e){for(;t;){if(e(t))return t;t=ot(t)}return null},nextPointUntil:function(t,e){for(;t;){if(e(t))return t;t=it(t)}return null},isCharPoint:function(t){if(!E(t.node))return!1;var e=t.node.nodeValue.charAt(t.offset-1);return e&&" "!==e&&e!==C},isSpacePoint:function(t){if(!E(t.node))return!1;var e=t.node.nodeValue.charAt(t.offset-1);return" "===e||e===C},walkPoint:function(t,e,n,o){for(var i=t;i&&(n(i),!st(i,e));)i=rt(i,o&&t.node!==i.node&&e.node!==i.node)},ancestor:_,singleChildAncestor:function(t,e){for(t=t.parentNode;t&&1===U(t);){if(e(t))return t;if(S(t))break;t=t.parentNode}return null},listAncestor:K,lastAncestor:function(t,e){var n=K(t);return x.last(n.filter(e))},listNext:V,listPrev:function(t,e){e=e||g.fail;for(var n=[];t&&!e(t);)n.push(t),t=t.previousSibling;return n},listDescendant:function(t,e){var n=[];return e=e||g.ok,function o(i){t!==i&&e(i)&&n.push(i);for(var r=0,a=i.childNodes.length;r-1)return o;return null},wrap:function(t,e){var n=t.parentNode,o=i()("<"+e+">")[0];return n.insertBefore(o,t),o.appendChild(t),o},insertAfter:G,appendChildNodes:Q,position:et,hasChildren:nt,makeOffsetPath:function(t,e){return K(e,g.eq(t)).map(et).reverse()},fromOffsetPath:function(t,e){for(var n=t,o=0,i=e.length;o\s]*)(.*?)(\s*\/?>)/g,(function(t,e,n){n=n.toUpperCase();var o=/^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(n)&&!!e,i=/^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(n);return t+(o||i?"\n":"")}))).trim()),n},value:ft,posFromPlaceholder:function(t){var e=i()(t),n=e.offset(),o=e.outerHeight(!0);return{left:n.left,top:n.top+o}},attachEvents:function(t,e){Object.keys(e).forEach((function(n){t.on(n,e[n])}))},detachEvents:function(t,e){Object.keys(e).forEach((function(n){t.off(n,e[n])}))},isCustomStyleTag:function(t){return t&&!E(t)&&x.contains(t.classList,"note-styletag")}};var mt=function(){function t(e,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.$note=e,this.memos={},this.modules={},this.layoutInfo={},this.options=i.a.extend(!0,{},n),i.a.summernote.ui=i.a.summernote.ui_template(this.options),this.ui=i.a.summernote.ui,this.initialize()}var e;return(e=[{key:"initialize",value:function(){return this.layoutInfo=this.ui.createLayout(this.$note),this._initialize(),this.$note.hide(),this}},{key:"destroy",value:function(){this._destroy(),this.$note.removeData("summernote"),this.ui.removeLayout(this.$note,this.layoutInfo)}},{key:"reset",value:function(){var t=this.isDisabled();this.code(pt.emptyPara),this._destroy(),this._initialize(),t&&this.disable()}},{key:"_initialize",value:function(){var t=this;this.options.id=g.uniqueId(i.a.now()),this.options.container=this.options.container||this.layoutInfo.editor;var e=i.a.extend({},this.options.buttons);Object.keys(e).forEach((function(n){t.memo("button."+n,e[n])}));var n=i.a.extend({},this.options.modules,i.a.summernote.plugins||{});Object.keys(n).forEach((function(e){t.module(e,n[e],!0)})),Object.keys(this.modules).forEach((function(e){t.initializeModule(e)}))}},{key:"_destroy",value:function(){var t=this;Object.keys(this.modules).reverse().forEach((function(e){t.removeModule(e)})),Object.keys(this.memos).forEach((function(e){t.removeMemo(e)})),this.triggerEvent("destroy",this)}},{key:"code",value:function(t){var e=this.invoke("codeview.isActivated");if(void 0===t)return this.invoke("codeview.sync"),e?this.layoutInfo.codable.val():this.layoutInfo.editable.html();e?this.invoke("codeview.sync",t):this.layoutInfo.editable.html(t),this.$note.val(t),this.triggerEvent("change",t,this.layoutInfo.editable)}},{key:"isDisabled",value:function(){return"false"===this.layoutInfo.editable.attr("contenteditable")}},{key:"enable",value:function(){this.layoutInfo.editable.attr("contenteditable",!0),this.invoke("toolbar.activate",!0),this.triggerEvent("disable",!1),this.options.editing=!0}},{key:"disable",value:function(){this.invoke("codeview.isActivated")&&this.invoke("codeview.deactivate"),this.layoutInfo.editable.attr("contenteditable",!1),this.options.editing=!1,this.invoke("toolbar.deactivate",!0),this.triggerEvent("disable",!0)}},{key:"triggerEvent",value:function(){var t=x.head(arguments),e=x.tail(x.from(arguments)),n=this.options.callbacks[g.namespaceToCamel(t,"on")];n&&n.apply(this.$note[0],e),this.$note.trigger("summernote."+t,e)}},{key:"initializeModule",value:function(t){var e=this.modules[t];e.shouldInitialize=e.shouldInitialize||g.ok,e.shouldInitialize()&&(e.initialize&&e.initialize(),e.events&&pt.attachEvents(this.$note,e.events))}},{key:"module",value:function(t,e,n){if(1===arguments.length)return this.modules[t];this.modules[t]=new e(this),n||this.initializeModule(t)}},{key:"removeModule",value:function(t){var e=this.modules[t];e.shouldInitialize()&&(e.events&&pt.detachEvents(this.$note,e.events),e.destroy&&e.destroy()),delete this.modules[t]}},{key:"memo",value:function(t,e){if(1===arguments.length)return this.memos[t];this.memos[t]=e}},{key:"removeMemo",value:function(t){this.memos[t]&&this.memos[t].destroy&&this.memos[t].destroy(),delete this.memos[t]}},{key:"createInvokeHandlerAndUpdateState",value:function(t,e){var n=this;return function(o){n.createInvokeHandler(t,e)(o),n.invoke("buttons.updateCurrentStyle")}}},{key:"createInvokeHandler",value:function(t,e){var n=this;return function(o){o.preventDefault();var r=i()(o.target);n.invoke(t,e||r.closest("[data-value]").data("value"),r)}}},{key:"invoke",value:function(){var t=x.head(arguments),e=x.tail(x.from(arguments)),n=t.split("."),o=n.length>1,i=o&&x.head(n),r=o?x.last(n):x.head(n),a=this.modules[i||"editor"];return!i&&this[r]?this[r].apply(this,e):a&&a[r]&&a.shouldInitialize()?a[r].apply(a,e):void 0}}])&&function(t,e){for(var n=0;n=0)break;o=a[n]}if(0!==n&&pt.isText(a[n-1])){var s=document.body.createTextRange(),l=null;s.moveToElementText(o||i),s.collapse(!o),l=o?o.nextSibling:i.firstChild;var c=t.duplicate();c.setEndPoint("StartToStart",s);for(var u=c.text.replace(/[\r\n]/g,"").length;u>l.nodeValue.length&&l.nextSibling;)u-=l.nodeValue.length,l=l.nextSibling;l.nodeValue,e&&l.nextSibling&&pt.isText(l.nextSibling)&&u===l.nodeValue.length&&(u-=l.nodeValue.length,l=l.nextSibling),i=l,n=u}return{cont:i,offset:n}}function gt(t){var e=document.body.createTextRange(),n=function t(e,n){var o,i;if(pt.isText(e)){var r=pt.listPrev(e,g.not(pt.isText)),a=x.last(r).previousSibling;o=a||e.parentNode,n+=x.sum(x.tail(r),pt.nodeLength),i=!a}else{if(o=e.childNodes[n]||e,pt.isText(o))return t(o,0);n=0,i=!1}return{node:o,collapseToStart:i,offset:n}}(t.node,t.offset);return e.moveToElementText(n.node),e.collapse(n.collapseToStart),e.moveStart("character",n.offset),e}i.a.fn.extend({summernote:function(){var t=i.a.type(x.head(arguments)),e="string"===t,n="object"===t,o=i.a.extend({},i.a.summernote.options,n?x.head(arguments):{});o.langInfo=i.a.extend(!0,{},i.a.summernote.lang["en-US"],i.a.summernote.lang[o.lang]),o.icons=i.a.extend(!0,{},i.a.summernote.options.icons,o.icons),o.tooltip="auto"===o.tooltip?!m.isSupportTouch:o.tooltip,this.each((function(t,e){var n=i()(e);if(!n.data("summernote")){var r=new mt(n,o);n.data("summernote",r),n.data("summernote").triggerEvent("init",r.layoutInfo)}}));var r=this.first();if(r.length){var a=r.data("summernote");if(e)return a.invoke.apply(a,x.from(arguments));o.focus&&a.invoke("editor.focus")}return this}});var yt=function(){function t(e,n,o,i){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.sc=e,this.so=n,this.ec=o,this.eo=i,this.isOnEditable=this.makeIsOn(pt.isEditable),this.isOnList=this.makeIsOn(pt.isList),this.isOnAnchor=this.makeIsOn(pt.isAnchor),this.isOnCell=this.makeIsOn(pt.isCell),this.isOnData=this.makeIsOn(pt.isData)}var e;return(e=[{key:"nativeRange",value:function(){if(m.isW3CRangeSupport){var t=document.createRange();return t.setStart(this.sc,this.so),t.setEnd(this.ec,this.eo),t}var e=gt({node:this.sc,offset:this.so});return e.setEndPoint("EndToEnd",gt({node:this.ec,offset:this.eo})),e}},{key:"getPoints",value:function(){return{sc:this.sc,so:this.so,ec:this.ec,eo:this.eo}}},{key:"getStartPoint",value:function(){return{node:this.sc,offset:this.so}}},{key:"getEndPoint",value:function(){return{node:this.ec,offset:this.eo}}},{key:"select",value:function(){var t=this.nativeRange();if(m.isW3CRangeSupport){var e=document.getSelection();e.rangeCount>0&&e.removeAllRanges(),e.addRange(t)}else t.select();return this}},{key:"scrollIntoView",value:function(t){var e=i()(t).height();return t.scrollTop+e0?n.so-1:0];if(e){var i=pt.listPrev(e,pt.isParaInline).reverse();if((i=i.concat(pt.listNext(e.nextSibling,pt.isParaInline))).length){var r=pt.wrap(x.head(i),"p");pt.appendChildNodes(r,x.tail(i))}}return this.normalize()}},{key:"insertNode",value:function(t){var e=this;(pt.isText(t)||pt.isInline(t))&&(e=this.wrapBodyInlineWithPara().deleteContents());var n=pt.splitPoint(e.getStartPoint(),pt.isInline(t));return n.rightNode?(n.rightNode.parentNode.insertBefore(t,n.rightNode),pt.isEmpty(n.rightNode)&&pt.isPara(t)&&n.rightNode.parentNode.removeChild(n.rightNode)):n.container.appendChild(t),t}},{key:"pasteHTML",value:function(t){t=i.a.trim(t);var e=i()("
    ").html(t)[0],n=x.from(e.childNodes),o=this,r=!1;return o.so>=0&&(n=n.reverse(),r=!0),n=n.map((function(t){return o.insertNode(t)})),r&&(n=n.reverse()),n}},{key:"toString",value:function(){var t=this.nativeRange();return m.isW3CRangeSupport?t.toString():t.text}},{key:"getWordRange",value:function(e){var n=this.getEndPoint();if(!pt.isCharPoint(n))return this;var o=pt.prevPointUntil(n,(function(t){return!pt.isCharPoint(t)}));return e&&(n=pt.nextPointUntil(n,(function(t){return!pt.isCharPoint(t)}))),new t(o.node,o.offset,n.node,n.offset)}},{key:"getWordsRange",value:function(e){var n=this.getEndPoint(),o=function(t){return!pt.isCharPoint(t)&&!pt.isSpacePoint(t)};if(o(n))return this;var i=pt.prevPointUntil(n,o);return e&&(n=pt.nextPointUntil(n,o)),new t(i.node,i.offset,n.node,n.offset)}},{key:"getWordsMatchRange",value:function(e){var n=this.getEndPoint(),o=pt.prevPointUntil(n,(function(o){if(!pt.isCharPoint(o)&&!pt.isSpacePoint(o))return!0;var i=new t(o.node,o.offset,n.node,n.offset),r=e.exec(i.toString());return r&&0===r.index})),i=new t(o.node,o.offset,n.node,n.offset),r=i.toString(),a=e.exec(r);return a&&a[0].length===r.length?i:null}},{key:"bookmark",value:function(t){return{s:{path:pt.makeOffsetPath(t,this.sc),offset:this.so},e:{path:pt.makeOffsetPath(t,this.ec),offset:this.eo}}}},{key:"paraBookmark",value:function(t){return{s:{path:x.tail(pt.makeOffsetPath(x.head(t),this.sc)),offset:this.so},e:{path:x.tail(pt.makeOffsetPath(x.last(t),this.ec)),offset:this.eo}}}},{key:"getClientRects",value:function(){return this.nativeRange().getClientRects()}}])&&function(t,e){for(var n=0;n1&&void 0!==arguments[1]&&arguments[1],n=this.createFromNode(t);return n.collapse(e)},createFromSelection:function(){var t,e,n,o;if(m.isW3CRangeSupport){var i=document.getSelection();if(!i||0===i.rangeCount)return null;if(pt.isBody(i.anchorNode))return null;var r=i.getRangeAt(0);t=r.startContainer,e=r.startOffset,n=r.endContainer,o=r.endOffset}else{var a=document.selection.createRange(),s=a.duplicate();s.collapse(!1);var l=a;l.collapse(!0);var c=vt(l,!0),u=vt(s,!1);pt.isText(c.node)&&pt.isLeftEdgePoint(c)&&pt.isTextNode(u.node)&&pt.isRightEdgePoint(u)&&u.node.nextSibling===c.node&&(c=u),t=c.cont,e=c.offset,n=u.cont,o=u.offset}return new yt(t,e,n,o)},createFromNode:function(t){var e=t,n=0,o=t,i=pt.nodeLength(o);return pt.isVoid(e)&&(n=pt.listPrev(e).length-1,e=e.parentNode),pt.isBR(o)?(i=pt.listPrev(o).length-1,o=o.parentNode):pt.isVoid(o)&&(i=pt.listPrev(o).length,o=o.parentNode),this.create(e,n,o,i)},createFromNodeBefore:function(t){return this.createFromNode(t).collapse(!0)},createFromNodeAfter:function(t){return this.createFromNode(t).collapse()},createFromBookmark:function(t,e){var n=pt.fromOffsetPath(t,e.s.path),o=e.s.offset,i=pt.fromOffsetPath(t,e.e.path),r=e.e.offset;return new yt(n,o,i,r)},createFromParaBookmark:function(t,e){var n=t.s.offset,o=t.e.offset,i=pt.fromOffsetPath(x.head(e),t.s.path),r=pt.fromOffsetPath(x.last(e),t.e.path);return new yt(i,n,r,o)}},kt={BACKSPACE:8,TAB:9,ENTER:13,ESCAPE:27,SPACE:32,DELETE:46,LEFT:37,UP:38,RIGHT:39,DOWN:40,NUM0:48,NUM1:49,NUM2:50,NUM3:51,NUM4:52,NUM5:53,NUM6:54,NUM7:55,NUM8:56,B:66,E:69,I:73,J:74,K:75,L:76,R:82,S:83,U:85,V:86,Y:89,Z:90,SLASH:191,LEFTBRACKET:219,BACKSLASH:220,RIGHTBRACKET:221,HOME:36,END:35,PAGEUP:33,PAGEDOWN:34},wt={isEdit:function(t){return x.contains([kt.BACKSPACE,kt.TAB,kt.ENTER,kt.SPACE,kt.DELETE],t)},isMove:function(t){return x.contains([kt.LEFT,kt.UP,kt.RIGHT,kt.DOWN],t)},isNavigation:function(t){return x.contains([kt.HOME,kt.END,kt.PAGEUP,kt.PAGEDOWN],t)},nameFromCode:g.invertObject(kt),code:kt};var xt=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.stack=[],this.stackOffset=-1,this.context=e,this.$editable=e.layoutInfo.editable,this.editable=this.$editable[0]}var e;return(e=[{key:"makeSnapshot",value:function(){var t=bt.create(this.editable);return{contents:this.$editable.html(),bookmark:t&&t.isOnEditable()?t.bookmark(this.editable):{s:{path:[],offset:0},e:{path:[],offset:0}}}}},{key:"applySnapshot",value:function(t){null!==t.contents&&this.$editable.html(t.contents),null!==t.bookmark&&bt.createFromBookmark(this.editable,t.bookmark).select()}},{key:"rewind",value:function(){this.$editable.html()!==this.stack[this.stackOffset].contents&&this.recordUndo(),this.stackOffset=0,this.applySnapshot(this.stack[this.stackOffset])}},{key:"commit",value:function(){this.stack=[],this.stackOffset=-1,this.recordUndo()}},{key:"reset",value:function(){this.stack=[],this.stackOffset=-1,this.$editable.html(""),this.recordUndo()}},{key:"undo",value:function(){this.$editable.html()!==this.stack[this.stackOffset].contents&&this.recordUndo(),this.stackOffset>0&&(this.stackOffset--,this.applySnapshot(this.stack[this.stackOffset]))}},{key:"redo",value:function(){this.stack.length-1>this.stackOffset&&(this.stackOffset++,this.applySnapshot(this.stack[this.stackOffset]))}},{key:"recordUndo",value:function(){this.stackOffset++,this.stack.length>this.stackOffset&&(this.stack=this.stack.slice(0,this.stackOffset)),this.stack.push(this.makeSnapshot()),this.stack.length>this.context.options.historyLimit&&(this.stack.shift(),this.stackOffset-=1)}}])&&function(t,e){for(var n=0;n-1;n["list-style"]=o?"unordered":"ordered"}else n["list-style"]="none";var r=pt.ancestor(t.sc,pt.isPara);if(r&&r.style["line-height"])n["line-height"]=r.style.lineHeight;else{var a=parseInt(n["line-height"],10)/parseInt(n["font-size"],10);n["line-height"]=a.toFixed(1)}return n.anchor=t.isOnAnchor()&&pt.ancestor(t.sc,pt.isAnchor),n.ancestors=pt.listAncestor(t.sc,pt.isEditable),n.range=t,n}}])&&function(t,e){for(var n=0;n25?e-25:""}))}))})),n.select()}},{key:"toggleList",value:function(t,e){var n=this,o=bt.create(e).wrapBodyInlineWithPara(),r=o.nodes(pt.isPara,{includeAncestor:!0}),a=o.paraBookmark(r),s=x.clusterBy(r,g.peq2("parentNode"));if(x.find(r,pt.isPurePara)){var l=[];i.a.each(s,(function(e,o){l=l.concat(n.wrapList(o,t))})),r=l}else{var c=o.nodes(pt.isList,{includeAncestor:!0}).filter((function(e){return!i.a.nodeName(e,t)}));c.length?i.a.each(c,(function(e,n){pt.replace(n,t)})):r=this.releaseList(s,!0)}bt.createFromParaBookmark(a,r).select()}},{key:"wrapList",value:function(t,e){var n=x.head(t),o=x.last(t),i=pt.isList(n.previousSibling)&&n.previousSibling,r=pt.isList(o.nextSibling)&&o.nextSibling,a=i||pt.insertAfter(pt.create(e||"UL"),o);return t=t.map((function(t){return pt.isPurePara(t)?pt.replace(t,"LI"):t})),pt.appendChildNodes(a,t),r&&(pt.appendChildNodes(a,x.from(r.childNodes)),pt.remove(r)),t}},{key:"releaseList",value:function(t,e){var n=this,o=[];return i.a.each(t,(function(t,r){var a=x.head(r),s=x.last(r),l=e?pt.lastAncestor(a,pt.isList):a.parentNode,c=l.parentNode;if("LI"===l.parentNode.nodeName)r.map((function(t){var e=n.findNextSiblings(t);c.nextSibling?c.parentNode.insertBefore(t,c.nextSibling):c.parentNode.appendChild(t),e.length&&(n.wrapList(e,l.nodeName),t.appendChild(e[0].parentNode))})),0===l.children.length&&c.removeChild(l),0===c.childNodes.length&&c.parentNode.removeChild(c);else{var u=l.childNodes.length>1?pt.splitTree(l,{node:s.parentNode,offset:pt.position(s)+1},{isSkipPaddingBlankHTML:!0}):null,d=pt.splitTree(l,{node:a.parentNode,offset:pt.position(a)},{isSkipPaddingBlankHTML:!0});r=e?pt.listDescendant(d,pt.isLi):x.from(d.childNodes).filter(pt.isLi),!e&&pt.isList(l.parentNode)||(r=r.map((function(t){return pt.replace(t,"P")}))),i.a.each(x.from(r).reverse(),(function(t,e){pt.insertAfter(e,l)}));var h=x.compact([l,d,u]);i.a.each(h,(function(t,e){var n=[e].concat(pt.listDescendant(e,pt.isList));i.a.each(n.reverse(),(function(t,e){pt.nodeLength(e)||pt.remove(e,!0)}))}))}o=o.concat(r)})),o}},{key:"appendToPrevious",value:function(t){return t.previousSibling?pt.appendChildNodes(t.previousSibling,[t]):this.wrapList([t],"LI")}},{key:"findList",value:function(t){return t?x.find(t.children,(function(t){return["OL","UL"].indexOf(t.nodeName)>-1})):null}},{key:"findNextSiblings",value:function(t){for(var e=[];t.nextSibling;)e.push(t.nextSibling),t=t.nextSibling;return e}}])&&function(t,e){for(var n=0;n1,i=e.rowSpan>1,a=t.rowIndex===r.rowPos&&e.cellIndex===r.colPos;l(t.rowIndex,n,t,e,i,o,!1);var s=e.attributes.rowSpan?parseInt(e.attributes.rowSpan.value,10):0;if(s>1)for(var c=1;c1)for(var p=1;p=n.cellIndex&&n.cellIndex<=e&&!o&&r.colPos++}function f(e){switch(n){case t.where.Column:if(e.isColSpan)return t.resultAction.SubtractSpanCount;break;case t.where.Row:if(!e.isVirtual&&e.isRowSpan)return t.resultAction.AddCell;if(e.isRowSpan)return t.resultAction.SubtractSpanCount}return t.resultAction.RemoveCell}function p(e){switch(n){case t.where.Column:if(e.isColSpan)return t.resultAction.SumSpanCount;if(e.isRowSpan&&e.isVirtual)return t.resultAction.Ignore;break;case t.where.Row:if(e.isRowSpan)return t.resultAction.SumSpanCount;if(e.isColSpan&&e.isVirtual)return t.resultAction.Ignore}return t.resultAction.AddCell}this.getActionList=function(){for(var e=n===t.where.Row?r.rowPos:-1,i=n===t.where.Column?r.colPos:-1,l=0,u=!0;u;){var d=e>=0?e:l,h=i>=0?i:l,m=a[d];if(!m)return u=!1,s;var v=m[h];if(!v)return u=!1,s;var g=t.resultAction.Ignore;switch(o){case t.requestAction.Add:g=p(v);break;case t.requestAction.Delete:g=f(v)}s.push(c(v,g,d,h)),l++}return s},e&&e.tagName&&("td"===e.tagName.toLowerCase()||"th"===e.tagName.toLowerCase())&&(r.colPos=e.cellIndex,e.parentElement&&e.parentElement.tagName&&"tr"===e.parentElement.tagName.toLowerCase()&&(r.rowPos=e.parentElement.rowIndex)),function(){for(var t=i.rows,e=0;e"),s=new Et(n,Et.where.Row,Et.requestAction.Add,i()(o).closest("table")[0]).getActionList(),l=0;l"+pt.blank+"");break;case Et.resultAction.SumSpanCount:if("top"===e&&(c.baseCell.parent?c.baseCell.closest("tr").rowIndex:0)<=o[0].rowIndex){var d=i()("
    ").append(i()(""+pt.blank+"").removeAttr("rowspan")).html();a.append(d);break}var h=parseInt(c.baseCell.rowSpan,10);h++,c.baseCell.setAttribute("rowSpan",h)}}if("top"===e)o.before(a);else{if(n.rowSpan>1){var f=o[0].rowIndex+(n.rowSpan-2);return void i()(i()(o).parent().find("tr")[f]).after(i()(a))}o.after(a)}}},{key:"addCol",value:function(t,e){var n=pt.ancestor(t.commonAncestor(),pt.isCell),o=i()(n).closest("tr");i()(o).siblings().push(o);for(var r=new Et(n,Et.where.Column,Et.requestAction.Add,i()(o).closest("table")[0]).getActionList(),a=0;a"+pt.blank+""):i()(s.baseCell).before(""+pt.blank+"");break;case Et.resultAction.SumSpanCount:if("right"===e){var c=parseInt(s.baseCell.colSpan,10);c++,s.baseCell.setAttribute("colSpan",c)}else i()(s.baseCell).before(""+pt.blank+"")}}}},{key:"recoverAttributes",value:function(t){var e="";if(!t)return e;for(var n=t.attributes||[],o=0;o1,d=u?parseInt(l.rowSpan,10):0;switch(a[s].action){case Et.resultAction.Ignore:continue;case Et.resultAction.AddCell:var h=n.next("tr")[0];if(!h)continue;var f=n[0].cells[o];u&&(d>2?(d--,h.insertBefore(f,h.cells[o]),h.cells[o].setAttribute("rowSpan",d),h.cells[o].innerHTML=""):2===d&&(h.insertBefore(f,h.cells[o]),h.cells[o].removeAttribute("rowSpan"),h.cells[o].innerHTML=""));continue;case Et.resultAction.SubtractSpanCount:u&&(d>2?(d--,l.setAttribute("rowSpan",d),c.rowIndex!==r&&l.cellIndex===o&&(l.innerHTML="")):2===d&&(l.removeAttribute("rowSpan"),c.rowIndex!==r&&l.cellIndex===o&&(l.innerHTML="")));continue;case Et.resultAction.RemoveCell:continue}}n.remove()}},{key:"deleteCol",value:function(t){for(var e=pt.ancestor(t.commonAncestor(),pt.isCell),n=i()(e).closest("tr"),o=n.children("td, th").index(i()(e)),r=new Et(e,Et.where.Column,Et.requestAction.Delete,i()(n).closest("table")[0]).getActionList(),a=0;a1){var l=s.colSpan?parseInt(s.colSpan,10):0;l>2?(l--,s.setAttribute("colSpan",l),s.cellIndex===o&&(s.innerHTML="")):2===l&&(s.removeAttribute("colSpan"),s.cellIndex===o&&(s.innerHTML=""))}continue;case Et.resultAction.RemoveCell:pt.remove(r[a].baseCell,!0);continue}}},{key:"createTable",value:function(t,e,n){for(var o,r=[],a=0;a"+pt.blank+"");o=r.join("");for(var s,l=[],c=0;c"+o+"");s=l.join("");var u=i()(""+s+"
    ");return n&&n.tableClassName&&u.addClass(n.tableClassName),u[0]}},{key:"deleteTable",value:function(t){var e=pt.ancestor(t.commonAncestor(),pt.isCell);i()(e).closest("table").remove()}}])&&function(t,e){for(var n=0;n0&&n.isLimited(l))){var c=s.toString()!==o;"string"==typeof e&&(e=e.trim()),n.options.onCreateLink?e=n.options.onCreateLink(e):a&&(e=/^([A-Za-z][A-Za-z0-9+-.]*\:|#|\/)/.test(e)?e:n.options.defaultProtocol+e);var u=[];if(c){var d=(s=s.deleteContents()).insertNode(i()(""+o+"")[0]);u.push(d)}else u=n.style.styleNodes(s,{nodeName:"A",expandClosestSibling:!0,onlyPartialContains:!0});i.a.each(u,(function(t,n){i()(n).attr("href",e),r?i()(n).attr("target","_blank"):i()(n).removeAttr("target")})),n.setLastRange(n.createRangeFromList(u).select())}})),this.color=this.wrapCommand((function(t){var e=t.foreColor,n=t.backColor;e&&document.execCommand("foreColor",!1,e),n&&document.execCommand("backColor",!1,n)})),this.foreColor=this.wrapCommand((function(t){document.execCommand("foreColor",!1,t)})),this.insertTable=this.wrapCommand((function(t){var e=t.split("x");n.getLastRange().deleteContents().insertNode(n.table.createTable(e[0],e[1],n.options))})),this.removeMedia=this.wrapCommand((function(){var t=i()(n.restoreTarget()).parent();t.closest("figure").length?t.closest("figure").remove():t=i()(n.restoreTarget()).detach(),n.context.triggerEvent("media.delete",t,n.$editable)})),this.floatMe=this.wrapCommand((function(t){var e=i()(n.restoreTarget());e.toggleClass("note-float-left","left"===t),e.toggleClass("note-float-right","right"===t),e.css("float","none"===t?"":t)})),this.resize=this.wrapCommand((function(t){var e=i()(n.restoreTarget());0===(t=parseFloat(t))?e.css("width",""):e.css({width:100*t+"%",height:""})}))}var e;return(e=[{key:"initialize",value:function(){var t=this;this.$editable.on("keydown",(function(e){if(e.keyCode===wt.code.ENTER&&t.context.triggerEvent("enter",e),t.context.triggerEvent("keydown",e),t.snapshot=t.history.makeSnapshot(),t.hasKeyShortCut=!1,e.isDefaultPrevented()||(t.options.shortcuts?t.hasKeyShortCut=t.handleKeyMap(e):t.preventDefaultEditableShortCuts(e)),t.isLimited(1,e)){var n=t.getLastRange();if(n.eo-n.so==0)return!1}t.setLastRange(),t.options.recordEveryKeystroke&&!1===t.hasKeyShortCut&&t.history.recordUndo()})).on("keyup",(function(e){t.setLastRange(),t.context.triggerEvent("keyup",e)})).on("focus",(function(e){t.setLastRange(),t.context.triggerEvent("focus",e)})).on("blur",(function(e){t.context.triggerEvent("blur",e)})).on("mousedown",(function(e){t.context.triggerEvent("mousedown",e)})).on("mouseup",(function(e){t.setLastRange(),t.history.recordUndo(),t.context.triggerEvent("mouseup",e)})).on("scroll",(function(e){t.context.triggerEvent("scroll",e)})).on("paste",(function(e){t.setLastRange(),t.context.triggerEvent("paste",e)})).on("input",(function(){t.isLimited(0)&&t.snapshot&&t.history.applySnapshot(t.snapshot)})),this.$editable.attr("spellcheck",this.options.spellCheck),this.$editable.attr("autocorrect",this.options.spellCheck),this.options.disableGrammar&&this.$editable.attr("data-gramm",!1),this.$editable.html(pt.html(this.$note)||pt.emptyPara),this.$editable.on(m.inputEventName,g.debounce((function(){t.context.triggerEvent("change",t.$editable.html(),t.$editable)}),10)),this.$editable.on("focusin",(function(e){t.context.triggerEvent("focusin",e)})).on("focusout",(function(e){t.context.triggerEvent("focusout",e)})),this.options.airMode?this.options.overrideContextMenu&&this.$editor.on("contextmenu",(function(e){return t.context.triggerEvent("contextmenu",e),!1})):(this.options.width&&this.$editor.outerWidth(this.options.width),this.options.height&&this.$editable.outerHeight(this.options.height),this.options.maxHeight&&this.$editable.css("max-height",this.options.maxHeight),this.options.minHeight&&this.$editable.css("min-height",this.options.minHeight)),this.history.recordUndo(),this.setLastRange()}},{key:"destroy",value:function(){this.$editable.off()}},{key:"handleKeyMap",value:function(t){var e=this.options.keyMap[m.isMac?"mac":"pc"],n=[];t.metaKey&&n.push("CMD"),t.ctrlKey&&!t.altKey&&n.push("CTRL"),t.shiftKey&&n.push("SHIFT");var o=wt.nameFromCode[t.keyCode];o&&n.push(o);var i=e[n.join("+")];if("TAB"!==o||this.options.tabDisable)if(i){if(!1!==this.context.invoke(i))return t.preventDefault(),!0}else wt.isEdit(t.keyCode)&&this.afterCommand();else this.afterCommand();return!1}},{key:"preventDefaultEditableShortCuts",value:function(t){(t.ctrlKey||t.metaKey)&&x.contains([66,73,85],t.keyCode)&&t.preventDefault()}},{key:"isLimited",value:function(t,e){return t=t||0,(void 0===e||!(wt.isMove(e.keyCode)||wt.isNavigation(e.keyCode)||e.ctrlKey||e.metaKey||x.contains([wt.code.BACKSPACE,wt.code.DELETE],e.keyCode)))&&this.options.maxTextLength>0&&this.$editable.text().length+t>this.options.maxTextLength}},{key:"createRange",value:function(){return this.focus(),this.setLastRange(),this.getLastRange()}},{key:"createRangeFromList",value:function(t){var e=bt.createFromNodeBefore(x.head(t)).getStartPoint(),n=bt.createFromNodeAfter(x.last(t)).getEndPoint();return bt.create(e.node,e.offset,n.node,n.offset)}},{key:"setLastRange",value:function(t){t?this.lastRange=t:(this.lastRange=bt.create(this.editable),0===i()(this.lastRange.sc).closest(".note-editable").length&&(this.lastRange=bt.createFromBodyElement(this.editable)))}},{key:"getLastRange",value:function(){return this.lastRange||this.setLastRange(),this.lastRange}},{key:"saveRange",value:function(t){t&&this.getLastRange().collapse().select()}},{key:"restoreRange",value:function(){this.lastRange&&(this.lastRange.select(),this.focus())}},{key:"saveTarget",value:function(t){this.$editable.data("target",t)}},{key:"clearTarget",value:function(){this.$editable.removeData("target")}},{key:"restoreTarget",value:function(){return this.$editable.data("target")}},{key:"currentStyle",value:function(){var t=bt.create();return t&&(t=t.normalize()),t?this.style.current(t):this.style.fromNode(this.$editable)}},{key:"styleFromNode",value:function(t){return this.style.fromNode(t)}},{key:"undo",value:function(){this.context.triggerEvent("before.command",this.$editable.html()),this.history.undo(),this.context.triggerEvent("change",this.$editable.html(),this.$editable)}},{key:"commit",value:function(){this.context.triggerEvent("before.command",this.$editable.html()),this.history.commit(),this.context.triggerEvent("change",this.$editable.html(),this.$editable)}},{key:"redo",value:function(){this.context.triggerEvent("before.command",this.$editable.html()),this.history.redo(),this.context.triggerEvent("change",this.$editable.html(),this.$editable)}},{key:"beforeCommand",value:function(){this.context.triggerEvent("before.command",this.$editable.html()),document.execCommand("styleWithCSS",!1,this.options.styleWithCSS),this.focus()}},{key:"afterCommand",value:function(t){this.normalizeContent(),this.history.recordUndo(),t||this.context.triggerEvent("change",this.$editable.html(),this.$editable)}},{key:"tab",value:function(){var t=this.getLastRange();if(t.isCollapsed()&&t.isOnCell())this.table.tab(t);else{if(0===this.options.tabSize)return!1;this.isLimited(this.options.tabSize)||(this.beforeCommand(),this.typing.insertTab(t,this.options.tabSize),this.afterCommand())}}},{key:"untab",value:function(){var t=this.getLastRange();if(t.isCollapsed()&&t.isOnCell())this.table.tab(t,!0);else if(0===this.options.tabSize)return!1}},{key:"wrapCommand",value:function(t){return function(){this.beforeCommand(),t.apply(this,arguments),this.afterCommand()}}},{key:"insertImage",value:function(t,e){var n,o=this;return(n=t,i.a.Deferred((function(t){var e=i()("");e.one("load",(function(){e.off("error abort"),t.resolve(e)})).one("error abort",(function(){e.off("load").detach(),t.reject(e)})).css({display:"none"}).appendTo(document.body).attr("src",n)})).promise()).then((function(t){o.beforeCommand(),"function"==typeof e?e(t):("string"==typeof e&&t.attr("data-filename",e),t.css("width",Math.min(o.$editable.width(),t.width()))),t.show(),o.getLastRange().insertNode(t[0]),o.setLastRange(bt.createFromNodeAfter(t[0]).select()),o.afterCommand()})).fail((function(t){o.context.triggerEvent("image.upload.error",t)}))}},{key:"insertImagesAsDataURL",value:function(t){var e=this;i.a.each(t,(function(t,n){var o=n.name;e.options.maximumImageFileSize&&e.options.maximumImageFileSize":t),e&&e.length&&(e[0].tagName.toUpperCase()!==t.toUpperCase()&&(e=e.find(t)),e&&e.length)){var n=e[0].className||"";if(n){var o=this.createRange();i()([o.sc,o.ec]).closest(t).addClass(n)}}}},{key:"formatPara",value:function(){this.formatBlock("P")}},{key:"fontStyling",value:function(t,e){var n=this.getLastRange();if(""!==n){var o=this.style.styleNodes(n);if(this.$editor.find(".note-status-output").html(""),i()(o).css(t,e),n.isCollapsed()){var r=x.head(o);r&&!pt.nodeLength(r)&&(r.innerHTML=pt.ZERO_WIDTH_NBSP_CHAR,bt.createFromNode(r.firstChild).select(),this.setLastRange(),this.$editable.data("bogus",r))}else this.setLastRange(this.createRangeFromList(o).select())}else{var a=i.a.now();this.$editor.find(".note-status-output").html('
    '+this.lang.output.noSelection+"
    "),setTimeout((function(){i()("#note-status-output-"+a).remove()}),5e3)}}},{key:"unlink",value:function(){var t=this.getLastRange();if(t.isOnAnchor()){var e=pt.ancestor(t.sc,pt.isAnchor);(t=bt.createFromNode(e)).select(),this.setLastRange(),this.beforeCommand(),document.execCommand("unlink"),this.afterCommand()}}},{key:"getLinkInfo",value:function(){var t=this.getLastRange().expand(pt.isAnchor),e=i()(x.head(t.nodes(pt.isAnchor))),n={range:t,text:t.toString(),url:e.length?e.attr("href"):""};return e.length&&(n.isNewWindow="_blank"===e.attr("target")),n}},{key:"addRow",value:function(t){var e=this.getLastRange(this.$editable);e.isCollapsed()&&e.isOnCell()&&(this.beforeCommand(),this.table.addRow(e,t),this.afterCommand())}},{key:"addCol",value:function(t){var e=this.getLastRange(this.$editable);e.isCollapsed()&&e.isOnCell()&&(this.beforeCommand(),this.table.addCol(e,t),this.afterCommand())}},{key:"deleteRow",value:function(){var t=this.getLastRange(this.$editable);t.isCollapsed()&&t.isOnCell()&&(this.beforeCommand(),this.table.deleteRow(t),this.afterCommand())}},{key:"deleteCol",value:function(){var t=this.getLastRange(this.$editable);t.isCollapsed()&&t.isOnCell()&&(this.beforeCommand(),this.table.deleteCol(t),this.afterCommand())}},{key:"deleteTable",value:function(){var t=this.getLastRange(this.$editable);t.isCollapsed()&&t.isOnCell()&&(this.beforeCommand(),this.table.deleteTable(t),this.afterCommand())}},{key:"resizeTo",value:function(t,e,n){var o;if(n){var i=t.y/t.x,r=e.data("ratio");o={width:r>i?t.x:t.y/r,height:r>i?t.x*r:t.y}}else o={width:t.x,height:t.y};e.css(o)}},{key:"hasFocus",value:function(){return this.$editable.is(":focus")}},{key:"focus",value:function(){this.hasFocus()||this.$editable.focus()}},{key:"isEmpty",value:function(){return pt.isEmpty(this.$editable[0])||pt.emptyPara===this.$editable.html()}},{key:"empty",value:function(){this.context.invoke("code",pt.emptyPara)}},{key:"normalizeContent",value:function(){this.$editable[0].normalize()}}])&&function(t,e){for(var n=0;n1?n.items[1]:x.head(n.items);"file"===o.kind&&-1!==o.type.indexOf("image/")?(this.context.invoke("editor.insertImagesOrCallback",[o.getAsFile()]),t.preventDefault()):"string"===o.kind&&this.context.invoke("editor.isLimited",n.getData("Text").length)&&t.preventDefault()}else if(window.clipboardData){var i=window.clipboardData.getData("text");this.context.invoke("editor.isLimited",i.length)&&t.preventDefault()}setTimeout((function(){e.context.invoke("editor.afterCommand")}),10)}}])&&function(t,e){for(var n=0;n','
    ',""].join("")).prependTo(this.$editor)}var e;return(e=[{key:"initialize",value:function(){this.options.disableDragAndDrop?(this.documentEventHandlers.onDrop=function(t){t.preventDefault()},this.$eventListener=this.$dropzone,this.$eventListener.on("drop",this.documentEventHandlers.onDrop)):this.attachDragAndDropEvent()}},{key:"attachDragAndDropEvent",value:function(){var t=this,e=i()(),n=this.$dropzone.find(".note-dropzone-message");this.documentEventHandlers.onDragenter=function(o){var i=t.context.invoke("codeview.isActivated"),r=t.$editor.width()>0&&t.$editor.height()>0;i||e.length||!r||(t.$editor.addClass("dragover"),t.$dropzone.width(t.$editor.width()),t.$dropzone.height(t.$editor.height()),n.text(t.lang.image.dragImageHere)),e=e.add(o.target)},this.documentEventHandlers.onDragleave=function(n){(e=e.not(n.target)).length&&"BODY"!==n.target.nodeName||(e=i()(),t.$editor.removeClass("dragover"))},this.documentEventHandlers.onDrop=function(){e=i()(),t.$editor.removeClass("dragover")},this.$eventListener.on("dragenter",this.documentEventHandlers.onDragenter).on("dragleave",this.documentEventHandlers.onDragleave).on("drop",this.documentEventHandlers.onDrop),this.$dropzone.on("dragenter",(function(){t.$dropzone.addClass("hover"),n.text(t.lang.image.dropImage)})).on("dragleave",(function(){t.$dropzone.removeClass("hover"),n.text(t.lang.image.dragImageHere)})),this.$dropzone.on("drop",(function(e){var n=e.originalEvent.dataTransfer;e.preventDefault(),n&&n.files&&n.files.length?(t.$editable.focus(),t.context.invoke("editor.insertImagesOrCallback",n.files)):i.a.each(n.types,(function(e,o){if(!(o.toLowerCase().indexOf("_moz_")>-1)){var r=n.getData(o);o.toLowerCase().indexOf("text")>-1?t.context.invoke("editor.pasteHTML",r):i()(r).each((function(e,n){t.context.invoke("editor.insertNode",n)}))}}))})).on("dragover",!1)}},{key:"destroy",value:function(){var t=this;Object.keys(this.documentEventHandlers).forEach((function(e){t.$eventListener.off(e.substr(2).toLowerCase(),t.documentEventHandlers[e])})),this.documentEventHandlers={}}}])&&function(t,e){for(var n=0;nt.length)&&(e=t.length);for(var n=0,o=new Array(e);n.*?(?:<\/iframe>)?)/gi,(function(t){if(/<.+src(?==?('|"|\s)?)[\s\S]+src(?=('|"|\s)?)[^>]*?>/i.test(t))return"";var n,o=function(t){if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(t=function(t,e){if(t){if("string"==typeof t)return Dt(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Dt(t,e):void 0}}(t))){var e=0,n=function(){};return{s:n,n:function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i,r=!0,a=!1;return{s:function(){o=t[Symbol.iterator]()},n:function(){var t=o.next();return r=t.done,t},e:function(t){a=!0,i=t},f:function(){try{r||null==o.return||o.return()}finally{if(a)throw i}}}}(e);try{for(o.s();!(n=o.n()).done;){var i=n.value;if(new RegExp('src="(https?:)?//'+i.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")+'/(.+)"').test(t))return t}}catch(t){o.e(t)}finally{o.f()}return""}))}return t}},{key:"activate",value:function(){var t=this,e=this.CodeMirrorConstructor;if(this.$codable.val(pt.html(this.$editable,this.options.prettifyHtml)),this.$codable.height(this.$editable.height()),this.context.invoke("toolbar.updateCodeview",!0),this.context.invoke("airPopover.updateCodeview",!0),this.$editor.addClass("codeview"),this.$codable.focus(),e){var n=e.fromTextArea(this.$codable[0],this.options.codemirror);if(this.options.codemirror.tern){var o=new e.TernServer(this.options.codemirror.tern);n.ternServer=o,n.on("cursorActivity",(function(t){o.updateArgHints(t)}))}n.on("blur",(function(e){t.context.triggerEvent("blur.codeview",n.getValue(),e)})),n.on("change",(function(){t.context.triggerEvent("change.codeview",n.getValue(),n)})),n.setSize(null,this.$editable.outerHeight()),this.$codable.data("cmEditor",n)}else this.$codable.on("blur",(function(e){t.context.triggerEvent("blur.codeview",t.$codable.val(),e)})),this.$codable.on("input",(function(){t.context.triggerEvent("change.codeview",t.$codable.val(),t.$codable)}))}},{key:"deactivate",value:function(){if(this.CodeMirrorConstructor){var t=this.$codable.data("cmEditor");this.$codable.val(t.getValue()),t.toTextArea()}var e=this.purify(pt.value(this.$codable,this.options.prettifyHtml)||pt.emptyPara),n=this.$editable.html()!==e;this.$editable.html(e),this.$editable.height(this.options.height?this.$codable.height():"auto"),this.$editor.removeClass("codeview"),n&&this.context.triggerEvent("change",this.$editable.html(),this.$editable),this.$editable.focus(),this.context.invoke("toolbar.updateCodeview",!1),this.context.invoke("airPopover.updateCodeview",!1)}},{key:"destroy",value:function(){this.isActivated()&&this.deactivate()}}])&&function(t,e){for(var n=0;n0?Math.max(o,t.options.minheight):o,o=t.options.maxHeight>0?Math.min(o,t.options.maxHeight):o,t.$editable.height(o)};t.$document.on("mousemove",o).one("mouseup",(function(){t.$document.off("mousemove",o)}))}))}},{key:"destroy",value:function(){this.$statusbar.off(),this.$statusbar.addClass("locked")}}])&&function(t,e){for(var n=0;n','
    ','
    ','
    ','
    ','
    ','
    ',this.options.disableResizeImage?"":'
    ',"
    ",""].join("")).prependTo(this.$editingArea),this.$handle.on("mousedown",(function(e){if(pt.isControlSizing(e.target)){e.preventDefault(),e.stopPropagation();var n=t.$handle.find(".note-control-selection").data("target"),o=n.offset(),i=t.$document.scrollTop(),r=function(e){t.context.invoke("editor.resizeTo",{x:e.clientX-o.left,y:e.clientY-(o.top-i)},n,!e.shiftKey),t.update(n[0],e)};t.$document.on("mousemove",r).one("mouseup",(function(e){e.preventDefault(),t.$document.off("mousemove",r),t.context.invoke("editor.afterCommand")})),n.data("ratio")||n.data("ratio",n.height()/n.width())}})),this.$handle.on("wheel",(function(e){e.preventDefault(),t.update()}))}},{key:"destroy",value:function(){this.$handle.remove()}},{key:"update",value:function(t,e){if(this.context.isDisabled())return!1;var n=pt.isImg(t),o=this.$handle.find(".note-control-selection");if(this.context.invoke("imagePopover.update",t,e),n){var r=i()(t),a=r.position(),s={left:a.left+parseInt(r.css("marginLeft"),10),top:a.top+parseInt(r.css("marginTop"),10)},l={w:r.outerWidth(!1),h:r.outerHeight(!1)};o.css({display:"block",left:s.left,top:s.top,width:l.w,height:l.h}).data("target",r);var c=new Image;c.src=r.attr("src");var u=l.w+"x"+l.h+" ("+this.lang.image.original+": "+c.width+"x"+c.height+")";o.find(".note-control-selection-info").text(u),this.context.invoke("editor.saveTarget",t)}else this.hide();return n}},{key:"hide",value:function(){this.context.invoke("editor.clearTarget"),this.$handle.children().hide()}}])&&function(t,e){for(var n=0;n").html(o).attr("href",n)[0];this.context.options.linkTargetBlank&&i()(r).attr("target","_blank"),this.lastWordRange.insertNode(r),this.lastWordRange=null,this.context.invoke("editor.focus")}}}},{key:"handleKeydown",value:function(t){if(x.contains([wt.code.ENTER,wt.code.SPACE],t.keyCode)){var e=this.context.invoke("editor.createRange").getWordRange();this.lastWordRange=e}}},{key:"handleKeyup",value:function(t){x.contains([wt.code.ENTER,wt.code.SPACE],t.keyCode)&&this.replace()}}])&&function(t,e){for(var n=0;n'),this.$placeholder.on("click",(function(){t.context.invoke("focus")})).html(this.options.placeholder).prependTo(this.$editingArea),this.update()}},{key:"destroy",value:function(){this.$placeholder.remove()}},{key:"update",value:function(){var t=!this.context.invoke("codeview.isActivated")&&this.context.invoke("editor.isEmpty");this.$placeholder.toggle(t)}}])&&function(t,e){for(var n=0;n','
    '+this.lang.color.background+"
    ","
    ",'","
    ",'
    \x3c!-- back colors --\x3e
    ',"
    ",'",'',"
    ",'
    ',""].join(""):"")+(o?['
    ','
    '+this.lang.color.foreground+"
    ","
    ",'","
    ",'
    \x3c!-- fore colors --\x3e
    ',"
    ",'",'',"
    ",'
    ',"
    "].join(""):""),callback:function(t){t.find(".note-holder").each((function(t,e){var n=i()(e);n.append(r.ui.palette({colors:r.options.colors,colorsName:r.options.colorsName,eventName:n.data("event"),container:r.options.container,tooltip:r.options.tooltip}).render())}));var e=[["#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF","#FFFFFF"]];t.find(".note-holder-custom").each((function(t,n){var o=i()(n);o.append(r.ui.palette({colors:e,colorsName:e,eventName:o.data("event"),container:r.options.container,tooltip:r.options.tooltip}).render())})),t.find("input[type=color]").each((function(e,n){i()(n).change((function(){var e=t.find("#"+i()(this).data("event")).find(".note-color-btn").first(),n=this.value.toUpperCase();e.css("background-color",n).attr("aria-label",n).attr("data-value",n).attr("data-original-title",n),e.click()}))}))},click:function(e){e.stopPropagation();var n=i()("."+t).find(".note-dropdown-menu"),o=i()(e.target),a=o.data("event"),s=o.attr("data-value");if("openPalette"===a){var l=n.find("#"+s),c=i()(n.find("#"+l.data("event")).find(".note-color-row")[0]),u=c.find(".note-color-btn").last().detach(),d=l.val();u.css("background-color",d).attr("aria-label",d).attr("data-value",d).attr("data-original-title",d),c.prepend(u),l.click()}else{if(x.contains(["backColor","foreColor"],a)){var h="backColor"===a?"background-color":"color",f=o.closest(".note-color").find(".note-recent-color"),p=o.closest(".note-color").find(".note-current-color-button");f.css(h,s),p.attr("data-"+a,s)}r.context.invoke("editor."+a,s)}}})]}).render()}},{key:"addToolbarButtons",value:function(){var t=this;this.context.memo("button.style",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.magic),t.options),tooltip:t.lang.style.style,data:{toggle:"dropdown"}}),t.ui.dropdown({className:"dropdown-style",items:t.options.styleTags,title:t.lang.style.style,template:function(e){"string"==typeof e&&(e={tag:e,title:Object.prototype.hasOwnProperty.call(t.lang.style,e)?t.lang.style[e]:e});var n=e.tag,o=e.title;return"<"+n+(e.style?' style="'+e.style+'" ':"")+(e.className?' class="'+e.className+'"':"")+">"+o+""},click:t.context.createInvokeHandler("editor.formatBlock")})]).render()}));for(var e=function(e,n){var o=t.options.styleTags[e];t.context.memo("button.style."+o,(function(){return t.button({className:"note-btn-style-"+o,contents:'
    '+o.toUpperCase()+"
    ",tooltip:t.lang.style[o],click:t.context.createInvokeHandler("editor.formatBlock")}).render()}))},n=0,o=this.options.styleTags.length;n',t.options),tooltip:t.lang.font.name,data:{toggle:"dropdown"}}),t.ui.dropdownCheck({className:"dropdown-fontname",checkClassName:t.options.icons.menuCheck,items:t.options.fontNames.filter(t.isFontInstalled.bind(t)),title:t.lang.font.name,template:function(t){return''+t+""},click:t.context.createInvokeHandlerAndUpdateState("editor.fontName")})]).render()})),this.context.memo("button.fontsize",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents('',t.options),tooltip:t.lang.font.size,data:{toggle:"dropdown"}}),t.ui.dropdownCheck({className:"dropdown-fontsize",checkClassName:t.options.icons.menuCheck,items:t.options.fontSizes,title:t.lang.font.size,click:t.context.createInvokeHandlerAndUpdateState("editor.fontSize")})]).render()})),this.context.memo("button.fontsizeunit",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents('',t.options),tooltip:t.lang.font.sizeunit,data:{toggle:"dropdown"}}),t.ui.dropdownCheck({className:"dropdown-fontsizeunit",checkClassName:t.options.icons.menuCheck,items:t.options.fontSizeUnits,title:t.lang.font.sizeunit,click:t.context.createInvokeHandlerAndUpdateState("editor.fontSizeUnit")})]).render()})),this.context.memo("button.color",(function(){return t.colorPalette("note-color-all",t.lang.color.recent,!0,!0)})),this.context.memo("button.forecolor",(function(){return t.colorPalette("note-color-fore",t.lang.color.foreground,!1,!0)})),this.context.memo("button.backcolor",(function(){return t.colorPalette("note-color-back",t.lang.color.background,!0,!1)})),this.context.memo("button.ul",(function(){return t.button({contents:t.ui.icon(t.options.icons.unorderedlist),tooltip:t.lang.lists.unordered+t.representShortcut("insertUnorderedList"),click:t.context.createInvokeHandler("editor.insertUnorderedList")}).render()})),this.context.memo("button.ol",(function(){return t.button({contents:t.ui.icon(t.options.icons.orderedlist),tooltip:t.lang.lists.ordered+t.representShortcut("insertOrderedList"),click:t.context.createInvokeHandler("editor.insertOrderedList")}).render()}));var r=this.button({contents:this.ui.icon(this.options.icons.alignLeft),tooltip:this.lang.paragraph.left+this.representShortcut("justifyLeft"),click:this.context.createInvokeHandler("editor.justifyLeft")}),a=this.button({contents:this.ui.icon(this.options.icons.alignCenter),tooltip:this.lang.paragraph.center+this.representShortcut("justifyCenter"),click:this.context.createInvokeHandler("editor.justifyCenter")}),s=this.button({contents:this.ui.icon(this.options.icons.alignRight),tooltip:this.lang.paragraph.right+this.representShortcut("justifyRight"),click:this.context.createInvokeHandler("editor.justifyRight")}),l=this.button({contents:this.ui.icon(this.options.icons.alignJustify),tooltip:this.lang.paragraph.justify+this.representShortcut("justifyFull"),click:this.context.createInvokeHandler("editor.justifyFull")}),c=this.button({contents:this.ui.icon(this.options.icons.outdent),tooltip:this.lang.paragraph.outdent+this.representShortcut("outdent"),click:this.context.createInvokeHandler("editor.outdent")}),u=this.button({contents:this.ui.icon(this.options.icons.indent),tooltip:this.lang.paragraph.indent+this.representShortcut("indent"),click:this.context.createInvokeHandler("editor.indent")});this.context.memo("button.justifyLeft",g.invoke(r,"render")),this.context.memo("button.justifyCenter",g.invoke(a,"render")),this.context.memo("button.justifyRight",g.invoke(s,"render")),this.context.memo("button.justifyFull",g.invoke(l,"render")),this.context.memo("button.outdent",g.invoke(c,"render")),this.context.memo("button.indent",g.invoke(u,"render")),this.context.memo("button.paragraph",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.alignLeft),t.options),tooltip:t.lang.paragraph.paragraph,data:{toggle:"dropdown"}}),t.ui.dropdown([t.ui.buttonGroup({className:"note-align",children:[r,a,s,l]}),t.ui.buttonGroup({className:"note-list",children:[c,u]})])]).render()})),this.context.memo("button.height",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.textHeight),t.options),tooltip:t.lang.font.height,data:{toggle:"dropdown"}}),t.ui.dropdownCheck({items:t.options.lineHeights,checkClassName:t.options.icons.menuCheck,className:"dropdown-line-height",title:t.lang.font.height,click:t.context.createInvokeHandler("editor.lineHeight")})]).render()})),this.context.memo("button.table",(function(){return t.ui.buttonGroup([t.button({className:"dropdown-toggle",contents:t.ui.dropdownButtonContents(t.ui.icon(t.options.icons.table),t.options),tooltip:t.lang.table.table,data:{toggle:"dropdown"}}),t.ui.dropdown({title:t.lang.table.table,className:"note-table",items:['
    ','
    ','
    ','
    ',"
    ",'
    1 x 1
    '].join("")})],{callback:function(e){e.find(".note-dimension-picker-mousecatcher").css({width:t.options.insertTableMaxSize.col+"em",height:t.options.insertTableMaxSize.row+"em"}).mousedown(t.context.createInvokeHandler("editor.insertTable")).on("mousemove",t.tableMoveHandler.bind(t))}}).render()})),this.context.memo("button.link",(function(){return t.button({contents:t.ui.icon(t.options.icons.link),tooltip:t.lang.link.link+t.representShortcut("linkDialog.show"),click:t.context.createInvokeHandler("linkDialog.show")}).render()})),this.context.memo("button.picture",(function(){return t.button({contents:t.ui.icon(t.options.icons.picture),tooltip:t.lang.image.image,click:t.context.createInvokeHandler("imageDialog.show")}).render()})),this.context.memo("button.video",(function(){return t.button({contents:t.ui.icon(t.options.icons.video),tooltip:t.lang.video.video,click:t.context.createInvokeHandler("videoDialog.show")}).render()})),this.context.memo("button.hr",(function(){return t.button({contents:t.ui.icon(t.options.icons.minus),tooltip:t.lang.hr.insert+t.representShortcut("insertHorizontalRule"),click:t.context.createInvokeHandler("editor.insertHorizontalRule")}).render()})),this.context.memo("button.fullscreen",(function(){return t.button({className:"btn-fullscreen note-codeview-keep",contents:t.ui.icon(t.options.icons.arrowsAlt),tooltip:t.lang.options.fullscreen,click:t.context.createInvokeHandler("fullscreen.toggle")}).render()})),this.context.memo("button.codeview",(function(){return t.button({className:"btn-codeview note-codeview-keep",contents:t.ui.icon(t.options.icons.code),tooltip:t.lang.options.codeview,click:t.context.createInvokeHandler("codeview.toggle")}).render()})),this.context.memo("button.redo",(function(){return t.button({contents:t.ui.icon(t.options.icons.redo),tooltip:t.lang.history.redo+t.representShortcut("redo"),click:t.context.createInvokeHandler("editor.redo")}).render()})),this.context.memo("button.undo",(function(){return t.button({contents:t.ui.icon(t.options.icons.undo),tooltip:t.lang.history.undo+t.representShortcut("undo"),click:t.context.createInvokeHandler("editor.undo")}).render()})),this.context.memo("button.help",(function(){return t.button({contents:t.ui.icon(t.options.icons.question),tooltip:t.lang.options.help,click:t.context.createInvokeHandler("helpDialog.show")}).render()}))}},{key:"addImagePopoverButtons",value:function(){var t=this;this.context.memo("button.resizeFull",(function(){return t.button({contents:'100%',tooltip:t.lang.image.resizeFull,click:t.context.createInvokeHandler("editor.resize","1")}).render()})),this.context.memo("button.resizeHalf",(function(){return t.button({contents:'50%',tooltip:t.lang.image.resizeHalf,click:t.context.createInvokeHandler("editor.resize","0.5")}).render()})),this.context.memo("button.resizeQuarter",(function(){return t.button({contents:'25%',tooltip:t.lang.image.resizeQuarter,click:t.context.createInvokeHandler("editor.resize","0.25")}).render()})),this.context.memo("button.resizeNone",(function(){return t.button({contents:t.ui.icon(t.options.icons.rollback),tooltip:t.lang.image.resizeNone,click:t.context.createInvokeHandler("editor.resize","0")}).render()})),this.context.memo("button.floatLeft",(function(){return t.button({contents:t.ui.icon(t.options.icons.floatLeft),tooltip:t.lang.image.floatLeft,click:t.context.createInvokeHandler("editor.floatMe","left")}).render()})),this.context.memo("button.floatRight",(function(){return t.button({contents:t.ui.icon(t.options.icons.floatRight),tooltip:t.lang.image.floatRight,click:t.context.createInvokeHandler("editor.floatMe","right")}).render()})),this.context.memo("button.floatNone",(function(){return t.button({contents:t.ui.icon(t.options.icons.rollback),tooltip:t.lang.image.floatNone,click:t.context.createInvokeHandler("editor.floatMe","none")}).render()})),this.context.memo("button.removeMedia",(function(){return t.button({contents:t.ui.icon(t.options.icons.trash),tooltip:t.lang.image.remove,click:t.context.createInvokeHandler("editor.removeMedia")}).render()}))}},{key:"addLinkPopoverButtons",value:function(){var t=this;this.context.memo("button.linkDialogShow",(function(){return t.button({contents:t.ui.icon(t.options.icons.link),tooltip:t.lang.link.edit,click:t.context.createInvokeHandler("linkDialog.show")}).render()})),this.context.memo("button.unlink",(function(){return t.button({contents:t.ui.icon(t.options.icons.unlink),tooltip:t.lang.link.unlink,click:t.context.createInvokeHandler("editor.unlink")}).render()}))}},{key:"addTablePopoverButtons",value:function(){var t=this;this.context.memo("button.addRowUp",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.rowAbove),tooltip:t.lang.table.addRowAbove,click:t.context.createInvokeHandler("editor.addRow","top")}).render()})),this.context.memo("button.addRowDown",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.rowBelow),tooltip:t.lang.table.addRowBelow,click:t.context.createInvokeHandler("editor.addRow","bottom")}).render()})),this.context.memo("button.addColLeft",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.colBefore),tooltip:t.lang.table.addColLeft,click:t.context.createInvokeHandler("editor.addCol","left")}).render()})),this.context.memo("button.addColRight",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.colAfter),tooltip:t.lang.table.addColRight,click:t.context.createInvokeHandler("editor.addCol","right")}).render()})),this.context.memo("button.deleteRow",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.rowRemove),tooltip:t.lang.table.delRow,click:t.context.createInvokeHandler("editor.deleteRow")}).render()})),this.context.memo("button.deleteCol",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.colRemove),tooltip:t.lang.table.delCol,click:t.context.createInvokeHandler("editor.deleteCol")}).render()})),this.context.memo("button.deleteTable",(function(){return t.button({className:"btn-md",contents:t.ui.icon(t.options.icons.trash),tooltip:t.lang.table.delTable,click:t.context.createInvokeHandler("editor.deleteTable")}).render()}))}},{key:"build",value:function(t,e){for(var n=0,o=e.length;n3&&c3&&ul&&ac)&&(this.isFollowing=!1,this.$toolbar.css({position:"relative",top:0,width:"100%",zIndex:"auto"}),this.$editable.css({marginTop:""}))}},{key:"changeContainer",value:function(t){t?this.$toolbar.prependTo(this.$editor):this.options.toolbarContainer&&this.$toolbar.appendTo(this.options.toolbarContainer),this.options.followingToolbar&&this.followScroll()}},{key:"updateFullscreen",value:function(t){this.ui.toggleBtnActive(this.$toolbar.find(".btn-fullscreen"),t),this.changeContainer(t)}},{key:"updateCodeview",value:function(t){this.ui.toggleBtnActive(this.$toolbar.find(".btn-codeview"),t),t?this.deactivate():this.activate()}},{key:"activate",value:function(t){var e=this.$toolbar.find("button");t||(e=e.not(".note-codeview-keep")),this.ui.toggleBtn(e,!0)}},{key:"deactivate",value:function(t){var e=this.$toolbar.find("button");t||(e=e.not(".note-codeview-keep")),this.ui.toggleBtn(e,!1)}}])&&function(t,e){for(var n=0;n','"),''),"",'
    ','"),''),"
    ",this.options.disableLinkTarget?"":i()("
    ").append(this.ui.checkbox({className:"sn-checkbox-open-in-new-window",text:this.lang.link.openInNewWindow,checked:!0}).render()).html(),i()("
    ").append(this.ui.checkbox({className:"sn-checkbox-use-protocol",text:this.lang.link.useProtocol,checked:!0}).render()).html()].join(""),n='');this.$dialog=this.ui.dialog({className:"link-dialog",title:this.lang.link.insert,fade:this.options.dialogsFade,body:e,footer:n}).render().appendTo(t)}},{key:"destroy",value:function(){this.ui.hideDialog(this.$dialog),this.$dialog.remove()}},{key:"bindEnterKey",value:function(t,e){t.on("keypress",(function(t){t.keyCode===wt.code.ENTER&&(t.preventDefault(),e.trigger("click"))}))}},{key:"toggleLinkBtn",value:function(t,e,n){this.ui.toggleBtn(t,e.val()&&n.val())}},{key:"showLinkDialog",value:function(t){var e=this;return i.a.Deferred((function(n){var o=e.$dialog.find(".note-link-text"),i=e.$dialog.find(".note-link-url"),r=e.$dialog.find(".note-link-btn"),a=e.$dialog.find(".sn-checkbox-open-in-new-window input[type=checkbox]"),s=e.$dialog.find(".sn-checkbox-use-protocol input[type=checkbox]");e.ui.onDialogShown(e.$dialog,(function(){e.context.triggerEvent("dialog.shown"),!t.url&&g.isValidUrl(t.text)&&(t.url=t.text),o.on("input paste propertychange",(function(){t.text=o.val(),e.toggleLinkBtn(r,o,i)})).val(t.text),i.on("input paste propertychange",(function(){t.text||o.val(i.val()),e.toggleLinkBtn(r,o,i)})).val(t.url),m.isSupportTouch||i.trigger("focus"),e.toggleLinkBtn(r,o,i),e.bindEnterKey(i,r),e.bindEnterKey(o,r);var l=void 0!==t.isNewWindow?t.isNewWindow:e.context.options.linkTargetBlank;a.prop("checked",l);var c=!t.url&&e.context.options.useProtocol;s.prop("checked",c),r.one("click",(function(r){r.preventDefault(),n.resolve({range:t.range,url:i.val(),text:o.val(),isNewWindow:a.is(":checked"),checkProtocol:s.is(":checked")}),e.ui.hideDialog(e.$dialog)}))})),e.ui.onDialogHidden(e.$dialog,(function(){o.off(),i.off(),r.off(),"pending"===n.state()&&n.reject()})),e.ui.showDialog(e.$dialog)})).promise()}},{key:"show",value:function(){var t=this,e=this.context.invoke("editor.getLinkInfo");this.context.invoke("editor.saveRange"),this.showLinkDialog(e).then((function(e){t.context.invoke("editor.restoreRange"),t.context.invoke("editor.createLink",e)})).fail((function(){t.context.invoke("editor.restoreRange")}))}}])&&function(t,e){for(var n=0;n ')}}).render().appendTo(this.options.container);var t=this.$popover.find(".popover-content,.note-popover-content");this.context.invoke("buttons.build",t,this.options.popover.link),this.$popover.on("mousedown",(function(t){t.preventDefault()}))}},{key:"destroy",value:function(){this.$popover.remove()}},{key:"update",value:function(){if(this.context.invoke("editor.hasFocus")){var t=this.context.invoke("editor.getLastRange");if(t.isCollapsed()&&t.isOnAnchor()){var e=pt.ancestor(t.sc,pt.isAnchor),n=i()(e).attr("href");this.$popover.find("a").attr("href",n).text(n);var o=pt.posFromPlaceholder(e),r=i()(this.options.container).offset();o.top-=r.top,o.left-=r.left,this.$popover.css({display:"block",left:o.left,top:o.top})}else this.hide()}else this.hide()}},{key:"hide",value:function(){this.$popover.hide()}}])&&function(t,e){for(var n=0;n")}var o=this.options.dialogsInBody?this.$body:this.options.container,i=['
    ','",'',t,"
    ",'
    ','",'',"
    "].join(""),r='');this.$dialog=this.ui.dialog({title:this.lang.image.insert,fade:this.options.dialogsFade,body:i,footer:r}).render().appendTo(o)}},{key:"destroy",value:function(){this.ui.hideDialog(this.$dialog),this.$dialog.remove()}},{key:"bindEnterKey",value:function(t,e){t.on("keypress",(function(t){t.keyCode===wt.code.ENTER&&(t.preventDefault(),e.trigger("click"))}))}},{key:"show",value:function(){var t=this;this.context.invoke("editor.saveRange"),this.showImageDialog().then((function(e){t.ui.hideDialog(t.$dialog),t.context.invoke("editor.restoreRange"),"string"==typeof e?t.options.callbacks.onImageLinkInsert?t.context.triggerEvent("image.link.insert",e):t.context.invoke("editor.insertImage",e):t.context.invoke("editor.insertImagesOrCallback",e)})).fail((function(){t.context.invoke("editor.restoreRange")}))}},{key:"showImageDialog",value:function(){var t=this;return i.a.Deferred((function(e){var n=t.$dialog.find(".note-image-input"),o=t.$dialog.find(".note-image-url"),i=t.$dialog.find(".note-image-btn");t.ui.onDialogShown(t.$dialog,(function(){t.context.triggerEvent("dialog.shown"),n.replaceWith(n.clone().on("change",(function(t){e.resolve(t.target.files||t.target.value)})).val("")),o.on("input paste propertychange",(function(){t.ui.toggleBtn(i,o.val())})).val(""),m.isSupportTouch||o.trigger("focus"),i.click((function(t){t.preventDefault(),e.resolve(o.val())})),t.bindEnterKey(o,i)})),t.ui.onDialogHidden(t.$dialog,(function(){n.off(),o.off(),i.off(),"pending"===e.state()&&e.reject()})),t.ui.showDialog(t.$dialog)}))}}])&&function(t,e){for(var n=0;n','"),''),"
    "].join(""),n='');this.$dialog=this.ui.dialog({title:this.lang.video.insert,fade:this.options.dialogsFade,body:e,footer:n}).render().appendTo(t)}},{key:"destroy",value:function(){this.ui.hideDialog(this.$dialog),this.$dialog.remove()}},{key:"bindEnterKey",value:function(t,e){t.on("keypress",(function(t){t.keyCode===wt.code.ENTER&&(t.preventDefault(),e.trigger("click"))}))}},{key:"createVideoNode",value:function(t){var e,n=t.match(/\/\/(?:(?:www|m)\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))([\w|-]{11})(?:(?:[\?&]t=)(\S+))?$/),o=t.match(/(?:www\.|\/\/)instagram\.com\/p\/(.[a-zA-Z0-9_-]*)/),r=t.match(/\/\/vine\.co\/v\/([a-zA-Z0-9]+)/),a=t.match(/\/\/(player\.)?vimeo\.com\/([a-z]*\/)*(\d+)[?]?.*/),s=t.match(/.+dailymotion.com\/(video|hub)\/([^_]+)[^#]*(#video=([^_&]+))?/),l=t.match(/\/\/v\.youku\.com\/v_show\/id_(\w+)=*\.html/),c=t.match(/\/\/v\.qq\.com.*?vid=(.+)/),u=t.match(/\/\/v\.qq\.com\/x?\/?(page|cover).*?\/([^\/]+)\.html\??.*/),d=t.match(/^.+.(mp4|m4v)$/),h=t.match(/^.+.(ogg|ogv)$/),f=t.match(/^.+.(webm)$/),p=t.match(/(?:www\.|\/\/)facebook\.com\/([^\/]+)\/videos\/([0-9]+)/);if(n&&11===n[1].length){var m=n[1],v=0;if(void 0!==n[2]){var g=n[2].match(/^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/);if(g)for(var y=[3600,60,1],b=0,k=y.length;b").attr("frameborder",0).attr("src","//www.youtube.com/embed/"+m+(v>0?"?start="+v:"")).attr("width","640").attr("height","360")}else if(o&&o[0].length)e=i()("