From d0ebdba634e7cbaef5f8286fdbc3c6b0496eb24b Mon Sep 17 00:00:00 2001 From: BokkyPooBah Date: Fri, 6 Sep 2024 13:23:29 +1000 Subject: [PATCH] Copy of UI from MagicalInternetMoney (wip) --- docs/README.txt | 107 + docs/addresses.js | 667 + docs/approvals.js | 504 + docs/config.js | 612 + docs/connectionModule.js | 465 + docs/contracts.js | 64 + docs/css/app.css | 110 + docs/css/bootstrap-vue-icons.css | 286 + docs/css/bootstrap-vue-icons.min.css | 4 + docs/css/bootstrap-vue.css | 2820 ++ docs/css/bootstrap-vue.min.css | 4 + docs/css/bootstrap.css | 10278 +++++ docs/css/bootstrap.min.css | 7 + docs/css/flatpickr.css | 784 + docs/css/flatpickr.min.css | 13 + docs/css/highlight-docco.css | 97 + docs/css/highlight.min.css | 1 + docs/css/theme.css | 5696 +++ docs/css/theme.min.css | 6 + docs/data.js | 2610 ++ docs/deploymentData.js | 90 + docs/faucets.js | 81 + docs/functions.js | 465 + docs/fungibles.js | 547 + ...14e-opensea-logomark-flat-colored-blue.png | Bin 0 -> 13589 bytes docs/images/LarvaChad_1532.png | Bin 0 -> 2027 bytes docs/images/LarvaChad_1532_zoomed.png | Bin 0 -> 14761 bytes .../LarvaChad_1532_zoomed_transparentbg.png | Bin 0 -> 14555 bytes docs/images/android-chrome-192x192.png | Bin 0 -> 10793 bytes docs/images/android-chrome-512x512.png | Bin 0 -> 13445 bytes docs/images/apple-touch-icon.png | Bin 0 -> 11052 bytes docs/images/browserconfig.xml | 9 + docs/images/etherscan-logo-circle.svg | 4 + docs/images/favicon-16x16.png | Bin 0 -> 7665 bytes docs/images/favicon-32x32.png | Bin 0 -> 8437 bytes docs/images/favicon.ico | Bin 0 -> 15086 bytes docs/images/manifest.json | 41 + docs/images/mstile-150x150.png | Bin 0 -> 5696 bytes docs/images/opensea.svg | 1 + docs/images/safari-pinned-tab.svg | 15 + docs/images/site.webmanifest | 19 + docs/index.html | 192 + docs/index.js | 273 + docs/js/apexcharts.js | 14 + docs/js/bignumber.js | 2734 ++ docs/js/bignumber.min.js | 3 + docs/js/bootstrap-vue-icons.js | 2632 ++ docs/js/bootstrap-vue-icons.min.js | 11 + docs/js/bootstrap-vue.js | 33093 ++++++++++++++++ docs/js/bootstrap-vue.min.js | 11 + docs/js/dexie.js | 4428 +++ docs/js/eth-ens-namehash.js | 31 + docs/js/eth-ens-namehash.min.js | 30 + docs/js/ethers-5.7.umd.min.js | 1 + docs/js/fabric.js | 30461 ++++++++++++++ docs/js/fabric.min.js | 1 + docs/js/html2canvas.js | 7081 ++++ docs/js/html2canvas.min.js | 20 + docs/js/idna-map.js | 796 + docs/js/idna-uts46-hx.js | 151 + docs/js/js-sha3.js | 656 + docs/js/libgif.js | 990 + docs/js/moment-with-locales.js | 14765 +++++++ docs/js/moment-with-locales.min.js | 1 + docs/js/moment.js | 4602 +++ docs/js/moment.min.js | 1 + docs/js/noble-curves.js | 4932 +++ docs/js/polyfill.js | 9240 +++++ docs/js/polyfill.min.js | 106 + docs/js/popper.js | 6 + docs/js/portal-vue.js | 10 + docs/js/punycode.js | 440 + docs/js/sha3.js | 656 + docs/js/vue-apexcharts.js | 8 + docs/js/vue-apollo.umd.min.js | 8 + docs/js/vue-flatpickr-component@8.js | 1 + docs/js/vue-router.js | 2937 ++ docs/js/vue-router.min.js | 6 + docs/js/vue.js | 11965 ++++++ docs/js/vue.min.js | 6 + docs/js/vuex-router-sync.js | 144 + docs/js/vuex.js | 1099 + docs/js/vuex.min.js | 6 + docs/js/web3.js | 16190 ++++++++ docs/js/web3.min.js | 5 + docs/networks.js | 101 + docs/newAddress.js | 504 + docs/newTransfer.js | 628 + docs/nonFungibles.js | 1133 + docs/parseEventLogs.js | 218 + docs/registry.js | 223 + docs/routes.js | 63 + docs/stealthTransfers.js | 504 + docs/syncOptions.js | 157 + docs/viewAddress.js | 504 + docs/viewNonFungible.js | 958 + docs/viewStealthMetaAddress.js | 398 + docs/viewTokenContract.js | 552 + docs/welcome.js | 227 + 99 files changed, 183320 insertions(+) create mode 100644 docs/README.txt create mode 100644 docs/addresses.js create mode 100644 docs/approvals.js create mode 100644 docs/config.js create mode 100644 docs/connectionModule.js create mode 100644 docs/contracts.js create mode 100644 docs/css/app.css create mode 100644 docs/css/bootstrap-vue-icons.css create mode 100644 docs/css/bootstrap-vue-icons.min.css create mode 100644 docs/css/bootstrap-vue.css create mode 100644 docs/css/bootstrap-vue.min.css create mode 100644 docs/css/bootstrap.css create mode 100644 docs/css/bootstrap.min.css create mode 100644 docs/css/flatpickr.css create mode 100644 docs/css/flatpickr.min.css create mode 100644 docs/css/highlight-docco.css create mode 100644 docs/css/highlight.min.css create mode 100644 docs/css/theme.css create mode 100644 docs/css/theme.min.css create mode 100644 docs/data.js create mode 100644 docs/deploymentData.js create mode 100644 docs/faucets.js create mode 100644 docs/functions.js create mode 100644 docs/fungibles.js create mode 100644 docs/images/381114e-opensea-logomark-flat-colored-blue.png create mode 100644 docs/images/LarvaChad_1532.png create mode 100644 docs/images/LarvaChad_1532_zoomed.png create mode 100644 docs/images/LarvaChad_1532_zoomed_transparentbg.png create mode 100644 docs/images/android-chrome-192x192.png create mode 100644 docs/images/android-chrome-512x512.png create mode 100644 docs/images/apple-touch-icon.png create mode 100644 docs/images/browserconfig.xml create mode 100644 docs/images/etherscan-logo-circle.svg create mode 100644 docs/images/favicon-16x16.png create mode 100644 docs/images/favicon-32x32.png create mode 100644 docs/images/favicon.ico create mode 100644 docs/images/manifest.json create mode 100644 docs/images/mstile-150x150.png create mode 100644 docs/images/opensea.svg create mode 100644 docs/images/safari-pinned-tab.svg create mode 100644 docs/images/site.webmanifest create mode 100644 docs/index.html create mode 100644 docs/index.js create mode 100644 docs/js/apexcharts.js create mode 100644 docs/js/bignumber.js create mode 100644 docs/js/bignumber.min.js create mode 100644 docs/js/bootstrap-vue-icons.js create mode 100644 docs/js/bootstrap-vue-icons.min.js create mode 100644 docs/js/bootstrap-vue.js create mode 100644 docs/js/bootstrap-vue.min.js create mode 100644 docs/js/dexie.js create mode 100644 docs/js/eth-ens-namehash.js create mode 100644 docs/js/eth-ens-namehash.min.js create mode 100644 docs/js/ethers-5.7.umd.min.js create mode 100644 docs/js/fabric.js create mode 100644 docs/js/fabric.min.js create mode 100644 docs/js/html2canvas.js create mode 100644 docs/js/html2canvas.min.js create mode 100644 docs/js/idna-map.js create mode 100644 docs/js/idna-uts46-hx.js create mode 100644 docs/js/js-sha3.js create mode 100644 docs/js/libgif.js create mode 100644 docs/js/moment-with-locales.js create mode 100644 docs/js/moment-with-locales.min.js create mode 100644 docs/js/moment.js create mode 100644 docs/js/moment.min.js create mode 100644 docs/js/noble-curves.js create mode 100644 docs/js/polyfill.js create mode 100644 docs/js/polyfill.min.js create mode 100644 docs/js/popper.js create mode 100644 docs/js/portal-vue.js create mode 100644 docs/js/punycode.js create mode 100644 docs/js/sha3.js create mode 100644 docs/js/vue-apexcharts.js create mode 100644 docs/js/vue-apollo.umd.min.js create mode 100644 docs/js/vue-flatpickr-component@8.js create mode 100644 docs/js/vue-router.js create mode 100644 docs/js/vue-router.min.js create mode 100644 docs/js/vue.js create mode 100644 docs/js/vue.min.js create mode 100644 docs/js/vuex-router-sync.js create mode 100644 docs/js/vuex.js create mode 100644 docs/js/vuex.min.js create mode 100644 docs/js/web3.js create mode 100644 docs/js/web3.min.js create mode 100644 docs/networks.js create mode 100644 docs/newAddress.js create mode 100644 docs/newTransfer.js create mode 100644 docs/nonFungibles.js create mode 100644 docs/parseEventLogs.js create mode 100644 docs/registry.js create mode 100644 docs/routes.js create mode 100644 docs/stealthTransfers.js create mode 100644 docs/syncOptions.js create mode 100644 docs/viewAddress.js create mode 100644 docs/viewNonFungible.js create mode 100644 docs/viewStealthMetaAddress.js create mode 100644 docs/viewTokenContract.js create mode 100644 docs/welcome.js diff --git a/docs/README.txt b/docs/README.txt new file mode 100644 index 0000000..f2be2fb --- /dev/null +++ b/docs/README.txt @@ -0,0 +1,107 @@ +## Dependencies + +25/05/2020 + +### Bootstrap Vue v2.15.0 + +* https://bootstrap-vue.org/docs + * Vue.js v2.6 is required, v2.6.11 is recommended + * Bootstrap v4.3.1 is required, v4.5.0 is recommended + * Popper.js v1.16 is required for dropdowns (and components based on dropdown), tooltips, and popovers. v1.16.1 is recommended + * PortalVue v2.1 is required by Toasts, v2.1.7 is recommended + * jQuery is not required + + +* Bootstrap v4.5.0 + * + +* BootstrapVue 2.15.0 + * + +* Polyfill service v3.89.4 + * + * + +* Vue.js v2.6.11 + * + * + +* BootstrapVue 2.15.0 + * + +* BootstrapVueIcons 2.15.0 + * + * + * //unpkg.com/bootstrap-vue@latest/dist/bootstrap-vue-icons.min.css + +* Popperjs/core v2.4.0 + * https://popper.js.org/ + * wget https://unpkg.com/@popperjs/core@2 + * renamed to popper.js + +* PortalVue 2.1.7 + * https://portal-vue.linusb.org/guide/installation.html#npm + * http://unpkg.com/portal-vue + * Renamed to portal-vue.js + +### Vuex + +* vuex v3.4.0 + * https://vuex.vuejs.org/installation.html + * https://unpkg.com/vuex@3.4.0/dist/vuex.js + +### Vue Router + +* vue-router v3.2.0 + * https://router.vuejs.org/installation.html#direct-download-cdn + * https://unpkg.com/vue-router@3.2.0/dist/vue-router.js + +### Vuex Router Sync + +* https://github.com/vuejs/vuex-router-sync +* Using earlier copy-pasted version + +### Vue Apollo +* https://apollo.vuejs.org/guide/ +* https://github.com/vuejs/vue-apollo +* https://www.jsdelivr.com/package/npm/vue-apollo + + +### Highlight.js +https://highlightjs.org/ + + renamed to highlight.min.css + + +https://github.com/highlightjs/highlightjs-solidity +https://raw.githubusercontent.com/highlightjs/highlightjs-solidity/master/solidity.js + + + + + + +bignumber.js 4.0.2 +from package.json https://github.com/ethereum/web3.js/blob/1.x/package.json#L106 + +https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment-with-locales.min.js +https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js + +npm install vue bootstrap-vue bootstrap + ++ bootstrap-vue@2.0.0-rc.28 ++ bootstrap@4.3.1 ++ vue@2.6.10 ++ vue-router@3.1.3 + + +Options + +Base + -> [DAI, ETH, priceFeedAdaptor, options] + -> [Expiry, Strike, Type] + -> [] diff --git a/docs/addresses.js b/docs/addresses.js new file mode 100644 index 0000000..4730ef5 --- /dev/null +++ b/docs/addresses.js @@ -0,0 +1,667 @@ +const Addresses = { + template: ` +
+ + +
+
+ +
+
+ +
+ +
+ + + + + + + + + + All Accounts + + + + + + My Accounts + + + + + + + + + Other Accounts + + +
+
+ + + + + + + + Include Junk + + + + + + + Exclude Junk + + + + + + Junk + + +
+ +
+
+
+
+
+ +
+
+
+
+ +
+
+ + + {{ sync.total == null ? (sync.completed + ' ' + sync.section) : (sync.completed + '/' + sync.total + ' ' + ((sync.completed / sync.total) * 100).toFixed(0) + '% ' + sync.section) }} + + +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ {{ filteredSortedAddresses.length + '/' + totalAddresses }} +
+
+ +
+
+ +
+
+ + +
+ + + BLAH + + + +
+
+ + + + + + + + + + +
+
+ `, + data: function () { + return { + count: 0, + reschedule: true, + settings: { + filter: null, + accountTypeFilter: null, + myAccountsFilter: null, + junkFilter: null, + showAdditionalFilters: false, + selectedAccounts: {}, + currentPage: 1, + pageSize: 10, + sortOption: 'typenameasc', + version: 0, + }, + defaultPhrase: "I want to login into my stealth wallet on Ethereum mainnet.", + addressTypeInfo: { + "address": { variant: "warning", name: "My Address" }, + "stealthAddress": { variant: "dark", name: "My Stealth Address" }, + "stealthMetaAddress": { variant: "success", name: "My Stealth Meta-Address" }, + }, + accountTypes: [ + { value: null, text: '(unknown)' }, + { value: 'address', text: 'Address' }, + { value: 'stealthAddress', text: 'Stealth Address' }, + { value: 'stealthMetaAddress', text: 'Stealth Meta-Address' }, + { value: 'erc20', text: 'ERC-20 Token Contract' }, + { value: 'erc721', text: 'ERC-721 Token Contract' }, + ], + accountTypeFilters: [ + { value: null, text: '(all)' }, + { value: 'eoa', text: 'EOA' }, + { value: 'contract', text: 'Contract' }, + { value: 'preerc721', text: 'pre ERC-721' }, + { value: 'erc721', text: 'ERC-721' }, + { value: 'erc1155', text: 'ERC-1155' }, + { value: 'erc20', text: 'ERC-20' }, + { value: 'exchangewallet', text: 'Exchange Wallet' }, + { value: 'erc20exchange', text: 'ERC-20 Exchange' }, + { value: 'nftexchange', text: 'NFT Exchange' }, + { value: 'unknown', text: '(unknown)' }, + ], + myAccountsFilterOptions: [ + { value: null, text: 'All Accounts' }, + { value: 'mine', text: 'My Accounts' }, + { value: 'notmine', text: 'Not My Accounts' }, + ], + sortOptions: [ + { value: 'typenameasc', text: '▲ Type, ▲ Name' }, + { value: 'typenamedsc', text: '▼ Type, ▲ Name' }, + { value: 'nameaddressasc', text: '▲ Name, ▲ Address' }, + { value: 'nameaddressdsc', text: '▼ Name, ▲ Address' }, + { value: 'addressasc', text: '▲ Address' }, + { value: 'addressdsc', text: '▼ Address' }, + ], + accountsFields: [ + { key: 'number', label: '#', sortable: false, thStyle: 'width: 5%;', tdClass: 'text-truncate' }, + { key: 'options', label: 'Options', sortable: false, thStyle: 'width: 15%;', thClass: 'text-left', tdClass: 'text-left' }, + { key: 'address', label: 'Account', sortable: false, thStyle: 'width: 45%;', tdClass: 'text-left' }, + { key: 'name', label: 'Name', sortable: false, thStyle: 'width: 20%;', tdClass: 'text-truncate' }, + { key: 'image', label: 'Image', sortable: false, thStyle: 'width: 15%;', tdClass: 'text-truncate' }, + ], + } + }, + computed: { + networkSupported() { + return store.getters['connection/networkSupported']; + }, + transferHelper() { + return store.getters['connection/transferHelper']; + }, + explorer() { + return store.getters['connection/explorer']; + }, + addresses() { + return store.getters['data/addresses']; + }, + ens() { + return store.getters['data/ens']; + }, + pageSizes() { + return store.getters['config/pageSizes']; + }, + sync() { + return store.getters['data/sync']; + }, + checkOptions() { + return store.getters['data/checkOptions']; + }, + + totalAddresses() { + return Object.keys(this.addresses).length; + }, + filteredAddresses() { + const results = (store.getters['data/forceRefresh'] % 2) == 0 ? [] : []; + const filterLower = this.settings.filter && this.settings.filter.toLowerCase() || null; + for (const [account, accountData] of Object.entries(this.addresses)) { + const ensName = this.ens && account.substring(0, 2) == "0x" && this.ens[account] || null; + const accountName = accountData.name || null; + let include = filterLower == null || + (account.toLowerCase().includes(filterLower)) || + (accountName && accountName.toLowerCase().includes(filterLower)); + if (include && this.settings.myAccountsFilter != null) { + if (this.settings.myAccountsFilter == 'mine' && accountData.mine) { + } else if (this.settings.myAccountsFilter == 'notmine' && !accountData.mine) { + } else { + include = false; + } + } + if (include) { + results.push({ + account, + ensName, + ...accountData, + viewingPrivateKey: undefined, + }); + } + } + return results; + }, + filteredSortedAddresses() { + const results = this.filteredAddresses; + if (this.settings.sortOption == 'typenameasc') { + results.sort((a, b) => { + if (('' + a.type).localeCompare(b.type) == 0) { + if (('' + a.name).localeCompare(b.name) == 0) { + return ('' + a.account).localeCompare(b.account); + } else { + return ('' + a.name).localeCompare(b.name); + } + } else { + return ('' + a.type).localeCompare(b.type); + } + }); + } else if (this.settings.sortOption == 'typenamedsc') { + results.sort((a, b) => { + if (('' + a.type).localeCompare(b.type) == 0) { + if (('' + a.name).localeCompare(b.name) == 0) { + return ('' + a.account).localeCompare(b.account); + } else { + return ('' + a.name).localeCompare(b.name); + } + } else { + return ('' + b.type).localeCompare(a.type); + } + }); + } else if (this.settings.sortOption == 'nameaddressasc') { + results.sort((a, b) => { + if (('' + a.name).localeCompare(b.name) == 0) { + return ('' + a.account).localeCompare(b.account); + } else { + return ('' + a.name).localeCompare(b.name); + } + }); + } else if (this.settings.sortOption == 'nameaddressdsc') { + results.sort((a, b) => { + if (('' + a.name).localeCompare(b.name) == 0) { + return ('' + b.account).localeCompare(a.account); + } else { + return ('' + b.name).localeCompare(a.name); + } + }); + } else if (this.settings.sortOption == 'addressasc') { + results.sort((a, b) => { + return ('' + a.account).localeCompare(b.account); + }); + } else if (this.settings.sortOption == 'addressdsc') { + results.sort((a, b) => { + return ('' + b.account).localeCompare(a.account); + }); + } + return results; + }, + pagedFilteredSortedAddresses() { + // console.log(now() + " INFO Addresses:computed.filteredSortedAddresses - results[0..1]: " + JSON.stringify(this.filteredSortedAddresses.slice(0, 2), null, 2)); + return this.filteredSortedAddresses.slice((this.settings.currentPage - 1) * this.settings.pageSize, this.settings.currentPage * this.settings.pageSize); + }, + }, + methods: { + saveSettings() { + console.log(now() + " INFO Addresses:methods.saveSettings - addressesSettings: " + JSON.stringify(this.settings, null, 2)); + localStorage.addressesSettings = JSON.stringify(this.settings); + }, + + newTransfer(stealthMetaAddress = null) { + console.log(now() + " INFO Addresses:methods.newTransfer - stealthMetaAddress: " + stealthMetaAddress); + store.dispatch('newTransfer/newTransfer', stealthMetaAddress); + }, + + formatAddress(address) { + const STEALTHMETAADDRESS_SEGMENT_LENGTH = 20; + // const ADDRESS_SEGMENT_LENGTH = 8; + if (address) { + if (address.substring(0, 3) == "st:") { + return address.substring(0, STEALTHMETAADDRESS_SEGMENT_LENGTH + 9) + '...' + address.slice(-STEALTHMETAADDRESS_SEGMENT_LENGTH); + } else { + return address; + // return address.substring(0, ADDRESS_SEGMENT_LENGTH + 2) + '...' + address.slice(-ADDRESS_SEGMENT_LENGTH); + } + } + return null; + }, + + viewModalAddAccount() { + console.log(now() + " INFO Addresses:methods.viewModalAddAccount BEGIN: " + JSON.stringify(this.settings.newAccount, null, 2)); + store.dispatch('newAddress/newAddress'); + }, + + rowSelected(item) { + console.log(now() + " INFO Addresses:methods.rowSelected BEGIN: " + JSON.stringify(item, null, 2)); + if (item && item.length > 0) { + const account = item[0].account; + if (account.substring(0, 3) == "st:") { + store.dispatch('viewStealthMetaAddress/viewStealthMetaAddress', item[0].account); + } else { + store.dispatch('viewAddress/viewAddress', item[0].account); + } + this.$refs.addressesTable.clearSelected(); + } + }, + + addNewAddress() { + console.log(now() + " INFO Addresses:methods.addNewAddress: " + JSON.stringify(this.newAccount, null, 2)); + this.$refs['modalnewaddress'].hide(); + store.dispatch('data/addNewAddress', this.newAccount); + }, + addCoinbase() { + console.log(now() + " INFO Addresses:methods.addCoinbase - coinbase: " + store.getters['connection/coinbase']); + store.dispatch('data/addNewAddress', store.getters['connection/coinbase']); + }, + toggleSelectedAccounts(items) { + let someFalse = false; + let someTrue = false; + for (const item of items) { + if (this.settings.selectedAccounts[item.account]) { + someTrue = true; + } else { + someFalse = true; + } + } + for (const item of items) { + if (!(someTrue && !someFalse)) { + Vue.set(this.settings.selectedAccounts, item.account, true); + } else { + Vue.delete(this.settings.selectedAccounts, item.account); + } + } + this.saveSettings(); + }, + clearSelectedAccounts() { + this.settings.selectedAccounts = {}; + this.saveSettings(); + }, + async toggleAddressField(address, field) { + console.log(now() + " INFO Addresses:methods.toggleAddressField - address: " + address + ", field: " + field); + store.dispatch('data/toggleAddressField', { address, field }); + }, + async setAddressField(address, field, value) { + console.log(now() + " INFO Addresses:methods.setAddressField - address: " + address + ", field: " + field + ", value: " + value); + store.dispatch('data/setAddressField', { address, field, value }); + }, + async deleteAddress(account, modalRef) { + this.$bvModal.msgBoxConfirm('Are you sure?') + .then(value => { + if (value) { + store.dispatch('data/deleteAddress', account); + this.$refs[modalRef].hide(); + } + }) + .catch(err => { + // An error occurred + }) + }, + async viewSyncOptions() { + store.dispatch('syncOptions/viewSyncOptions'); + }, + async halt() { + store.dispatch('data/setSyncHalt', true); + }, + ensOrAccount(account, length = 0) { + let result = null; + if (this.ensMap && account in this.ensMap) { + result = this.ensMap[account]; + } + if (result == null || result.length == 0) { + result = account; + } + return result == null || result.length == 0 ? null : (length == 0 ? result : result.substring(0, length)); + }, + hasENS(account) { + if (this.ensMap && account in this.ensMap) { + result = this.ensMap[account]; + if (result != account) { + return true; + } + } + return false; + }, + ensOrNull(account, length = 0) { + let result = null; + if (this.ensMap && account in this.ensMap) { + result = this.ensMap[account]; + if (result == account) { + result = null; + } + } + return result == null || result.length == 0 ? null : (length == 0 ? result : result.substring(0, length)); + }, + copyToClipboard(str) { + navigator.clipboard.writeText(str); + }, + exportAccounts() { + console.log("exportAccounts"); + const rows = [ + ["No", "Account", "Type", "Mine", "ENSName", "Group", "Name", "Notes"], + ]; + let i = 1; + for (const result of this.filteredSortedAddresses) { + rows.push([ + i, + result.account, + result.type, + result.mine ? "y" : "n", + this.ensMap[result.account] || null, + result.group, + result.name, + result.notes, + ]); + i++; + } + let csvContent = "data:text/csv;charset=utf-8," + rows.map(e => e.join(",")).join("\n"); + var encodedUri = encodeURI(csvContent); + var link = document.createElement("a"); + link.setAttribute("href", encodedUri); + link.setAttribute("download", "txs_account_export-" + moment().format("YYYY-MM-DD-HH-mm-ss") + ".csv"); + document.body.appendChild(link); // Required for FF + link.click(); // This will download the data with the specified file name + }, + async timeoutCallback() { + logDebug("Addresses", "timeoutCallback() count: " + this.count); + this.count++; + var t = this; + if (this.reschedule) { + setTimeout(function() { + t.timeoutCallback(); + }, 15000); + } + }, + }, + beforeDestroy() { + logDebug("Addresses", "beforeDestroy()"); + }, + mounted() { + logDebug("Addresses", "mounted() $route: " + JSON.stringify(this.$route.params)); + store.dispatch('data/restoreState'); + if ('addressesSettings' in localStorage) { + const tempSettings = JSON.parse(localStorage.addressesSettings); + if ('version' in tempSettings && tempSettings.version == 0) { + this.settings = tempSettings; + this.settings.currentPage = 1; + } + } + this.reschedule = true; + logDebug("Addresses", "Calling timeoutCallback()"); + this.timeoutCallback(); + }, + destroyed() { + this.reschedule = false; + }, +}; + +const addressesModule = { + namespaced: true, + state: { + }, + getters: { + }, + mutations: { + }, + actions: { + }, +}; diff --git a/docs/approvals.js b/docs/approvals.js new file mode 100644 index 0000000..62a8cab --- /dev/null +++ b/docs/approvals.js @@ -0,0 +1,504 @@ +const Approvals = { + template: ` +
+ + +
+
+ +
+
+ + + + + + + + Exclude Junk + + + + + + + Include Junk + + + + + + Junk + + +
+
+ +
+
+
+
+
+
+ +
+
+ + + {{ sync.total == null ? (sync.completed + ' ' + sync.section) : (sync.completed + '/' + sync.total + ' ' + ((sync.completed / sync.total) * 100).toFixed(0) + '% ' + sync.section) }} + + +
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+ {{ filteredSortedItems.length + '/' + totalApprovals }} +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + +
+
+ `, + data: function () { + return { + count: 0, + reschedule: true, + settings: { + filter: null, + junkFilter: null, + activeOnly: false, + currentPage: 1, + pageSize: 10, + sortOption: 'symbolasc', + version: 1, + }, + transfer: { + item: null, + stealthPrivateKey: null, + }, + modalFaucet: { + selectedFaucet: null, + }, + sortOptions: [ + { value: 'contractasc', text: '▲ Contract' }, + { value: 'contractdsc', text: '▼ Contract' }, + { value: 'symbolasc', text: '▲ Symbol, ▲ Contract' }, + { value: 'symboldsc', text: '▼ Symbol, ▲ Contract' }, + { value: 'nameasc', text: '▲ Name, ▲ Contract' }, + { value: 'namedsc', text: '▼ Name, ▲ Contract' }, + ], + fields: [ + { key: 'number', label: '#', sortable: false, thStyle: 'width: 5%;', tdClass: 'text-truncate' }, + { key: 'contract', label: 'Contract', sortable: false, thStyle: 'width: 13%;', thClass: 'text-left', tdClass: 'text-truncate' }, + { key: 'type', label: 'Type', sortable: false, thStyle: 'width: 7%;', thClass: 'text-left', tdClass: 'text-truncate' }, + { key: 'symbol', label: 'Symbol', sortable: false, thStyle: 'width: 10%;', thClass: 'text-left', tdClass: 'text-truncate' }, + { key: 'name', label: 'Name', sortable: false, thStyle: 'width: 15%;', thClass: 'text-left', tdClass: 'text-truncate' }, + { key: 'eventType', label: 'Event Type', sortable: false, thStyle: 'width: 10%;', thClass: 'text-left', tdClass: 'text-left' }, + { key: 'owner', label: 'Owner', sortable: false, thStyle: 'width: 15%;', thClass: 'text-left', tdClass: 'text-left' }, + { key: 'spender', label: 'Spender', sortable: false, thStyle: 'width: 15%;', thClass: 'text-left', tdClass: 'text-left' }, + { key: 'value', label: 'Value', sortable: false, thStyle: 'width: 15%;', thClass: 'text-right', tdClass: 'text-right' }, + ], + } + }, + computed: { + chainId() { + return store.getters['connection/chainId']; + }, + networkSupported() { + return store.getters['connection/networkSupported']; + }, + transferHelper() { + return store.getters['connection/transferHelper']; + }, + explorer() { + return store.getters['connection/explorer']; + }, + addresses() { + return store.getters['data/addresses']; + }, + balances() { + return store.getters['data/balances']; + }, + approvals() { + return store.getters['data/approvals']; + }, + tokens() { + return store.getters['data/tokens']; + }, + names() { + return store.getters['data/names']; + }, + sync() { + return store.getters['data/sync']; + }, + pageSizes() { + return store.getters['config/pageSizes']; + }, + + totalApprovals() { + let result = (store.getters['data/forceRefresh'] % 2) == 0 ? 0 : 0; + for (const [owner, ownerData] of Object.entries(this.approvals[this.chainId] || {})) { + for (const [contract, contractData] of Object.entries(ownerData)) { + const type = this.tokens[this.chainId] && this.tokens[this.chainId][contract] && this.tokens[this.chainId][contract].type || null; + if (type == "erc20") { + for (const [spender, value] of Object.entries(contractData)) { + result++ + } + } else if (type == "erc721" || type == "erc1155") { + for (const [tokenId, spender] of Object.entries(contractData.tokens)) { + result++ + } + for (const [spender, approved] of Object.entries(contractData.approvalForAll)) { + result++ + } + } + } + } + return result; + }, + filteredItems() { + const results = (store.getters['data/forceRefresh'] % 2) == 0 ? [] : []; + let regex = null; + if (this.settings.filter != null && this.settings.filter.length > 0) { + try { + regex = new RegExp(this.settings.filter, 'i'); + } catch (e) { + console.log("filteredItems - regex error: " + e.message); + regex = new RegExp(/thequickbrowndogjumpsoverthelazyfox/, 'i'); + } + } + for (const [owner, ownerData] of Object.entries(this.approvals[this.chainId] || {})) { + for (const [contract, contractData] of Object.entries(ownerData)) { + const token = this.tokens[this.chainId] && this.tokens[this.chainId][contract] || null; + const type = token && token.type || null; + const symbol = token && token.symbol || null; + const name = token && token.name || null; + if (type == "erc20") { + const decimals = token && token.decimals || null; + for (const [spender, value] of Object.entries(contractData)) { + results.push({ chainId: this.chainId, contract, type, symbol, name, decimals, eventType: "Approval", owner, spender, value }); + } + } else if (type == "erc721" || type == "erc1155") { + for (const [tokenId, spender] of Object.entries(contractData.tokens || {})) { + results.push({ chainId: this.chainId, contract, type, symbol, name, eventType: "Approval", owner, spender, value: tokenId }); + } + for (const [spender, approved] of Object.entries(contractData.approvalForAll || {})) { + results.push({ chainId: this.chainId, contract, type, symbol, name, eventType: "SetApprovalForAll", owner, spender, value: approved }); + } + } + } + } + // for (const [contract, contractData] of Object.entries(this.balances[this.chainId] || {})) { + // if (contractData.type == "erc20") { + // const metadata = this.tokens[this.chainId] && this.tokens[this.chainId][contract] || {}; + // let include = true; + // if (this.settings.junkFilter) { + // if (this.settings.junkFilter == 'junk' && !metadata.junk) { + // include = false; + // } else if (this.settings.junkFilter == 'excludejunk' && metadata.junk) { + // include = false; + // } + // } + // if (include && this.settings.activeOnly && (!metadata.active || metadata.junk)) { + // include = false; + // } + // if (include && regex) { + // if (!(regex.test(metadata.symbol) || regex.test(metadata.name) || regex.test(contract))) { + // include = false; + // } + // } + // const unsupported = contract in UNSUPPORTED_FUNGIBLES; + // const balances = []; + // for (const [address, balance] of Object.entries(contractData.balances)) { + // balances.push({ address, balance }); + // } + // if (include) { + // // results.push({ chainId: this.chainId, contract, ...contractData, ...metadata, balances, unsupported }); + // } + // } + // } + return results; + }, + filteredSortedItems() { + const results = this.filteredItems; + // if (this.settings.sortOption == 'contractasc') { + // results.sort((a, b) => { + // return ('' + a.contract).localeCompare(b.contract); + // }); + // } else if (this.settings.sortOption == 'contractdsc') { + // results.sort((a, b) => { + // return ('' + b.contract).localeCompare(a.contract); + // }); + // } else if (this.settings.sortOption == 'symbolasc') { + // results.sort((a, b) => { + // if (('' + a.symbol).localeCompare(b.symbol) == 0) { + // return ('' + a.contract).localeCompare(b.contract); + // } else { + // return ('' + a.symbol).localeCompare(b.symbol); + // } + // }); + // } else if (this.settings.sortOption == 'symboldsc') { + // results.sort((a, b) => { + // if (('' + a.symbol).localeCompare(b.symbol) == 0) { + // return ('' + a.contract).localeCompare(b.contract); + // } else { + // return ('' + b.symbol).localeCompare(a.symbol); + // } + // }); + // } else if (this.settings.sortOption == 'nameasc') { + // results.sort((a, b) => { + // if (('' + a.name).localeCompare(b.name) == 0) { + // return ('' + a.contract).localeCompare(b.contract); + // } else { + // return ('' + a.name).localeCompare(b.name); + // } + // }); + // } else if (this.settings.sortOption == 'namedsc') { + // results.sort((a, b) => { + // if (('' + a.name).localeCompare(b.name) == 0) { + // return ('' + a.contract).localeCompare(b.contract); + // } else { + // return ('' + b.name).localeCompare(a.name); + // } + // }); + // } + return results; + }, + pagedFilteredSortedItems() { + // console.log(now() + " INFO Approvals:computed.pagedFilteredSortedItems - results[0..9]: " + JSON.stringify(this.filteredSortedItems.slice(0, 10), null, 2)); + return this.filteredSortedItems.slice((this.settings.currentPage - 1) * this.settings.pageSize, this.settings.currentPage * this.settings.pageSize); + }, + + }, + methods: { + toggleFungibleJunk(item) { + console.log(now() + " INFO Approvals:methods.toggleFungibleJunk - item: " + JSON.stringify(item)); + store.dispatch('data/toggleFungibleJunk', item); + }, + toggleFungibleActive(item) { + console.log(now() + " INFO Approvals:methods.toggleFungibleActive - item: " + JSON.stringify(item)); + store.dispatch('data/toggleFungibleActive', item); + }, + copyToClipboard(str) { + navigator.clipboard.writeText(str); + }, + formatETH(e, precision = 0) { + try { + if (precision == 0) { + return e ? ethers.utils.formatEther(e).replace(/\B(? 1000000000000n) { + ts = ts / 1000; + } + if (store.getters['config/settings'].reportingDateTime) { + return moment.unix(ts).utc().format("YYYY-MM-DD HH:mm:ss"); + } else { + return moment.unix(ts).format("YYYY-MM-DD HH:mm:ss"); + } + } + return null; + }, + commify0(n) { + if (n != null) { + return Number(n).toLocaleString(undefined, { minimumFractionDigits: 0, maximumFractionDigits: 0 }); + } + return null; + }, + rowSelected(item) { + console.log(now() + " INFO Approvals:methods.rowSelected BEGIN: " + JSON.stringify(item, null, 2)); + if (item && item.length > 0) { + store.dispatch('viewTokenContract/viewTokenContract', { contract: item[0].contract }); + store.dispatch('data/updateFungibleTotalSupply', { chainId: this.chainId, contract: item[0].contract }); + this.$refs.tokenContractsTable.clearSelected(); + } + }, + + async timeoutCallback() { + // console.log(now() + " DEBUG Approvals:methods.timeoutCallback - count: " + this.count); + this.count++; + var t = this; + if (this.reschedule) { + setTimeout(function() { + t.timeoutCallback(); + }, 15000); + } + }, + }, + beforeDestroy() { + // console.log(now() + " DEBUG Approvals:beforeDestroy"); + }, + mounted() { + // console.log(now() + " DEBUG Approvals:mounted - $route: " + JSON.stringify(this.$route.params)); + store.dispatch('data/restoreState'); + if ('approvalsSettings' in localStorage) { + const tempSettings = JSON.parse(localStorage.approvalsSettings); + if ('version' in tempSettings && tempSettings.version == this.settings.version) { + this.settings = tempSettings; + this.settings.currentPage = 1; + } + } + this.reschedule = true; + // console.log(now() + " DEBUG Approvals:mounted - calling timeoutCallback()"); + this.timeoutCallback(); + }, + destroyed() { + this.reschedule = false; + }, +}; + +const approvalsModule = { + namespaced: true, + state: { + }, + getters: { + }, + mutations: { + }, + actions: { + }, +}; diff --git a/docs/config.js b/docs/config.js new file mode 100644 index 0000000..5e603fc --- /dev/null +++ b/docs/config.js @@ -0,0 +1,612 @@ +const Config = { + template: ` +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Download + + + + + + Restore + + + + + Download + + + + + + Restore + + + + + + + + Reset + + + + + +
+ `, + data: function () { + return { + count: 0, + reschedule: true, + restoreFile: null, + restoreAccountsData: [], + restoreIntermediateData: {}, + unlock: null, + reportingDateTimeOptions: [ + { value: 0, text: 'Local Time' }, + { value: 1, text: 'UTC Time' }, + ], + // TODO: Delete + etherscanBatchSizeOptions: [ + { value: 250_000, text: '250,000 blocks' }, + { value: 500_000, text: '500,000 blocks' }, + { value: 1_000_000, text: '1,000,000 blocks' }, + { value: 5_000_000, text: '5,000,000 blocks' }, + { value: 10_000_000, text: '10,000,000 blocks' }, + ], + confirmationsOptions: [ + { value: 1, text: '1 block' }, + { value: 5, text: '5 blocks' }, + { value: 10, text: '10 blocks' }, + { value: 20, text: '20 blocks' }, + ], + // TODO: To use + periodStartOptions: [ + { value: 'jan', text: 'January' }, + { value: 'feb', text: 'February' }, + { value: 'mar', text: 'March' }, + { value: 'apr', text: 'April' }, + { value: 'may', text: 'May' }, + { value: 'jun', text: 'June' }, + { value: 'jul', text: 'July' }, + { value: 'aug', text: 'August' }, + { value: 'sep', text: 'September' }, + { value: 'oct', text: 'October' }, + { value: 'nov', text: 'November' }, + { value: 'dec', text: 'December' }, + ], + // As supported by https://min-api.cryptocompare.com/data/v2/histoday?fsym=ETH&tsym={ccy}&limit=2000 + reportingCurrencyOptions: [ + { value: null, text: '(none)' }, + { value: 'AUD', text: 'AUD' }, + { value: 'CAD', text: 'CAD' }, + { value: 'CHF', text: 'CHF' }, + { value: 'EUR', text: 'EUR' }, + { value: 'GBP', text: 'GBP' }, + { value: 'JPY', text: 'JPY' }, + { value: 'NZD', text: 'NZD' }, + { value: 'USD', text: 'USD' }, + ], + } + }, + computed: { + powerOn() { + return store.getters['connection/powerOn']; + }, + coinbase() { + return store.getters['connection/coinbase']; + }, + settings() { + return store.getters['config/settings']; + }, + pageSizes() { + return store.getters['config/pageSizes']; + }, + periodOptions() { + return store.getters['config/periodOptions']; + }, + processPeriods() { + return store.getters['config/processPeriods']; + }, + preERC721TableData() { + const results = []; + for (const [account, name] of Object.entries(this.settings.preERC721s)) { + results.push({ account, name }); + } + results.sort((a, b) => { + return ('' + a.name).localeCompare(b.name); + }); + return results; + }, + }, + methods: { + setReportingDateTime(reportingDateTime) { + store.dispatch('config/setReportingDateTime', reportingDateTime); + }, + setEtherscanAPIKey(apiKey) { + store.dispatch('config/setEtherscanAPIKey', apiKey); + }, + setCryptoCompareAPIKey(apiKey) { + store.dispatch('config/setCryptoCompareAPIKey', apiKey); + }, + setEtherscanBatchSize(etherscanBatchSize) { + store.dispatch('config/setEtherscanBatchSize', etherscanBatchSize); + }, + setConfirmations(confirmations) { + store.dispatch('config/setConfirmations', confirmations); + }, + setPeriodStart(periodStart) { + store.dispatch('config/setPeriodStart', periodStart); + }, + setReportingCurrency(reportingCurrency) { + store.dispatch('config/setReportingCurrency', reportingCurrency); + }, + setProcessPeriod(processPeriod) { + store.dispatch('config/setProcessPeriod', processPeriod); + }, + setFirstBlock(firstBlock) { + store.dispatch('config/setFirstBlock', firstBlock); + }, + setLastBlock(lastBlock) { + store.dispatch('config/setLastBlock', lastBlock); + }, + setProcessContracts(processContracts) { + store.dispatch('config/setProcessContracts', processContracts); + }, + setProcessTransactions(processTransactions) { + store.dispatch('config/setProcessTransactions', processTransactions); + }, + // downloadFunctionSignatures() { + // store.dispatch('config/downloadFunctionSignatures'); + // }, + downloadBackup() { + const rows = [ + ["DataType", "No", "Account", "Type", "ENSName", "Mine", "Sync", "Report", "Junk", "Group", "Name", "Tags", "Notes"], + ]; + const ensMap = store.getters['data/ensMap']; + let row = 1; + for (const [account, accountInfo] of Object.entries(store.getters['data/accountsInfo'])) { + rows.push([ + "Account", + row, + account, + accountInfo.type, + ensMap[account] || null, + accountInfo.mine ? "y" : "n", + accountInfo.sync ? "y" : "n", + accountInfo.report ? "y" : "n", + accountInfo.junk ? "y" : "n", + accountInfo.group, + accountInfo.name, + accountInfo.tags, + accountInfo.notes, + ]); + row++; + } + let tsvContent = "data:text/tsv;charset=utf-8," + rows.map(e => e.join("\t")).join("\n"); + var encodedUri = encodeURI(tsvContent); + var link = document.createElement("a"); + link.setAttribute("href", encodedUri); + link.setAttribute("download", "txs_backup-" + moment().format("YYYY-MM-DD-HH-mm-ss") + ".tsv"); + document.body.appendChild(link); // Required for FF + link.click(); // This will download the data with the specified file name + }, + downloadIntermediateBackup() { + const blocks = store.getters['data/blocks']; + const txs = store.getters['data/txs']; + let jsonContent = "data:text/json;charset=utf-8," + JSON.stringify({ blocks, txs }, null, 2); + var encodedUri = encodeURI(jsonContent); + var link = document.createElement("a"); + link.setAttribute("href", encodedUri); + link.setAttribute("download", "txs_intermediate_backup-" + moment().format("YYYY-MM-DD-HH-mm-ss") + ".json"); + document.body.appendChild(link); // Required for FF + link.click(); // This will download the data with the specified file name + }, + async backupFilesChange(fileName, fileList) { + const reader = new FileReader(); + this.restoreAccountsData = []; + const t = this; + reader.onload = function (event) { + const data = event.target.result; + const lines = data.split("\n"); + for (const line of lines) { + const fields = line.split("\t"); + if (fields[0] == "Account") { + const [dataType, accountIndex, account, accountType, ensName, mine, sync, report, junk, group, name, tags, notes] = fields; + t.restoreAccountsData.push({ dataType, account, accountType: accountType || null, mine: mine == "y", sync: sync == "y", report: report == "y", junk: junk == "y", group: group || null, name: name || null, tags: tags || [], notes: notes || null }); + } + } + }; + await reader.readAsText(fileList[0]); + }, + async intermediateBackupFilesChange(fileName, fileList) { + const reader = new FileReader(); + this.restoreIntermediateData = {}; + const t = this; + reader.onload = function (event) { + const data = event.target.result; + t.restoreIntermediateData = JSON.parse(data); + }; + await reader.readAsText(fileList[0]); + }, + async restoreFromBackup() { + const provider = new ethers.providers.Web3Provider(window.ethereum); + if (this.restoreAccountsData.length > 0) { + for (const section of ['accounts', 'accountsInfo', 'txs', 'txsInfo', 'blocks', 'functionSelectors', 'eventSelectors', 'assets', 'ensMap', 'exchangeRates', 'report']) { + await store.dispatch('data/resetData', section); + } + } + for (const newAccount of this.restoreAccountsData) { + await store.dispatch('data/restoreAccount', newAccount); + } + await store.dispatch('data/saveData', ['accounts', 'accountsInfo']); + alert('Click OK. This page will be reloaded in 5 seconds.') + setTimeout(function() { + window.location.reload(); + }, 5000); + }, + async restoreFromIntermediateBackup() { + if (this.restoreIntermediateData.blocks && this.restoreIntermediateData.txs) { + await store.dispatch('data/restoreIntermediateData', this.restoreIntermediateData); + await store.dispatch('data/saveData', ['blocks', 'txs']); + alert('Click OK. This page will be reloaded in 5 seconds.') + setTimeout(function() { + window.location.reload(); + }, 5000); + } + }, + reset() { + logInfo("Config", "method.reset"); + for (let key of ['addressesSettings', 'configSettings', 'erc20sSettings', 'erc721sSettings', 'powerOn', 'syncOptionsSettings']) { + delete localStorage[key]; + } + store.dispatch('data/resetData'); + alert('Click OK. This page will be reloaded in 5 seconds.') + setTimeout(function() { + window.location.reload(); + }, 5000); + }, + async timeoutCallback() { + logDebug("Config", "timeoutCallback() count: " + this.count); + this.count++; + var t = this; + if (this.reschedule) { + setTimeout(function() { + t.timeoutCallback(); + }, 15000); + } + }, + }, + beforeDestroy() { + logDebug("Config", "beforeDestroy()"); + }, + mounted() { + logDebug("Config", "mounted() $route: " + JSON.stringify(this.$route.params)); + store.dispatch('config/restoreState'); + store.dispatch('data/restoreState'); + this.reschedule = true; + logDebug("Config", "Calling timeoutCallback()"); + this.timeoutCallback(); + }, + destroyed() { + this.reschedule = false; + }, +}; + +const configModule = { + namespaced: true, + state: { + settings: { + reportingDateTime: 0, + etherscanAPIKey: null, + cryptoCompareAPIKey: null, + etherscanBatchSize: 10_000_000, + confirmations: 10, + periodStart: 'jul', + reportingCurrency: 'USD', + processPeriod: null, + processContracts: null, + processTransactions: null, + firstBlock: null, + lastBlock: null, + preERC721s: { + "0x6Ba6f2207e343923BA692e5Cae646Fb0F566DB8D": "CryptoPunksV1", + "0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB": "CryptoPunksV2Official", + "0x60cd862c9C687A9dE49aecdC3A99b74A4fc54aB6": "MoonCatRescue", + "0x19c320b43744254ebdBcb1F1BD0e2a3dc08E01dc": "CryptoCatsV1", + "0x9508008227b6b3391959334604677d60169EF540": "CryptoCatsV2", + "0x088C6Ad962812b5Aa905BA6F3c5c145f9D4C079f": "CryptoCatsV3Official", + "0x011C77fa577c500dEeDaD364b8af9e8540b808C0": "ImmortalPlayerCharacter", + "0x79986aF15539de2db9A5086382daEdA917A9CF0C": "CryptoVoxels", + "0x06012c8cf97BEaD5deAe237070F9587f8E7A266d": "CryptoKitties", // Note that the transfer parameters are not indexed - Transfer (address from, address to, uint256 tokenId) + "0x43fb95c7afA1Ac1E721F33C695b2A0A94C7ddAb2": "LunarMoonPlots", + }, + version: 11, + }, + pageSizes: [ + { value: 1, text: '1' }, + { value: 5, text: '5' }, + { value: 10, text: '10' }, + { value: 25, text: '25' }, + { value: 50, text: '50' }, + { value: 100, text: '100' }, + { value: 500, text: '500' }, + { value: 1000, text: '1k' }, + { value: 2500, text: '2.5k' }, + { value: 10000, text: '10k' }, + ], + // TODO: Delete + chainInfo: { + "1": { + name: "Ethereum Mainnet", + explorerPrefix: "https://etherscan.io/", + explorerAddressPrefix: "https://etherscan.io/address/", + explorerTokenPrefix: "https://etherscan.io/token/", + explorerTxPrefix: "https://etherscan.io/tx/", + explorerBlockPrefix: "https://etherscan.io/block/", + nftTokenPrefix: "https://opensea.io/assets/ethereum/", + nftAccountPrefix: "https://opensea.io/", + }, + "11155111": { + name: "Sepolia Testnet", + explorerPrefix: "https://sepolia.etherscan.io/", + explorerAddressPrefix: "https://sepolia.etherscan.io/address/", + explorerTokenPrefix: "https://sepolia.etherscan.io/token/", + explorerTxPrefix: "https://sepolia.etherscan.io/tx/", + explorerBlockPrefix: "https://sepolia.etherscan.io/block/", + nftTokenPrefix: "https://testnets.opensea.io/assets/sepolia/", + nftAccountPrefix: "https://testnets.opensea.io/", + }, + }, + processPeriods: [ + { value: null, text: '(all)', data: { from: null, to: null } }, + { value: "custom", text: '(custom)', data: { from: null, to: null } }, + { value: 'toJun302018', text: 'to Jun 30 2018', data: { from: 0, to: 5_880_581 } }, + { value: 'toJun302019', text: 'to Jun 30 2019', data: { from: 0, to: 8_059_133 } }, + { value: 'toJun302020', text: 'to Jun 30 2020', data: { from: 0, to: 10_366_994 } }, + { value: 'toJun302021', text: 'to Jun 30 2021', data: { from: 0, to: 12_735_199 } }, + { value: 'toJun302022', text: 'to Jun 30 2022', data: { from: 0, to: 15_050_239 } }, + { value: '20152016', text: 'Jul 1 2015 - Jun 30 2016', data: { from: 0, to: 1_795_814 } }, + { value: '20162017', text: 'Jul 1 2016 - Jun 30 2017', data: { from: 1_801_799, to: 3_950_123 } }, + { value: '20172018', text: 'Jul 1 2017 - Jun 30 2018', data: { from: 3_955_159, to: 5_880_581 } }, + { value: '20182019', text: 'Jul 1 2018 - Jun 30 2019', data: { from: 5_883_490, to: 8_059_133 } }, + { value: '20192020', text: 'Jul 1 2019 - Jun 30 2020', data: { from: 8_062_293, to: 10_366_994 } }, + { value: '20202021', text: 'Jul 1 2020 - Jun 30 2021', data: { from: 10_370_274, to: 12_735_199 } }, + { value: '20212022', text: 'Jul 1 2021 - Jun 30 2022', data: { from: 12_738_509, to: 15_050_239 } }, + { value: '20222023', text: 'Jul 1 2022 - ', data: { from: 15_053_226, to: null } }, + ], + // Note: UTC, and approximate block numbers + // 01/07/2017 - 30/06/2018 3,955,159 Jul-01-2017 12:00:11 AM +UTC 5,880,581 + // 01/07/2018 - 30/06/2019 5,883,490 Jul-01-2018 12:00:05 AM +UTC 8,059,133 + // 01/07/2019 - 30/06/2020 8,062,293 10,366,994 + // 01/07/2020 - 30/06/2021 10,370,274 12,735,199 + // 01/07/2021 - 30/06/2022 12,738,509 15,050,239 + // 01/07/2022 - 30/06/2023 15,053,226 + }, + getters: { + settings: state => state.settings, + pageSizes: state => state.pageSizes, + chainInfo: state => state.chainInfo, + processPeriods: state => state.processPeriods, + periodOptions(state) { + const results = []; + const startMonth = state.settings.periodStart && state.settings.periodStart.length > 0 && state.settings.periodStart || "jul"; + const now = moment(); + let startPeriod = moment(now).month(startMonth).startOf('month'); + if (startPeriod > now) { + startPeriod = startPeriod.subtract(1, 'year'); + } + while (moment(startPeriod).year() >= 2015) { + const endPeriod = moment(startPeriod).add(1, 'year').subtract(1, 'second'); + results.push({ value: "y" + moment(startPeriod).year(), text: startPeriod.format('MMM DD YYYY') + " - " + endPeriod.format('MMM DD YYYY'), data: { startPeriod, endPeriod } }); + startPeriod = moment(startPeriod).subtract(1, 'year'); + } + return results; + }, + quarterlyOptions(state) { + const results = []; + const now = moment(); + let startPeriod = moment().quarter(now.quarter()).startOf('quarter'); + while (moment(startPeriod).year() >= 2015) { + const endPeriod = moment(startPeriod).add(3, 'month').subtract(1, 'second'); + results.push({ value: "q" + startPeriod.format('YYYYQ'), text: startPeriod.format('MMM DD YYYY') + " - " + endPeriod.format('MMM DD YYYY'), data: { startPeriod, endPeriod } }); + startPeriod = moment(startPeriod).subtract(3, 'month'); + } + return results; + }, + processFilters(state) { + let firstBlock = null; + let lastBlock = null; + if (state.settings.processPeriod == "custom") { + firstBlock = state.settings.firstBlock; + lastBlock = state.settings.lastBlock; + } else if (state.settings.processPeriod != null) { + const setting = state.processPeriods.filter(e => e.value == state.settings.processPeriod); + if (setting.length == 1) { + firstBlock = setting[0].data.from; + lastBlock = setting[0].data.to; + } + } + return { firstBlock, lastBlock, processContracts: state.settings.processContracts, processTransactions: state.settings.processTransactions }; + }, + }, + mutations: { + setReportingDateTime(state, reportingDateTime) { + console.log("mutations.setReportingDateTime: " + reportingDateTime); + state.settings.reportingDateTime = reportingDateTime; + }, + setEtherscanAPIKey(state, apiKey) { + state.settings.etherscanAPIKey = apiKey; + }, + setCryptoCompareAPIKey(state, apiKey) { + state.settings.cryptoCompareAPIKey = apiKey; + }, + setEtherscanBatchSize(state, etherscanBatchSize) { + state.settings.etherscanBatchSize = etherscanBatchSize; + }, + setConfirmations(state, confirmations) { + state.settings.confirmations = confirmations; + }, + setPeriodStart(state, periodStart) { + state.settings.periodStart = periodStart; + }, + setReportingCurrency(state, reportingCurrency) { + state.settings.reportingCurrency = reportingCurrency; + }, + setProcessPeriod(state, processPeriod) { + state.settings.processPeriod = processPeriod; + }, + setFirstBlock(state, firstBlock) { + state.settings.firstBlock = firstBlock; + }, + setLastBlock(state, lastBlock) { + state.settings.lastBlock = lastBlock; + }, + setProcessContracts(state, processContracts) { + state.settings.processContracts = processContracts; + }, + setProcessTransactions(state, processTransactions) { + state.settings.processTransactions = processTransactions; + }, + }, + actions: { + restoreState(context) { + if ('configSettings' in localStorage) { + const tempSettings = JSON.parse(localStorage.configSettings); + if ('version' in tempSettings && tempSettings.version == 11) { + context.state.settings = tempSettings; + } + } + }, + setReportingDateTime(context, reportingDateTime) { + context.commit('setReportingDateTime', reportingDateTime); + localStorage.configSettings = JSON.stringify(context.state.settings); + }, + setEtherscanAPIKey(context, apiKey) { + context.commit('setEtherscanAPIKey', apiKey); + localStorage.configSettings = JSON.stringify(context.state.settings); + }, + setCryptoCompareAPIKey(context, apiKey) { + context.commit('setCryptoCompareAPIKey', apiKey); + localStorage.configSettings = JSON.stringify(context.state.settings); + }, + setEtherscanBatchSize(context, etherscanBatchSize) { + context.commit('setEtherscanBatchSize', etherscanBatchSize); + localStorage.configSettings = JSON.stringify(context.state.settings); + }, + setConfirmations(context, confirmations) { + context.commit('setConfirmations', confirmations); + localStorage.configSettings = JSON.stringify(context.state.settings); + }, + setPeriodStart(context, periodStart) { + context.commit('setPeriodStart', periodStart); + localStorage.configSettings = JSON.stringify(context.state.settings); + }, + setReportingCurrency(context, reportingCurrency) { + context.commit('setReportingCurrency', reportingCurrency); + localStorage.configSettings = JSON.stringify(context.state.settings); + }, + setProcessPeriod(context, processPeriod) { + context.commit('setProcessPeriod', processPeriod); + localStorage.configSettings = JSON.stringify(context.state.settings); + }, + setFirstBlock(context, firstBlock) { + context.commit('setFirstBlock', firstBlock); + localStorage.configSettings = JSON.stringify(context.state.settings); + }, + setLastBlock(context, lastBlock) { + context.commit('setLastBlock', lastBlock); + localStorage.configSettings = JSON.stringify(context.state.settings); + }, + setProcessContracts(context, processContracts) { + context.commit('setProcessContracts', processContracts); + localStorage.configSettings = JSON.stringify(context.state.settings); + }, + setProcessTransactions(context, processTransactions) { + context.commit('setProcessTransactions', processTransactions); + localStorage.configSettings = JSON.stringify(context.state.settings); + }, + // async downloadFunctionSignatures(context) { + // console.log("action.downloadFunctionSignatures()"); + // let url = "https://www.4byte.directory/api/v1/signatures/"; + // do { + // console.log(url); + // const data = await fetch(url) + // .then(response => response.json()) + // .catch(function(e) { + // console.log("error: " + e); + // }); + // console.log(JSON.stringify(data, null, 2)); + // url = data.next; + // delay(5000); + // } while (url); + // }, + }, +}; diff --git a/docs/connectionModule.js b/docs/connectionModule.js new file mode 100644 index 0000000..3fd34c7 --- /dev/null +++ b/docs/connectionModule.js @@ -0,0 +1,465 @@ +// ---------------------------------------------------------------------------- +// Web3 connection, including coinbase and coinbase balance +// ---------------------------------------------------------------------------- +const Connection = { + template: ` +
+ + + Please use the MetaMask addon with Firefox, Chromium, Opera or Chrome, or any other other web3 browser to view this page + + + {{ networkName }} + + + + Block: + +
+ {{ blockNumberString }}  {{ lastBlockTimeDiff }} +
+
+ {{ blockNumberString }} +
+
+
+ + Attached Account: + +
+ {{ coinbase == null ? '' : (coinbase.substring(0, 10) + '...' + coinbase.slice(-8)) }} +
+
+ {{ coinbase == null ? '' : (coinbase.substring(0, 10) + '...' + coinbase.slice(-8)) }} +
+ +
+
+ + ETH Balance + + + + + + + Transactions + + + + + + x + {{ hash }} + + + + + + + + Last Error + + + x + {{ txError }} + + +
+
+
+ `, + data: function () { + return { + count: 0, + provider: null, + spinnerVariant: "success", + lastBlockTimeDiff: "establishing network connection", + reschedule: false, + refreshNow: false, + listenersInstalled: false, + } + }, + computed: { + powerOn() { + return store.getters['connection/powerOn']; + }, + connected() { + return store.getters['connection/connected']; + }, + connectionError() { + return store.getters['connection/connectionError']; + }, + chainId() { + return store.getters['connection/chainId']; + }, + networkSupported() { + return store.getters['connection/networkSupported']; + }, + networkName() { + return store.getters['connection/networkName']; + }, + explorer() { + return store.getters['connection/explorer']; + }, + coinbase() { + return store.getters['connection/coinbase']; + }, + coinbaseUpdated() { + return store.getters['connection/coinbaseUpdated']; + }, + balance() { + return store.getters['connection/balance']; + }, + balanceString() { + return store.getters['connection/balance'] == null ? "" : new BigNumber(store.getters['connection/balance']).shift(-18).toString(); + }, + block() { + return store.getters['connection/block']; + }, + blockUpdated() { + return store.getters['connection/blockUpdated']; + }, + blockNumber() { + return store.getters['connection/block'] == null ? 0 : store.getters['connection/block'].number; + }, + blockNumberString() { + return store.getters['connection/block'] == null ? "" : formatNumber(store.getters['connection/block'].number); + }, + txs() { + return store.getters['connection/txs']; + }, + txError() { + return store.getters['connection/txError']; + }, + }, + methods: { + formatETH(e) { + try { + return e ? ethers.utils.commify(ethers.utils.formatEther(e)) : null; + } catch (err) { + } + return e.toFixed(9); + }, + removeTx(tx) { + // logDebug("Connection", "removeTx"); + store.dispatch('connection/removeTx', tx); + }, + clearTxError(tx) { + // logDebug("Connection", "clearTxError"); + store.dispatch('connection/setTxError', ""); + }, + async execWeb3() { + console.log(now() + " INFO Connection:execWeb3 - start[" + this.count + "]"); + + if (this.powerOn) { + if (!window.ethereum.isConnected() || !window.ethereum['isUnlocked']) { + // logDebug("Connection", "execWeb3() requesting accounts"); + try { + const accounts = await window.ethereum.request({ method: 'eth_requestAccounts' }); + // logDebug("Connection", "execWeb3() accounts: " + JSON.stringify(accounts)); + store.dispatch('connection/setConnected', true); + // logDebug("Connection", "execWeb3() setConnected done"); + store.dispatch('connection/setConnectionError', null); + // logDebug("Connection", "execWeb3() setConnectionError done"); + } catch (e) { + logError("Connection", "execWeb3() error: " + JSON.stringify(e.message)); + store.dispatch('connection/setConnected', false); + store.dispatch('connection/setConnectionError', 'Web3 account not permissioned'); + } + } + if (this.connected && !this.listenersInstalled) { + console.log(now() + " INFO Connection:execWeb3 - Installing listeners"); + async function handleChainChanged(_chainId) { + console.log(now() + " INFO Connection:execWeb3.handleChainChanged - chainId: " + JSON.stringify(_chainId)); + // alert('Ethereum chain has changed - reloading this page.') + // window.location.reload(); + store.dispatch('connection/setNetworkData', parseInt(_chainId)); + // const signer = provider.getSigner(); + // const coinbase = await signer.getAddress(); + // const balance = await provider.getBalance(coinbase); + // store.dispatch('connection/setBalance', balance); + } + window.ethereum.on('chainChanged', handleChainChanged); + + const t = this; + async function handleAccountsChanged(accounts) { + console.log(now() + " INFO Connection:execWeb3.handleAccountsChanged - accounts: " + JSON.stringify(accounts)); + const signer = provider.getSigner(); + const coinbase = await signer.getAddress(); + store.dispatch('connection/setCoinbase', coinbase); + const balance = await provider.getBalance(coinbase); + store.dispatch('connection/setBalance', balance); + t.refreshNow = true; + } + window.ethereum.on('accountsChanged', handleAccountsChanged); + // const signer = provider.getSigner() + // const coinbase = await signer.getAddress(); + // store.dispatch('connection/setCoinbase', coinbase); + + const provider = new ethers.providers.Web3Provider(window.ethereum); + function handleNewBlock(b) { + // logInfo("Connection", "execWeb3() handleNewBlock: " + JSON.stringify(b)); + t.refreshNow = true; + } + provider.on('block', handleNewBlock); + + } + if (this.connected) { + // logDebug("Connection", "execWeb3() Getting data"); + try { + const provider = new ethers.providers.Web3Provider(window.ethereum); + const network = await provider.getNetwork(); + // console.log("this.chainId: " + this.chainId + ", network.chainId: " + network.chainId); + if (this.chainId != network.chainId) { + store.dispatch('connection/setNetworkData', network.chainId); + } + // store.dispatch('connection/setNetwork', network); + // logInfo("Connection", "execWeb3() network: " + JSON.stringify(this.network)); + const block = await provider.getBlock(); + store.dispatch('connection/setBlock', block); + const signer = provider.getSigner() + const coinbase = await signer.getAddress(); + store.dispatch('connection/setCoinbase', coinbase); + const balance = await provider.getBalance(this.coinbase); + store.dispatch('connection/setBalance', balance); + + if (this.network.chainId == 1 || this.network.chainId == 4) { + const weth = new ethers.Contract(this.network.wethAddress, WETHABI, provider); + const wethBalance = await weth.balanceOf(this.coinbase); + const wethAllowanceToNix = await weth.allowance(this.coinbase, this.network.nixAddress); + store.dispatch('connection/setWeth', { balance: wethBalance, allowanceToNix: wethAllowanceToNix }); + } else { + store.dispatch('connection/setWeth', { balance: null, allowanceToNix: null, updatedAccounts: [] }); + } + + } catch (e) { + store.dispatch('connection/setConnectionError', 'Cannot retrieve data from web3 provider'); + } + } else { + logError("Connection", "execWeb3() Getting data - not connected"); + } + + } else { + if (this.connected) { + store.dispatch('connection/setConnected', false); + } + if (this.connectionError != null) { + store.dispatch('connection/setConnectionError', null); + } + } + + if (this.connected && this.network && this.network.chainId == 1) { + store.dispatch('data/execWeb3', { count: this.count, listenersInstalled: this.listenersInstalled }); + // console.log("1"); + // await store.dispatch('collectionData/execWeb3', { count: this.count, listenersInstalled: this.listenersInstalled }); + // console.log("2"); + // console.log("3"); + } + + if (!this.listenersInstalled) { + this.listenersInstalled = true; + } + // logDebug("Connection", "execWeb3() end[" + this.count + "]"); + }, + async timeoutCallback() { + if (this.count++ % 150 == 0 || this.refreshNow) { + if (this.refreshNow) { + this.refreshNow = false; + } + await this.execWeb3(); + } + if (this.block != null) { + this.lastBlockTimeDiff = getTimeDiff(this.block.timestamp); + var secs = parseInt(new Date() / 1000 - this.block.timestamp); + if (secs > 90) { + this.spinnerVariant = "danger"; + } else if (secs > 60) { + this.spinnerVariant = "warning"; + } else { + this.spinnerVariant = "success"; + } + } else { + this.spinnerVariant = "danger"; + } + var t = this; + if (this.reschedule) { + setTimeout(function() { + t.timeoutCallback(); + }, 1000); + } + } + }, + mounted() { + // logDebug("Connection", "mounted()"); + this.reschedule = true; + var t = this; + setTimeout(function() { + t.timeoutCallback(); + }, 1000); + }, + destroyed() { + // logDebug("Connection", "destroyed()"); + this.reschedule = false; + }, +}; + + +const connectionModule = { + namespaced: true, + state: { + powerOn: false, + connected: false, + connectionError: null, + chainId: null, + networkSupported: null, + networkName: null, + transferHelper: null, + explorer: null, + nonFungibleViewer: null, + coinbase: null, + coinbaseUpdated: false, + balance: null, + block: null, + blockUpdated: false, + txs: {}, + txError: "", + }, + getters: { + powerOn: state => state.powerOn, + connected: state => state.connected, + connectionError: state => state.connectionError, + connection: state => state.connection, + chainId: state => state.chainId, + networkSupported: state => state.networkSupported, + networkName: state => state.networkName, + transferHelper: state => state.transferHelper, + explorer: state => state.explorer, + nonFungibleViewer: state => state.nonFungibleViewer, + coinbase: state => state.coinbase, + coinbaseUpdated: state => state.coinbaseUpdated, + balance: state => state.balance, + block: state => state.block, + blockUpdated: state => state.blockUpdated, + txs: state => state.txs, + txError: state => state.txError, + }, + mutations: { + setPowerOn(state, powerOn) { + // logDebug("connectionModule", "mutations.setPowerOn(" + powerOn + ")"); + state.powerOn = powerOn; + }, + setConnected(state, connected) { + // logDebug("connectionModule", "mutations.setConnected(" + connected + ")"); + state.connected = connected; + }, + setConnectionError(state, error) { + // logDebug("connectionModule", "mutations.setConnectionError(" + error + ")"); + state.connectionError = error; + }, + setNetworkData(state, info) { + console.log(now() + " INFO connectionModule:mutations.setNetworkData - info: " + JSON.stringify(info)); + state.chainId = info.chainId; + state.networkSupported = info.networkSupported; + state.networkName = info.networkName; + state.transferHelper = info.transferHelper; + state.explorer = info.explorer; + state.nonFungibleViewer = info.nonFungibleViewer; + // logInfo("connectionModule", "state: " + JSON.stringify(state, null, 2)); + }, + setCoinbase(state, coinbase) { + // logDebug("connectionModule", "mutations.setCoinbase(" + coinbase + ")"); + if (coinbase != state.coinbase) { + // logDebug("connectionModule", "mutations.setCoinbase(" + coinbase + ") updated"); + state.coinbase = coinbase; + state.coinbaseUpdated = true; + } else { + if (state.coinbaseUpdated) { + state.coinbaseUpdated = false; + } + } + }, + setBalance(state, b) { + state.balance = b; + }, + setBlock(state, block) { + // logDebug("connectionModule", "mutations.setBlock()"); + if (block == null) { + // logDebug("connectionModule", "actions.setBlock - block == null"); + if (state.block != null) { + state.block = block; + state.blockUpdated = true; + } + } else { + if (state.block == null || block.hash != state.block.hash) { + state.block = block; + // logDebug("connectionModule", "mutations.setBlock - state.blockUpdated set to true"); + state.blockUpdated = true; + } else { + if (state.blockUpdated) { + // logDebug("connectionModule", "mutations.setBlock - state.blockUpdated set to false"); + state.blockUpdated = false; + } + } + } + }, + addTx(state, tx) { + logDebug("connectionModule", "mutations.addTx(): " + tx); + Vue.set(state.txs, tx, tx); + }, + removeTx(state, tx) { + logDebug("connectionModule", "mutations.removeTx(): " + tx); + Vue.delete(state.txs, tx); + }, + setTxError(state, txError) { + logDebug("connectionModule", "mutations.setTxError(): " + txError); + state.txError = txError; + }, + }, + actions: { + setPowerOn(context, powerOn) { + logDebug("connectionModule", "actions.setPowerOn(" + powerOn + ")"); + context.commit('setPowerOn', powerOn); + }, + setConnected(context, connected) { + logDebug("connectionModule", "actions.setConnected(" + connected + ")"); + context.commit('setConnected', connected); + }, + setConnectionError(context, error) { + logDebug("connectionModule", "actions.setConnectionError(" + error + ")"); + context.commit('setConnectionError', error); + }, + setNetworkData(context, chainId) { + console.log(now() + " INFO connectionModule:actions.setNetworkData - chainId: " + chainId); + const network = NETWORKS['' + chainId] || null; + const networkSupported = network != null; + const networkName = network && network.name || "Chain Id: " + chainId; + const transferHelper = network && network.transferHelper || null; + const explorer = network && network.explorer || "unknown"; // || NETWORKS["1"].explorer ? + const nonFungibleViewer = network && network.nonFungibleViewer || "unknown"; + context.commit('setNetworkData', { chainId, networkSupported, networkName, transferHelper, explorer, nonFungibleViewer }); + }, + setCoinbase(context, cb) { + context.commit('setCoinbase', cb); + }, + setBalance(context, b) { + context.commit('setBalance', b); + }, + setBlock(context, block) { + logDebug("connectionModule", "actions.setBlock()"); + context.commit('setBlock', block); + }, + addTx(context, tx) { + logDebug("connectionModule", "actions.addTx(): " + tx); + context.commit('addTx', tx); + }, + removeTx(context, tx) { + logDebug("connectionModule", "actions.removeTx(): " + tx); + context.commit('removeTx', tx); + }, + setTxError(context, txError) { + logDebug("connectionModule", "actions.setTxError(): " + txError); + context.commit('setTxError', txError); + }, + }, +}; diff --git a/docs/contracts.js b/docs/contracts.js new file mode 100644 index 0000000..3ea610c --- /dev/null +++ b/docs/contracts.js @@ -0,0 +1,64 @@ +const CONTRACTS = { + "0x0000000000000000000000000000000000000000": { type: "eoa", symbol: "Null", name: "Null:0x0000...0000" }, + "0x0000000000000000000000000000000000000001": { type: "eoa", symbol: "Null", name: "Null:0x0000...0001" }, + "0x000000000000000000000000000000000000dEaD": { type: "eoa", symbol: "dEaD", name: "dEaD:0x0000...dEaD" }, + "0x00000000000111AbE46ff893f3B2fdF1F759a8A8": { type: "nftexchange", symbol: "ExecutionDelegate", name: "Blur:ExecutionDelegate" }, + "0x000000000022D473030F116dDEE9F6B43aC78BA3": { type: "ftexchange", symbol: "Permit2", name: "Uniswap:Permit2" }, + "0x011C77fa577c500dEeDaD364b8af9e8540b808C0": { type: "erc721", symbol: "IPC", name: "ImmortalPlayerCharacter" }, + "0x0fc584529a2AEfA997697FAfAcbA5831faC0c22d": { type: "nftexchange", symbol: "NFTXMarketplaceZap", name: "NFTX:NFTXMarketplaceZap" }, + "0x1111111254EEB25477B68fb85Ed929f73A960582": { type: "ftexchange", symbol: "1inchV5:AggregationRouterV5", name: "1inchV5:AggregationRouterV5" }, + "0x1776e1F26f98b1A5dF9cD347953a26dd3Cb46671": { type: "erc20", symbol: "NMR", name: "Numeraire" }, + "0x1E0049783F008A0085193E00003D00cd54003c71": { type: "nftexchange", symbol: "OS:Conduit", name: "OpenSea:Conduit" }, + "0x2f18F339620a63e43f0839Eeb18D7de1e1Be4DfB": { type: "nftexchange", symbol: "Blur:Delegate", name: "Blur:Delegate" }, + "0x495f947276749Ce646f68AC8c248420045cb7b5e": { type: "erc1155", symbol: "OpenSea Shared StoreFront", name: "OpenSea Shared StoreFront" }, + "0x4feE7B061C97C9c496b01DbcE9CDb10c02f0a0Be": { type: "nftexchange", symbol: "TransferProxy", name: "Rarible:TransferProxy" }, + // "0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85": { type: "erc721", symbol: "ENS", name: "Ethereum Name Service" }, + "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45": { type: "ftexchange", symbol: "UniswapV3:SwapRouter02", name: "UniswapV3:SwapRouter02" }, + "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D": { type: "ftexchange", symbol: "UniswapV2:Router02", name: "UniswapV2:Router02" }, + "0x941A6d105802CCCaa06DE58a13a6F49ebDCD481C": { type: "nftexchange", symbol: "NFTXMarketplace0xZap", name: "NFTX:Marketplace0xZap" }, + "0x9996FCFa25B234e80BcF876d83d2e7F338F9BDA5": { type: "nftexchange", symbol: "EnsSubdomainStorefront_v2", name: "ENSVision:EnsSubdomainStorefront_v2" }, + "0x99a58482BD75cbab83b27EC03CA68fF489b5788f": { type: "ftexchange", symbol: "Curve.fi:SwapRouter", name: "Curve.fi:SwapRouter" }, + "0xA42f6cADa809Bcf417DeefbdD69C5C5A909249C0": { type: "nftexchange", symbol: "NFT20CasUpgreadableV2", name: "NFT20:NFT20CasUpgreadableV2" }, + "0xBA12222222228d8Ba445958a75a0704d566BF2C8": { type: "ftexchange", symbol: "Balancer:Vault", name: "Balancer:Vault" }, + "0xB32979486938AA9694BFC898f35DBED459F44424": { type: "erc1155", symbol: "NYAN", name: "Nyan Cat" }, + "0xbbc53022Af15Bb973AD906577c84784c47C14371": { type: "nftexchange", symbol: "NFTXMarketplace0xZap", name: "NFTX:NFTXMarketplace0xZap" }, + "0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413": { type: "erc20", symbol: "DAO", name: "TheDAO", decimals: 16 }, + "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2": { type: "erc20", symbol: "WETH", name: "Wrapped Ether", decimals: 18 }, + "0xC2C747E0F7004F9E8817Db2ca4997657a7746928": { type: "erc721", symbol: "HM", name: "Hashmask" }, + "0xC92E8bdf79f0507f65a392b0ab4667716BFE0110": { type: "ftexchange", symbol: "CoW:GPv2VaultRelayer", name: "CoW Protocol:GPv2VaultRelayer" }, + "0xd07dc4262BCDbf85190C01c996b4C06a461d2430": { type: "erc1155", symbol: "RARI", name: "Rarible:RARI Token 3" }, + "0xD152f549545093347A162Dce210e7293f1452150": { type: "ftexchange", symbol: "Disperse.app", name: "Disperse.app" }, + // "0xD4416b13d2b3a9aBae7AcD5D6C2BbDBE25686401": { type: "erc1155", symbol: "NameWrapper", name: "ENS:NameWrapper" }, + "0xd9e1cE17f2641f24aE83637ab66a2cca9C378B9F": { type: "ftexchange", symbol: "SushiSwap:Router", name: "SushiSwap:Router" }, + "0xE592427A0AEce92De3Edee1F18E0157C05861564": { type: "ftexchange", symbol: "UniswapV3:Router", name: "UniswapV3:Router" }, + "0xE5c783EE536cf5E63E792988335c4255169be4E1": { type: "nftexchange", symbol: "WyvernTokenTransferProxy", name: "OpenSea:WyvernTokenTransferProxy" }, + "0xF0d4c12A5768D806021F80a262B4d39d26C58b8D": { type: "ftexchange", symbol: "CurveRouterV1.0", name: "CurveRouterV1.0" }, + "0xf42aa99F011A1fA7CDA90E5E98b277E306BcA83e": { type: "nftexchange", symbol: "TransferManagerERC721", name: "LooksRare:TransferManagerERC721" }, + "0xF849de01B080aDC3A814FaBE1E2087475cF2E354": { type: "nftexchange", symbol: "ERC721Delegate", name: "X2Y2:ERC721Delegate" }, + "0xFe9231f0e6753a8412a00eC1f0028A24d5220Ba9": { type: "erc1155", symbol: "ZB", name: "ZombieBabies" }, + + // Unsupported ERC-20s + "0xa74476443119A942dE498590Fe1f2454d7D4aC0d": { type: "erc20", symbol: "GNT", name: "Golem Network Token", decimals: 18, unsupported: "No approve or transferFrom" }, + "0x6Ba6f2207e343923BA692e5Cae646Fb0F566DB8D": { type: "erc20", symbol: "PUNKSV1", name: "CryptoPunks V1", decimals: 1, unsupported: "Pre ERC-721" }, + "0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB": { type: "erc20", symbol: "PUNKSV2", name: "CryptoPunks V2", decimals: 1, unsupported: "Pre ERC-721" }, + "0x60cd862c9C687A9dE49aecdC3A99b74A4fc54aB6": { type: "erc20", symbol: "MoonCats", name: "MoonCats", decimals: 1, unsupported: "Pre ERC-721" }, + "0xa185B9E63FB83A5a1A13A4460B8E8605672b6020": { type: "erc20", symbol: "CCATV0", name: "CryptoCats V0", decimals: 1, unsupported: "Pre ERC-721" }, // Nov-25-2017 11:01:12 AM UTC + "0x9508008227b6b3391959334604677d60169EF540": { type: "erc20", symbol: "CCATV1", name: "CryptoCats V1", decimals: 1, unsupported: "Pre ERC-721" }, // Dec-19-2017 03:48:07 PM UTC + "0x19c320b43744254ebdBcb1F1BD0e2a3dc08E01dc": { type: "erc20", symbol: "CCATV2", name: "CryptoCats V2", decimals: 1, unsupported: "Pre ERC-721" }, // Dec-24-2017 02:10:06 PM UTC + "0x088C6Ad962812b5Aa905BA6F3c5c145f9D4C079f": { type: "erc20", symbol: "CCATV3", name: "CryptoCats V3", decimals: 1, unsupported: "Pre ERC-721" }, // Dec-24-2017 02:10:09 PM UTC + "0x43fb95c7afA1Ac1E721F33C695b2A0A94C7ddAb2": { type: "erc20", symbol: "LUNA", name: "LunarToken", decimals: 1, unsupported: "Pre ERC-721" }, + + // ENS contracts + "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e": { type: "ens", symbol: "ENS: Registry with Fallback", name: "ENS: Registry with Fallback", ens: true }, + "0x226159d592E2b063810a10Ebf6dcbADA94Ed68b8": { type: "ens", symbol: "ENS: Old Public Resolver 2", name: "ENS: Old Public Resolver 2", ens: true }, + "0x231b0Ee14048e9dCcD1d247744d114a4EB5E8E63": { type: "ens", symbol: "ENS: Public Resolver", name: "ENS: Public Resolver", ens: true }, + "0x253553366Da8546fC250F225fe3d25d0C782303b": { type: "ens", symbol: "ENS: ETH Registrar Controller", name: "ENS: ETH Registrar Controller", ens: true }, + "0x283Af0B28c62C092C9727F1Ee09c02CA627EB7F5": { type: "ens", symbol: "ENS: Old ETH Registrar Controller", name: "ENS: Old ETH Registrar Controller", ens: true }, + "0x314159265dD8dbb310642f98f50C066173C1259b": { type: "ens", symbol: "ENS: Eth Name Service", name: "ENS: Eth Name Service", ens: true }, + "0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41": { type: "ens", symbol: "ENS: Public Resolver 2", name: "ENS: Public Resolver 2", ens: true }, + "0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85": { type: "erc721", symbol: "ENS: Ethereum Name Service", name: "ENS: Ethereum Name Service", ens: true }, + "0xB22c1C159d12461EA124b0deb4b5b93020E6Ad16": { type: "ens", symbol: "ENS: Old ETH Registrar Controller 2", name: "ENS: Old ETH Registrar Controller 2", ens: true }, + "0xD4416b13d2b3a9aBae7AcD5D6C2BbDBE25686401": { type: "erc1155", symbol: "ENS: Name Wrapper", name: "ENS: Name Wrapper", ens: true }, + "0xF0AD5cAd05e10572EfcEB849f6Ff0c68f9700455": { type: "ens", symbol: "ENS: Old ETH Registrar Controller 1", name: "ENS: Old ETH Registrar Controller 1", ens: true }, + "0xFaC7BEA255a6990f749363002136aF6556b31e04": { type: "ens", symbol: "ENS: Old ENS Token", name: "ENS: Old ENS Token", ens: true }, +}; diff --git a/docs/css/app.css b/docs/css/app.css new file mode 100644 index 0000000..575cac4 --- /dev/null +++ b/docs/css/app.css @@ -0,0 +1,110 @@ +/* https://stackoverflow.com/questions/26018756/bootstrap-button-drop-down-inside-responsive-table-not-visible-because-of-scroll/51992907 */ +/* @media (max-width: 767px) { + .table-responsive .dropdown-menu { + position: static !important; + } +} +@media (min-width: 768px) { + .table-responsive { + overflow: visible; + } +} */ + +/* +.router-link-active { + color: red!; +} +*/ + +/* +.mycode { + font-size: 87.5%; + color: #e83e8c; +} +*/ + + +.rightalignedinput { + width: 250px !important; + text-align: right; +} + +.navbar-toggler { + display: block !important; +} + +.form-control-plaintext { + background-color: #F8F8F8 !important; + font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important; + font-size: 80%; + wrap: off !important; +} + + +.warningheader { + background-color: orange !important; +} + +/* .logo { + color:#000000 !important; +} */ + +/* body { + background-image: url(../images/MeInTheMatrix61-square.gif); + background-repeat: no-repeat; + background-attachment: fixed; + background-size: 50%; + // width: 100%; + // height: 100%; + // opacity : 0.8; + // z-index: -1; +} */ + +.truncate { + overflow: hidden; + text-overflow: ellipsis; + display: inline-block; + white-space: nowrap; + max-width: 100%; +} + +/* .navbar-brand { + text-color: black; + color: black; + // text-align: right; + // padding: 0 !important; + // margin: 0; + // font-size: 90%; +} */ + +.hidden { + display:none; +} + +span.icon { + font-family: 'Glyphicons Halflings'; +} + + +/* navbar */ +.navbar-default { + background-color: #F8F8F8; + border-color: #E7E7E7; +} +/* Title */ +.navbar-default .navbar-brand { + color: #000; +} + + +img { + -ms-interpolation-mode: nearest-neighbor; + image-rendering: -webkit-optimize-contrast; + image-rendering: -moz-crisp-edges; + image-rendering: -o-pixelated; + image-rendering: pixelated !important; +} + +.popover-max-width { + max-width: 600px !important; +} diff --git a/docs/css/bootstrap-vue-icons.css b/docs/css/bootstrap-vue-icons.css new file mode 100644 index 0000000..afc3494 --- /dev/null +++ b/docs/css/bootstrap-vue-icons.css @@ -0,0 +1,286 @@ +/*! + * BootstrapVue Icons Custom CSS (https://bootstrap-vue.org) + */ +.bv-no-focus-ring:focus { + outline: none; +} + +@media (max-width: 575.98px) { + .bv-d-xs-down-none { + display: none !important; + } +} + +@media (max-width: 767.98px) { + .bv-d-sm-down-none { + display: none !important; + } +} + +@media (max-width: 991.98px) { + .bv-d-md-down-none { + display: none !important; + } +} + +@media (max-width: 1199.98px) { + .bv-d-lg-down-none { + display: none !important; + } +} + +.bv-d-xl-down-none { + display: none !important; +} + +.b-icon.bi { + display: inline-block; + overflow: visible; + vertical-align: -0.15em; +} + +.b-icon.b-icon-animation-cylon, +.b-icon.b-iconstack .b-icon-animation-cylon > g { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-animation: 0.75s infinite ease-in-out alternate b-icon-animation-cylon; + animation: 0.75s infinite ease-in-out alternate b-icon-animation-cylon; +} + +@media (prefers-reduced-motion: reduce) { + .b-icon.b-icon-animation-cylon, + .b-icon.b-iconstack .b-icon-animation-cylon > g { + -webkit-animation: none; + animation: none; + } +} + +.b-icon.b-icon-animation-cylon-vertical, +.b-icon.b-iconstack .b-icon-animation-cylon-vertical > g { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-animation: 0.75s infinite ease-in-out alternate b-icon-animation-cylon-vertical; + animation: 0.75s infinite ease-in-out alternate b-icon-animation-cylon-vertical; +} + +@media (prefers-reduced-motion: reduce) { + .b-icon.b-icon-animation-cylon-vertical, + .b-icon.b-iconstack .b-icon-animation-cylon-vertical > g { + -webkit-animation: none; + animation: none; + } +} + +.b-icon.b-icon-animation-fade, +.b-icon.b-iconstack .b-icon-animation-fade > g { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-animation: 0.75s infinite ease-in-out alternate b-icon-animation-fade; + animation: 0.75s infinite ease-in-out alternate b-icon-animation-fade; +} + +@media (prefers-reduced-motion: reduce) { + .b-icon.b-icon-animation-fade, + .b-icon.b-iconstack .b-icon-animation-fade > g { + -webkit-animation: none; + animation: none; + } +} + +.b-icon.b-icon-animation-spin, +.b-icon.b-iconstack .b-icon-animation-spin > g { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-animation: 2s infinite linear normal b-icon-animation-spin; + animation: 2s infinite linear normal b-icon-animation-spin; +} + +@media (prefers-reduced-motion: reduce) { + .b-icon.b-icon-animation-spin, + .b-icon.b-iconstack .b-icon-animation-spin > g { + -webkit-animation: none; + animation: none; + } +} + +.b-icon.b-icon-animation-spin-reverse, +.b-icon.b-iconstack .b-icon-animation-spin-reverse > g { + -webkit-transform-origin: center; + transform-origin: center; + animation: 2s infinite linear reverse b-icon-animation-spin; +} + +@media (prefers-reduced-motion: reduce) { + .b-icon.b-icon-animation-spin-reverse, + .b-icon.b-iconstack .b-icon-animation-spin-reverse > g { + -webkit-animation: none; + animation: none; + } +} + +.b-icon.b-icon-animation-spin-pulse, +.b-icon.b-iconstack .b-icon-animation-spin-pulse > g { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-animation: 1s infinite steps(8) normal b-icon-animation-spin; + animation: 1s infinite steps(8) normal b-icon-animation-spin; +} + +@media (prefers-reduced-motion: reduce) { + .b-icon.b-icon-animation-spin-pulse, + .b-icon.b-iconstack .b-icon-animation-spin-pulse > g { + -webkit-animation: none; + animation: none; + } +} + +.b-icon.b-icon-animation-spin-reverse-pulse, +.b-icon.b-iconstack .b-icon-animation-spin-reverse-pulse > g { + -webkit-transform-origin: center; + transform-origin: center; + animation: 1s infinite steps(8) reverse b-icon-animation-spin; +} + +@media (prefers-reduced-motion: reduce) { + .b-icon.b-icon-animation-spin-reverse-pulse, + .b-icon.b-iconstack .b-icon-animation-spin-reverse-pulse > g { + -webkit-animation: none; + animation: none; + } +} + +.b-icon.b-icon-animation-throb, +.b-icon.b-iconstack .b-icon-animation-throb > g { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-animation: 0.75s infinite ease-in-out alternate b-icon-animation-throb; + animation: 0.75s infinite ease-in-out alternate b-icon-animation-throb; +} + +@media (prefers-reduced-motion: reduce) { + .b-icon.b-icon-animation-throb, + .b-icon.b-iconstack .b-icon-animation-throb > g { + -webkit-animation: none; + animation: none; + } +} + +@-webkit-keyframes b-icon-animation-cylon { + 0% { + -webkit-transform: translateX(-25%); + transform: translateX(-25%); + } + 100% { + -webkit-transform: translateX(25%); + transform: translateX(25%); + } +} + +@keyframes b-icon-animation-cylon { + 0% { + -webkit-transform: translateX(-25%); + transform: translateX(-25%); + } + 100% { + -webkit-transform: translateX(25%); + transform: translateX(25%); + } +} + +@-webkit-keyframes b-icon-animation-cylon-vertical { + 0% { + -webkit-transform: translateY(25%); + transform: translateY(25%); + } + 100% { + -webkit-transform: translateY(-25%); + transform: translateY(-25%); + } +} + +@keyframes b-icon-animation-cylon-vertical { + 0% { + -webkit-transform: translateY(25%); + transform: translateY(25%); + } + 100% { + -webkit-transform: translateY(-25%); + transform: translateY(-25%); + } +} + +@-webkit-keyframes b-icon-animation-fade { + 0% { + opacity: 0.1; + } + 100% { + opacity: 1; + } +} + +@keyframes b-icon-animation-fade { + 0% { + opacity: 0.1; + } + 100% { + opacity: 1; + } +} + +@-webkit-keyframes b-icon-animation-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} + +@keyframes b-icon-animation-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} + +@-webkit-keyframes b-icon-animation-throb { + 0% { + opacity: 0.5; + -webkit-transform: scale(0.5); + transform: scale(0.5); + } + 100% { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); + } +} + +@keyframes b-icon-animation-throb { + 0% { + opacity: 0.5; + -webkit-transform: scale(0.5); + transform: scale(0.5); + } + 100% { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); + } +} + +.btn .b-icon.bi, +.nav-link .b-icon.bi, +.dropdown-toggle .b-icon.bi, +.dropdown-item .b-icon.bi, +.input-group-text .b-icon.bi { + font-size: 125%; + vertical-align: text-bottom; +} +/*# sourceMappingURL=bootstrap-vue-icons.css.map */ \ No newline at end of file diff --git a/docs/css/bootstrap-vue-icons.min.css b/docs/css/bootstrap-vue-icons.min.css new file mode 100644 index 0000000..f4676e1 --- /dev/null +++ b/docs/css/bootstrap-vue-icons.min.css @@ -0,0 +1,4 @@ +/*! + * BootstrapVue Icons Custom CSS (https://bootstrap-vue.org) + */.bv-no-focus-ring:focus{outline:0}@media (max-width:575.98px){.bv-d-xs-down-none{display:none!important}}@media (max-width:767.98px){.bv-d-sm-down-none{display:none!important}}@media (max-width:991.98px){.bv-d-md-down-none{display:none!important}}@media (max-width:1199.98px){.bv-d-lg-down-none{display:none!important}}.bv-d-xl-down-none{display:none!important}.b-icon.bi{display:inline-block;overflow:visible;vertical-align:-.15em}.b-icon.b-icon-animation-cylon,.b-icon.b-iconstack .b-icon-animation-cylon>g{-webkit-transform-origin:center;transform-origin:center;-webkit-animation:.75s infinite ease-in-out alternate b-icon-animation-cylon;animation:.75s infinite ease-in-out alternate b-icon-animation-cylon}@media (prefers-reduced-motion:reduce){.b-icon.b-icon-animation-cylon,.b-icon.b-iconstack .b-icon-animation-cylon>g{-webkit-animation:none;animation:none}}.b-icon.b-icon-animation-cylon-vertical,.b-icon.b-iconstack .b-icon-animation-cylon-vertical>g{-webkit-transform-origin:center;transform-origin:center;-webkit-animation:.75s infinite ease-in-out alternate b-icon-animation-cylon-vertical;animation:.75s infinite ease-in-out alternate b-icon-animation-cylon-vertical}@media (prefers-reduced-motion:reduce){.b-icon.b-icon-animation-cylon-vertical,.b-icon.b-iconstack .b-icon-animation-cylon-vertical>g{-webkit-animation:none;animation:none}}.b-icon.b-icon-animation-fade,.b-icon.b-iconstack .b-icon-animation-fade>g{-webkit-transform-origin:center;transform-origin:center;-webkit-animation:.75s infinite ease-in-out alternate b-icon-animation-fade;animation:.75s infinite ease-in-out alternate b-icon-animation-fade}@media (prefers-reduced-motion:reduce){.b-icon.b-icon-animation-fade,.b-icon.b-iconstack .b-icon-animation-fade>g{-webkit-animation:none;animation:none}}.b-icon.b-icon-animation-spin,.b-icon.b-iconstack .b-icon-animation-spin>g{-webkit-transform-origin:center;transform-origin:center;-webkit-animation:2s infinite linear normal b-icon-animation-spin;animation:2s infinite linear normal b-icon-animation-spin}@media (prefers-reduced-motion:reduce){.b-icon.b-icon-animation-spin,.b-icon.b-iconstack .b-icon-animation-spin>g{-webkit-animation:none;animation:none}}.b-icon.b-icon-animation-spin-reverse,.b-icon.b-iconstack .b-icon-animation-spin-reverse>g{-webkit-transform-origin:center;transform-origin:center;animation:2s infinite linear reverse b-icon-animation-spin}@media (prefers-reduced-motion:reduce){.b-icon.b-icon-animation-spin-reverse,.b-icon.b-iconstack .b-icon-animation-spin-reverse>g{-webkit-animation:none;animation:none}}.b-icon.b-icon-animation-spin-pulse,.b-icon.b-iconstack .b-icon-animation-spin-pulse>g{-webkit-transform-origin:center;transform-origin:center;-webkit-animation:1s infinite steps(8) normal b-icon-animation-spin;animation:1s infinite steps(8) normal b-icon-animation-spin}@media (prefers-reduced-motion:reduce){.b-icon.b-icon-animation-spin-pulse,.b-icon.b-iconstack .b-icon-animation-spin-pulse>g{-webkit-animation:none;animation:none}}.b-icon.b-icon-animation-spin-reverse-pulse,.b-icon.b-iconstack .b-icon-animation-spin-reverse-pulse>g{-webkit-transform-origin:center;transform-origin:center;animation:1s infinite steps(8) reverse b-icon-animation-spin}@media (prefers-reduced-motion:reduce){.b-icon.b-icon-animation-spin-reverse-pulse,.b-icon.b-iconstack .b-icon-animation-spin-reverse-pulse>g{-webkit-animation:none;animation:none}}.b-icon.b-icon-animation-throb,.b-icon.b-iconstack .b-icon-animation-throb>g{-webkit-transform-origin:center;transform-origin:center;-webkit-animation:.75s infinite ease-in-out alternate b-icon-animation-throb;animation:.75s infinite ease-in-out alternate b-icon-animation-throb}@media (prefers-reduced-motion:reduce){.b-icon.b-icon-animation-throb,.b-icon.b-iconstack .b-icon-animation-throb>g{-webkit-animation:none;animation:none}}@-webkit-keyframes b-icon-animation-cylon{0%{-webkit-transform:translateX(-25%);transform:translateX(-25%)}100%{-webkit-transform:translateX(25%);transform:translateX(25%)}}@keyframes b-icon-animation-cylon{0%{-webkit-transform:translateX(-25%);transform:translateX(-25%)}100%{-webkit-transform:translateX(25%);transform:translateX(25%)}}@-webkit-keyframes b-icon-animation-cylon-vertical{0%{-webkit-transform:translateY(25%);transform:translateY(25%)}100%{-webkit-transform:translateY(-25%);transform:translateY(-25%)}}@keyframes b-icon-animation-cylon-vertical{0%{-webkit-transform:translateY(25%);transform:translateY(25%)}100%{-webkit-transform:translateY(-25%);transform:translateY(-25%)}}@-webkit-keyframes b-icon-animation-fade{0%{opacity:.1}100%{opacity:1}}@keyframes b-icon-animation-fade{0%{opacity:.1}100%{opacity:1}}@-webkit-keyframes b-icon-animation-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes b-icon-animation-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-webkit-keyframes b-icon-animation-throb{0%{opacity:.5;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes b-icon-animation-throb{0%{opacity:.5;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.btn .b-icon.bi,.dropdown-item .b-icon.bi,.dropdown-toggle .b-icon.bi,.input-group-text .b-icon.bi,.nav-link .b-icon.bi{font-size:125%;vertical-align:text-bottom} +/*# sourceMappingURL=bootstrap-vue-icons.min.css.map */ \ No newline at end of file diff --git a/docs/css/bootstrap-vue.css b/docs/css/bootstrap-vue.css new file mode 100644 index 0000000..9d2166c --- /dev/null +++ b/docs/css/bootstrap-vue.css @@ -0,0 +1,2820 @@ +/*! + * BootstrapVue Custom CSS (https://bootstrap-vue.org) + */ +.bv-no-focus-ring:focus { + outline: none; +} + +@media (max-width: 575.98px) { + .bv-d-xs-down-none { + display: none !important; + } +} + +@media (max-width: 767.98px) { + .bv-d-sm-down-none { + display: none !important; + } +} + +@media (max-width: 991.98px) { + .bv-d-md-down-none { + display: none !important; + } +} + +@media (max-width: 1199.98px) { + .bv-d-lg-down-none { + display: none !important; + } +} + +.bv-d-xl-down-none { + display: none !important; +} + +.form-control.focus { + color: #495057; + background-color: #fff; + border-color: #80bdff; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.form-control.focus.is-valid { + border-color: #28a745; + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); +} + +.form-control.focus.is-invalid { + border-color: #dc3545; + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); +} + +.b-form-btn-label-control.form-control { + background-image: none; + padding: 0; +} + +.input-group .b-form-btn-label-control.form-control { + padding: 0; +} + +[dir="rtl"] .b-form-btn-label-control.form-control, .b-form-btn-label-control.form-control[dir="rtl"] { + flex-direction: row-reverse; +} + +[dir="rtl"] .b-form-btn-label-control.form-control > label, .b-form-btn-label-control.form-control[dir="rtl"] > label { + text-align: right; +} + +.b-form-btn-label-control.form-control > .btn { + line-height: 1; + font-size: inherit; + box-shadow: none !important; + border: 0; +} + +.b-form-btn-label-control.form-control > .btn:disabled { + pointer-events: none; +} + +.b-form-btn-label-control.form-control.is-valid > .btn { + color: #28a745; +} + +.b-form-btn-label-control.form-control.is-invalid > .btn { + color: #dc3545; +} + +.b-form-btn-label-control.form-control > .dropdown-menu { + padding: 0.5rem; +} + +.b-form-btn-label-control.form-control > label { + outline: 0; + padding-left: 0.25rem; + margin: 0; + border: 0; + font-size: inherit; + cursor: pointer; + min-height: calc(calc(1.5em + 0.75rem + 2px) - 2px); +} + +.b-form-btn-label-control.form-control > label.form-control-sm { + min-height: calc(calc(1.5em + 0.5rem + 2px) - 2px); +} + +.b-form-btn-label-control.form-control > label.form-control-lg { + min-height: calc(calc(1.5em + 1rem + 2px) - 2px); +} + +.input-group.input-group-sm .b-form-btn-label-control.form-control > label { + min-height: calc(calc(1.5em + 0.5rem + 2px) - 2px); + padding-top: 0.25rem; + padding-bottom: 0.25rem; +} + +.input-group.input-group-lg .b-form-btn-label-control.form-control > label { + min-height: calc(calc(1.5em + 1rem + 2px) - 2px); + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} + +.b-form-btn-label-control.form-control[aria-disabled="true"], .b-form-btn-label-control.form-control[aria-readonly="true"] { + background-color: #e9ecef; + opacity: 1; +} + +.b-form-btn-label-control.form-control[aria-disabled="true"] { + pointer-events: none; +} + +.b-form-btn-label-control.form-control[aria-disabled="true"] > label { + cursor: default; +} + +.b-form-btn-label-control.btn-group > .dropdown-menu { + padding: 0.5rem; +} + +.b-avatar { + display: inline-flex; + align-items: center; + justify-content: center; + vertical-align: middle; + font-size: inherit; + font-weight: 400; + line-height: 1; + max-width: 100%; + max-height: auto; + text-align: center; + overflow: visible; + position: relative; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +.b-avatar:focus { + outline: 0; +} + +.b-avatar.btn, .b-avatar[href] { + padding: 0; + border: 0; +} + +.b-avatar.btn .b-avatar-img img, .b-avatar[href] .b-avatar-img img { + transition: -webkit-transform 0.15s ease-in-out; + transition: transform 0.15s ease-in-out; + transition: transform 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out; +} + +.b-avatar.btn:not(:disabled):not(.disabled), .b-avatar[href]:not(:disabled):not(.disabled) { + cursor: pointer; +} + +.b-avatar.btn:not(:disabled):not(.disabled):hover .b-avatar-img img, .b-avatar[href]:not(:disabled):not(.disabled):hover .b-avatar-img img { + -webkit-transform: scale(1.15); + transform: scale(1.15); +} + +.b-avatar.disabled, .b-avatar:disabled, .b-avatar[disabled] { + opacity: 0.65; + pointer-events: none; +} + +.b-avatar .b-avatar-custom, +.b-avatar .b-avatar-text, +.b-avatar .b-avatar-img { + border-radius: inherit; + width: 100%; + height: 100%; + overflow: hidden; + display: flex; + justify-content: center; + align-items: center; +} + +.b-avatar .b-avatar-text { + text-transform: uppercase; + white-space: nowrap; +} + +.b-avatar[href] { + text-decoration: none; +} + +.b-avatar > .b-icon { + width: 60%; + height: auto; + max-width: 100%; +} + +.b-avatar .b-avatar-img img { + width: 100%; + height: 100%; + max-height: auto; + border-radius: inherit; +} + +.b-avatar .b-avatar-badge { + position: absolute; + min-height: 1.5em; + min-width: 1.5em; + padding: 0.25em; + line-height: 1; + border-radius: 10em; + font-size: 70%; + font-weight: 700; + z-index: 5; +} + +.b-avatar-group .b-avatar-group-inner { + display: flex; + flex-wrap: wrap; +} + +.b-avatar-group .b-avatar { + border: 1px solid #dee2e6; +} + +.b-avatar-group a.b-avatar:hover:not(.disabled):not(disabled), +.b-avatar-group .btn.b-avatar:hover:not(.disabled):not(disabled) { + z-index: 3; +} + +.b-calendar { + display: inline-flex; +} + +.b-calendar .b-calendar-inner { + min-width: 250px; +} + +.b-calendar .b-calendar-header, +.b-calendar .b-calendar-nav { + margin-bottom: 0.25rem; +} + +.b-calendar .b-calendar-nav .btn { + padding: 0.25rem; +} + +.b-calendar output { + padding: 0.25rem; + font-size: 80%; +} + +.b-calendar output.readonly { + background-color: #e9ecef; + opacity: 1; +} + +.b-calendar .b-calendar-footer { + margin-top: 0.5rem; +} + +.b-calendar .b-calendar-grid { + padding: 0; + margin: 0; + overflow: hidden; +} + +.b-calendar .b-calendar-grid .row { + flex-wrap: nowrap; +} + +.b-calendar .b-calendar-grid-caption { + padding: 0.25rem; +} + +.b-calendar .b-calendar-grid-body .col[data-date] .btn { + width: 32px; + height: 32px; + font-size: 14px; + line-height: 1; + margin: 3px auto; + padding: 9px 0; +} + +.b-calendar .btn:disabled, .b-calendar .btn.disabled, .b-calendar .btn[aria-disabled="true"] { + cursor: default; + pointer-events: none; +} + +.card-img-left { + border-top-left-radius: calc(0.25rem - 1px); + border-bottom-left-radius: calc(0.25rem - 1px); +} + +.card-img-right { + border-top-right-radius: calc(0.25rem - 1px); + border-bottom-right-radius: calc(0.25rem - 1px); +} + +.dropdown:not(.dropleft) .dropdown-toggle.dropdown-toggle-no-caret::after { + display: none !important; +} + +.dropdown.dropleft .dropdown-toggle.dropdown-toggle-no-caret::before { + display: none !important; +} + +.dropdown .dropdown-menu:focus { + outline: none; +} + +.b-dropdown-form { + display: inline-block; + padding: 0.25rem 1.5rem; + width: 100%; + clear: both; + font-weight: 400; +} + +.b-dropdown-form:focus { + outline: 1px dotted !important; + outline: 5px auto -webkit-focus-ring-color !important; +} + +.b-dropdown-form.disabled, .b-dropdown-form:disabled { + outline: 0 !important; + color: #6c757d; + pointer-events: none; +} + +.b-dropdown-text { + display: inline-block; + padding: 0.25rem 1.5rem; + margin-bottom: 0; + width: 100%; + clear: both; + font-weight: lighter; +} + +.custom-checkbox.b-custom-control-lg, +.input-group-lg .custom-checkbox { + font-size: 1.25rem; + line-height: 1.5; + padding-left: 1.875rem; +} + +.custom-checkbox.b-custom-control-lg .custom-control-label::before, +.input-group-lg .custom-checkbox .custom-control-label::before { + top: 0.3125rem; + left: -1.875rem; + width: 1.25rem; + height: 1.25rem; + border-radius: 0.3rem; +} + +.custom-checkbox.b-custom-control-lg .custom-control-label::after, +.input-group-lg .custom-checkbox .custom-control-label::after { + top: 0.3125rem; + left: -1.875rem; + width: 1.25rem; + height: 1.25rem; + background-size: 50% 50%; +} + +.custom-checkbox.b-custom-control-sm, +.input-group-sm .custom-checkbox { + font-size: 0.875rem; + line-height: 1.5; + padding-left: 1.3125rem; +} + +.custom-checkbox.b-custom-control-sm .custom-control-label::before, +.input-group-sm .custom-checkbox .custom-control-label::before { + top: 0.21875rem; + left: -1.3125rem; + width: 0.875rem; + height: 0.875rem; + border-radius: 0.2rem; +} + +.custom-checkbox.b-custom-control-sm .custom-control-label::after, +.input-group-sm .custom-checkbox .custom-control-label::after { + top: 0.21875rem; + left: -1.3125rem; + width: 0.875rem; + height: 0.875rem; + background-size: 50% 50%; +} + +.custom-switch.b-custom-control-lg, +.input-group-lg .custom-switch { + padding-left: 2.8125rem; +} + +.custom-switch.b-custom-control-lg .custom-control-label, +.input-group-lg .custom-switch .custom-control-label { + font-size: 1.25rem; + line-height: 1.5; +} + +.custom-switch.b-custom-control-lg .custom-control-label::before, +.input-group-lg .custom-switch .custom-control-label::before { + top: 0.3125rem; + height: 1.25rem; + left: -2.8125rem; + width: 2.1875rem; + border-radius: 0.625rem; +} + +.custom-switch.b-custom-control-lg .custom-control-label::after, +.input-group-lg .custom-switch .custom-control-label::after { + top: calc( 0.3125rem + 2px); + left: calc( -2.8125rem + 2px); + width: calc( 1.25rem - 4px); + height: calc( 1.25rem - 4px); + border-radius: 0.625rem; + background-size: 50% 50%; +} + +.custom-switch.b-custom-control-lg .custom-control-input:checked ~ .custom-control-label::after, +.input-group-lg .custom-switch .custom-control-input:checked ~ .custom-control-label::after { + -webkit-transform: translateX(0.9375rem); + transform: translateX(0.9375rem); +} + +.custom-switch.b-custom-control-sm, +.input-group-sm .custom-switch { + padding-left: 1.96875rem; +} + +.custom-switch.b-custom-control-sm .custom-control-label, +.input-group-sm .custom-switch .custom-control-label { + font-size: 0.875rem; + line-height: 1.5; +} + +.custom-switch.b-custom-control-sm .custom-control-label::before, +.input-group-sm .custom-switch .custom-control-label::before { + top: 0.21875rem; + left: -1.96875rem; + width: 1.53125rem; + height: 0.875rem; + border-radius: 0.4375rem; +} + +.custom-switch.b-custom-control-sm .custom-control-label::after, +.input-group-sm .custom-switch .custom-control-label::after { + top: calc( 0.21875rem + 2px); + left: calc( -1.96875rem + 2px); + width: calc( 0.875rem - 4px); + height: calc( 0.875rem - 4px); + border-radius: 0.4375rem; + background-size: 50% 50%; +} + +.custom-switch.b-custom-control-sm .custom-control-input:checked ~ .custom-control-label::after, +.input-group-sm .custom-switch .custom-control-input:checked ~ .custom-control-label::after { + -webkit-transform: translateX(0.65625rem); + transform: translateX(0.65625rem); +} + +.input-group > .input-group-prepend > .btn-group > .btn, +.input-group > .input-group-append:not(:last-child) > .btn-group > .btn, +.input-group > .input-group-append:last-child > .btn-group:not(:last-child):not(.dropdown-toggle) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group > .input-group-append > .btn-group > .btn, +.input-group > .input-group-prepend:not(:first-child) > .btn-group > .btn, +.input-group > .input-group-prepend:first-child > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.b-custom-control-lg.custom-file, +.b-custom-control-lg .custom-file-input, +.b-custom-control-lg .custom-file-label, +.input-group-lg.custom-file, +.input-group-lg .custom-file-input, +.input-group-lg .custom-file-label { + font-size: 1.25rem; + height: calc(1.5em + 1rem + 2px); +} + +.b-custom-control-lg .custom-file-label, +.b-custom-control-lg .custom-file-label:after, +.input-group-lg .custom-file-label, +.input-group-lg .custom-file-label:after { + padding: 0.5rem 1rem; + line-height: 1.5; +} + +.b-custom-control-lg .custom-file-label, +.input-group-lg .custom-file-label { + border-radius: 0.3rem; +} + +.b-custom-control-lg .custom-file-label::after, +.input-group-lg .custom-file-label::after { + font-size: inherit; + height: calc( 1.5em + 1rem); + border-radius: 0 0.3rem 0.3rem 0; +} + +.b-custom-control-sm.custom-file, +.b-custom-control-sm .custom-file-input, +.b-custom-control-sm .custom-file-label, +.input-group-sm.custom-file, +.input-group-sm .custom-file-input, +.input-group-sm .custom-file-label { + font-size: 0.875rem; + height: calc(1.5em + 0.5rem + 2px); +} + +.b-custom-control-sm .custom-file-label, +.b-custom-control-sm .custom-file-label:after, +.input-group-sm .custom-file-label, +.input-group-sm .custom-file-label:after { + padding: 0.25rem 0.5rem; + line-height: 1.5; +} + +.b-custom-control-sm .custom-file-label, +.input-group-sm .custom-file-label { + border-radius: 0.2rem; +} + +.b-custom-control-sm .custom-file-label::after, +.input-group-sm .custom-file-label::after { + font-size: inherit; + height: calc( 1.5em + 0.5rem); + border-radius: 0 0.2rem 0.2rem 0; +} + +.was-validated .form-control:invalid, +.was-validated .form-control:valid, .form-control.is-invalid, .form-control.is-valid { + background-position: right calc(0.375em + 0.1875rem) center; +} + +input[type="color"].form-control { + height: calc(1.5em + 0.75rem + 2px); + padding: 0.125rem 0.25rem; +} + +input[type="color"].form-control.form-control-sm, +.input-group-sm input[type="color"].form-control { + height: calc(1.5em + 0.5rem + 2px); + padding: 0.125rem 0.25rem; +} + +input[type="color"].form-control.form-control-lg, +.input-group-lg input[type="color"].form-control { + height: calc(1.5em + 1rem + 2px); + padding: 0.125rem 0.25rem; +} + +input[type="color"].form-control:disabled { + background-color: #adb5bd; + opacity: 0.65; +} + +.input-group > .custom-range { + position: relative; + flex: 1 1 auto; + width: 1%; + margin-bottom: 0; +} + +.input-group > .custom-range + .form-control, +.input-group > .custom-range + .form-control-plaintext, +.input-group > .custom-range + .custom-select, +.input-group > .custom-range + .custom-range, +.input-group > .custom-range + .custom-file { + margin-left: -1px; +} + +.input-group > .form-control + .custom-range, +.input-group > .form-control-plaintext + .custom-range, +.input-group > .custom-select + .custom-range, +.input-group > .custom-range + .custom-range, +.input-group > .custom-file + .custom-range { + margin-left: -1px; +} + +.input-group > .custom-range:focus { + z-index: 3; +} + +.input-group > .custom-range:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group > .custom-range:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.input-group > .custom-range { + height: calc(1.5em + 0.75rem + 2px); + padding: 0 0.75rem; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ced4da; + height: calc(1.5em + 0.75rem + 2px); + border-radius: 0.25rem; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .input-group > .custom-range { + transition: none; + } +} + +.input-group > .custom-range:focus { + color: #495057; + background-color: #fff; + border-color: #80bdff; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.input-group > .custom-range:disabled, .input-group > .custom-range[readonly] { + background-color: #e9ecef; +} + +.input-group-lg > .custom-range { + height: calc(1.5em + 1rem + 2px); + padding: 0 1rem; + border-radius: 0.3rem; +} + +.input-group-sm > .custom-range { + height: calc(1.5em + 0.5rem + 2px); + padding: 0 0.5rem; + border-radius: 0.2rem; +} + +.was-validated .input-group .custom-range:valid, .input-group .custom-range.is-valid { + border-color: #28a745; +} + +.was-validated .input-group .custom-range:valid:focus, .input-group .custom-range.is-valid:focus { + border-color: #28a745; + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); +} + +.was-validated .custom-range:valid:focus::-webkit-slider-thumb, .custom-range.is-valid:focus::-webkit-slider-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem #9be7ac; +} + +.was-validated .custom-range:valid:focus::-moz-range-thumb, .custom-range.is-valid:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem #9be7ac; +} + +.was-validated .custom-range:valid:focus::-ms-thumb, .custom-range.is-valid:focus::-ms-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem #9be7ac; +} + +.was-validated .custom-range:valid::-webkit-slider-thumb, .custom-range.is-valid::-webkit-slider-thumb { + background-color: #28a745; + background-image: none; +} + +.was-validated .custom-range:valid::-webkit-slider-thumb:active, .custom-range.is-valid::-webkit-slider-thumb:active { + background-color: #9be7ac; + background-image: none; +} + +.was-validated .custom-range:valid::-webkit-slider-runnable-track, .custom-range.is-valid::-webkit-slider-runnable-track { + background-color: rgba(40, 167, 69, 0.35); +} + +.was-validated .custom-range:valid::-moz-range-thumb, .custom-range.is-valid::-moz-range-thumb { + background-color: #28a745; + background-image: none; +} + +.was-validated .custom-range:valid::-moz-range-thumb:active, .custom-range.is-valid::-moz-range-thumb:active { + background-color: #9be7ac; + background-image: none; +} + +.was-validated .custom-range:valid::-moz-range-track, .custom-range.is-valid::-moz-range-track { + background: rgba(40, 167, 69, 0.35); +} + +.was-validated .custom-range:valid ~ .valid-feedback, +.was-validated .custom-range:valid ~ .valid-tooltip, .custom-range.is-valid ~ .valid-feedback, +.custom-range.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .custom-range:valid::-ms-thumb, .custom-range.is-valid::-ms-thumb { + background-color: #28a745; + background-image: none; +} + +.was-validated .custom-range:valid::-ms-thumb:active, .custom-range.is-valid::-ms-thumb:active { + background-color: #9be7ac; + background-image: none; +} + +.was-validated .custom-range:valid::-ms-track-lower, .custom-range.is-valid::-ms-track-lower { + background: rgba(40, 167, 69, 0.35); +} + +.was-validated .custom-range:valid::-ms-track-upper, .custom-range.is-valid::-ms-track-upper { + background: rgba(40, 167, 69, 0.35); +} + +.was-validated .input-group .custom-range:invalid, .input-group .custom-range.is-invalid { + border-color: #dc3545; +} + +.was-validated .input-group .custom-range:invalid:focus, .input-group .custom-range.is-invalid:focus { + border-color: #dc3545; + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); +} + +.was-validated .custom-range:invalid:focus::-webkit-slider-thumb, .custom-range.is-invalid:focus::-webkit-slider-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem #f6cdd1; +} + +.was-validated .custom-range:invalid:focus::-moz-range-thumb, .custom-range.is-invalid:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem #f6cdd1; +} + +.was-validated .custom-range:invalid:focus::-ms-thumb, .custom-range.is-invalid:focus::-ms-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem #f6cdd1; +} + +.was-validated .custom-range:invalid::-webkit-slider-thumb, .custom-range.is-invalid::-webkit-slider-thumb { + background-color: #dc3545; + background-image: none; +} + +.was-validated .custom-range:invalid::-webkit-slider-thumb:active, .custom-range.is-invalid::-webkit-slider-thumb:active { + background-color: #f6cdd1; + background-image: none; +} + +.was-validated .custom-range:invalid::-webkit-slider-runnable-track, .custom-range.is-invalid::-webkit-slider-runnable-track { + background-color: rgba(220, 53, 69, 0.35); +} + +.was-validated .custom-range:invalid::-moz-range-thumb, .custom-range.is-invalid::-moz-range-thumb { + background-color: #dc3545; + background-image: none; +} + +.was-validated .custom-range:invalid::-moz-range-thumb:active, .custom-range.is-invalid::-moz-range-thumb:active { + background-color: #f6cdd1; + background-image: none; +} + +.was-validated .custom-range:invalid::-moz-range-track, .custom-range.is-invalid::-moz-range-track { + background: rgba(220, 53, 69, 0.35); +} + +.was-validated .custom-range:invalid ~ .invalid-feedback, +.was-validated .custom-range:invalid ~ .invalid-tooltip, .custom-range.is-invalid ~ .invalid-feedback, +.custom-range.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .custom-range:invalid::-ms-thumb, .custom-range.is-invalid::-ms-thumb { + background-color: #dc3545; + background-image: none; +} + +.was-validated .custom-range:invalid::-ms-thumb:active, .custom-range.is-invalid::-ms-thumb:active { + background-color: #f6cdd1; + background-image: none; +} + +.was-validated .custom-range:invalid::-ms-track-lower, .custom-range.is-invalid::-ms-track-lower { + background: rgba(220, 53, 69, 0.35); +} + +.was-validated .custom-range:invalid::-ms-track-upper, .custom-range.is-invalid::-ms-track-upper { + background: rgba(220, 53, 69, 0.35); +} + +.custom-radio.b-custom-control-lg, +.input-group-lg .custom-radio { + font-size: 1.25rem; + line-height: 1.5; + padding-left: 1.875rem; +} + +.custom-radio.b-custom-control-lg .custom-control-label::before, +.input-group-lg .custom-radio .custom-control-label::before { + top: 0.3125rem; + left: -1.875rem; + width: 1.25rem; + height: 1.25rem; + border-radius: 50%; +} + +.custom-radio.b-custom-control-lg .custom-control-label::after, +.input-group-lg .custom-radio .custom-control-label::after { + top: 0.3125rem; + left: -1.875rem; + width: 1.25rem; + height: 1.25rem; + background: no-repeat 50% / 50% 50%; +} + +.custom-radio.b-custom-control-sm, +.input-group-sm .custom-radio { + font-size: 0.875rem; + line-height: 1.5; + padding-left: 1.3125rem; +} + +.custom-radio.b-custom-control-sm .custom-control-label::before, +.input-group-sm .custom-radio .custom-control-label::before { + top: 0.21875rem; + left: -1.3125rem; + width: 0.875rem; + height: 0.875rem; + border-radius: 50%; +} + +.custom-radio.b-custom-control-sm .custom-control-label::after, +.input-group-sm .custom-radio .custom-control-label::after { + top: 0.21875rem; + left: -1.3125rem; + width: 0.875rem; + height: 0.875rem; + background: no-repeat 50% / 50% 50%; +} + +.b-rating { + text-align: center; +} + +.b-rating.d-inline-flex { + width: auto; +} + +.b-rating .b-rating-star, +.b-rating .b-rating-value { + padding: 0 0.25em; +} + +.b-rating .b-rating-value { + min-width: 2.5em; +} + +.b-rating .b-rating-star { + display: inline-flex; + justify-content: center; + outline: 0; +} + +.b-rating .b-rating-star .b-rating-icon { + display: inline-flex; + transition: all 0.15s ease-in-out; +} + +.b-rating.disabled, .b-rating:disabled { + background-color: #e9ecef; + color: #6c757d; +} + +.b-rating:not(.disabled):not(.readonly) .b-rating-star { + cursor: pointer; +} + +.b-rating:not(.disabled):not(.readonly):focus:not(:hover) .b-rating-star.focused .b-rating-icon, +.b-rating:not(.disabled):not(.readonly) .b-rating-star:hover .b-rating-icon { + -webkit-transform: scale(1.5); + transform: scale(1.5); +} + +.b-rating[dir="rtl"] .b-rating-star-half { + -webkit-transform: scale(-1, 1); + transform: scale(-1, 1); +} + +.b-form-spinbutton { + text-align: center; + overflow: hidden; + background-image: none; + padding: 0; +} + +[dir="rtl"] .b-form-spinbutton:not(.flex-column), .b-form-spinbutton[dir="rtl"]:not(.flex-column) { + flex-direction: row-reverse; +} + +.b-form-spinbutton output { + font-size: inherit; + outline: 0; + border: 0; + background-color: transparent; + width: auto; + margin: 0; + padding: 0 0.25rem; +} + +.b-form-spinbutton output > div, +.b-form-spinbutton output > bdi { + display: block; + min-width: 2.25em; + height: 1.5em; +} + +.b-form-spinbutton.flex-column { + height: auto; + width: auto; +} + +.b-form-spinbutton.flex-column output { + margin: 0 0.25rem; + padding: 0.25rem 0; +} + +.b-form-spinbutton:not(.d-inline-flex):not(.flex-column) { + output-width: 100%; +} + +.b-form-spinbutton.d-inline-flex:not(.flex-column) { + width: auto; +} + +.b-form-spinbutton .btn { + line-height: 1; + box-shadow: none !important; +} + +.b-form-spinbutton .btn:disabled { + pointer-events: none; +} + +.b-form-spinbutton .btn:hover:not(:disabled) > div > .b-icon { + -webkit-transform: scale(1.25); + transform: scale(1.25); +} + +.b-form-spinbutton.disabled, .b-form-spinbutton.readonly { + background-color: #e9ecef; +} + +.b-form-spinbutton.disabled { + pointer-events: none; +} + +.b-form-tags.focus { + color: #495057; + background-color: #fff; + border-color: #80bdff; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.b-form-tags.focus.is-valid { + border-color: #28a745; + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); +} + +.b-form-tags.focus.is-invalid { + border-color: #dc3545; + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); +} + +.b-form-tags.disabled { + background-color: #e9ecef; +} + +.b-form-tag { + font-size: 75%; + font-weight: normal; + line-height: 1.5; +} + +.b-form-tag.disabled { + opacity: 0.75; +} + +.b-form-tag > button.b-form-tag-remove { + color: inherit; + font-size: 125%; + line-height: 1; + float: none; +} + +.form-control-sm .b-form-tag { + line-height: 1.5; +} + +.form-control-lg .b-form-tag { + line-height: 1.5; +} + +.modal-backdrop { + opacity: 0.5; +} + +.b-pagination-pills .page-item .page-link { + border-radius: 50rem !important; + margin-left: 0.25rem; + line-height: 1; +} + +.b-pagination-pills .page-item:first-child .page-link { + margin-left: 0; +} + +.popover.b-popover { + display: block; + opacity: 1; + outline: 0; +} + +.popover.b-popover.fade:not(.show) { + opacity: 0; +} + +.popover.b-popover.show { + opacity: 1; +} + +.b-popover-primary.popover { + background-color: #cce5ff; + border-color: #b8daff; +} + +.b-popover-primary.bs-popover-top > .arrow::before, .b-popover-primary.bs-popover-auto[x-placement^="top"] > .arrow::before { + border-top-color: #b8daff; +} + +.b-popover-primary.bs-popover-top > .arrow::after, .b-popover-primary.bs-popover-auto[x-placement^="top"] > .arrow::after { + border-top-color: #cce5ff; +} + +.b-popover-primary.bs-popover-right > .arrow::before, .b-popover-primary.bs-popover-auto[x-placement^="right"] > .arrow::before { + border-right-color: #b8daff; +} + +.b-popover-primary.bs-popover-right > .arrow::after, .b-popover-primary.bs-popover-auto[x-placement^="right"] > .arrow::after { + border-right-color: #cce5ff; +} + +.b-popover-primary.bs-popover-bottom > .arrow::before, .b-popover-primary.bs-popover-auto[x-placement^="bottom"] > .arrow::before { + border-bottom-color: #b8daff; +} + +.b-popover-primary.bs-popover-bottom > .arrow::after, .b-popover-primary.bs-popover-auto[x-placement^="bottom"] > .arrow::after { + border-bottom-color: #bdddff; +} + +.b-popover-primary.bs-popover-bottom .popover-header::before, .b-popover-primary.bs-popover-auto[x-placement^="bottom"] .popover-header::before { + border-bottom-color: #bdddff; +} + +.b-popover-primary.bs-popover-left > .arrow::before, .b-popover-primary.bs-popover-auto[x-placement^="left"] > .arrow::before { + border-left-color: #b8daff; +} + +.b-popover-primary.bs-popover-left > .arrow::after, .b-popover-primary.bs-popover-auto[x-placement^="left"] > .arrow::after { + border-left-color: #cce5ff; +} + +.b-popover-primary .popover-header { + color: #212529; + background-color: #bdddff; + border-bottom-color: #a3d0ff; +} + +.b-popover-primary .popover-body { + color: #004085; +} + +.b-popover-secondary.popover { + background-color: #e2e3e5; + border-color: #d6d8db; +} + +.b-popover-secondary.bs-popover-top > .arrow::before, .b-popover-secondary.bs-popover-auto[x-placement^="top"] > .arrow::before { + border-top-color: #d6d8db; +} + +.b-popover-secondary.bs-popover-top > .arrow::after, .b-popover-secondary.bs-popover-auto[x-placement^="top"] > .arrow::after { + border-top-color: #e2e3e5; +} + +.b-popover-secondary.bs-popover-right > .arrow::before, .b-popover-secondary.bs-popover-auto[x-placement^="right"] > .arrow::before { + border-right-color: #d6d8db; +} + +.b-popover-secondary.bs-popover-right > .arrow::after, .b-popover-secondary.bs-popover-auto[x-placement^="right"] > .arrow::after { + border-right-color: #e2e3e5; +} + +.b-popover-secondary.bs-popover-bottom > .arrow::before, .b-popover-secondary.bs-popover-auto[x-placement^="bottom"] > .arrow::before { + border-bottom-color: #d6d8db; +} + +.b-popover-secondary.bs-popover-bottom > .arrow::after, .b-popover-secondary.bs-popover-auto[x-placement^="bottom"] > .arrow::after { + border-bottom-color: #dadbde; +} + +.b-popover-secondary.bs-popover-bottom .popover-header::before, .b-popover-secondary.bs-popover-auto[x-placement^="bottom"] .popover-header::before { + border-bottom-color: #dadbde; +} + +.b-popover-secondary.bs-popover-left > .arrow::before, .b-popover-secondary.bs-popover-auto[x-placement^="left"] > .arrow::before { + border-left-color: #d6d8db; +} + +.b-popover-secondary.bs-popover-left > .arrow::after, .b-popover-secondary.bs-popover-auto[x-placement^="left"] > .arrow::after { + border-left-color: #e2e3e5; +} + +.b-popover-secondary .popover-header { + color: #212529; + background-color: #dadbde; + border-bottom-color: #ccced2; +} + +.b-popover-secondary .popover-body { + color: #383d41; +} + +.b-popover-success.popover { + background-color: #d4edda; + border-color: #c3e6cb; +} + +.b-popover-success.bs-popover-top > .arrow::before, .b-popover-success.bs-popover-auto[x-placement^="top"] > .arrow::before { + border-top-color: #c3e6cb; +} + +.b-popover-success.bs-popover-top > .arrow::after, .b-popover-success.bs-popover-auto[x-placement^="top"] > .arrow::after { + border-top-color: #d4edda; +} + +.b-popover-success.bs-popover-right > .arrow::before, .b-popover-success.bs-popover-auto[x-placement^="right"] > .arrow::before { + border-right-color: #c3e6cb; +} + +.b-popover-success.bs-popover-right > .arrow::after, .b-popover-success.bs-popover-auto[x-placement^="right"] > .arrow::after { + border-right-color: #d4edda; +} + +.b-popover-success.bs-popover-bottom > .arrow::before, .b-popover-success.bs-popover-auto[x-placement^="bottom"] > .arrow::before { + border-bottom-color: #c3e6cb; +} + +.b-popover-success.bs-popover-bottom > .arrow::after, .b-popover-success.bs-popover-auto[x-placement^="bottom"] > .arrow::after { + border-bottom-color: #c9e8d1; +} + +.b-popover-success.bs-popover-bottom .popover-header::before, .b-popover-success.bs-popover-auto[x-placement^="bottom"] .popover-header::before { + border-bottom-color: #c9e8d1; +} + +.b-popover-success.bs-popover-left > .arrow::before, .b-popover-success.bs-popover-auto[x-placement^="left"] > .arrow::before { + border-left-color: #c3e6cb; +} + +.b-popover-success.bs-popover-left > .arrow::after, .b-popover-success.bs-popover-auto[x-placement^="left"] > .arrow::after { + border-left-color: #d4edda; +} + +.b-popover-success .popover-header { + color: #212529; + background-color: #c9e8d1; + border-bottom-color: #b7e1c1; +} + +.b-popover-success .popover-body { + color: #155724; +} + +.b-popover-info.popover { + background-color: #d1ecf1; + border-color: #bee5eb; +} + +.b-popover-info.bs-popover-top > .arrow::before, .b-popover-info.bs-popover-auto[x-placement^="top"] > .arrow::before { + border-top-color: #bee5eb; +} + +.b-popover-info.bs-popover-top > .arrow::after, .b-popover-info.bs-popover-auto[x-placement^="top"] > .arrow::after { + border-top-color: #d1ecf1; +} + +.b-popover-info.bs-popover-right > .arrow::before, .b-popover-info.bs-popover-auto[x-placement^="right"] > .arrow::before { + border-right-color: #bee5eb; +} + +.b-popover-info.bs-popover-right > .arrow::after, .b-popover-info.bs-popover-auto[x-placement^="right"] > .arrow::after { + border-right-color: #d1ecf1; +} + +.b-popover-info.bs-popover-bottom > .arrow::before, .b-popover-info.bs-popover-auto[x-placement^="bottom"] > .arrow::before { + border-bottom-color: #bee5eb; +} + +.b-popover-info.bs-popover-bottom > .arrow::after, .b-popover-info.bs-popover-auto[x-placement^="bottom"] > .arrow::after { + border-bottom-color: #c5e7ed; +} + +.b-popover-info.bs-popover-bottom .popover-header::before, .b-popover-info.bs-popover-auto[x-placement^="bottom"] .popover-header::before { + border-bottom-color: #c5e7ed; +} + +.b-popover-info.bs-popover-left > .arrow::before, .b-popover-info.bs-popover-auto[x-placement^="left"] > .arrow::before { + border-left-color: #bee5eb; +} + +.b-popover-info.bs-popover-left > .arrow::after, .b-popover-info.bs-popover-auto[x-placement^="left"] > .arrow::after { + border-left-color: #d1ecf1; +} + +.b-popover-info .popover-header { + color: #212529; + background-color: #c5e7ed; + border-bottom-color: #b2dfe7; +} + +.b-popover-info .popover-body { + color: #0c5460; +} + +.b-popover-warning.popover { + background-color: #fff3cd; + border-color: #ffeeba; +} + +.b-popover-warning.bs-popover-top > .arrow::before, .b-popover-warning.bs-popover-auto[x-placement^="top"] > .arrow::before { + border-top-color: #ffeeba; +} + +.b-popover-warning.bs-popover-top > .arrow::after, .b-popover-warning.bs-popover-auto[x-placement^="top"] > .arrow::after { + border-top-color: #fff3cd; +} + +.b-popover-warning.bs-popover-right > .arrow::before, .b-popover-warning.bs-popover-auto[x-placement^="right"] > .arrow::before { + border-right-color: #ffeeba; +} + +.b-popover-warning.bs-popover-right > .arrow::after, .b-popover-warning.bs-popover-auto[x-placement^="right"] > .arrow::after { + border-right-color: #fff3cd; +} + +.b-popover-warning.bs-popover-bottom > .arrow::before, .b-popover-warning.bs-popover-auto[x-placement^="bottom"] > .arrow::before { + border-bottom-color: #ffeeba; +} + +.b-popover-warning.bs-popover-bottom > .arrow::after, .b-popover-warning.bs-popover-auto[x-placement^="bottom"] > .arrow::after { + border-bottom-color: #ffefbe; +} + +.b-popover-warning.bs-popover-bottom .popover-header::before, .b-popover-warning.bs-popover-auto[x-placement^="bottom"] .popover-header::before { + border-bottom-color: #ffefbe; +} + +.b-popover-warning.bs-popover-left > .arrow::before, .b-popover-warning.bs-popover-auto[x-placement^="left"] > .arrow::before { + border-left-color: #ffeeba; +} + +.b-popover-warning.bs-popover-left > .arrow::after, .b-popover-warning.bs-popover-auto[x-placement^="left"] > .arrow::after { + border-left-color: #fff3cd; +} + +.b-popover-warning .popover-header { + color: #212529; + background-color: #ffefbe; + border-bottom-color: #ffe9a4; +} + +.b-popover-warning .popover-body { + color: #856404; +} + +.b-popover-danger.popover { + background-color: #f8d7da; + border-color: #f5c6cb; +} + +.b-popover-danger.bs-popover-top > .arrow::before, .b-popover-danger.bs-popover-auto[x-placement^="top"] > .arrow::before { + border-top-color: #f5c6cb; +} + +.b-popover-danger.bs-popover-top > .arrow::after, .b-popover-danger.bs-popover-auto[x-placement^="top"] > .arrow::after { + border-top-color: #f8d7da; +} + +.b-popover-danger.bs-popover-right > .arrow::before, .b-popover-danger.bs-popover-auto[x-placement^="right"] > .arrow::before { + border-right-color: #f5c6cb; +} + +.b-popover-danger.bs-popover-right > .arrow::after, .b-popover-danger.bs-popover-auto[x-placement^="right"] > .arrow::after { + border-right-color: #f8d7da; +} + +.b-popover-danger.bs-popover-bottom > .arrow::before, .b-popover-danger.bs-popover-auto[x-placement^="bottom"] > .arrow::before { + border-bottom-color: #f5c6cb; +} + +.b-popover-danger.bs-popover-bottom > .arrow::after, .b-popover-danger.bs-popover-auto[x-placement^="bottom"] > .arrow::after { + border-bottom-color: #f6cace; +} + +.b-popover-danger.bs-popover-bottom .popover-header::before, .b-popover-danger.bs-popover-auto[x-placement^="bottom"] .popover-header::before { + border-bottom-color: #f6cace; +} + +.b-popover-danger.bs-popover-left > .arrow::before, .b-popover-danger.bs-popover-auto[x-placement^="left"] > .arrow::before { + border-left-color: #f5c6cb; +} + +.b-popover-danger.bs-popover-left > .arrow::after, .b-popover-danger.bs-popover-auto[x-placement^="left"] > .arrow::after { + border-left-color: #f8d7da; +} + +.b-popover-danger .popover-header { + color: #212529; + background-color: #f6cace; + border-bottom-color: #f2b4ba; +} + +.b-popover-danger .popover-body { + color: #721c24; +} + +.b-popover-light.popover { + background-color: #fefefe; + border-color: #fdfdfe; +} + +.b-popover-light.bs-popover-top > .arrow::before, .b-popover-light.bs-popover-auto[x-placement^="top"] > .arrow::before { + border-top-color: #fdfdfe; +} + +.b-popover-light.bs-popover-top > .arrow::after, .b-popover-light.bs-popover-auto[x-placement^="top"] > .arrow::after { + border-top-color: #fefefe; +} + +.b-popover-light.bs-popover-right > .arrow::before, .b-popover-light.bs-popover-auto[x-placement^="right"] > .arrow::before { + border-right-color: #fdfdfe; +} + +.b-popover-light.bs-popover-right > .arrow::after, .b-popover-light.bs-popover-auto[x-placement^="right"] > .arrow::after { + border-right-color: #fefefe; +} + +.b-popover-light.bs-popover-bottom > .arrow::before, .b-popover-light.bs-popover-auto[x-placement^="bottom"] > .arrow::before { + border-bottom-color: #fdfdfe; +} + +.b-popover-light.bs-popover-bottom > .arrow::after, .b-popover-light.bs-popover-auto[x-placement^="bottom"] > .arrow::after { + border-bottom-color: #f6f6f6; +} + +.b-popover-light.bs-popover-bottom .popover-header::before, .b-popover-light.bs-popover-auto[x-placement^="bottom"] .popover-header::before { + border-bottom-color: #f6f6f6; +} + +.b-popover-light.bs-popover-left > .arrow::before, .b-popover-light.bs-popover-auto[x-placement^="left"] > .arrow::before { + border-left-color: #fdfdfe; +} + +.b-popover-light.bs-popover-left > .arrow::after, .b-popover-light.bs-popover-auto[x-placement^="left"] > .arrow::after { + border-left-color: #fefefe; +} + +.b-popover-light .popover-header { + color: #212529; + background-color: #f6f6f6; + border-bottom-color: #eaeaea; +} + +.b-popover-light .popover-body { + color: #818182; +} + +.b-popover-dark.popover { + background-color: #d6d8d9; + border-color: #c6c8ca; +} + +.b-popover-dark.bs-popover-top > .arrow::before, .b-popover-dark.bs-popover-auto[x-placement^="top"] > .arrow::before { + border-top-color: #c6c8ca; +} + +.b-popover-dark.bs-popover-top > .arrow::after, .b-popover-dark.bs-popover-auto[x-placement^="top"] > .arrow::after { + border-top-color: #d6d8d9; +} + +.b-popover-dark.bs-popover-right > .arrow::before, .b-popover-dark.bs-popover-auto[x-placement^="right"] > .arrow::before { + border-right-color: #c6c8ca; +} + +.b-popover-dark.bs-popover-right > .arrow::after, .b-popover-dark.bs-popover-auto[x-placement^="right"] > .arrow::after { + border-right-color: #d6d8d9; +} + +.b-popover-dark.bs-popover-bottom > .arrow::before, .b-popover-dark.bs-popover-auto[x-placement^="bottom"] > .arrow::before { + border-bottom-color: #c6c8ca; +} + +.b-popover-dark.bs-popover-bottom > .arrow::after, .b-popover-dark.bs-popover-auto[x-placement^="bottom"] > .arrow::after { + border-bottom-color: #ced0d2; +} + +.b-popover-dark.bs-popover-bottom .popover-header::before, .b-popover-dark.bs-popover-auto[x-placement^="bottom"] .popover-header::before { + border-bottom-color: #ced0d2; +} + +.b-popover-dark.bs-popover-left > .arrow::before, .b-popover-dark.bs-popover-auto[x-placement^="left"] > .arrow::before { + border-left-color: #c6c8ca; +} + +.b-popover-dark.bs-popover-left > .arrow::after, .b-popover-dark.bs-popover-auto[x-placement^="left"] > .arrow::after { + border-left-color: #d6d8d9; +} + +.b-popover-dark .popover-header { + color: #212529; + background-color: #ced0d2; + border-bottom-color: #c1c4c5; +} + +.b-popover-dark .popover-body { + color: #1b1e21; +} + +.b-sidebar-outer { + position: fixed !important; + top: 0; + left: 0; + right: 0; + height: 0; + overflow: visible; + z-index: calc(1030 + 5); +} + +.b-sidebar-backdrop { + position: fixed !important; + top: 0; + left: 0; + z-index: -1; + width: 100vw; + height: 100vh; + opacity: 0.6; +} + +.b-sidebar { + display: flex; + flex-direction: column; + position: fixed !important; + top: 0; + height: 100vh; + width: 320px; + max-width: 100% !important; + height: 100vh !important; + margin: 0 !important; + outline: 0; + -webkit-transform: translateX(0); + transform: translateX(0); +} + +.b-sidebar.slide { + transition: -webkit-transform 0.3s ease-in-out; + transition: transform 0.3s ease-in-out; + transition: transform 0.3s ease-in-out, -webkit-transform 0.3s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .b-sidebar.slide { + transition: none; + } +} + +.b-sidebar:not(.b-sidebar-right) { + left: 0; + right: auto; +} + +.b-sidebar:not(.b-sidebar-right).slide:not(.show) { + -webkit-transform: translateX(-100%); + transform: translateX(-100%); +} + +.b-sidebar:not(.b-sidebar-right) > .b-sidebar-header .close { + margin-left: auto; +} + +.b-sidebar.b-sidebar-right { + left: auto; + right: 0; +} + +.b-sidebar.b-sidebar-right.slide:not(.show) { + -webkit-transform: translateX(100%); + transform: translateX(100%); +} + +.b-sidebar.b-sidebar-right > .b-sidebar-header .close { + margin-right: auto; +} + +.b-sidebar > .b-sidebar-header { + font-size: 1.5rem; + padding: 0.5rem 1rem; + display: flex; + flex-direction: row; + flex-grow: 0; + align-items: center; +} + +[dir="rtl"] .b-sidebar > .b-sidebar-header { + flex-direction: row-reverse; +} + +.b-sidebar > .b-sidebar-header .close { + float: none; + font-size: 1.5rem; +} + +.b-sidebar > .b-sidebar-body { + flex-grow: 1; + height: 100%; + overflow-y: auto; +} + +.b-sidebar > .b-sidebar-footer { + flex-grow: 0; +} + +.table.b-table.b-table-fixed { + table-layout: fixed; +} + +.table.b-table.b-table-no-border-collapse { + border-collapse: separate; + border-spacing: 0; +} + +.table.b-table[aria-busy="true"] { + opacity: 0.55; +} + +.table.b-table > tbody > tr.b-table-details > td { + border-top: none !important; +} + +.table.b-table > caption { + caption-side: bottom; +} + +.table.b-table.b-table-caption-top > caption { + caption-side: top !important; +} + +.table.b-table > tbody > .table-active, +.table.b-table > tbody > .table-active > th, +.table.b-table > tbody > .table-active > td { + background-color: rgba(0, 0, 0, 0.075); +} + +.table.b-table.table-hover > tbody > tr.table-active:hover td, +.table.b-table.table-hover > tbody > tr.table-active:hover th { + color: #212529; + background-image: linear-gradient(rgba(0, 0, 0, 0.075), rgba(0, 0, 0, 0.075)); + background-repeat: no-repeat; +} + +.table.b-table > tbody > .bg-active, +.table.b-table > tbody > .bg-active > th, +.table.b-table > tbody > .bg-active > td { + background-color: rgba(255, 255, 255, 0.075) !important; +} + +.table.b-table.table-hover.table-dark > tbody > tr.bg-active:hover td, +.table.b-table.table-hover.table-dark > tbody > tr.bg-active:hover th { + color: #fff; + background-image: linear-gradient(rgba(255, 255, 255, 0.075), rgba(255, 255, 255, 0.075)); + background-repeat: no-repeat; +} + +.b-table-sticky-header, +.table-responsive, +[class*="table-responsive-"] { + margin-bottom: 1rem; +} + +.b-table-sticky-header > .table, +.table-responsive > .table, +[class*="table-responsive-"] > .table { + margin-bottom: 0; +} + +.b-table-sticky-header { + overflow-y: auto; + max-height: 300px; +} + +@media print { + .b-table-sticky-header { + overflow-y: visible !important; + max-height: none !important; + } +} + +@supports ((position: -webkit-sticky) or (position: sticky)) { + .b-table-sticky-header > .table.b-table > thead > tr > th { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 2; + } + .b-table-sticky-header > .table.b-table > thead > tr > .b-table-sticky-column, + .b-table-sticky-header > .table.b-table > tbody > tr > .b-table-sticky-column, + .b-table-sticky-header > .table.b-table > tfoot > tr > .b-table-sticky-column, + .table-responsive > .table.b-table > thead > tr > .b-table-sticky-column, + .table-responsive > .table.b-table > tbody > tr > .b-table-sticky-column, + .table-responsive > .table.b-table > tfoot > tr > .b-table-sticky-column, + [class*="table-responsive-"] > .table.b-table > thead > tr > .b-table-sticky-column, + [class*="table-responsive-"] > .table.b-table > tbody > tr > .b-table-sticky-column, + [class*="table-responsive-"] > .table.b-table > tfoot > tr > .b-table-sticky-column { + position: -webkit-sticky; + position: sticky; + left: 0; + } + .b-table-sticky-header > .table.b-table > thead > tr > .b-table-sticky-column, + .table-responsive > .table.b-table > thead > tr > .b-table-sticky-column, + [class*="table-responsive-"] > .table.b-table > thead > tr > .b-table-sticky-column { + z-index: 5; + } + .b-table-sticky-header > .table.b-table > tbody > tr > .b-table-sticky-column, + .b-table-sticky-header > .table.b-table > tfoot > tr > .b-table-sticky-column, + .table-responsive > .table.b-table > tbody > tr > .b-table-sticky-column, + .table-responsive > .table.b-table > tfoot > tr > .b-table-sticky-column, + [class*="table-responsive-"] > .table.b-table > tbody > tr > .b-table-sticky-column, + [class*="table-responsive-"] > .table.b-table > tfoot > tr > .b-table-sticky-column { + z-index: 2; + } + .table.b-table > thead > tr > .table-b-table-default, + .table.b-table > tbody > tr > .table-b-table-default, + .table.b-table > tfoot > tr > .table-b-table-default { + color: #212529; + background-color: #fff; + } + .table.b-table.table-dark > thead > tr > .bg-b-table-default, + .table.b-table.table-dark > tbody > tr > .bg-b-table-default, + .table.b-table.table-dark > tfoot > tr > .bg-b-table-default { + color: #fff; + background-color: #343a40; + } + .table.b-table.table-striped > tbody > tr:nth-of-type(odd) > .table-b-table-default { + background-image: linear-gradient(rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05)); + background-repeat: no-repeat; + } + .table.b-table.table-striped.table-dark > tbody > tr:nth-of-type(odd) > .bg-b-table-default { + background-image: linear-gradient(rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0.05)); + background-repeat: no-repeat; + } + .table.b-table.table-hover > tbody > tr:hover > .table-b-table-default { + color: #212529; + background-image: linear-gradient(rgba(0, 0, 0, 0.075), rgba(0, 0, 0, 0.075)); + background-repeat: no-repeat; + } + .table.b-table.table-hover.table-dark > tbody > tr:hover > .bg-b-table-default { + color: #fff; + background-image: linear-gradient(rgba(255, 255, 255, 0.075), rgba(255, 255, 255, 0.075)); + background-repeat: no-repeat; + } +} + +.table.b-table > thead > tr > [aria-sort], +.table.b-table > tfoot > tr > [aria-sort] { + cursor: pointer; + background-image: none; + background-repeat: no-repeat; + background-size: 0.65em 1em; +} + +.table.b-table > thead > tr > [aria-sort]:not(.b-table-sort-icon-left), +.table.b-table > tfoot > tr > [aria-sort]:not(.b-table-sort-icon-left) { + background-position: right calc(0.75rem / 2) center; + padding-right: calc(0.75rem + 0.65em); +} + +.table.b-table > thead > tr > [aria-sort].b-table-sort-icon-left, +.table.b-table > tfoot > tr > [aria-sort].b-table-sort-icon-left { + background-position: left calc(0.75rem / 2) center; + padding-left: calc(0.75rem + 0.65em); +} + +.table.b-table > thead > tr > [aria-sort="none"], +.table.b-table > tfoot > tr > [aria-sort="none"] { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'%3e%3cpath fill='black' opacity='.3' d='M51 1l25 23 24 22H1l25-22zM51 101l25-23 24-22H1l25 22z'/%3e%3c/svg%3e"); +} + +.table.b-table > thead > tr > [aria-sort="ascending"], +.table.b-table > tfoot > tr > [aria-sort="ascending"] { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'%3e%3cpath fill='black' d='M51 1l25 23 24 22H1l25-22z'/%3e%3cpath fill='black' opacity='.3' d='M51 101l25-23 24-22H1l25 22z'/%3e%3c/svg%3e"); +} + +.table.b-table > thead > tr > [aria-sort="descending"], +.table.b-table > tfoot > tr > [aria-sort="descending"] { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'%3e%3cpath fill='black' opacity='.3' d='M51 1l25 23 24 22H1l25-22z'/%3e%3cpath fill='black' d='M51 101l25-23 24-22H1l25 22z'/%3e%3c/svg%3e"); +} + +.table.b-table.table-dark > thead > tr > [aria-sort="none"], +.table.b-table.table-dark > tfoot > tr > [aria-sort="none"], +.table.b-table > .thead-dark > tr > [aria-sort="none"] { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'%3e%3cpath fill='white' opacity='.3' d='M51 1l25 23 24 22H1l25-22zM51 101l25-23 24-22H1l25 22z'/%3e%3c/svg%3e"); +} + +.table.b-table.table-dark > thead > tr > [aria-sort="ascending"], +.table.b-table.table-dark > tfoot > tr > [aria-sort="ascending"], +.table.b-table > .thead-dark > tr > [aria-sort="ascending"] { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'%3e%3cpath fill='white' d='M51 1l25 23 24 22H1l25-22z'/%3e%3cpath fill='white' opacity='.3' d='M51 101l25-23 24-22H1l25 22z'/%3e%3c/svg%3e"); +} + +.table.b-table.table-dark > thead > tr > [aria-sort="descending"], +.table.b-table.table-dark > tfoot > tr > [aria-sort="descending"], +.table.b-table > .thead-dark > tr > [aria-sort="descending"] { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'%3e%3cpath fill='white' opacity='.3' d='M51 1l25 23 24 22H1l25-22z'/%3e%3cpath fill='white' d='M51 101l25-23 24-22H1l25 22z'/%3e%3c/svg%3e"); +} + +.table.b-table > thead > tr > .table-dark[aria-sort="none"], +.table.b-table > tfoot > tr > .table-dark[aria-sort="none"] { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'%3e%3cpath fill='white' opacity='.3' d='M51 1l25 23 24 22H1l25-22zM51 101l25-23 24-22H1l25 22z'/%3e%3c/svg%3e"); +} + +.table.b-table > thead > tr > .table-dark[aria-sort="ascending"], +.table.b-table > tfoot > tr > .table-dark[aria-sort="ascending"] { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'%3e%3cpath fill='white' d='M51 1l25 23 24 22H1l25-22z'/%3e%3cpath fill='white' opacity='.3' d='M51 101l25-23 24-22H1l25 22z'/%3e%3c/svg%3e"); +} + +.table.b-table > thead > tr > .table-dark[aria-sort="descending"], +.table.b-table > tfoot > tr > .table-dark[aria-sort="descending"] { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'%3e%3cpath fill='white' opacity='.3' d='M51 1l25 23 24 22H1l25-22z'/%3e%3cpath fill='white' d='M51 101l25-23 24-22H1l25 22z'/%3e%3c/svg%3e"); +} + +.table.b-table.table-sm > thead > tr > [aria-sort]:not(.b-table-sort-icon-left), +.table.b-table.table-sm > tfoot > tr > [aria-sort]:not(.b-table-sort-icon-left) { + background-position: right calc(0.3rem / 2) center; + padding-right: calc(0.3rem + 0.65em); +} + +.table.b-table.table-sm > thead > tr > [aria-sort].b-table-sort-icon-left, +.table.b-table.table-sm > tfoot > tr > [aria-sort].b-table-sort-icon-left { + background-position: left calc(0.3rem / 2) center; + padding-left: calc(0.3rem + 0.65em); +} + +.table.b-table.b-table-selectable:not(.b-table-selectable-no-click) > tbody > tr { + cursor: pointer; +} + +.table.b-table.b-table-selectable:not(.b-table-selectable-no-click).b-table-selecting.b-table-select-range > tbody > tr { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +@media (max-width: 575.98px) { + .table.b-table.b-table-stacked-sm { + display: block; + width: 100%; + } + .table.b-table.b-table-stacked-sm > caption, + .table.b-table.b-table-stacked-sm > tbody, + .table.b-table.b-table-stacked-sm > tbody > tr, + .table.b-table.b-table-stacked-sm > tbody > tr > td, + .table.b-table.b-table-stacked-sm > tbody > tr > th { + display: block; + } + .table.b-table.b-table-stacked-sm > thead, + .table.b-table.b-table-stacked-sm > tfoot { + display: none; + } + .table.b-table.b-table-stacked-sm > thead > tr.b-table-top-row, + .table.b-table.b-table-stacked-sm > thead > tr.b-table-bottom-row, + .table.b-table.b-table-stacked-sm > tfoot > tr.b-table-top-row, + .table.b-table.b-table-stacked-sm > tfoot > tr.b-table-bottom-row { + display: none; + } + .table.b-table.b-table-stacked-sm > caption { + caption-side: top !important; + } + .table.b-table.b-table-stacked-sm > tbody > tr > [data-label]::before { + content: attr(data-label); + width: 40%; + float: left; + text-align: right; + overflow-wrap: break-word; + font-weight: bold; + font-style: normal; + padding: 0 calc(1rem / 2) 0 0; + margin: 0; + } + .table.b-table.b-table-stacked-sm > tbody > tr > [data-label]::after { + display: block; + clear: both; + content: ""; + } + .table.b-table.b-table-stacked-sm > tbody > tr > [data-label] > div { + display: inline-block; + width: calc(100% - 40%); + padding: 0 0 0 calc(1rem / 2); + margin: 0; + } + .table.b-table.b-table-stacked-sm > tbody > tr.top-row, .table.b-table.b-table-stacked-sm > tbody > tr.bottom-row { + display: none; + } + .table.b-table.b-table-stacked-sm > tbody > tr > :first-child { + border-top-width: 3px; + } + .table.b-table.b-table-stacked-sm > tbody > tr > [rowspan] + td, + .table.b-table.b-table-stacked-sm > tbody > tr > [rowspan] + th { + border-top-width: 3px; + } +} + +@media (max-width: 767.98px) { + .table.b-table.b-table-stacked-md { + display: block; + width: 100%; + } + .table.b-table.b-table-stacked-md > caption, + .table.b-table.b-table-stacked-md > tbody, + .table.b-table.b-table-stacked-md > tbody > tr, + .table.b-table.b-table-stacked-md > tbody > tr > td, + .table.b-table.b-table-stacked-md > tbody > tr > th { + display: block; + } + .table.b-table.b-table-stacked-md > thead, + .table.b-table.b-table-stacked-md > tfoot { + display: none; + } + .table.b-table.b-table-stacked-md > thead > tr.b-table-top-row, + .table.b-table.b-table-stacked-md > thead > tr.b-table-bottom-row, + .table.b-table.b-table-stacked-md > tfoot > tr.b-table-top-row, + .table.b-table.b-table-stacked-md > tfoot > tr.b-table-bottom-row { + display: none; + } + .table.b-table.b-table-stacked-md > caption { + caption-side: top !important; + } + .table.b-table.b-table-stacked-md > tbody > tr > [data-label]::before { + content: attr(data-label); + width: 40%; + float: left; + text-align: right; + overflow-wrap: break-word; + font-weight: bold; + font-style: normal; + padding: 0 calc(1rem / 2) 0 0; + margin: 0; + } + .table.b-table.b-table-stacked-md > tbody > tr > [data-label]::after { + display: block; + clear: both; + content: ""; + } + .table.b-table.b-table-stacked-md > tbody > tr > [data-label] > div { + display: inline-block; + width: calc(100% - 40%); + padding: 0 0 0 calc(1rem / 2); + margin: 0; + } + .table.b-table.b-table-stacked-md > tbody > tr.top-row, .table.b-table.b-table-stacked-md > tbody > tr.bottom-row { + display: none; + } + .table.b-table.b-table-stacked-md > tbody > tr > :first-child { + border-top-width: 3px; + } + .table.b-table.b-table-stacked-md > tbody > tr > [rowspan] + td, + .table.b-table.b-table-stacked-md > tbody > tr > [rowspan] + th { + border-top-width: 3px; + } +} + +@media (max-width: 991.98px) { + .table.b-table.b-table-stacked-lg { + display: block; + width: 100%; + } + .table.b-table.b-table-stacked-lg > caption, + .table.b-table.b-table-stacked-lg > tbody, + .table.b-table.b-table-stacked-lg > tbody > tr, + .table.b-table.b-table-stacked-lg > tbody > tr > td, + .table.b-table.b-table-stacked-lg > tbody > tr > th { + display: block; + } + .table.b-table.b-table-stacked-lg > thead, + .table.b-table.b-table-stacked-lg > tfoot { + display: none; + } + .table.b-table.b-table-stacked-lg > thead > tr.b-table-top-row, + .table.b-table.b-table-stacked-lg > thead > tr.b-table-bottom-row, + .table.b-table.b-table-stacked-lg > tfoot > tr.b-table-top-row, + .table.b-table.b-table-stacked-lg > tfoot > tr.b-table-bottom-row { + display: none; + } + .table.b-table.b-table-stacked-lg > caption { + caption-side: top !important; + } + .table.b-table.b-table-stacked-lg > tbody > tr > [data-label]::before { + content: attr(data-label); + width: 40%; + float: left; + text-align: right; + overflow-wrap: break-word; + font-weight: bold; + font-style: normal; + padding: 0 calc(1rem / 2) 0 0; + margin: 0; + } + .table.b-table.b-table-stacked-lg > tbody > tr > [data-label]::after { + display: block; + clear: both; + content: ""; + } + .table.b-table.b-table-stacked-lg > tbody > tr > [data-label] > div { + display: inline-block; + width: calc(100% - 40%); + padding: 0 0 0 calc(1rem / 2); + margin: 0; + } + .table.b-table.b-table-stacked-lg > tbody > tr.top-row, .table.b-table.b-table-stacked-lg > tbody > tr.bottom-row { + display: none; + } + .table.b-table.b-table-stacked-lg > tbody > tr > :first-child { + border-top-width: 3px; + } + .table.b-table.b-table-stacked-lg > tbody > tr > [rowspan] + td, + .table.b-table.b-table-stacked-lg > tbody > tr > [rowspan] + th { + border-top-width: 3px; + } +} + +@media (max-width: 1199.98px) { + .table.b-table.b-table-stacked-xl { + display: block; + width: 100%; + } + .table.b-table.b-table-stacked-xl > caption, + .table.b-table.b-table-stacked-xl > tbody, + .table.b-table.b-table-stacked-xl > tbody > tr, + .table.b-table.b-table-stacked-xl > tbody > tr > td, + .table.b-table.b-table-stacked-xl > tbody > tr > th { + display: block; + } + .table.b-table.b-table-stacked-xl > thead, + .table.b-table.b-table-stacked-xl > tfoot { + display: none; + } + .table.b-table.b-table-stacked-xl > thead > tr.b-table-top-row, + .table.b-table.b-table-stacked-xl > thead > tr.b-table-bottom-row, + .table.b-table.b-table-stacked-xl > tfoot > tr.b-table-top-row, + .table.b-table.b-table-stacked-xl > tfoot > tr.b-table-bottom-row { + display: none; + } + .table.b-table.b-table-stacked-xl > caption { + caption-side: top !important; + } + .table.b-table.b-table-stacked-xl > tbody > tr > [data-label]::before { + content: attr(data-label); + width: 40%; + float: left; + text-align: right; + overflow-wrap: break-word; + font-weight: bold; + font-style: normal; + padding: 0 calc(1rem / 2) 0 0; + margin: 0; + } + .table.b-table.b-table-stacked-xl > tbody > tr > [data-label]::after { + display: block; + clear: both; + content: ""; + } + .table.b-table.b-table-stacked-xl > tbody > tr > [data-label] > div { + display: inline-block; + width: calc(100% - 40%); + padding: 0 0 0 calc(1rem / 2); + margin: 0; + } + .table.b-table.b-table-stacked-xl > tbody > tr.top-row, .table.b-table.b-table-stacked-xl > tbody > tr.bottom-row { + display: none; + } + .table.b-table.b-table-stacked-xl > tbody > tr > :first-child { + border-top-width: 3px; + } + .table.b-table.b-table-stacked-xl > tbody > tr > [rowspan] + td, + .table.b-table.b-table-stacked-xl > tbody > tr > [rowspan] + th { + border-top-width: 3px; + } +} + +.table.b-table.b-table-stacked { + display: block; + width: 100%; +} + +.table.b-table.b-table-stacked > caption, +.table.b-table.b-table-stacked > tbody, +.table.b-table.b-table-stacked > tbody > tr, +.table.b-table.b-table-stacked > tbody > tr > td, +.table.b-table.b-table-stacked > tbody > tr > th { + display: block; +} + +.table.b-table.b-table-stacked > thead, +.table.b-table.b-table-stacked > tfoot { + display: none; +} + +.table.b-table.b-table-stacked > thead > tr.b-table-top-row, +.table.b-table.b-table-stacked > thead > tr.b-table-bottom-row, +.table.b-table.b-table-stacked > tfoot > tr.b-table-top-row, +.table.b-table.b-table-stacked > tfoot > tr.b-table-bottom-row { + display: none; +} + +.table.b-table.b-table-stacked > caption { + caption-side: top !important; +} + +.table.b-table.b-table-stacked > tbody > tr > [data-label]::before { + content: attr(data-label); + width: 40%; + float: left; + text-align: right; + overflow-wrap: break-word; + font-weight: bold; + font-style: normal; + padding: 0 calc(1rem / 2) 0 0; + margin: 0; +} + +.table.b-table.b-table-stacked > tbody > tr > [data-label]::after { + display: block; + clear: both; + content: ""; +} + +.table.b-table.b-table-stacked > tbody > tr > [data-label] > div { + display: inline-block; + width: calc(100% - 40%); + padding: 0 0 0 calc(1rem / 2); + margin: 0; +} + +.table.b-table.b-table-stacked > tbody > tr.top-row, .table.b-table.b-table-stacked > tbody > tr.bottom-row { + display: none; +} + +.table.b-table.b-table-stacked > tbody > tr > :first-child { + border-top-width: 3px; +} + +.table.b-table.b-table-stacked > tbody > tr > [rowspan] + td, +.table.b-table.b-table-stacked > tbody > tr > [rowspan] + th { + border-top-width: 3px; +} + +.b-time { + min-width: 150px; +} + +.b-time[aria-disabled="true"] output, +.b-time[aria-readonly="true"] output, +.b-time output.disabled { + background-color: #e9ecef; + opacity: 1; +} + +.b-time[aria-disabled="true"] output { + pointer-events: none; +} + +[dir="rtl"] .b-time > .d-flex:not(.flex-column) { + flex-direction: row-reverse; +} + +.b-time .b-time-header { + margin-bottom: 0.5rem; +} + +.b-time .b-time-header output { + padding: 0.25rem; + font-size: 80%; +} + +.b-time .b-time-footer { + margin-top: 0.5rem; +} + +.b-time .b-time-ampm { + margin-left: 0.5rem; +} + +.b-toast { + display: block; + position: relative; + max-width: 350px; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + background-clip: padding-box; + z-index: 1; + border-radius: 0.25rem; +} + +.b-toast .toast { + background-color: rgba(255, 255, 255, 0.85); +} + +.b-toast:not(:last-child) { + margin-bottom: 0.75rem; +} + +.b-toast.b-toast-solid .toast { + background-color: white; +} + +.b-toast .toast { + opacity: 1; +} + +.b-toast .toast.fade:not(.show) { + opacity: 0; +} + +.b-toast .toast .toast-body { + display: block; +} + +.b-toast-primary .toast { + background-color: rgba(230, 242, 255, 0.85); + border-color: rgba(184, 218, 255, 0.85); + color: #004085; +} + +.b-toast-primary .toast .toast-header { + color: #004085; + background-color: rgba(204, 229, 255, 0.85); + border-bottom-color: rgba(184, 218, 255, 0.85); +} + +.b-toast-primary.b-toast-solid .toast { + background-color: #e6f2ff; +} + +.b-toast-secondary .toast { + background-color: rgba(239, 240, 241, 0.85); + border-color: rgba(214, 216, 219, 0.85); + color: #383d41; +} + +.b-toast-secondary .toast .toast-header { + color: #383d41; + background-color: rgba(226, 227, 229, 0.85); + border-bottom-color: rgba(214, 216, 219, 0.85); +} + +.b-toast-secondary.b-toast-solid .toast { + background-color: #eff0f1; +} + +.b-toast-success .toast { + background-color: rgba(230, 245, 233, 0.85); + border-color: rgba(195, 230, 203, 0.85); + color: #155724; +} + +.b-toast-success .toast .toast-header { + color: #155724; + background-color: rgba(212, 237, 218, 0.85); + border-bottom-color: rgba(195, 230, 203, 0.85); +} + +.b-toast-success.b-toast-solid .toast { + background-color: #e6f5e9; +} + +.b-toast-info .toast { + background-color: rgba(229, 244, 247, 0.85); + border-color: rgba(190, 229, 235, 0.85); + color: #0c5460; +} + +.b-toast-info .toast .toast-header { + color: #0c5460; + background-color: rgba(209, 236, 241, 0.85); + border-bottom-color: rgba(190, 229, 235, 0.85); +} + +.b-toast-info.b-toast-solid .toast { + background-color: #e5f4f7; +} + +.b-toast-warning .toast { + background-color: rgba(255, 249, 231, 0.85); + border-color: rgba(255, 238, 186, 0.85); + color: #856404; +} + +.b-toast-warning .toast .toast-header { + color: #856404; + background-color: rgba(255, 243, 205, 0.85); + border-bottom-color: rgba(255, 238, 186, 0.85); +} + +.b-toast-warning.b-toast-solid .toast { + background-color: #fff9e7; +} + +.b-toast-danger .toast { + background-color: rgba(252, 237, 238, 0.85); + border-color: rgba(245, 198, 203, 0.85); + color: #721c24; +} + +.b-toast-danger .toast .toast-header { + color: #721c24; + background-color: rgba(248, 215, 218, 0.85); + border-bottom-color: rgba(245, 198, 203, 0.85); +} + +.b-toast-danger.b-toast-solid .toast { + background-color: #fcedee; +} + +.b-toast-light .toast { + background-color: rgba(255, 255, 255, 0.85); + border-color: rgba(253, 253, 254, 0.85); + color: #818182; +} + +.b-toast-light .toast .toast-header { + color: #818182; + background-color: rgba(254, 254, 254, 0.85); + border-bottom-color: rgba(253, 253, 254, 0.85); +} + +.b-toast-light.b-toast-solid .toast { + background-color: white; +} + +.b-toast-dark .toast { + background-color: rgba(227, 229, 229, 0.85); + border-color: rgba(198, 200, 202, 0.85); + color: #1b1e21; +} + +.b-toast-dark .toast .toast-header { + color: #1b1e21; + background-color: rgba(214, 216, 217, 0.85); + border-bottom-color: rgba(198, 200, 202, 0.85); +} + +.b-toast-dark.b-toast-solid .toast { + background-color: #e3e5e5; +} + +.b-toaster { + z-index: 1100; +} + +.b-toaster .b-toaster-slot { + position: relative; + display: block; +} + +.b-toaster .b-toaster-slot:empty { + display: none !important; +} + +.b-toaster.b-toaster-top-right, .b-toaster.b-toaster-top-left, .b-toaster.b-toaster-top-center, .b-toaster.b-toaster-top-full, .b-toaster.b-toaster-bottom-right, .b-toaster.b-toaster-bottom-left, .b-toaster.b-toaster-bottom-center, .b-toaster.b-toaster-bottom-full { + position: fixed; + left: 0.5rem; + right: 0.5rem; + margin: 0; + padding: 0; + height: 0; + overflow: visible; +} + +.b-toaster.b-toaster-top-right .b-toaster-slot, .b-toaster.b-toaster-top-left .b-toaster-slot, .b-toaster.b-toaster-top-center .b-toaster-slot, .b-toaster.b-toaster-top-full .b-toaster-slot, .b-toaster.b-toaster-bottom-right .b-toaster-slot, .b-toaster.b-toaster-bottom-left .b-toaster-slot, .b-toaster.b-toaster-bottom-center .b-toaster-slot, .b-toaster.b-toaster-bottom-full .b-toaster-slot { + position: absolute; + max-width: 350px; + width: 100%; + /* IE 11 fix */ + left: 0; + right: 0; + padding: 0; + margin: 0; +} + +.b-toaster.b-toaster-top-full .b-toaster-slot, .b-toaster.b-toaster-bottom-full .b-toaster-slot { + width: 100%; + max-width: 100%; +} + +.b-toaster.b-toaster-top-full .b-toaster-slot .b-toast, +.b-toaster.b-toaster-top-full .b-toaster-slot .toast, .b-toaster.b-toaster-bottom-full .b-toaster-slot .b-toast, +.b-toaster.b-toaster-bottom-full .b-toaster-slot .toast { + width: 100%; + max-width: 100%; +} + +.b-toaster.b-toaster-top-right, .b-toaster.b-toaster-top-left, .b-toaster.b-toaster-top-center, .b-toaster.b-toaster-top-full { + top: 0; +} + +.b-toaster.b-toaster-top-right .b-toaster-slot, .b-toaster.b-toaster-top-left .b-toaster-slot, .b-toaster.b-toaster-top-center .b-toaster-slot, .b-toaster.b-toaster-top-full .b-toaster-slot { + top: 0.5rem; +} + +.b-toaster.b-toaster-bottom-right, .b-toaster.b-toaster-bottom-left, .b-toaster.b-toaster-bottom-center, .b-toaster.b-toaster-bottom-full { + bottom: 0; +} + +.b-toaster.b-toaster-bottom-right .b-toaster-slot, .b-toaster.b-toaster-bottom-left .b-toaster-slot, .b-toaster.b-toaster-bottom-center .b-toaster-slot, .b-toaster.b-toaster-bottom-full .b-toaster-slot { + bottom: 0.5rem; +} + +.b-toaster.b-toaster-top-right .b-toaster-slot, .b-toaster.b-toaster-bottom-right .b-toaster-slot, .b-toaster.b-toaster-top-center .b-toaster-slot, .b-toaster.b-toaster-bottom-center .b-toaster-slot { + margin-left: auto; +} + +.b-toaster.b-toaster-top-left .b-toaster-slot, .b-toaster.b-toaster-bottom-left .b-toaster-slot, .b-toaster.b-toaster-top-center .b-toaster-slot, .b-toaster.b-toaster-bottom-center .b-toaster-slot { + margin-right: auto; +} + +.b-toaster.b-toaster-top-right .b-toast.b-toaster-enter-active, .b-toaster.b-toaster-top-right .b-toast.b-toaster-leave-active, .b-toaster.b-toaster-top-right .b-toast.b-toaster-move, .b-toaster.b-toaster-top-left .b-toast.b-toaster-enter-active, .b-toaster.b-toaster-top-left .b-toast.b-toaster-leave-active, .b-toaster.b-toaster-top-left .b-toast.b-toaster-move, .b-toaster.b-toaster-bottom-right .b-toast.b-toaster-enter-active, .b-toaster.b-toaster-bottom-right .b-toast.b-toaster-leave-active, .b-toaster.b-toaster-bottom-right .b-toast.b-toaster-move, .b-toaster.b-toaster-bottom-left .b-toast.b-toaster-enter-active, .b-toaster.b-toaster-bottom-left .b-toast.b-toaster-leave-active, .b-toaster.b-toaster-bottom-left .b-toast.b-toaster-move { + transition: -webkit-transform 0.175s; + transition: transform 0.175s; + transition: transform 0.175s, -webkit-transform 0.175s; +} + +.b-toaster.b-toaster-top-right .b-toast.b-toaster-enter-to .toast.fade, .b-toaster.b-toaster-top-right .b-toast.b-toaster-enter-active .toast.fade, .b-toaster.b-toaster-top-left .b-toast.b-toaster-enter-to .toast.fade, .b-toaster.b-toaster-top-left .b-toast.b-toaster-enter-active .toast.fade, .b-toaster.b-toaster-bottom-right .b-toast.b-toaster-enter-to .toast.fade, .b-toaster.b-toaster-bottom-right .b-toast.b-toaster-enter-active .toast.fade, .b-toaster.b-toaster-bottom-left .b-toast.b-toaster-enter-to .toast.fade, .b-toaster.b-toaster-bottom-left .b-toast.b-toaster-enter-active .toast.fade { + transition-delay: 0.175s; +} + +.b-toaster.b-toaster-top-right .b-toast.b-toaster-leave-active, .b-toaster.b-toaster-top-left .b-toast.b-toaster-leave-active, .b-toaster.b-toaster-bottom-right .b-toast.b-toaster-leave-active, .b-toaster.b-toaster-bottom-left .b-toast.b-toaster-leave-active { + position: absolute; + transition-delay: 0.175s; +} + +.b-toaster.b-toaster-top-right .b-toast.b-toaster-leave-active .toast.fade, .b-toaster.b-toaster-top-left .b-toast.b-toaster-leave-active .toast.fade, .b-toaster.b-toaster-bottom-right .b-toast.b-toaster-leave-active .toast.fade, .b-toaster.b-toaster-bottom-left .b-toast.b-toaster-leave-active .toast.fade { + transition-delay: 0s; +} + +.tooltip.b-tooltip { + display: block; + opacity: 0.9; + outline: 0; +} + +.tooltip.b-tooltip.fade:not(.show) { + opacity: 0; +} + +.tooltip.b-tooltip.show { + opacity: 0.9; +} + +.tooltip.b-tooltip.noninteractive { + pointer-events: none; +} + +.tooltip.b-tooltip .arrow { + margin: 0 0.25rem; +} + +.tooltip.b-tooltip.bs-tooltip-right .arrow, .tooltip.b-tooltip.b-tooltip-primary.bs-tooltip-auto[x-placement^="right"] .arrow, .tooltip.b-tooltip.b-tooltip-secondary.bs-tooltip-auto[x-placement^="right"] .arrow, .tooltip.b-tooltip.b-tooltip-success.bs-tooltip-auto[x-placement^="right"] .arrow, .tooltip.b-tooltip.b-tooltip-info.bs-tooltip-auto[x-placement^="right"] .arrow, .tooltip.b-tooltip.b-tooltip-warning.bs-tooltip-auto[x-placement^="right"] .arrow, .tooltip.b-tooltip.b-tooltip-danger.bs-tooltip-auto[x-placement^="right"] .arrow, .tooltip.b-tooltip.b-tooltip-light.bs-tooltip-auto[x-placement^="right"] .arrow, .tooltip.b-tooltip.b-tooltip-dark.bs-tooltip-auto[x-placement^="right"] .arrow, .tooltip.b-tooltip.bs-tooltip-left .arrow, .tooltip.b-tooltip.b-tooltip-primary.bs-tooltip-auto[x-placement^="left"] .arrow, .tooltip.b-tooltip.b-tooltip-secondary.bs-tooltip-auto[x-placement^="left"] .arrow, .tooltip.b-tooltip.b-tooltip-success.bs-tooltip-auto[x-placement^="left"] .arrow, .tooltip.b-tooltip.b-tooltip-info.bs-tooltip-auto[x-placement^="left"] .arrow, .tooltip.b-tooltip.b-tooltip-warning.bs-tooltip-auto[x-placement^="left"] .arrow, .tooltip.b-tooltip.b-tooltip-danger.bs-tooltip-auto[x-placement^="left"] .arrow, .tooltip.b-tooltip.b-tooltip-light.bs-tooltip-auto[x-placement^="left"] .arrow, .tooltip.b-tooltip.b-tooltip-dark.bs-tooltip-auto[x-placement^="left"] .arrow { + margin: 0.25rem 0; +} + +.tooltip.b-tooltip-primary.bs-tooltip-top .arrow::before, .tooltip.b-tooltip-primary.bs-tooltip-auto[x-placement^="top"] .arrow::before { + border-top-color: #007bff; +} + +.tooltip.b-tooltip-primary.bs-tooltip-right .arrow::before, .tooltip.b-tooltip-primary.bs-tooltip-auto[x-placement^="right"] .arrow::before { + border-right-color: #007bff; +} + +.tooltip.b-tooltip-primary.bs-tooltip-bottom .arrow::before, .tooltip.b-tooltip-primary.bs-tooltip-auto[x-placement^="bottom"] .arrow::before { + border-bottom-color: #007bff; +} + +.tooltip.b-tooltip-primary.bs-tooltip-left .arrow::before, .tooltip.b-tooltip-primary.bs-tooltip-auto[x-placement^="left"] .arrow::before { + border-left-color: #007bff; +} + +.tooltip.b-tooltip-primary .tooltip-inner { + color: #fff; + background-color: #007bff; +} + +.tooltip.b-tooltip-secondary.bs-tooltip-top .arrow::before, .tooltip.b-tooltip-secondary.bs-tooltip-auto[x-placement^="top"] .arrow::before { + border-top-color: #6c757d; +} + +.tooltip.b-tooltip-secondary.bs-tooltip-right .arrow::before, .tooltip.b-tooltip-secondary.bs-tooltip-auto[x-placement^="right"] .arrow::before { + border-right-color: #6c757d; +} + +.tooltip.b-tooltip-secondary.bs-tooltip-bottom .arrow::before, .tooltip.b-tooltip-secondary.bs-tooltip-auto[x-placement^="bottom"] .arrow::before { + border-bottom-color: #6c757d; +} + +.tooltip.b-tooltip-secondary.bs-tooltip-left .arrow::before, .tooltip.b-tooltip-secondary.bs-tooltip-auto[x-placement^="left"] .arrow::before { + border-left-color: #6c757d; +} + +.tooltip.b-tooltip-secondary .tooltip-inner { + color: #fff; + background-color: #6c757d; +} + +.tooltip.b-tooltip-success.bs-tooltip-top .arrow::before, .tooltip.b-tooltip-success.bs-tooltip-auto[x-placement^="top"] .arrow::before { + border-top-color: #28a745; +} + +.tooltip.b-tooltip-success.bs-tooltip-right .arrow::before, .tooltip.b-tooltip-success.bs-tooltip-auto[x-placement^="right"] .arrow::before { + border-right-color: #28a745; +} + +.tooltip.b-tooltip-success.bs-tooltip-bottom .arrow::before, .tooltip.b-tooltip-success.bs-tooltip-auto[x-placement^="bottom"] .arrow::before { + border-bottom-color: #28a745; +} + +.tooltip.b-tooltip-success.bs-tooltip-left .arrow::before, .tooltip.b-tooltip-success.bs-tooltip-auto[x-placement^="left"] .arrow::before { + border-left-color: #28a745; +} + +.tooltip.b-tooltip-success .tooltip-inner { + color: #fff; + background-color: #28a745; +} + +.tooltip.b-tooltip-info.bs-tooltip-top .arrow::before, .tooltip.b-tooltip-info.bs-tooltip-auto[x-placement^="top"] .arrow::before { + border-top-color: #17a2b8; +} + +.tooltip.b-tooltip-info.bs-tooltip-right .arrow::before, .tooltip.b-tooltip-info.bs-tooltip-auto[x-placement^="right"] .arrow::before { + border-right-color: #17a2b8; +} + +.tooltip.b-tooltip-info.bs-tooltip-bottom .arrow::before, .tooltip.b-tooltip-info.bs-tooltip-auto[x-placement^="bottom"] .arrow::before { + border-bottom-color: #17a2b8; +} + +.tooltip.b-tooltip-info.bs-tooltip-left .arrow::before, .tooltip.b-tooltip-info.bs-tooltip-auto[x-placement^="left"] .arrow::before { + border-left-color: #17a2b8; +} + +.tooltip.b-tooltip-info .tooltip-inner { + color: #fff; + background-color: #17a2b8; +} + +.tooltip.b-tooltip-warning.bs-tooltip-top .arrow::before, .tooltip.b-tooltip-warning.bs-tooltip-auto[x-placement^="top"] .arrow::before { + border-top-color: #ffc107; +} + +.tooltip.b-tooltip-warning.bs-tooltip-right .arrow::before, .tooltip.b-tooltip-warning.bs-tooltip-auto[x-placement^="right"] .arrow::before { + border-right-color: #ffc107; +} + +.tooltip.b-tooltip-warning.bs-tooltip-bottom .arrow::before, .tooltip.b-tooltip-warning.bs-tooltip-auto[x-placement^="bottom"] .arrow::before { + border-bottom-color: #ffc107; +} + +.tooltip.b-tooltip-warning.bs-tooltip-left .arrow::before, .tooltip.b-tooltip-warning.bs-tooltip-auto[x-placement^="left"] .arrow::before { + border-left-color: #ffc107; +} + +.tooltip.b-tooltip-warning .tooltip-inner { + color: #212529; + background-color: #ffc107; +} + +.tooltip.b-tooltip-danger.bs-tooltip-top .arrow::before, .tooltip.b-tooltip-danger.bs-tooltip-auto[x-placement^="top"] .arrow::before { + border-top-color: #dc3545; +} + +.tooltip.b-tooltip-danger.bs-tooltip-right .arrow::before, .tooltip.b-tooltip-danger.bs-tooltip-auto[x-placement^="right"] .arrow::before { + border-right-color: #dc3545; +} + +.tooltip.b-tooltip-danger.bs-tooltip-bottom .arrow::before, .tooltip.b-tooltip-danger.bs-tooltip-auto[x-placement^="bottom"] .arrow::before { + border-bottom-color: #dc3545; +} + +.tooltip.b-tooltip-danger.bs-tooltip-left .arrow::before, .tooltip.b-tooltip-danger.bs-tooltip-auto[x-placement^="left"] .arrow::before { + border-left-color: #dc3545; +} + +.tooltip.b-tooltip-danger .tooltip-inner { + color: #fff; + background-color: #dc3545; +} + +.tooltip.b-tooltip-light.bs-tooltip-top .arrow::before, .tooltip.b-tooltip-light.bs-tooltip-auto[x-placement^="top"] .arrow::before { + border-top-color: #f8f9fa; +} + +.tooltip.b-tooltip-light.bs-tooltip-right .arrow::before, .tooltip.b-tooltip-light.bs-tooltip-auto[x-placement^="right"] .arrow::before { + border-right-color: #f8f9fa; +} + +.tooltip.b-tooltip-light.bs-tooltip-bottom .arrow::before, .tooltip.b-tooltip-light.bs-tooltip-auto[x-placement^="bottom"] .arrow::before { + border-bottom-color: #f8f9fa; +} + +.tooltip.b-tooltip-light.bs-tooltip-left .arrow::before, .tooltip.b-tooltip-light.bs-tooltip-auto[x-placement^="left"] .arrow::before { + border-left-color: #f8f9fa; +} + +.tooltip.b-tooltip-light .tooltip-inner { + color: #212529; + background-color: #f8f9fa; +} + +.tooltip.b-tooltip-dark.bs-tooltip-top .arrow::before, .tooltip.b-tooltip-dark.bs-tooltip-auto[x-placement^="top"] .arrow::before { + border-top-color: #343a40; +} + +.tooltip.b-tooltip-dark.bs-tooltip-right .arrow::before, .tooltip.b-tooltip-dark.bs-tooltip-auto[x-placement^="right"] .arrow::before { + border-right-color: #343a40; +} + +.tooltip.b-tooltip-dark.bs-tooltip-bottom .arrow::before, .tooltip.b-tooltip-dark.bs-tooltip-auto[x-placement^="bottom"] .arrow::before { + border-bottom-color: #343a40; +} + +.tooltip.b-tooltip-dark.bs-tooltip-left .arrow::before, .tooltip.b-tooltip-dark.bs-tooltip-auto[x-placement^="left"] .arrow::before { + border-left-color: #343a40; +} + +.tooltip.b-tooltip-dark .tooltip-inner { + color: #fff; + background-color: #343a40; +} + +.b-icon.bi { + display: inline-block; + overflow: visible; + vertical-align: -0.15em; +} + +.b-icon.b-icon-animation-cylon, +.b-icon.b-iconstack .b-icon-animation-cylon > g { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-animation: 0.75s infinite ease-in-out alternate b-icon-animation-cylon; + animation: 0.75s infinite ease-in-out alternate b-icon-animation-cylon; +} + +@media (prefers-reduced-motion: reduce) { + .b-icon.b-icon-animation-cylon, + .b-icon.b-iconstack .b-icon-animation-cylon > g { + -webkit-animation: none; + animation: none; + } +} + +.b-icon.b-icon-animation-cylon-vertical, +.b-icon.b-iconstack .b-icon-animation-cylon-vertical > g { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-animation: 0.75s infinite ease-in-out alternate b-icon-animation-cylon-vertical; + animation: 0.75s infinite ease-in-out alternate b-icon-animation-cylon-vertical; +} + +@media (prefers-reduced-motion: reduce) { + .b-icon.b-icon-animation-cylon-vertical, + .b-icon.b-iconstack .b-icon-animation-cylon-vertical > g { + -webkit-animation: none; + animation: none; + } +} + +.b-icon.b-icon-animation-fade, +.b-icon.b-iconstack .b-icon-animation-fade > g { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-animation: 0.75s infinite ease-in-out alternate b-icon-animation-fade; + animation: 0.75s infinite ease-in-out alternate b-icon-animation-fade; +} + +@media (prefers-reduced-motion: reduce) { + .b-icon.b-icon-animation-fade, + .b-icon.b-iconstack .b-icon-animation-fade > g { + -webkit-animation: none; + animation: none; + } +} + +.b-icon.b-icon-animation-spin, +.b-icon.b-iconstack .b-icon-animation-spin > g { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-animation: 2s infinite linear normal b-icon-animation-spin; + animation: 2s infinite linear normal b-icon-animation-spin; +} + +@media (prefers-reduced-motion: reduce) { + .b-icon.b-icon-animation-spin, + .b-icon.b-iconstack .b-icon-animation-spin > g { + -webkit-animation: none; + animation: none; + } +} + +.b-icon.b-icon-animation-spin-reverse, +.b-icon.b-iconstack .b-icon-animation-spin-reverse > g { + -webkit-transform-origin: center; + transform-origin: center; + animation: 2s infinite linear reverse b-icon-animation-spin; +} + +@media (prefers-reduced-motion: reduce) { + .b-icon.b-icon-animation-spin-reverse, + .b-icon.b-iconstack .b-icon-animation-spin-reverse > g { + -webkit-animation: none; + animation: none; + } +} + +.b-icon.b-icon-animation-spin-pulse, +.b-icon.b-iconstack .b-icon-animation-spin-pulse > g { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-animation: 1s infinite steps(8) normal b-icon-animation-spin; + animation: 1s infinite steps(8) normal b-icon-animation-spin; +} + +@media (prefers-reduced-motion: reduce) { + .b-icon.b-icon-animation-spin-pulse, + .b-icon.b-iconstack .b-icon-animation-spin-pulse > g { + -webkit-animation: none; + animation: none; + } +} + +.b-icon.b-icon-animation-spin-reverse-pulse, +.b-icon.b-iconstack .b-icon-animation-spin-reverse-pulse > g { + -webkit-transform-origin: center; + transform-origin: center; + animation: 1s infinite steps(8) reverse b-icon-animation-spin; +} + +@media (prefers-reduced-motion: reduce) { + .b-icon.b-icon-animation-spin-reverse-pulse, + .b-icon.b-iconstack .b-icon-animation-spin-reverse-pulse > g { + -webkit-animation: none; + animation: none; + } +} + +.b-icon.b-icon-animation-throb, +.b-icon.b-iconstack .b-icon-animation-throb > g { + -webkit-transform-origin: center; + transform-origin: center; + -webkit-animation: 0.75s infinite ease-in-out alternate b-icon-animation-throb; + animation: 0.75s infinite ease-in-out alternate b-icon-animation-throb; +} + +@media (prefers-reduced-motion: reduce) { + .b-icon.b-icon-animation-throb, + .b-icon.b-iconstack .b-icon-animation-throb > g { + -webkit-animation: none; + animation: none; + } +} + +@-webkit-keyframes b-icon-animation-cylon { + 0% { + -webkit-transform: translateX(-25%); + transform: translateX(-25%); + } + 100% { + -webkit-transform: translateX(25%); + transform: translateX(25%); + } +} + +@keyframes b-icon-animation-cylon { + 0% { + -webkit-transform: translateX(-25%); + transform: translateX(-25%); + } + 100% { + -webkit-transform: translateX(25%); + transform: translateX(25%); + } +} + +@-webkit-keyframes b-icon-animation-cylon-vertical { + 0% { + -webkit-transform: translateY(25%); + transform: translateY(25%); + } + 100% { + -webkit-transform: translateY(-25%); + transform: translateY(-25%); + } +} + +@keyframes b-icon-animation-cylon-vertical { + 0% { + -webkit-transform: translateY(25%); + transform: translateY(25%); + } + 100% { + -webkit-transform: translateY(-25%); + transform: translateY(-25%); + } +} + +@-webkit-keyframes b-icon-animation-fade { + 0% { + opacity: 0.1; + } + 100% { + opacity: 1; + } +} + +@keyframes b-icon-animation-fade { + 0% { + opacity: 0.1; + } + 100% { + opacity: 1; + } +} + +@-webkit-keyframes b-icon-animation-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} + +@keyframes b-icon-animation-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} + +@-webkit-keyframes b-icon-animation-throb { + 0% { + opacity: 0.5; + -webkit-transform: scale(0.5); + transform: scale(0.5); + } + 100% { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); + } +} + +@keyframes b-icon-animation-throb { + 0% { + opacity: 0.5; + -webkit-transform: scale(0.5); + transform: scale(0.5); + } + 100% { + opacity: 1; + -webkit-transform: scale(1); + transform: scale(1); + } +} + +.btn .b-icon.bi, +.nav-link .b-icon.bi, +.dropdown-toggle .b-icon.bi, +.dropdown-item .b-icon.bi, +.input-group-text .b-icon.bi { + font-size: 125%; + vertical-align: text-bottom; +} +/*# sourceMappingURL=bootstrap-vue.css.map */ \ No newline at end of file diff --git a/docs/css/bootstrap-vue.min.css b/docs/css/bootstrap-vue.min.css new file mode 100644 index 0000000..683b59b --- /dev/null +++ b/docs/css/bootstrap-vue.min.css @@ -0,0 +1,4 @@ +/*! + * BootstrapVue Custom CSS (https://bootstrap-vue.org) + */.bv-no-focus-ring:focus{outline:0}@media (max-width:575.98px){.bv-d-xs-down-none{display:none!important}}@media (max-width:767.98px){.bv-d-sm-down-none{display:none!important}}@media (max-width:991.98px){.bv-d-md-down-none{display:none!important}}@media (max-width:1199.98px){.bv-d-lg-down-none{display:none!important}}.bv-d-xl-down-none{display:none!important}.form-control.focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control.focus.is-valid{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-control.focus.is-invalid{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.b-form-btn-label-control.form-control{background-image:none;padding:0}.input-group .b-form-btn-label-control.form-control{padding:0}.b-form-btn-label-control.form-control[dir=rtl],[dir=rtl] .b-form-btn-label-control.form-control{flex-direction:row-reverse}.b-form-btn-label-control.form-control[dir=rtl]>label,[dir=rtl] .b-form-btn-label-control.form-control>label{text-align:right}.b-form-btn-label-control.form-control>.btn{line-height:1;font-size:inherit;box-shadow:none!important;border:0}.b-form-btn-label-control.form-control>.btn:disabled{pointer-events:none}.b-form-btn-label-control.form-control.is-valid>.btn{color:#28a745}.b-form-btn-label-control.form-control.is-invalid>.btn{color:#dc3545}.b-form-btn-label-control.form-control>.dropdown-menu{padding:.5rem}.b-form-btn-label-control.form-control>label{outline:0;padding-left:.25rem;margin:0;border:0;font-size:inherit;cursor:pointer;min-height:calc(calc(1.5em + .75rem + 2px) - 2px)}.b-form-btn-label-control.form-control>label.form-control-sm{min-height:calc(calc(1.5em + .5rem + 2px) - 2px)}.b-form-btn-label-control.form-control>label.form-control-lg{min-height:calc(calc(1.5em + 1rem + 2px) - 2px)}.input-group.input-group-sm .b-form-btn-label-control.form-control>label{min-height:calc(calc(1.5em + .5rem + 2px) - 2px);padding-top:.25rem;padding-bottom:.25rem}.input-group.input-group-lg .b-form-btn-label-control.form-control>label{min-height:calc(calc(1.5em + 1rem + 2px) - 2px);padding-top:.5rem;padding-bottom:.5rem}.b-form-btn-label-control.form-control[aria-disabled=true],.b-form-btn-label-control.form-control[aria-readonly=true]{background-color:#e9ecef;opacity:1}.b-form-btn-label-control.form-control[aria-disabled=true]{pointer-events:none}.b-form-btn-label-control.form-control[aria-disabled=true]>label{cursor:default}.b-form-btn-label-control.btn-group>.dropdown-menu{padding:.5rem}.b-avatar{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;font-size:inherit;font-weight:400;line-height:1;max-width:100%;max-height:auto;text-align:center;overflow:visible;position:relative;transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}.b-avatar:focus{outline:0}.b-avatar.btn,.b-avatar[href]{padding:0;border:0}.b-avatar.btn .b-avatar-img img,.b-avatar[href] .b-avatar-img img{transition:-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out;transition:transform .15s ease-in-out,-webkit-transform .15s ease-in-out}.b-avatar.btn:not(:disabled):not(.disabled),.b-avatar[href]:not(:disabled):not(.disabled){cursor:pointer}.b-avatar.btn:not(:disabled):not(.disabled):hover .b-avatar-img img,.b-avatar[href]:not(:disabled):not(.disabled):hover .b-avatar-img img{-webkit-transform:scale(1.15);transform:scale(1.15)}.b-avatar.disabled,.b-avatar:disabled,.b-avatar[disabled]{opacity:.65;pointer-events:none}.b-avatar .b-avatar-custom,.b-avatar .b-avatar-img,.b-avatar .b-avatar-text{border-radius:inherit;width:100%;height:100%;overflow:hidden;display:flex;justify-content:center;align-items:center}.b-avatar .b-avatar-text{text-transform:uppercase;white-space:nowrap}.b-avatar[href]{text-decoration:none}.b-avatar>.b-icon{width:60%;height:auto;max-width:100%}.b-avatar .b-avatar-img img{width:100%;height:100%;max-height:auto;border-radius:inherit}.b-avatar .b-avatar-badge{position:absolute;min-height:1.5em;min-width:1.5em;padding:.25em;line-height:1;border-radius:10em;font-size:70%;font-weight:700;z-index:5}.b-avatar-group .b-avatar-group-inner{display:flex;flex-wrap:wrap}.b-avatar-group .b-avatar{border:1px solid #dee2e6}.b-avatar-group .btn.b-avatar:hover:not(.disabled):not(disabled),.b-avatar-group a.b-avatar:hover:not(.disabled):not(disabled){z-index:3}.b-calendar{display:inline-flex}.b-calendar .b-calendar-inner{min-width:250px}.b-calendar .b-calendar-header,.b-calendar .b-calendar-nav{margin-bottom:.25rem}.b-calendar .b-calendar-nav .btn{padding:.25rem}.b-calendar output{padding:.25rem;font-size:80%}.b-calendar output.readonly{background-color:#e9ecef;opacity:1}.b-calendar .b-calendar-footer{margin-top:.5rem}.b-calendar .b-calendar-grid{padding:0;margin:0;overflow:hidden}.b-calendar .b-calendar-grid .row{flex-wrap:nowrap}.b-calendar .b-calendar-grid-caption{padding:.25rem}.b-calendar .b-calendar-grid-body .col[data-date] .btn{width:32px;height:32px;font-size:14px;line-height:1;margin:3px auto;padding:9px 0}.b-calendar .btn.disabled,.b-calendar .btn:disabled,.b-calendar .btn[aria-disabled=true]{cursor:default;pointer-events:none}.card-img-left{border-top-left-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-img-right{border-top-right-radius:calc(.25rem - 1px);border-bottom-right-radius:calc(.25rem - 1px)}.dropdown:not(.dropleft) .dropdown-toggle.dropdown-toggle-no-caret::after{display:none!important}.dropdown.dropleft .dropdown-toggle.dropdown-toggle-no-caret::before{display:none!important}.dropdown .dropdown-menu:focus{outline:0}.b-dropdown-form{display:inline-block;padding:.25rem 1.5rem;width:100%;clear:both;font-weight:400}.b-dropdown-form:focus{outline:1px dotted!important;outline:5px auto -webkit-focus-ring-color!important}.b-dropdown-form.disabled,.b-dropdown-form:disabled{outline:0!important;color:#6c757d;pointer-events:none}.b-dropdown-text{display:inline-block;padding:.25rem 1.5rem;margin-bottom:0;width:100%;clear:both;font-weight:lighter}.custom-checkbox.b-custom-control-lg,.input-group-lg .custom-checkbox{font-size:1.25rem;line-height:1.5;padding-left:1.875rem}.custom-checkbox.b-custom-control-lg .custom-control-label::before,.input-group-lg .custom-checkbox .custom-control-label::before{top:.3125rem;left:-1.875rem;width:1.25rem;height:1.25rem;border-radius:.3rem}.custom-checkbox.b-custom-control-lg .custom-control-label::after,.input-group-lg .custom-checkbox .custom-control-label::after{top:.3125rem;left:-1.875rem;width:1.25rem;height:1.25rem;background-size:50% 50%}.custom-checkbox.b-custom-control-sm,.input-group-sm .custom-checkbox{font-size:.875rem;line-height:1.5;padding-left:1.3125rem}.custom-checkbox.b-custom-control-sm .custom-control-label::before,.input-group-sm .custom-checkbox .custom-control-label::before{top:.21875rem;left:-1.3125rem;width:.875rem;height:.875rem;border-radius:.2rem}.custom-checkbox.b-custom-control-sm .custom-control-label::after,.input-group-sm .custom-checkbox .custom-control-label::after{top:.21875rem;left:-1.3125rem;width:.875rem;height:.875rem;background-size:50% 50%}.custom-switch.b-custom-control-lg,.input-group-lg .custom-switch{padding-left:2.8125rem}.custom-switch.b-custom-control-lg .custom-control-label,.input-group-lg .custom-switch .custom-control-label{font-size:1.25rem;line-height:1.5}.custom-switch.b-custom-control-lg .custom-control-label::before,.input-group-lg .custom-switch .custom-control-label::before{top:.3125rem;height:1.25rem;left:-2.8125rem;width:2.1875rem;border-radius:.625rem}.custom-switch.b-custom-control-lg .custom-control-label::after,.input-group-lg .custom-switch .custom-control-label::after{top:calc(.3125rem + 2px);left:calc(-2.8125rem + 2px);width:calc(1.25rem - 4px);height:calc(1.25rem - 4px);border-radius:.625rem;background-size:50% 50%}.custom-switch.b-custom-control-lg .custom-control-input:checked~.custom-control-label::after,.input-group-lg .custom-switch .custom-control-input:checked~.custom-control-label::after{-webkit-transform:translateX(.9375rem);transform:translateX(.9375rem)}.custom-switch.b-custom-control-sm,.input-group-sm .custom-switch{padding-left:1.96875rem}.custom-switch.b-custom-control-sm .custom-control-label,.input-group-sm .custom-switch .custom-control-label{font-size:.875rem;line-height:1.5}.custom-switch.b-custom-control-sm .custom-control-label::before,.input-group-sm .custom-switch .custom-control-label::before{top:.21875rem;left:-1.96875rem;width:1.53125rem;height:.875rem;border-radius:.4375rem}.custom-switch.b-custom-control-sm .custom-control-label::after,.input-group-sm .custom-switch .custom-control-label::after{top:calc(.21875rem + 2px);left:calc(-1.96875rem + 2px);width:calc(.875rem - 4px);height:calc(.875rem - 4px);border-radius:.4375rem;background-size:50% 50%}.custom-switch.b-custom-control-sm .custom-control-input:checked~.custom-control-label::after,.input-group-sm .custom-switch .custom-control-input:checked~.custom-control-label::after{-webkit-transform:translateX(.65625rem);transform:translateX(.65625rem)}.input-group>.input-group-append:last-child>.btn-group:not(:last-child):not(.dropdown-toggle)>.btn,.input-group>.input-group-append:not(:last-child)>.btn-group>.btn,.input-group>.input-group-prepend>.btn-group>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn-group>.btn,.input-group>.input-group-prepend:first-child>.btn-group:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.btn-group>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.b-custom-control-lg .custom-file-input,.b-custom-control-lg .custom-file-label,.b-custom-control-lg.custom-file,.input-group-lg .custom-file-input,.input-group-lg .custom-file-label,.input-group-lg.custom-file{font-size:1.25rem;height:calc(1.5em + 1rem + 2px)}.b-custom-control-lg .custom-file-label,.b-custom-control-lg .custom-file-label:after,.input-group-lg .custom-file-label,.input-group-lg .custom-file-label:after{padding:.5rem 1rem;line-height:1.5}.b-custom-control-lg .custom-file-label,.input-group-lg .custom-file-label{border-radius:.3rem}.b-custom-control-lg .custom-file-label::after,.input-group-lg .custom-file-label::after{font-size:inherit;height:calc(1.5em + 1rem);border-radius:0 .3rem .3rem 0}.b-custom-control-sm .custom-file-input,.b-custom-control-sm .custom-file-label,.b-custom-control-sm.custom-file,.input-group-sm .custom-file-input,.input-group-sm .custom-file-label,.input-group-sm.custom-file{font-size:.875rem;height:calc(1.5em + .5rem + 2px)}.b-custom-control-sm .custom-file-label,.b-custom-control-sm .custom-file-label:after,.input-group-sm .custom-file-label,.input-group-sm .custom-file-label:after{padding:.25rem .5rem;line-height:1.5}.b-custom-control-sm .custom-file-label,.input-group-sm .custom-file-label{border-radius:.2rem}.b-custom-control-sm .custom-file-label::after,.input-group-sm .custom-file-label::after{font-size:inherit;height:calc(1.5em + .5rem);border-radius:0 .2rem .2rem 0}.form-control.is-invalid,.form-control.is-valid,.was-validated .form-control:invalid,.was-validated .form-control:valid{background-position:right calc(.375em + .1875rem) center}input[type=color].form-control{height:calc(1.5em + .75rem + 2px);padding:.125rem .25rem}.input-group-sm input[type=color].form-control,input[type=color].form-control.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.125rem .25rem}.input-group-lg input[type=color].form-control,input[type=color].form-control.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.125rem .25rem}input[type=color].form-control:disabled{background-color:#adb5bd;opacity:.65}.input-group>.custom-range{position:relative;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-range+.custom-file,.input-group>.custom-range+.custom-range,.input-group>.custom-range+.custom-select,.input-group>.custom-range+.form-control,.input-group>.custom-range+.form-control-plaintext{margin-left:-1px}.input-group>.custom-file+.custom-range,.input-group>.custom-range+.custom-range,.input-group>.custom-select+.custom-range,.input-group>.form-control+.custom-range,.input-group>.form-control-plaintext+.custom-range{margin-left:-1px}.input-group>.custom-range:focus{z-index:3}.input-group>.custom-range:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-range:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-range{height:calc(1.5em + .75rem + 2px);padding:0 .75rem;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;height:calc(1.5em + .75rem + 2px);border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.input-group>.custom-range{transition:none}}.input-group>.custom-range:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.input-group>.custom-range:disabled,.input-group>.custom-range[readonly]{background-color:#e9ecef}.input-group-lg>.custom-range{height:calc(1.5em + 1rem + 2px);padding:0 1rem;border-radius:.3rem}.input-group-sm>.custom-range{height:calc(1.5em + .5rem + 2px);padding:0 .5rem;border-radius:.2rem}.input-group .custom-range.is-valid,.was-validated .input-group .custom-range:valid{border-color:#28a745}.input-group .custom-range.is-valid:focus,.was-validated .input-group .custom-range:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-range.is-valid:focus::-webkit-slider-thumb,.was-validated .custom-range:valid:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem #9be7ac}.custom-range.is-valid:focus::-moz-range-thumb,.was-validated .custom-range:valid:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem #9be7ac}.custom-range.is-valid:focus::-ms-thumb,.was-validated .custom-range:valid:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem #9be7ac}.custom-range.is-valid::-webkit-slider-thumb,.was-validated .custom-range:valid::-webkit-slider-thumb{background-color:#28a745;background-image:none}.custom-range.is-valid::-webkit-slider-thumb:active,.was-validated .custom-range:valid::-webkit-slider-thumb:active{background-color:#9be7ac;background-image:none}.custom-range.is-valid::-webkit-slider-runnable-track,.was-validated .custom-range:valid::-webkit-slider-runnable-track{background-color:rgba(40,167,69,.35)}.custom-range.is-valid::-moz-range-thumb,.was-validated .custom-range:valid::-moz-range-thumb{background-color:#28a745;background-image:none}.custom-range.is-valid::-moz-range-thumb:active,.was-validated .custom-range:valid::-moz-range-thumb:active{background-color:#9be7ac;background-image:none}.custom-range.is-valid::-moz-range-track,.was-validated .custom-range:valid::-moz-range-track{background:rgba(40,167,69,.35)}.custom-range.is-valid~.valid-feedback,.custom-range.is-valid~.valid-tooltip,.was-validated .custom-range:valid~.valid-feedback,.was-validated .custom-range:valid~.valid-tooltip{display:block}.custom-range.is-valid::-ms-thumb,.was-validated .custom-range:valid::-ms-thumb{background-color:#28a745;background-image:none}.custom-range.is-valid::-ms-thumb:active,.was-validated .custom-range:valid::-ms-thumb:active{background-color:#9be7ac;background-image:none}.custom-range.is-valid::-ms-track-lower,.was-validated .custom-range:valid::-ms-track-lower{background:rgba(40,167,69,.35)}.custom-range.is-valid::-ms-track-upper,.was-validated .custom-range:valid::-ms-track-upper{background:rgba(40,167,69,.35)}.input-group .custom-range.is-invalid,.was-validated .input-group .custom-range:invalid{border-color:#dc3545}.input-group .custom-range.is-invalid:focus,.was-validated .input-group .custom-range:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-range.is-invalid:focus::-webkit-slider-thumb,.was-validated .custom-range:invalid:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem #f6cdd1}.custom-range.is-invalid:focus::-moz-range-thumb,.was-validated .custom-range:invalid:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem #f6cdd1}.custom-range.is-invalid:focus::-ms-thumb,.was-validated .custom-range:invalid:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem #f6cdd1}.custom-range.is-invalid::-webkit-slider-thumb,.was-validated .custom-range:invalid::-webkit-slider-thumb{background-color:#dc3545;background-image:none}.custom-range.is-invalid::-webkit-slider-thumb:active,.was-validated .custom-range:invalid::-webkit-slider-thumb:active{background-color:#f6cdd1;background-image:none}.custom-range.is-invalid::-webkit-slider-runnable-track,.was-validated .custom-range:invalid::-webkit-slider-runnable-track{background-color:rgba(220,53,69,.35)}.custom-range.is-invalid::-moz-range-thumb,.was-validated .custom-range:invalid::-moz-range-thumb{background-color:#dc3545;background-image:none}.custom-range.is-invalid::-moz-range-thumb:active,.was-validated .custom-range:invalid::-moz-range-thumb:active{background-color:#f6cdd1;background-image:none}.custom-range.is-invalid::-moz-range-track,.was-validated .custom-range:invalid::-moz-range-track{background:rgba(220,53,69,.35)}.custom-range.is-invalid~.invalid-feedback,.custom-range.is-invalid~.invalid-tooltip,.was-validated .custom-range:invalid~.invalid-feedback,.was-validated .custom-range:invalid~.invalid-tooltip{display:block}.custom-range.is-invalid::-ms-thumb,.was-validated .custom-range:invalid::-ms-thumb{background-color:#dc3545;background-image:none}.custom-range.is-invalid::-ms-thumb:active,.was-validated .custom-range:invalid::-ms-thumb:active{background-color:#f6cdd1;background-image:none}.custom-range.is-invalid::-ms-track-lower,.was-validated .custom-range:invalid::-ms-track-lower{background:rgba(220,53,69,.35)}.custom-range.is-invalid::-ms-track-upper,.was-validated .custom-range:invalid::-ms-track-upper{background:rgba(220,53,69,.35)}.custom-radio.b-custom-control-lg,.input-group-lg .custom-radio{font-size:1.25rem;line-height:1.5;padding-left:1.875rem}.custom-radio.b-custom-control-lg .custom-control-label::before,.input-group-lg .custom-radio .custom-control-label::before{top:.3125rem;left:-1.875rem;width:1.25rem;height:1.25rem;border-radius:50%}.custom-radio.b-custom-control-lg .custom-control-label::after,.input-group-lg .custom-radio .custom-control-label::after{top:.3125rem;left:-1.875rem;width:1.25rem;height:1.25rem;background:no-repeat 50%/50% 50%}.custom-radio.b-custom-control-sm,.input-group-sm .custom-radio{font-size:.875rem;line-height:1.5;padding-left:1.3125rem}.custom-radio.b-custom-control-sm .custom-control-label::before,.input-group-sm .custom-radio .custom-control-label::before{top:.21875rem;left:-1.3125rem;width:.875rem;height:.875rem;border-radius:50%}.custom-radio.b-custom-control-sm .custom-control-label::after,.input-group-sm .custom-radio .custom-control-label::after{top:.21875rem;left:-1.3125rem;width:.875rem;height:.875rem;background:no-repeat 50%/50% 50%}.b-rating{text-align:center}.b-rating.d-inline-flex{width:auto}.b-rating .b-rating-star,.b-rating .b-rating-value{padding:0 .25em}.b-rating .b-rating-value{min-width:2.5em}.b-rating .b-rating-star{display:inline-flex;justify-content:center;outline:0}.b-rating .b-rating-star .b-rating-icon{display:inline-flex;transition:all .15s ease-in-out}.b-rating.disabled,.b-rating:disabled{background-color:#e9ecef;color:#6c757d}.b-rating:not(.disabled):not(.readonly) .b-rating-star{cursor:pointer}.b-rating:not(.disabled):not(.readonly) .b-rating-star:hover .b-rating-icon,.b-rating:not(.disabled):not(.readonly):focus:not(:hover) .b-rating-star.focused .b-rating-icon{-webkit-transform:scale(1.5);transform:scale(1.5)}.b-rating[dir=rtl] .b-rating-star-half{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.b-form-spinbutton{text-align:center;overflow:hidden;background-image:none;padding:0}.b-form-spinbutton[dir=rtl]:not(.flex-column),[dir=rtl] .b-form-spinbutton:not(.flex-column){flex-direction:row-reverse}.b-form-spinbutton output{font-size:inherit;outline:0;border:0;background-color:transparent;width:auto;margin:0;padding:0 .25rem}.b-form-spinbutton output>bdi,.b-form-spinbutton output>div{display:block;min-width:2.25em;height:1.5em}.b-form-spinbutton.flex-column{height:auto;width:auto}.b-form-spinbutton.flex-column output{margin:0 .25rem;padding:.25rem 0}.b-form-spinbutton:not(.d-inline-flex):not(.flex-column){output-width:100%}.b-form-spinbutton.d-inline-flex:not(.flex-column){width:auto}.b-form-spinbutton .btn{line-height:1;box-shadow:none!important}.b-form-spinbutton .btn:disabled{pointer-events:none}.b-form-spinbutton .btn:hover:not(:disabled)>div>.b-icon{-webkit-transform:scale(1.25);transform:scale(1.25)}.b-form-spinbutton.disabled,.b-form-spinbutton.readonly{background-color:#e9ecef}.b-form-spinbutton.disabled{pointer-events:none}.b-form-tags.focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.b-form-tags.focus.is-valid{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.b-form-tags.focus.is-invalid{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.b-form-tags.disabled{background-color:#e9ecef}.b-form-tag{font-size:75%;font-weight:400;line-height:1.5}.b-form-tag.disabled{opacity:.75}.b-form-tag>button.b-form-tag-remove{color:inherit;font-size:125%;line-height:1;float:none}.form-control-sm .b-form-tag{line-height:1.5}.form-control-lg .b-form-tag{line-height:1.5}.modal-backdrop{opacity:.5}.b-pagination-pills .page-item .page-link{border-radius:50rem!important;margin-left:.25rem;line-height:1}.b-pagination-pills .page-item:first-child .page-link{margin-left:0}.popover.b-popover{display:block;opacity:1;outline:0}.popover.b-popover.fade:not(.show){opacity:0}.popover.b-popover.show{opacity:1}.b-popover-primary.popover{background-color:#cce5ff;border-color:#b8daff}.b-popover-primary.bs-popover-auto[x-placement^=top]>.arrow::before,.b-popover-primary.bs-popover-top>.arrow::before{border-top-color:#b8daff}.b-popover-primary.bs-popover-auto[x-placement^=top]>.arrow::after,.b-popover-primary.bs-popover-top>.arrow::after{border-top-color:#cce5ff}.b-popover-primary.bs-popover-auto[x-placement^=right]>.arrow::before,.b-popover-primary.bs-popover-right>.arrow::before{border-right-color:#b8daff}.b-popover-primary.bs-popover-auto[x-placement^=right]>.arrow::after,.b-popover-primary.bs-popover-right>.arrow::after{border-right-color:#cce5ff}.b-popover-primary.bs-popover-auto[x-placement^=bottom]>.arrow::before,.b-popover-primary.bs-popover-bottom>.arrow::before{border-bottom-color:#b8daff}.b-popover-primary.bs-popover-auto[x-placement^=bottom]>.arrow::after,.b-popover-primary.bs-popover-bottom>.arrow::after{border-bottom-color:#bdddff}.b-popover-primary.bs-popover-auto[x-placement^=bottom] .popover-header::before,.b-popover-primary.bs-popover-bottom .popover-header::before{border-bottom-color:#bdddff}.b-popover-primary.bs-popover-auto[x-placement^=left]>.arrow::before,.b-popover-primary.bs-popover-left>.arrow::before{border-left-color:#b8daff}.b-popover-primary.bs-popover-auto[x-placement^=left]>.arrow::after,.b-popover-primary.bs-popover-left>.arrow::after{border-left-color:#cce5ff}.b-popover-primary .popover-header{color:#212529;background-color:#bdddff;border-bottom-color:#a3d0ff}.b-popover-primary .popover-body{color:#004085}.b-popover-secondary.popover{background-color:#e2e3e5;border-color:#d6d8db}.b-popover-secondary.bs-popover-auto[x-placement^=top]>.arrow::before,.b-popover-secondary.bs-popover-top>.arrow::before{border-top-color:#d6d8db}.b-popover-secondary.bs-popover-auto[x-placement^=top]>.arrow::after,.b-popover-secondary.bs-popover-top>.arrow::after{border-top-color:#e2e3e5}.b-popover-secondary.bs-popover-auto[x-placement^=right]>.arrow::before,.b-popover-secondary.bs-popover-right>.arrow::before{border-right-color:#d6d8db}.b-popover-secondary.bs-popover-auto[x-placement^=right]>.arrow::after,.b-popover-secondary.bs-popover-right>.arrow::after{border-right-color:#e2e3e5}.b-popover-secondary.bs-popover-auto[x-placement^=bottom]>.arrow::before,.b-popover-secondary.bs-popover-bottom>.arrow::before{border-bottom-color:#d6d8db}.b-popover-secondary.bs-popover-auto[x-placement^=bottom]>.arrow::after,.b-popover-secondary.bs-popover-bottom>.arrow::after{border-bottom-color:#dadbde}.b-popover-secondary.bs-popover-auto[x-placement^=bottom] .popover-header::before,.b-popover-secondary.bs-popover-bottom .popover-header::before{border-bottom-color:#dadbde}.b-popover-secondary.bs-popover-auto[x-placement^=left]>.arrow::before,.b-popover-secondary.bs-popover-left>.arrow::before{border-left-color:#d6d8db}.b-popover-secondary.bs-popover-auto[x-placement^=left]>.arrow::after,.b-popover-secondary.bs-popover-left>.arrow::after{border-left-color:#e2e3e5}.b-popover-secondary .popover-header{color:#212529;background-color:#dadbde;border-bottom-color:#ccced2}.b-popover-secondary .popover-body{color:#383d41}.b-popover-success.popover{background-color:#d4edda;border-color:#c3e6cb}.b-popover-success.bs-popover-auto[x-placement^=top]>.arrow::before,.b-popover-success.bs-popover-top>.arrow::before{border-top-color:#c3e6cb}.b-popover-success.bs-popover-auto[x-placement^=top]>.arrow::after,.b-popover-success.bs-popover-top>.arrow::after{border-top-color:#d4edda}.b-popover-success.bs-popover-auto[x-placement^=right]>.arrow::before,.b-popover-success.bs-popover-right>.arrow::before{border-right-color:#c3e6cb}.b-popover-success.bs-popover-auto[x-placement^=right]>.arrow::after,.b-popover-success.bs-popover-right>.arrow::after{border-right-color:#d4edda}.b-popover-success.bs-popover-auto[x-placement^=bottom]>.arrow::before,.b-popover-success.bs-popover-bottom>.arrow::before{border-bottom-color:#c3e6cb}.b-popover-success.bs-popover-auto[x-placement^=bottom]>.arrow::after,.b-popover-success.bs-popover-bottom>.arrow::after{border-bottom-color:#c9e8d1}.b-popover-success.bs-popover-auto[x-placement^=bottom] .popover-header::before,.b-popover-success.bs-popover-bottom .popover-header::before{border-bottom-color:#c9e8d1}.b-popover-success.bs-popover-auto[x-placement^=left]>.arrow::before,.b-popover-success.bs-popover-left>.arrow::before{border-left-color:#c3e6cb}.b-popover-success.bs-popover-auto[x-placement^=left]>.arrow::after,.b-popover-success.bs-popover-left>.arrow::after{border-left-color:#d4edda}.b-popover-success .popover-header{color:#212529;background-color:#c9e8d1;border-bottom-color:#b7e1c1}.b-popover-success .popover-body{color:#155724}.b-popover-info.popover{background-color:#d1ecf1;border-color:#bee5eb}.b-popover-info.bs-popover-auto[x-placement^=top]>.arrow::before,.b-popover-info.bs-popover-top>.arrow::before{border-top-color:#bee5eb}.b-popover-info.bs-popover-auto[x-placement^=top]>.arrow::after,.b-popover-info.bs-popover-top>.arrow::after{border-top-color:#d1ecf1}.b-popover-info.bs-popover-auto[x-placement^=right]>.arrow::before,.b-popover-info.bs-popover-right>.arrow::before{border-right-color:#bee5eb}.b-popover-info.bs-popover-auto[x-placement^=right]>.arrow::after,.b-popover-info.bs-popover-right>.arrow::after{border-right-color:#d1ecf1}.b-popover-info.bs-popover-auto[x-placement^=bottom]>.arrow::before,.b-popover-info.bs-popover-bottom>.arrow::before{border-bottom-color:#bee5eb}.b-popover-info.bs-popover-auto[x-placement^=bottom]>.arrow::after,.b-popover-info.bs-popover-bottom>.arrow::after{border-bottom-color:#c5e7ed}.b-popover-info.bs-popover-auto[x-placement^=bottom] .popover-header::before,.b-popover-info.bs-popover-bottom .popover-header::before{border-bottom-color:#c5e7ed}.b-popover-info.bs-popover-auto[x-placement^=left]>.arrow::before,.b-popover-info.bs-popover-left>.arrow::before{border-left-color:#bee5eb}.b-popover-info.bs-popover-auto[x-placement^=left]>.arrow::after,.b-popover-info.bs-popover-left>.arrow::after{border-left-color:#d1ecf1}.b-popover-info .popover-header{color:#212529;background-color:#c5e7ed;border-bottom-color:#b2dfe7}.b-popover-info .popover-body{color:#0c5460}.b-popover-warning.popover{background-color:#fff3cd;border-color:#ffeeba}.b-popover-warning.bs-popover-auto[x-placement^=top]>.arrow::before,.b-popover-warning.bs-popover-top>.arrow::before{border-top-color:#ffeeba}.b-popover-warning.bs-popover-auto[x-placement^=top]>.arrow::after,.b-popover-warning.bs-popover-top>.arrow::after{border-top-color:#fff3cd}.b-popover-warning.bs-popover-auto[x-placement^=right]>.arrow::before,.b-popover-warning.bs-popover-right>.arrow::before{border-right-color:#ffeeba}.b-popover-warning.bs-popover-auto[x-placement^=right]>.arrow::after,.b-popover-warning.bs-popover-right>.arrow::after{border-right-color:#fff3cd}.b-popover-warning.bs-popover-auto[x-placement^=bottom]>.arrow::before,.b-popover-warning.bs-popover-bottom>.arrow::before{border-bottom-color:#ffeeba}.b-popover-warning.bs-popover-auto[x-placement^=bottom]>.arrow::after,.b-popover-warning.bs-popover-bottom>.arrow::after{border-bottom-color:#ffefbe}.b-popover-warning.bs-popover-auto[x-placement^=bottom] .popover-header::before,.b-popover-warning.bs-popover-bottom .popover-header::before{border-bottom-color:#ffefbe}.b-popover-warning.bs-popover-auto[x-placement^=left]>.arrow::before,.b-popover-warning.bs-popover-left>.arrow::before{border-left-color:#ffeeba}.b-popover-warning.bs-popover-auto[x-placement^=left]>.arrow::after,.b-popover-warning.bs-popover-left>.arrow::after{border-left-color:#fff3cd}.b-popover-warning .popover-header{color:#212529;background-color:#ffefbe;border-bottom-color:#ffe9a4}.b-popover-warning .popover-body{color:#856404}.b-popover-danger.popover{background-color:#f8d7da;border-color:#f5c6cb}.b-popover-danger.bs-popover-auto[x-placement^=top]>.arrow::before,.b-popover-danger.bs-popover-top>.arrow::before{border-top-color:#f5c6cb}.b-popover-danger.bs-popover-auto[x-placement^=top]>.arrow::after,.b-popover-danger.bs-popover-top>.arrow::after{border-top-color:#f8d7da}.b-popover-danger.bs-popover-auto[x-placement^=right]>.arrow::before,.b-popover-danger.bs-popover-right>.arrow::before{border-right-color:#f5c6cb}.b-popover-danger.bs-popover-auto[x-placement^=right]>.arrow::after,.b-popover-danger.bs-popover-right>.arrow::after{border-right-color:#f8d7da}.b-popover-danger.bs-popover-auto[x-placement^=bottom]>.arrow::before,.b-popover-danger.bs-popover-bottom>.arrow::before{border-bottom-color:#f5c6cb}.b-popover-danger.bs-popover-auto[x-placement^=bottom]>.arrow::after,.b-popover-danger.bs-popover-bottom>.arrow::after{border-bottom-color:#f6cace}.b-popover-danger.bs-popover-auto[x-placement^=bottom] .popover-header::before,.b-popover-danger.bs-popover-bottom .popover-header::before{border-bottom-color:#f6cace}.b-popover-danger.bs-popover-auto[x-placement^=left]>.arrow::before,.b-popover-danger.bs-popover-left>.arrow::before{border-left-color:#f5c6cb}.b-popover-danger.bs-popover-auto[x-placement^=left]>.arrow::after,.b-popover-danger.bs-popover-left>.arrow::after{border-left-color:#f8d7da}.b-popover-danger .popover-header{color:#212529;background-color:#f6cace;border-bottom-color:#f2b4ba}.b-popover-danger .popover-body{color:#721c24}.b-popover-light.popover{background-color:#fefefe;border-color:#fdfdfe}.b-popover-light.bs-popover-auto[x-placement^=top]>.arrow::before,.b-popover-light.bs-popover-top>.arrow::before{border-top-color:#fdfdfe}.b-popover-light.bs-popover-auto[x-placement^=top]>.arrow::after,.b-popover-light.bs-popover-top>.arrow::after{border-top-color:#fefefe}.b-popover-light.bs-popover-auto[x-placement^=right]>.arrow::before,.b-popover-light.bs-popover-right>.arrow::before{border-right-color:#fdfdfe}.b-popover-light.bs-popover-auto[x-placement^=right]>.arrow::after,.b-popover-light.bs-popover-right>.arrow::after{border-right-color:#fefefe}.b-popover-light.bs-popover-auto[x-placement^=bottom]>.arrow::before,.b-popover-light.bs-popover-bottom>.arrow::before{border-bottom-color:#fdfdfe}.b-popover-light.bs-popover-auto[x-placement^=bottom]>.arrow::after,.b-popover-light.bs-popover-bottom>.arrow::after{border-bottom-color:#f6f6f6}.b-popover-light.bs-popover-auto[x-placement^=bottom] .popover-header::before,.b-popover-light.bs-popover-bottom .popover-header::before{border-bottom-color:#f6f6f6}.b-popover-light.bs-popover-auto[x-placement^=left]>.arrow::before,.b-popover-light.bs-popover-left>.arrow::before{border-left-color:#fdfdfe}.b-popover-light.bs-popover-auto[x-placement^=left]>.arrow::after,.b-popover-light.bs-popover-left>.arrow::after{border-left-color:#fefefe}.b-popover-light .popover-header{color:#212529;background-color:#f6f6f6;border-bottom-color:#eaeaea}.b-popover-light .popover-body{color:#818182}.b-popover-dark.popover{background-color:#d6d8d9;border-color:#c6c8ca}.b-popover-dark.bs-popover-auto[x-placement^=top]>.arrow::before,.b-popover-dark.bs-popover-top>.arrow::before{border-top-color:#c6c8ca}.b-popover-dark.bs-popover-auto[x-placement^=top]>.arrow::after,.b-popover-dark.bs-popover-top>.arrow::after{border-top-color:#d6d8d9}.b-popover-dark.bs-popover-auto[x-placement^=right]>.arrow::before,.b-popover-dark.bs-popover-right>.arrow::before{border-right-color:#c6c8ca}.b-popover-dark.bs-popover-auto[x-placement^=right]>.arrow::after,.b-popover-dark.bs-popover-right>.arrow::after{border-right-color:#d6d8d9}.b-popover-dark.bs-popover-auto[x-placement^=bottom]>.arrow::before,.b-popover-dark.bs-popover-bottom>.arrow::before{border-bottom-color:#c6c8ca}.b-popover-dark.bs-popover-auto[x-placement^=bottom]>.arrow::after,.b-popover-dark.bs-popover-bottom>.arrow::after{border-bottom-color:#ced0d2}.b-popover-dark.bs-popover-auto[x-placement^=bottom] .popover-header::before,.b-popover-dark.bs-popover-bottom .popover-header::before{border-bottom-color:#ced0d2}.b-popover-dark.bs-popover-auto[x-placement^=left]>.arrow::before,.b-popover-dark.bs-popover-left>.arrow::before{border-left-color:#c6c8ca}.b-popover-dark.bs-popover-auto[x-placement^=left]>.arrow::after,.b-popover-dark.bs-popover-left>.arrow::after{border-left-color:#d6d8d9}.b-popover-dark .popover-header{color:#212529;background-color:#ced0d2;border-bottom-color:#c1c4c5}.b-popover-dark .popover-body{color:#1b1e21}.b-sidebar-outer{position:fixed!important;top:0;left:0;right:0;height:0;overflow:visible;z-index:calc(1030 + 5)}.b-sidebar-backdrop{position:fixed!important;top:0;left:0;z-index:-1;width:100vw;height:100vh;opacity:.6}.b-sidebar{display:flex;flex-direction:column;position:fixed!important;top:0;height:100vh;width:320px;max-width:100%!important;height:100vh!important;margin:0!important;outline:0;-webkit-transform:translateX(0);transform:translateX(0)}.b-sidebar.slide{transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.b-sidebar.slide{transition:none}}.b-sidebar:not(.b-sidebar-right){left:0;right:auto}.b-sidebar:not(.b-sidebar-right).slide:not(.show){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.b-sidebar:not(.b-sidebar-right)>.b-sidebar-header .close{margin-left:auto}.b-sidebar.b-sidebar-right{left:auto;right:0}.b-sidebar.b-sidebar-right.slide:not(.show){-webkit-transform:translateX(100%);transform:translateX(100%)}.b-sidebar.b-sidebar-right>.b-sidebar-header .close{margin-right:auto}.b-sidebar>.b-sidebar-header{font-size:1.5rem;padding:.5rem 1rem;display:flex;flex-direction:row;flex-grow:0;align-items:center}[dir=rtl] .b-sidebar>.b-sidebar-header{flex-direction:row-reverse}.b-sidebar>.b-sidebar-header .close{float:none;font-size:1.5rem}.b-sidebar>.b-sidebar-body{flex-grow:1;height:100%;overflow-y:auto}.b-sidebar>.b-sidebar-footer{flex-grow:0}.table.b-table.b-table-fixed{table-layout:fixed}.table.b-table.b-table-no-border-collapse{border-collapse:separate;border-spacing:0}.table.b-table[aria-busy=true]{opacity:.55}.table.b-table>tbody>tr.b-table-details>td{border-top:none!important}.table.b-table>caption{caption-side:bottom}.table.b-table.b-table-caption-top>caption{caption-side:top!important}.table.b-table>tbody>.table-active,.table.b-table>tbody>.table-active>td,.table.b-table>tbody>.table-active>th{background-color:rgba(0,0,0,.075)}.table.b-table.table-hover>tbody>tr.table-active:hover td,.table.b-table.table-hover>tbody>tr.table-active:hover th{color:#212529;background-image:linear-gradient(rgba(0,0,0,.075),rgba(0,0,0,.075));background-repeat:no-repeat}.table.b-table>tbody>.bg-active,.table.b-table>tbody>.bg-active>td,.table.b-table>tbody>.bg-active>th{background-color:rgba(255,255,255,.075)!important}.table.b-table.table-hover.table-dark>tbody>tr.bg-active:hover td,.table.b-table.table-hover.table-dark>tbody>tr.bg-active:hover th{color:#fff;background-image:linear-gradient(rgba(255,255,255,.075),rgba(255,255,255,.075));background-repeat:no-repeat}.b-table-sticky-header,.table-responsive,[class*=table-responsive-]{margin-bottom:1rem}.b-table-sticky-header>.table,.table-responsive>.table,[class*=table-responsive-]>.table{margin-bottom:0}.b-table-sticky-header{overflow-y:auto;max-height:300px}@media print{.b-table-sticky-header{overflow-y:visible!important;max-height:none!important}}@supports ((position:-webkit-sticky) or (position:sticky)){.b-table-sticky-header>.table.b-table>thead>tr>th{position:-webkit-sticky;position:sticky;top:0;z-index:2}.b-table-sticky-header>.table.b-table>tbody>tr>.b-table-sticky-column,.b-table-sticky-header>.table.b-table>tfoot>tr>.b-table-sticky-column,.b-table-sticky-header>.table.b-table>thead>tr>.b-table-sticky-column,.table-responsive>.table.b-table>tbody>tr>.b-table-sticky-column,.table-responsive>.table.b-table>tfoot>tr>.b-table-sticky-column,.table-responsive>.table.b-table>thead>tr>.b-table-sticky-column,[class*=table-responsive-]>.table.b-table>tbody>tr>.b-table-sticky-column,[class*=table-responsive-]>.table.b-table>tfoot>tr>.b-table-sticky-column,[class*=table-responsive-]>.table.b-table>thead>tr>.b-table-sticky-column{position:-webkit-sticky;position:sticky;left:0}.b-table-sticky-header>.table.b-table>thead>tr>.b-table-sticky-column,.table-responsive>.table.b-table>thead>tr>.b-table-sticky-column,[class*=table-responsive-]>.table.b-table>thead>tr>.b-table-sticky-column{z-index:5}.b-table-sticky-header>.table.b-table>tbody>tr>.b-table-sticky-column,.b-table-sticky-header>.table.b-table>tfoot>tr>.b-table-sticky-column,.table-responsive>.table.b-table>tbody>tr>.b-table-sticky-column,.table-responsive>.table.b-table>tfoot>tr>.b-table-sticky-column,[class*=table-responsive-]>.table.b-table>tbody>tr>.b-table-sticky-column,[class*=table-responsive-]>.table.b-table>tfoot>tr>.b-table-sticky-column{z-index:2}.table.b-table>tbody>tr>.table-b-table-default,.table.b-table>tfoot>tr>.table-b-table-default,.table.b-table>thead>tr>.table-b-table-default{color:#212529;background-color:#fff}.table.b-table.table-dark>tbody>tr>.bg-b-table-default,.table.b-table.table-dark>tfoot>tr>.bg-b-table-default,.table.b-table.table-dark>thead>tr>.bg-b-table-default{color:#fff;background-color:#343a40}.table.b-table.table-striped>tbody>tr:nth-of-type(odd)>.table-b-table-default{background-image:linear-gradient(rgba(0,0,0,.05),rgba(0,0,0,.05));background-repeat:no-repeat}.table.b-table.table-striped.table-dark>tbody>tr:nth-of-type(odd)>.bg-b-table-default{background-image:linear-gradient(rgba(255,255,255,.05),rgba(255,255,255,.05));background-repeat:no-repeat}.table.b-table.table-hover>tbody>tr:hover>.table-b-table-default{color:#212529;background-image:linear-gradient(rgba(0,0,0,.075),rgba(0,0,0,.075));background-repeat:no-repeat}.table.b-table.table-hover.table-dark>tbody>tr:hover>.bg-b-table-default{color:#fff;background-image:linear-gradient(rgba(255,255,255,.075),rgba(255,255,255,.075));background-repeat:no-repeat}}.table.b-table>tfoot>tr>[aria-sort],.table.b-table>thead>tr>[aria-sort]{cursor:pointer;background-image:none;background-repeat:no-repeat;background-size:.65em 1em}.table.b-table>tfoot>tr>[aria-sort]:not(.b-table-sort-icon-left),.table.b-table>thead>tr>[aria-sort]:not(.b-table-sort-icon-left){background-position:right calc(.75rem / 2) center;padding-right:calc(.75rem + .65em)}.table.b-table>tfoot>tr>[aria-sort].b-table-sort-icon-left,.table.b-table>thead>tr>[aria-sort].b-table-sort-icon-left{background-position:left calc(.75rem / 2) center;padding-left:calc(.75rem + .65em)}.table.b-table>tfoot>tr>[aria-sort=none],.table.b-table>thead>tr>[aria-sort=none]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'%3e%3cpath fill='black' opacity='.3' d='M51 1l25 23 24 22H1l25-22zM51 101l25-23 24-22H1l25 22z'/%3e%3c/svg%3e")}.table.b-table>tfoot>tr>[aria-sort=ascending],.table.b-table>thead>tr>[aria-sort=ascending]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'%3e%3cpath fill='black' d='M51 1l25 23 24 22H1l25-22z'/%3e%3cpath fill='black' opacity='.3' d='M51 101l25-23 24-22H1l25 22z'/%3e%3c/svg%3e")}.table.b-table>tfoot>tr>[aria-sort=descending],.table.b-table>thead>tr>[aria-sort=descending]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'%3e%3cpath fill='black' opacity='.3' d='M51 1l25 23 24 22H1l25-22z'/%3e%3cpath fill='black' d='M51 101l25-23 24-22H1l25 22z'/%3e%3c/svg%3e")}.table.b-table.table-dark>tfoot>tr>[aria-sort=none],.table.b-table.table-dark>thead>tr>[aria-sort=none],.table.b-table>.thead-dark>tr>[aria-sort=none]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'%3e%3cpath fill='white' opacity='.3' d='M51 1l25 23 24 22H1l25-22zM51 101l25-23 24-22H1l25 22z'/%3e%3c/svg%3e")}.table.b-table.table-dark>tfoot>tr>[aria-sort=ascending],.table.b-table.table-dark>thead>tr>[aria-sort=ascending],.table.b-table>.thead-dark>tr>[aria-sort=ascending]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'%3e%3cpath fill='white' d='M51 1l25 23 24 22H1l25-22z'/%3e%3cpath fill='white' opacity='.3' d='M51 101l25-23 24-22H1l25 22z'/%3e%3c/svg%3e")}.table.b-table.table-dark>tfoot>tr>[aria-sort=descending],.table.b-table.table-dark>thead>tr>[aria-sort=descending],.table.b-table>.thead-dark>tr>[aria-sort=descending]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'%3e%3cpath fill='white' opacity='.3' d='M51 1l25 23 24 22H1l25-22z'/%3e%3cpath fill='white' d='M51 101l25-23 24-22H1l25 22z'/%3e%3c/svg%3e")}.table.b-table>tfoot>tr>.table-dark[aria-sort=none],.table.b-table>thead>tr>.table-dark[aria-sort=none]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'%3e%3cpath fill='white' opacity='.3' d='M51 1l25 23 24 22H1l25-22zM51 101l25-23 24-22H1l25 22z'/%3e%3c/svg%3e")}.table.b-table>tfoot>tr>.table-dark[aria-sort=ascending],.table.b-table>thead>tr>.table-dark[aria-sort=ascending]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'%3e%3cpath fill='white' d='M51 1l25 23 24 22H1l25-22z'/%3e%3cpath fill='white' opacity='.3' d='M51 101l25-23 24-22H1l25 22z'/%3e%3c/svg%3e")}.table.b-table>tfoot>tr>.table-dark[aria-sort=descending],.table.b-table>thead>tr>.table-dark[aria-sort=descending]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='101' height='101' view-box='0 0 101 101' preserveAspectRatio='none'%3e%3cpath fill='white' opacity='.3' d='M51 1l25 23 24 22H1l25-22z'/%3e%3cpath fill='white' d='M51 101l25-23 24-22H1l25 22z'/%3e%3c/svg%3e")}.table.b-table.table-sm>tfoot>tr>[aria-sort]:not(.b-table-sort-icon-left),.table.b-table.table-sm>thead>tr>[aria-sort]:not(.b-table-sort-icon-left){background-position:right calc(.3rem / 2) center;padding-right:calc(.3rem + .65em)}.table.b-table.table-sm>tfoot>tr>[aria-sort].b-table-sort-icon-left,.table.b-table.table-sm>thead>tr>[aria-sort].b-table-sort-icon-left{background-position:left calc(.3rem / 2) center;padding-left:calc(.3rem + .65em)}.table.b-table.b-table-selectable:not(.b-table-selectable-no-click)>tbody>tr{cursor:pointer}.table.b-table.b-table-selectable:not(.b-table-selectable-no-click).b-table-selecting.b-table-select-range>tbody>tr{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media (max-width:575.98px){.table.b-table.b-table-stacked-sm{display:block;width:100%}.table.b-table.b-table-stacked-sm>caption,.table.b-table.b-table-stacked-sm>tbody,.table.b-table.b-table-stacked-sm>tbody>tr,.table.b-table.b-table-stacked-sm>tbody>tr>td,.table.b-table.b-table-stacked-sm>tbody>tr>th{display:block}.table.b-table.b-table-stacked-sm>tfoot,.table.b-table.b-table-stacked-sm>thead{display:none}.table.b-table.b-table-stacked-sm>tfoot>tr.b-table-bottom-row,.table.b-table.b-table-stacked-sm>tfoot>tr.b-table-top-row,.table.b-table.b-table-stacked-sm>thead>tr.b-table-bottom-row,.table.b-table.b-table-stacked-sm>thead>tr.b-table-top-row{display:none}.table.b-table.b-table-stacked-sm>caption{caption-side:top!important}.table.b-table.b-table-stacked-sm>tbody>tr>[data-label]::before{content:attr(data-label);width:40%;float:left;text-align:right;overflow-wrap:break-word;font-weight:700;font-style:normal;padding:0 calc(1rem / 2) 0 0;margin:0}.table.b-table.b-table-stacked-sm>tbody>tr>[data-label]::after{display:block;clear:both;content:""}.table.b-table.b-table-stacked-sm>tbody>tr>[data-label]>div{display:inline-block;width:calc(100% - 40%);padding:0 0 0 calc(1rem / 2);margin:0}.table.b-table.b-table-stacked-sm>tbody>tr.bottom-row,.table.b-table.b-table-stacked-sm>tbody>tr.top-row{display:none}.table.b-table.b-table-stacked-sm>tbody>tr>:first-child{border-top-width:3px}.table.b-table.b-table-stacked-sm>tbody>tr>[rowspan]+td,.table.b-table.b-table-stacked-sm>tbody>tr>[rowspan]+th{border-top-width:3px}}@media (max-width:767.98px){.table.b-table.b-table-stacked-md{display:block;width:100%}.table.b-table.b-table-stacked-md>caption,.table.b-table.b-table-stacked-md>tbody,.table.b-table.b-table-stacked-md>tbody>tr,.table.b-table.b-table-stacked-md>tbody>tr>td,.table.b-table.b-table-stacked-md>tbody>tr>th{display:block}.table.b-table.b-table-stacked-md>tfoot,.table.b-table.b-table-stacked-md>thead{display:none}.table.b-table.b-table-stacked-md>tfoot>tr.b-table-bottom-row,.table.b-table.b-table-stacked-md>tfoot>tr.b-table-top-row,.table.b-table.b-table-stacked-md>thead>tr.b-table-bottom-row,.table.b-table.b-table-stacked-md>thead>tr.b-table-top-row{display:none}.table.b-table.b-table-stacked-md>caption{caption-side:top!important}.table.b-table.b-table-stacked-md>tbody>tr>[data-label]::before{content:attr(data-label);width:40%;float:left;text-align:right;overflow-wrap:break-word;font-weight:700;font-style:normal;padding:0 calc(1rem / 2) 0 0;margin:0}.table.b-table.b-table-stacked-md>tbody>tr>[data-label]::after{display:block;clear:both;content:""}.table.b-table.b-table-stacked-md>tbody>tr>[data-label]>div{display:inline-block;width:calc(100% - 40%);padding:0 0 0 calc(1rem / 2);margin:0}.table.b-table.b-table-stacked-md>tbody>tr.bottom-row,.table.b-table.b-table-stacked-md>tbody>tr.top-row{display:none}.table.b-table.b-table-stacked-md>tbody>tr>:first-child{border-top-width:3px}.table.b-table.b-table-stacked-md>tbody>tr>[rowspan]+td,.table.b-table.b-table-stacked-md>tbody>tr>[rowspan]+th{border-top-width:3px}}@media (max-width:991.98px){.table.b-table.b-table-stacked-lg{display:block;width:100%}.table.b-table.b-table-stacked-lg>caption,.table.b-table.b-table-stacked-lg>tbody,.table.b-table.b-table-stacked-lg>tbody>tr,.table.b-table.b-table-stacked-lg>tbody>tr>td,.table.b-table.b-table-stacked-lg>tbody>tr>th{display:block}.table.b-table.b-table-stacked-lg>tfoot,.table.b-table.b-table-stacked-lg>thead{display:none}.table.b-table.b-table-stacked-lg>tfoot>tr.b-table-bottom-row,.table.b-table.b-table-stacked-lg>tfoot>tr.b-table-top-row,.table.b-table.b-table-stacked-lg>thead>tr.b-table-bottom-row,.table.b-table.b-table-stacked-lg>thead>tr.b-table-top-row{display:none}.table.b-table.b-table-stacked-lg>caption{caption-side:top!important}.table.b-table.b-table-stacked-lg>tbody>tr>[data-label]::before{content:attr(data-label);width:40%;float:left;text-align:right;overflow-wrap:break-word;font-weight:700;font-style:normal;padding:0 calc(1rem / 2) 0 0;margin:0}.table.b-table.b-table-stacked-lg>tbody>tr>[data-label]::after{display:block;clear:both;content:""}.table.b-table.b-table-stacked-lg>tbody>tr>[data-label]>div{display:inline-block;width:calc(100% - 40%);padding:0 0 0 calc(1rem / 2);margin:0}.table.b-table.b-table-stacked-lg>tbody>tr.bottom-row,.table.b-table.b-table-stacked-lg>tbody>tr.top-row{display:none}.table.b-table.b-table-stacked-lg>tbody>tr>:first-child{border-top-width:3px}.table.b-table.b-table-stacked-lg>tbody>tr>[rowspan]+td,.table.b-table.b-table-stacked-lg>tbody>tr>[rowspan]+th{border-top-width:3px}}@media (max-width:1199.98px){.table.b-table.b-table-stacked-xl{display:block;width:100%}.table.b-table.b-table-stacked-xl>caption,.table.b-table.b-table-stacked-xl>tbody,.table.b-table.b-table-stacked-xl>tbody>tr,.table.b-table.b-table-stacked-xl>tbody>tr>td,.table.b-table.b-table-stacked-xl>tbody>tr>th{display:block}.table.b-table.b-table-stacked-xl>tfoot,.table.b-table.b-table-stacked-xl>thead{display:none}.table.b-table.b-table-stacked-xl>tfoot>tr.b-table-bottom-row,.table.b-table.b-table-stacked-xl>tfoot>tr.b-table-top-row,.table.b-table.b-table-stacked-xl>thead>tr.b-table-bottom-row,.table.b-table.b-table-stacked-xl>thead>tr.b-table-top-row{display:none}.table.b-table.b-table-stacked-xl>caption{caption-side:top!important}.table.b-table.b-table-stacked-xl>tbody>tr>[data-label]::before{content:attr(data-label);width:40%;float:left;text-align:right;overflow-wrap:break-word;font-weight:700;font-style:normal;padding:0 calc(1rem / 2) 0 0;margin:0}.table.b-table.b-table-stacked-xl>tbody>tr>[data-label]::after{display:block;clear:both;content:""}.table.b-table.b-table-stacked-xl>tbody>tr>[data-label]>div{display:inline-block;width:calc(100% - 40%);padding:0 0 0 calc(1rem / 2);margin:0}.table.b-table.b-table-stacked-xl>tbody>tr.bottom-row,.table.b-table.b-table-stacked-xl>tbody>tr.top-row{display:none}.table.b-table.b-table-stacked-xl>tbody>tr>:first-child{border-top-width:3px}.table.b-table.b-table-stacked-xl>tbody>tr>[rowspan]+td,.table.b-table.b-table-stacked-xl>tbody>tr>[rowspan]+th{border-top-width:3px}}.table.b-table.b-table-stacked{display:block;width:100%}.table.b-table.b-table-stacked>caption,.table.b-table.b-table-stacked>tbody,.table.b-table.b-table-stacked>tbody>tr,.table.b-table.b-table-stacked>tbody>tr>td,.table.b-table.b-table-stacked>tbody>tr>th{display:block}.table.b-table.b-table-stacked>tfoot,.table.b-table.b-table-stacked>thead{display:none}.table.b-table.b-table-stacked>tfoot>tr.b-table-bottom-row,.table.b-table.b-table-stacked>tfoot>tr.b-table-top-row,.table.b-table.b-table-stacked>thead>tr.b-table-bottom-row,.table.b-table.b-table-stacked>thead>tr.b-table-top-row{display:none}.table.b-table.b-table-stacked>caption{caption-side:top!important}.table.b-table.b-table-stacked>tbody>tr>[data-label]::before{content:attr(data-label);width:40%;float:left;text-align:right;overflow-wrap:break-word;font-weight:700;font-style:normal;padding:0 calc(1rem / 2) 0 0;margin:0}.table.b-table.b-table-stacked>tbody>tr>[data-label]::after{display:block;clear:both;content:""}.table.b-table.b-table-stacked>tbody>tr>[data-label]>div{display:inline-block;width:calc(100% - 40%);padding:0 0 0 calc(1rem / 2);margin:0}.table.b-table.b-table-stacked>tbody>tr.bottom-row,.table.b-table.b-table-stacked>tbody>tr.top-row{display:none}.table.b-table.b-table-stacked>tbody>tr>:first-child{border-top-width:3px}.table.b-table.b-table-stacked>tbody>tr>[rowspan]+td,.table.b-table.b-table-stacked>tbody>tr>[rowspan]+th{border-top-width:3px}.b-time{min-width:150px}.b-time output.disabled,.b-time[aria-disabled=true] output,.b-time[aria-readonly=true] output{background-color:#e9ecef;opacity:1}.b-time[aria-disabled=true] output{pointer-events:none}[dir=rtl] .b-time>.d-flex:not(.flex-column){flex-direction:row-reverse}.b-time .b-time-header{margin-bottom:.5rem}.b-time .b-time-header output{padding:.25rem;font-size:80%}.b-time .b-time-footer{margin-top:.5rem}.b-time .b-time-ampm{margin-left:.5rem}.b-toast{display:block;position:relative;max-width:350px;-webkit-backface-visibility:hidden;backface-visibility:hidden;background-clip:padding-box;z-index:1;border-radius:.25rem}.b-toast .toast{background-color:rgba(255,255,255,.85)}.b-toast:not(:last-child){margin-bottom:.75rem}.b-toast.b-toast-solid .toast{background-color:#fff}.b-toast .toast{opacity:1}.b-toast .toast.fade:not(.show){opacity:0}.b-toast .toast .toast-body{display:block}.b-toast-primary .toast{background-color:rgba(230,242,255,.85);border-color:rgba(184,218,255,.85);color:#004085}.b-toast-primary .toast .toast-header{color:#004085;background-color:rgba(204,229,255,.85);border-bottom-color:rgba(184,218,255,.85)}.b-toast-primary.b-toast-solid .toast{background-color:#e6f2ff}.b-toast-secondary .toast{background-color:rgba(239,240,241,.85);border-color:rgba(214,216,219,.85);color:#383d41}.b-toast-secondary .toast .toast-header{color:#383d41;background-color:rgba(226,227,229,.85);border-bottom-color:rgba(214,216,219,.85)}.b-toast-secondary.b-toast-solid .toast{background-color:#eff0f1}.b-toast-success .toast{background-color:rgba(230,245,233,.85);border-color:rgba(195,230,203,.85);color:#155724}.b-toast-success .toast .toast-header{color:#155724;background-color:rgba(212,237,218,.85);border-bottom-color:rgba(195,230,203,.85)}.b-toast-success.b-toast-solid .toast{background-color:#e6f5e9}.b-toast-info .toast{background-color:rgba(229,244,247,.85);border-color:rgba(190,229,235,.85);color:#0c5460}.b-toast-info .toast .toast-header{color:#0c5460;background-color:rgba(209,236,241,.85);border-bottom-color:rgba(190,229,235,.85)}.b-toast-info.b-toast-solid .toast{background-color:#e5f4f7}.b-toast-warning .toast{background-color:rgba(255,249,231,.85);border-color:rgba(255,238,186,.85);color:#856404}.b-toast-warning .toast .toast-header{color:#856404;background-color:rgba(255,243,205,.85);border-bottom-color:rgba(255,238,186,.85)}.b-toast-warning.b-toast-solid .toast{background-color:#fff9e7}.b-toast-danger .toast{background-color:rgba(252,237,238,.85);border-color:rgba(245,198,203,.85);color:#721c24}.b-toast-danger .toast .toast-header{color:#721c24;background-color:rgba(248,215,218,.85);border-bottom-color:rgba(245,198,203,.85)}.b-toast-danger.b-toast-solid .toast{background-color:#fcedee}.b-toast-light .toast{background-color:rgba(255,255,255,.85);border-color:rgba(253,253,254,.85);color:#818182}.b-toast-light .toast .toast-header{color:#818182;background-color:rgba(254,254,254,.85);border-bottom-color:rgba(253,253,254,.85)}.b-toast-light.b-toast-solid .toast{background-color:#fff}.b-toast-dark .toast{background-color:rgba(227,229,229,.85);border-color:rgba(198,200,202,.85);color:#1b1e21}.b-toast-dark .toast .toast-header{color:#1b1e21;background-color:rgba(214,216,217,.85);border-bottom-color:rgba(198,200,202,.85)}.b-toast-dark.b-toast-solid .toast{background-color:#e3e5e5}.b-toaster{z-index:1100}.b-toaster .b-toaster-slot{position:relative;display:block}.b-toaster .b-toaster-slot:empty{display:none!important}.b-toaster.b-toaster-bottom-center,.b-toaster.b-toaster-bottom-full,.b-toaster.b-toaster-bottom-left,.b-toaster.b-toaster-bottom-right,.b-toaster.b-toaster-top-center,.b-toaster.b-toaster-top-full,.b-toaster.b-toaster-top-left,.b-toaster.b-toaster-top-right{position:fixed;left:.5rem;right:.5rem;margin:0;padding:0;height:0;overflow:visible}.b-toaster.b-toaster-bottom-center .b-toaster-slot,.b-toaster.b-toaster-bottom-full .b-toaster-slot,.b-toaster.b-toaster-bottom-left .b-toaster-slot,.b-toaster.b-toaster-bottom-right .b-toaster-slot,.b-toaster.b-toaster-top-center .b-toaster-slot,.b-toaster.b-toaster-top-full .b-toaster-slot,.b-toaster.b-toaster-top-left .b-toaster-slot,.b-toaster.b-toaster-top-right .b-toaster-slot{position:absolute;max-width:350px;width:100%;left:0;right:0;padding:0;margin:0}.b-toaster.b-toaster-bottom-full .b-toaster-slot,.b-toaster.b-toaster-top-full .b-toaster-slot{width:100%;max-width:100%}.b-toaster.b-toaster-bottom-full .b-toaster-slot .b-toast,.b-toaster.b-toaster-bottom-full .b-toaster-slot .toast,.b-toaster.b-toaster-top-full .b-toaster-slot .b-toast,.b-toaster.b-toaster-top-full .b-toaster-slot .toast{width:100%;max-width:100%}.b-toaster.b-toaster-top-center,.b-toaster.b-toaster-top-full,.b-toaster.b-toaster-top-left,.b-toaster.b-toaster-top-right{top:0}.b-toaster.b-toaster-top-center .b-toaster-slot,.b-toaster.b-toaster-top-full .b-toaster-slot,.b-toaster.b-toaster-top-left .b-toaster-slot,.b-toaster.b-toaster-top-right .b-toaster-slot{top:.5rem}.b-toaster.b-toaster-bottom-center,.b-toaster.b-toaster-bottom-full,.b-toaster.b-toaster-bottom-left,.b-toaster.b-toaster-bottom-right{bottom:0}.b-toaster.b-toaster-bottom-center .b-toaster-slot,.b-toaster.b-toaster-bottom-full .b-toaster-slot,.b-toaster.b-toaster-bottom-left .b-toaster-slot,.b-toaster.b-toaster-bottom-right .b-toaster-slot{bottom:.5rem}.b-toaster.b-toaster-bottom-center .b-toaster-slot,.b-toaster.b-toaster-bottom-right .b-toaster-slot,.b-toaster.b-toaster-top-center .b-toaster-slot,.b-toaster.b-toaster-top-right .b-toaster-slot{margin-left:auto}.b-toaster.b-toaster-bottom-center .b-toaster-slot,.b-toaster.b-toaster-bottom-left .b-toaster-slot,.b-toaster.b-toaster-top-center .b-toaster-slot,.b-toaster.b-toaster-top-left .b-toaster-slot{margin-right:auto}.b-toaster.b-toaster-bottom-left .b-toast.b-toaster-enter-active,.b-toaster.b-toaster-bottom-left .b-toast.b-toaster-leave-active,.b-toaster.b-toaster-bottom-left .b-toast.b-toaster-move,.b-toaster.b-toaster-bottom-right .b-toast.b-toaster-enter-active,.b-toaster.b-toaster-bottom-right .b-toast.b-toaster-leave-active,.b-toaster.b-toaster-bottom-right .b-toast.b-toaster-move,.b-toaster.b-toaster-top-left .b-toast.b-toaster-enter-active,.b-toaster.b-toaster-top-left .b-toast.b-toaster-leave-active,.b-toaster.b-toaster-top-left .b-toast.b-toaster-move,.b-toaster.b-toaster-top-right .b-toast.b-toaster-enter-active,.b-toaster.b-toaster-top-right .b-toast.b-toaster-leave-active,.b-toaster.b-toaster-top-right .b-toast.b-toaster-move{transition:-webkit-transform 175ms;transition:transform 175ms;transition:transform 175ms,-webkit-transform 175ms}.b-toaster.b-toaster-bottom-left .b-toast.b-toaster-enter-active .toast.fade,.b-toaster.b-toaster-bottom-left .b-toast.b-toaster-enter-to .toast.fade,.b-toaster.b-toaster-bottom-right .b-toast.b-toaster-enter-active .toast.fade,.b-toaster.b-toaster-bottom-right .b-toast.b-toaster-enter-to .toast.fade,.b-toaster.b-toaster-top-left .b-toast.b-toaster-enter-active .toast.fade,.b-toaster.b-toaster-top-left .b-toast.b-toaster-enter-to .toast.fade,.b-toaster.b-toaster-top-right .b-toast.b-toaster-enter-active .toast.fade,.b-toaster.b-toaster-top-right .b-toast.b-toaster-enter-to .toast.fade{transition-delay:175ms}.b-toaster.b-toaster-bottom-left .b-toast.b-toaster-leave-active,.b-toaster.b-toaster-bottom-right .b-toast.b-toaster-leave-active,.b-toaster.b-toaster-top-left .b-toast.b-toaster-leave-active,.b-toaster.b-toaster-top-right .b-toast.b-toaster-leave-active{position:absolute;transition-delay:175ms}.b-toaster.b-toaster-bottom-left .b-toast.b-toaster-leave-active .toast.fade,.b-toaster.b-toaster-bottom-right .b-toast.b-toaster-leave-active .toast.fade,.b-toaster.b-toaster-top-left .b-toast.b-toaster-leave-active .toast.fade,.b-toaster.b-toaster-top-right .b-toast.b-toaster-leave-active .toast.fade{transition-delay:0s}.tooltip.b-tooltip{display:block;opacity:.9;outline:0}.tooltip.b-tooltip.fade:not(.show){opacity:0}.tooltip.b-tooltip.show{opacity:.9}.tooltip.b-tooltip.noninteractive{pointer-events:none}.tooltip.b-tooltip .arrow{margin:0 .25rem}.tooltip.b-tooltip.b-tooltip-danger.bs-tooltip-auto[x-placement^=left] .arrow,.tooltip.b-tooltip.b-tooltip-danger.bs-tooltip-auto[x-placement^=right] .arrow,.tooltip.b-tooltip.b-tooltip-dark.bs-tooltip-auto[x-placement^=left] .arrow,.tooltip.b-tooltip.b-tooltip-dark.bs-tooltip-auto[x-placement^=right] .arrow,.tooltip.b-tooltip.b-tooltip-info.bs-tooltip-auto[x-placement^=left] .arrow,.tooltip.b-tooltip.b-tooltip-info.bs-tooltip-auto[x-placement^=right] .arrow,.tooltip.b-tooltip.b-tooltip-light.bs-tooltip-auto[x-placement^=left] .arrow,.tooltip.b-tooltip.b-tooltip-light.bs-tooltip-auto[x-placement^=right] .arrow,.tooltip.b-tooltip.b-tooltip-primary.bs-tooltip-auto[x-placement^=left] .arrow,.tooltip.b-tooltip.b-tooltip-primary.bs-tooltip-auto[x-placement^=right] .arrow,.tooltip.b-tooltip.b-tooltip-secondary.bs-tooltip-auto[x-placement^=left] .arrow,.tooltip.b-tooltip.b-tooltip-secondary.bs-tooltip-auto[x-placement^=right] .arrow,.tooltip.b-tooltip.b-tooltip-success.bs-tooltip-auto[x-placement^=left] .arrow,.tooltip.b-tooltip.b-tooltip-success.bs-tooltip-auto[x-placement^=right] .arrow,.tooltip.b-tooltip.b-tooltip-warning.bs-tooltip-auto[x-placement^=left] .arrow,.tooltip.b-tooltip.b-tooltip-warning.bs-tooltip-auto[x-placement^=right] .arrow,.tooltip.b-tooltip.bs-tooltip-left .arrow,.tooltip.b-tooltip.bs-tooltip-right .arrow{margin:.25rem 0}.tooltip.b-tooltip-primary.bs-tooltip-auto[x-placement^=top] .arrow::before,.tooltip.b-tooltip-primary.bs-tooltip-top .arrow::before{border-top-color:#007bff}.tooltip.b-tooltip-primary.bs-tooltip-auto[x-placement^=right] .arrow::before,.tooltip.b-tooltip-primary.bs-tooltip-right .arrow::before{border-right-color:#007bff}.tooltip.b-tooltip-primary.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.tooltip.b-tooltip-primary.bs-tooltip-bottom .arrow::before{border-bottom-color:#007bff}.tooltip.b-tooltip-primary.bs-tooltip-auto[x-placement^=left] .arrow::before,.tooltip.b-tooltip-primary.bs-tooltip-left .arrow::before{border-left-color:#007bff}.tooltip.b-tooltip-primary .tooltip-inner{color:#fff;background-color:#007bff}.tooltip.b-tooltip-secondary.bs-tooltip-auto[x-placement^=top] .arrow::before,.tooltip.b-tooltip-secondary.bs-tooltip-top .arrow::before{border-top-color:#6c757d}.tooltip.b-tooltip-secondary.bs-tooltip-auto[x-placement^=right] .arrow::before,.tooltip.b-tooltip-secondary.bs-tooltip-right .arrow::before{border-right-color:#6c757d}.tooltip.b-tooltip-secondary.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.tooltip.b-tooltip-secondary.bs-tooltip-bottom .arrow::before{border-bottom-color:#6c757d}.tooltip.b-tooltip-secondary.bs-tooltip-auto[x-placement^=left] .arrow::before,.tooltip.b-tooltip-secondary.bs-tooltip-left .arrow::before{border-left-color:#6c757d}.tooltip.b-tooltip-secondary .tooltip-inner{color:#fff;background-color:#6c757d}.tooltip.b-tooltip-success.bs-tooltip-auto[x-placement^=top] .arrow::before,.tooltip.b-tooltip-success.bs-tooltip-top .arrow::before{border-top-color:#28a745}.tooltip.b-tooltip-success.bs-tooltip-auto[x-placement^=right] .arrow::before,.tooltip.b-tooltip-success.bs-tooltip-right .arrow::before{border-right-color:#28a745}.tooltip.b-tooltip-success.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.tooltip.b-tooltip-success.bs-tooltip-bottom .arrow::before{border-bottom-color:#28a745}.tooltip.b-tooltip-success.bs-tooltip-auto[x-placement^=left] .arrow::before,.tooltip.b-tooltip-success.bs-tooltip-left .arrow::before{border-left-color:#28a745}.tooltip.b-tooltip-success .tooltip-inner{color:#fff;background-color:#28a745}.tooltip.b-tooltip-info.bs-tooltip-auto[x-placement^=top] .arrow::before,.tooltip.b-tooltip-info.bs-tooltip-top .arrow::before{border-top-color:#17a2b8}.tooltip.b-tooltip-info.bs-tooltip-auto[x-placement^=right] .arrow::before,.tooltip.b-tooltip-info.bs-tooltip-right .arrow::before{border-right-color:#17a2b8}.tooltip.b-tooltip-info.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.tooltip.b-tooltip-info.bs-tooltip-bottom .arrow::before{border-bottom-color:#17a2b8}.tooltip.b-tooltip-info.bs-tooltip-auto[x-placement^=left] .arrow::before,.tooltip.b-tooltip-info.bs-tooltip-left .arrow::before{border-left-color:#17a2b8}.tooltip.b-tooltip-info .tooltip-inner{color:#fff;background-color:#17a2b8}.tooltip.b-tooltip-warning.bs-tooltip-auto[x-placement^=top] .arrow::before,.tooltip.b-tooltip-warning.bs-tooltip-top .arrow::before{border-top-color:#ffc107}.tooltip.b-tooltip-warning.bs-tooltip-auto[x-placement^=right] .arrow::before,.tooltip.b-tooltip-warning.bs-tooltip-right .arrow::before{border-right-color:#ffc107}.tooltip.b-tooltip-warning.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.tooltip.b-tooltip-warning.bs-tooltip-bottom .arrow::before{border-bottom-color:#ffc107}.tooltip.b-tooltip-warning.bs-tooltip-auto[x-placement^=left] .arrow::before,.tooltip.b-tooltip-warning.bs-tooltip-left .arrow::before{border-left-color:#ffc107}.tooltip.b-tooltip-warning .tooltip-inner{color:#212529;background-color:#ffc107}.tooltip.b-tooltip-danger.bs-tooltip-auto[x-placement^=top] .arrow::before,.tooltip.b-tooltip-danger.bs-tooltip-top .arrow::before{border-top-color:#dc3545}.tooltip.b-tooltip-danger.bs-tooltip-auto[x-placement^=right] .arrow::before,.tooltip.b-tooltip-danger.bs-tooltip-right .arrow::before{border-right-color:#dc3545}.tooltip.b-tooltip-danger.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.tooltip.b-tooltip-danger.bs-tooltip-bottom .arrow::before{border-bottom-color:#dc3545}.tooltip.b-tooltip-danger.bs-tooltip-auto[x-placement^=left] .arrow::before,.tooltip.b-tooltip-danger.bs-tooltip-left .arrow::before{border-left-color:#dc3545}.tooltip.b-tooltip-danger .tooltip-inner{color:#fff;background-color:#dc3545}.tooltip.b-tooltip-light.bs-tooltip-auto[x-placement^=top] .arrow::before,.tooltip.b-tooltip-light.bs-tooltip-top .arrow::before{border-top-color:#f8f9fa}.tooltip.b-tooltip-light.bs-tooltip-auto[x-placement^=right] .arrow::before,.tooltip.b-tooltip-light.bs-tooltip-right .arrow::before{border-right-color:#f8f9fa}.tooltip.b-tooltip-light.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.tooltip.b-tooltip-light.bs-tooltip-bottom .arrow::before{border-bottom-color:#f8f9fa}.tooltip.b-tooltip-light.bs-tooltip-auto[x-placement^=left] .arrow::before,.tooltip.b-tooltip-light.bs-tooltip-left .arrow::before{border-left-color:#f8f9fa}.tooltip.b-tooltip-light .tooltip-inner{color:#212529;background-color:#f8f9fa}.tooltip.b-tooltip-dark.bs-tooltip-auto[x-placement^=top] .arrow::before,.tooltip.b-tooltip-dark.bs-tooltip-top .arrow::before{border-top-color:#343a40}.tooltip.b-tooltip-dark.bs-tooltip-auto[x-placement^=right] .arrow::before,.tooltip.b-tooltip-dark.bs-tooltip-right .arrow::before{border-right-color:#343a40}.tooltip.b-tooltip-dark.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.tooltip.b-tooltip-dark.bs-tooltip-bottom .arrow::before{border-bottom-color:#343a40}.tooltip.b-tooltip-dark.bs-tooltip-auto[x-placement^=left] .arrow::before,.tooltip.b-tooltip-dark.bs-tooltip-left .arrow::before{border-left-color:#343a40}.tooltip.b-tooltip-dark .tooltip-inner{color:#fff;background-color:#343a40}.b-icon.bi{display:inline-block;overflow:visible;vertical-align:-.15em}.b-icon.b-icon-animation-cylon,.b-icon.b-iconstack .b-icon-animation-cylon>g{-webkit-transform-origin:center;transform-origin:center;-webkit-animation:.75s infinite ease-in-out alternate b-icon-animation-cylon;animation:.75s infinite ease-in-out alternate b-icon-animation-cylon}@media (prefers-reduced-motion:reduce){.b-icon.b-icon-animation-cylon,.b-icon.b-iconstack .b-icon-animation-cylon>g{-webkit-animation:none;animation:none}}.b-icon.b-icon-animation-cylon-vertical,.b-icon.b-iconstack .b-icon-animation-cylon-vertical>g{-webkit-transform-origin:center;transform-origin:center;-webkit-animation:.75s infinite ease-in-out alternate b-icon-animation-cylon-vertical;animation:.75s infinite ease-in-out alternate b-icon-animation-cylon-vertical}@media (prefers-reduced-motion:reduce){.b-icon.b-icon-animation-cylon-vertical,.b-icon.b-iconstack .b-icon-animation-cylon-vertical>g{-webkit-animation:none;animation:none}}.b-icon.b-icon-animation-fade,.b-icon.b-iconstack .b-icon-animation-fade>g{-webkit-transform-origin:center;transform-origin:center;-webkit-animation:.75s infinite ease-in-out alternate b-icon-animation-fade;animation:.75s infinite ease-in-out alternate b-icon-animation-fade}@media (prefers-reduced-motion:reduce){.b-icon.b-icon-animation-fade,.b-icon.b-iconstack .b-icon-animation-fade>g{-webkit-animation:none;animation:none}}.b-icon.b-icon-animation-spin,.b-icon.b-iconstack .b-icon-animation-spin>g{-webkit-transform-origin:center;transform-origin:center;-webkit-animation:2s infinite linear normal b-icon-animation-spin;animation:2s infinite linear normal b-icon-animation-spin}@media (prefers-reduced-motion:reduce){.b-icon.b-icon-animation-spin,.b-icon.b-iconstack .b-icon-animation-spin>g{-webkit-animation:none;animation:none}}.b-icon.b-icon-animation-spin-reverse,.b-icon.b-iconstack .b-icon-animation-spin-reverse>g{-webkit-transform-origin:center;transform-origin:center;animation:2s infinite linear reverse b-icon-animation-spin}@media (prefers-reduced-motion:reduce){.b-icon.b-icon-animation-spin-reverse,.b-icon.b-iconstack .b-icon-animation-spin-reverse>g{-webkit-animation:none;animation:none}}.b-icon.b-icon-animation-spin-pulse,.b-icon.b-iconstack .b-icon-animation-spin-pulse>g{-webkit-transform-origin:center;transform-origin:center;-webkit-animation:1s infinite steps(8) normal b-icon-animation-spin;animation:1s infinite steps(8) normal b-icon-animation-spin}@media (prefers-reduced-motion:reduce){.b-icon.b-icon-animation-spin-pulse,.b-icon.b-iconstack .b-icon-animation-spin-pulse>g{-webkit-animation:none;animation:none}}.b-icon.b-icon-animation-spin-reverse-pulse,.b-icon.b-iconstack .b-icon-animation-spin-reverse-pulse>g{-webkit-transform-origin:center;transform-origin:center;animation:1s infinite steps(8) reverse b-icon-animation-spin}@media (prefers-reduced-motion:reduce){.b-icon.b-icon-animation-spin-reverse-pulse,.b-icon.b-iconstack .b-icon-animation-spin-reverse-pulse>g{-webkit-animation:none;animation:none}}.b-icon.b-icon-animation-throb,.b-icon.b-iconstack .b-icon-animation-throb>g{-webkit-transform-origin:center;transform-origin:center;-webkit-animation:.75s infinite ease-in-out alternate b-icon-animation-throb;animation:.75s infinite ease-in-out alternate b-icon-animation-throb}@media (prefers-reduced-motion:reduce){.b-icon.b-icon-animation-throb,.b-icon.b-iconstack .b-icon-animation-throb>g{-webkit-animation:none;animation:none}}@-webkit-keyframes b-icon-animation-cylon{0%{-webkit-transform:translateX(-25%);transform:translateX(-25%)}100%{-webkit-transform:translateX(25%);transform:translateX(25%)}}@keyframes b-icon-animation-cylon{0%{-webkit-transform:translateX(-25%);transform:translateX(-25%)}100%{-webkit-transform:translateX(25%);transform:translateX(25%)}}@-webkit-keyframes b-icon-animation-cylon-vertical{0%{-webkit-transform:translateY(25%);transform:translateY(25%)}100%{-webkit-transform:translateY(-25%);transform:translateY(-25%)}}@keyframes b-icon-animation-cylon-vertical{0%{-webkit-transform:translateY(25%);transform:translateY(25%)}100%{-webkit-transform:translateY(-25%);transform:translateY(-25%)}}@-webkit-keyframes b-icon-animation-fade{0%{opacity:.1}100%{opacity:1}}@keyframes b-icon-animation-fade{0%{opacity:.1}100%{opacity:1}}@-webkit-keyframes b-icon-animation-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes b-icon-animation-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-webkit-keyframes b-icon-animation-throb{0%{opacity:.5;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes b-icon-animation-throb{0%{opacity:.5;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.btn .b-icon.bi,.dropdown-item .b-icon.bi,.dropdown-toggle .b-icon.bi,.input-group-text .b-icon.bi,.nav-link .b-icon.bi{font-size:125%;vertical-align:text-bottom} +/*# sourceMappingURL=bootstrap-vue.min.css.map */ \ No newline at end of file diff --git a/docs/css/bootstrap.css b/docs/css/bootstrap.css new file mode 100644 index 0000000..e461d3f --- /dev/null +++ b/docs/css/bootstrap.css @@ -0,0 +1,10278 @@ +/*! + * Bootstrap v4.5.0 (https://getbootstrap.com/) + * Copyright 2011-2020 The Bootstrap Authors + * Copyright 2011-2020 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +:root { + --blue: #007bff; + --indigo: #6610f2; + --purple: #6f42c1; + --pink: #e83e8c; + --red: #dc3545; + --orange: #fd7e14; + --yellow: #ffc107; + --green: #28a745; + --teal: #20c997; + --cyan: #17a2b8; + --white: #fff; + --gray: #6c757d; + --gray-dark: #343a40; + --primary: #007bff; + --secondary: #6c757d; + --success: #28a745; + --info: #17a2b8; + --warning: #ffc107; + --danger: #dc3545; + --light: #f8f9fa; + --dark: #343a40; + --breakpoint-xs: 0; + --breakpoint-sm: 576px; + --breakpoint-md: 768px; + --breakpoint-lg: 992px; + --breakpoint-xl: 1200px; + --font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +html { + font-family: sans-serif; + line-height: 1.15; + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +article, aside, figcaption, figure, footer, header, hgroup, main, nav, section { + display: block; +} + +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #212529; + text-align: left; + background-color: #fff; +} + +[tabindex="-1"]:focus:not(:focus-visible) { + outline: 0 !important; +} + +hr { + box-sizing: content-box; + height: 0; + overflow: visible; +} + +h1, h2, h3, h4, h5, h6 { + margin-top: 0; + margin-bottom: 0.5rem; +} + +p { + margin-top: 0; + margin-bottom: 1rem; +} + +abbr[title], +abbr[data-original-title] { + text-decoration: underline; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + cursor: help; + border-bottom: 0; + -webkit-text-decoration-skip-ink: none; + text-decoration-skip-ink: none; +} + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +dt { + font-weight: 700; +} + +dd { + margin-bottom: .5rem; + margin-left: 0; +} + +blockquote { + margin: 0 0 1rem; +} + +b, +strong { + font-weight: bolder; +} + +small { + font-size: 80%; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sub { + bottom: -.25em; +} + +sup { + top: -.5em; +} + +a { + color: #007bff; + text-decoration: none; + background-color: transparent; +} + +a:hover { + color: #0056b3; + text-decoration: underline; +} + +a:not([href]) { + color: inherit; + text-decoration: none; +} + +a:not([href]):hover { + color: inherit; + text-decoration: none; +} + +pre, +code, +kbd, +samp { + font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + font-size: 1em; +} + +pre { + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; + -ms-overflow-style: scrollbar; +} + +figure { + margin: 0 0 1rem; +} + +img { + vertical-align: middle; + border-style: none; +} + +svg { + overflow: hidden; + vertical-align: middle; +} + +table { + border-collapse: collapse; +} + +caption { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: #6c757d; + text-align: left; + caption-side: bottom; +} + +th { + text-align: inherit; +} + +label { + display: inline-block; + margin-bottom: 0.5rem; +} + +button { + border-radius: 0; +} + +button:focus { + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color; +} + +input, +button, +select, +optgroup, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +button, +input { + overflow: visible; +} + +button, +select { + text-transform: none; +} + +[role="button"] { + cursor: pointer; +} + +select { + word-wrap: normal; +} + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +button:not(:disabled), +[type="button"]:not(:disabled), +[type="reset"]:not(:disabled), +[type="submit"]:not(:disabled) { + cursor: pointer; +} + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + padding: 0; + border-style: none; +} + +input[type="radio"], +input[type="checkbox"] { + box-sizing: border-box; + padding: 0; +} + +textarea { + overflow: auto; + resize: vertical; +} + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + max-width: 100%; + padding: 0; + margin-bottom: .5rem; + font-size: 1.5rem; + line-height: inherit; + color: inherit; + white-space: normal; +} + +progress { + vertical-align: baseline; +} + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +[type="search"] { + outline-offset: -2px; + -webkit-appearance: none; +} + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button; +} + +output { + display: inline-block; +} + +summary { + display: list-item; + cursor: pointer; +} + +template { + display: none; +} + +[hidden] { + display: none !important; +} + +h1, h2, h3, h4, h5, h6, +.h1, .h2, .h3, .h4, .h5, .h6 { + margin-bottom: 0.5rem; + font-weight: 500; + line-height: 1.2; +} + +h1, .h1 { + font-size: 2.5rem; +} + +h2, .h2 { + font-size: 2rem; +} + +h3, .h3 { + font-size: 1.75rem; +} + +h4, .h4 { + font-size: 1.5rem; +} + +h5, .h5 { + font-size: 1.25rem; +} + +h6, .h6 { + font-size: 1rem; +} + +.lead { + font-size: 1.25rem; + font-weight: 300; +} + +.display-1 { + font-size: 6rem; + font-weight: 300; + line-height: 1.2; +} + +.display-2 { + font-size: 5.5rem; + font-weight: 300; + line-height: 1.2; +} + +.display-3 { + font-size: 4.5rem; + font-weight: 300; + line-height: 1.2; +} + +.display-4 { + font-size: 3.5rem; + font-weight: 300; + line-height: 1.2; +} + +hr { + margin-top: 1rem; + margin-bottom: 1rem; + border: 0; + border-top: 1px solid rgba(0, 0, 0, 0.1); +} + +small, +.small { + font-size: 80%; + font-weight: 400; +} + +mark, +.mark { + padding: 0.2em; + background-color: #fcf8e3; +} + +.list-unstyled { + padding-left: 0; + list-style: none; +} + +.list-inline { + padding-left: 0; + list-style: none; +} + +.list-inline-item { + display: inline-block; +} + +.list-inline-item:not(:last-child) { + margin-right: 0.5rem; +} + +.initialism { + font-size: 90%; + text-transform: uppercase; +} + +.blockquote { + margin-bottom: 1rem; + font-size: 1.25rem; +} + +.blockquote-footer { + display: block; + font-size: 80%; + color: #6c757d; +} + +.blockquote-footer::before { + content: "\2014\00A0"; +} + +.img-fluid { + max-width: 100%; + height: auto; +} + +.img-thumbnail { + padding: 0.25rem; + background-color: #fff; + border: 1px solid #dee2e6; + border-radius: 0.25rem; + max-width: 100%; + height: auto; +} + +.figure { + display: inline-block; +} + +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; +} + +.figure-caption { + font-size: 90%; + color: #6c757d; +} + +code { + font-size: 87.5%; + color: #e83e8c; + word-wrap: break-word; +} + +a > code { + color: inherit; +} + +kbd { + padding: 0.2rem 0.4rem; + font-size: 87.5%; + color: #fff; + background-color: #212529; + border-radius: 0.2rem; +} + +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: 700; +} + +pre { + display: block; + font-size: 87.5%; + color: #212529; +} + +pre code { + font-size: inherit; + color: inherit; + word-break: normal; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +.container { + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} + +@media (min-width: 576px) { + .container { + max-width: 540px; + } +} + +@media (min-width: 768px) { + .container { + max-width: 720px; + } +} + +@media (min-width: 992px) { + .container { + max-width: 960px; + } +} + +@media (min-width: 1200px) { + .container { + max-width: 1140px; + } +} + +.container-fluid, .container-sm, .container-md, .container-lg, .container-xl { + width: 100%; + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} + +@media (min-width: 576px) { + .container, .container-sm { + max-width: 540px; + } +} + +@media (min-width: 768px) { + .container, .container-sm, .container-md { + max-width: 720px; + } +} + +@media (min-width: 992px) { + .container, .container-sm, .container-md, .container-lg { + max-width: 960px; + } +} + +@media (min-width: 1200px) { + .container, .container-sm, .container-md, .container-lg, .container-xl { + max-width: 1140px; + } +} + +.row { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -15px; + margin-left: -15px; +} + +.no-gutters { + margin-right: 0; + margin-left: 0; +} + +.no-gutters > .col, +.no-gutters > [class*="col-"] { + padding-right: 0; + padding-left: 0; +} + +.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col, +.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm, +.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md, +.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg, +.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl, +.col-xl-auto { + position: relative; + width: 100%; + padding-right: 15px; + padding-left: 15px; +} + +.col { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + min-width: 0; + max-width: 100%; +} + +.row-cols-1 > * { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; +} + +.row-cols-2 > * { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; +} + +.row-cols-3 > * { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; +} + +.row-cols-4 > * { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; +} + +.row-cols-5 > * { + -ms-flex: 0 0 20%; + flex: 0 0 20%; + max-width: 20%; +} + +.row-cols-6 > * { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; +} + +.col-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; +} + +.col-1 { + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; +} + +.col-2 { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; +} + +.col-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; +} + +.col-4 { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; +} + +.col-5 { + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; +} + +.col-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; +} + +.col-7 { + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; +} + +.col-8 { + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; +} + +.col-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; +} + +.col-10 { + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; +} + +.col-11 { + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; +} + +.col-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; +} + +.order-first { + -ms-flex-order: -1; + order: -1; +} + +.order-last { + -ms-flex-order: 13; + order: 13; +} + +.order-0 { + -ms-flex-order: 0; + order: 0; +} + +.order-1 { + -ms-flex-order: 1; + order: 1; +} + +.order-2 { + -ms-flex-order: 2; + order: 2; +} + +.order-3 { + -ms-flex-order: 3; + order: 3; +} + +.order-4 { + -ms-flex-order: 4; + order: 4; +} + +.order-5 { + -ms-flex-order: 5; + order: 5; +} + +.order-6 { + -ms-flex-order: 6; + order: 6; +} + +.order-7 { + -ms-flex-order: 7; + order: 7; +} + +.order-8 { + -ms-flex-order: 8; + order: 8; +} + +.order-9 { + -ms-flex-order: 9; + order: 9; +} + +.order-10 { + -ms-flex-order: 10; + order: 10; +} + +.order-11 { + -ms-flex-order: 11; + order: 11; +} + +.order-12 { + -ms-flex-order: 12; + order: 12; +} + +.offset-1 { + margin-left: 8.333333%; +} + +.offset-2 { + margin-left: 16.666667%; +} + +.offset-3 { + margin-left: 25%; +} + +.offset-4 { + margin-left: 33.333333%; +} + +.offset-5 { + margin-left: 41.666667%; +} + +.offset-6 { + margin-left: 50%; +} + +.offset-7 { + margin-left: 58.333333%; +} + +.offset-8 { + margin-left: 66.666667%; +} + +.offset-9 { + margin-left: 75%; +} + +.offset-10 { + margin-left: 83.333333%; +} + +.offset-11 { + margin-left: 91.666667%; +} + +@media (min-width: 576px) { + .col-sm { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + min-width: 0; + max-width: 100%; + } + .row-cols-sm-1 > * { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .row-cols-sm-2 > * { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .row-cols-sm-3 > * { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .row-cols-sm-4 > * { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .row-cols-sm-5 > * { + -ms-flex: 0 0 20%; + flex: 0 0 20%; + max-width: 20%; + } + .row-cols-sm-6 > * { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-sm-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-sm-1 { + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-sm-2 { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-sm-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-sm-4 { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-sm-5 { + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-sm-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-sm-7 { + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-sm-8 { + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-sm-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-sm-10 { + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-sm-11 { + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-sm-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .order-sm-first { + -ms-flex-order: -1; + order: -1; + } + .order-sm-last { + -ms-flex-order: 13; + order: 13; + } + .order-sm-0 { + -ms-flex-order: 0; + order: 0; + } + .order-sm-1 { + -ms-flex-order: 1; + order: 1; + } + .order-sm-2 { + -ms-flex-order: 2; + order: 2; + } + .order-sm-3 { + -ms-flex-order: 3; + order: 3; + } + .order-sm-4 { + -ms-flex-order: 4; + order: 4; + } + .order-sm-5 { + -ms-flex-order: 5; + order: 5; + } + .order-sm-6 { + -ms-flex-order: 6; + order: 6; + } + .order-sm-7 { + -ms-flex-order: 7; + order: 7; + } + .order-sm-8 { + -ms-flex-order: 8; + order: 8; + } + .order-sm-9 { + -ms-flex-order: 9; + order: 9; + } + .order-sm-10 { + -ms-flex-order: 10; + order: 10; + } + .order-sm-11 { + -ms-flex-order: 11; + order: 11; + } + .order-sm-12 { + -ms-flex-order: 12; + order: 12; + } + .offset-sm-0 { + margin-left: 0; + } + .offset-sm-1 { + margin-left: 8.333333%; + } + .offset-sm-2 { + margin-left: 16.666667%; + } + .offset-sm-3 { + margin-left: 25%; + } + .offset-sm-4 { + margin-left: 33.333333%; + } + .offset-sm-5 { + margin-left: 41.666667%; + } + .offset-sm-6 { + margin-left: 50%; + } + .offset-sm-7 { + margin-left: 58.333333%; + } + .offset-sm-8 { + margin-left: 66.666667%; + } + .offset-sm-9 { + margin-left: 75%; + } + .offset-sm-10 { + margin-left: 83.333333%; + } + .offset-sm-11 { + margin-left: 91.666667%; + } +} + +@media (min-width: 768px) { + .col-md { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + min-width: 0; + max-width: 100%; + } + .row-cols-md-1 > * { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .row-cols-md-2 > * { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .row-cols-md-3 > * { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .row-cols-md-4 > * { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .row-cols-md-5 > * { + -ms-flex: 0 0 20%; + flex: 0 0 20%; + max-width: 20%; + } + .row-cols-md-6 > * { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-md-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-md-1 { + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-md-2 { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-md-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-md-4 { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-md-5 { + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-md-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-md-7 { + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-md-8 { + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-md-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-md-10 { + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-md-11 { + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-md-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .order-md-first { + -ms-flex-order: -1; + order: -1; + } + .order-md-last { + -ms-flex-order: 13; + order: 13; + } + .order-md-0 { + -ms-flex-order: 0; + order: 0; + } + .order-md-1 { + -ms-flex-order: 1; + order: 1; + } + .order-md-2 { + -ms-flex-order: 2; + order: 2; + } + .order-md-3 { + -ms-flex-order: 3; + order: 3; + } + .order-md-4 { + -ms-flex-order: 4; + order: 4; + } + .order-md-5 { + -ms-flex-order: 5; + order: 5; + } + .order-md-6 { + -ms-flex-order: 6; + order: 6; + } + .order-md-7 { + -ms-flex-order: 7; + order: 7; + } + .order-md-8 { + -ms-flex-order: 8; + order: 8; + } + .order-md-9 { + -ms-flex-order: 9; + order: 9; + } + .order-md-10 { + -ms-flex-order: 10; + order: 10; + } + .order-md-11 { + -ms-flex-order: 11; + order: 11; + } + .order-md-12 { + -ms-flex-order: 12; + order: 12; + } + .offset-md-0 { + margin-left: 0; + } + .offset-md-1 { + margin-left: 8.333333%; + } + .offset-md-2 { + margin-left: 16.666667%; + } + .offset-md-3 { + margin-left: 25%; + } + .offset-md-4 { + margin-left: 33.333333%; + } + .offset-md-5 { + margin-left: 41.666667%; + } + .offset-md-6 { + margin-left: 50%; + } + .offset-md-7 { + margin-left: 58.333333%; + } + .offset-md-8 { + margin-left: 66.666667%; + } + .offset-md-9 { + margin-left: 75%; + } + .offset-md-10 { + margin-left: 83.333333%; + } + .offset-md-11 { + margin-left: 91.666667%; + } +} + +@media (min-width: 992px) { + .col-lg { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + min-width: 0; + max-width: 100%; + } + .row-cols-lg-1 > * { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .row-cols-lg-2 > * { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .row-cols-lg-3 > * { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .row-cols-lg-4 > * { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .row-cols-lg-5 > * { + -ms-flex: 0 0 20%; + flex: 0 0 20%; + max-width: 20%; + } + .row-cols-lg-6 > * { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-lg-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-lg-1 { + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-lg-2 { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-lg-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-lg-4 { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-lg-5 { + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-lg-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-lg-7 { + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-lg-8 { + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-lg-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-lg-10 { + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-lg-11 { + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-lg-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .order-lg-first { + -ms-flex-order: -1; + order: -1; + } + .order-lg-last { + -ms-flex-order: 13; + order: 13; + } + .order-lg-0 { + -ms-flex-order: 0; + order: 0; + } + .order-lg-1 { + -ms-flex-order: 1; + order: 1; + } + .order-lg-2 { + -ms-flex-order: 2; + order: 2; + } + .order-lg-3 { + -ms-flex-order: 3; + order: 3; + } + .order-lg-4 { + -ms-flex-order: 4; + order: 4; + } + .order-lg-5 { + -ms-flex-order: 5; + order: 5; + } + .order-lg-6 { + -ms-flex-order: 6; + order: 6; + } + .order-lg-7 { + -ms-flex-order: 7; + order: 7; + } + .order-lg-8 { + -ms-flex-order: 8; + order: 8; + } + .order-lg-9 { + -ms-flex-order: 9; + order: 9; + } + .order-lg-10 { + -ms-flex-order: 10; + order: 10; + } + .order-lg-11 { + -ms-flex-order: 11; + order: 11; + } + .order-lg-12 { + -ms-flex-order: 12; + order: 12; + } + .offset-lg-0 { + margin-left: 0; + } + .offset-lg-1 { + margin-left: 8.333333%; + } + .offset-lg-2 { + margin-left: 16.666667%; + } + .offset-lg-3 { + margin-left: 25%; + } + .offset-lg-4 { + margin-left: 33.333333%; + } + .offset-lg-5 { + margin-left: 41.666667%; + } + .offset-lg-6 { + margin-left: 50%; + } + .offset-lg-7 { + margin-left: 58.333333%; + } + .offset-lg-8 { + margin-left: 66.666667%; + } + .offset-lg-9 { + margin-left: 75%; + } + .offset-lg-10 { + margin-left: 83.333333%; + } + .offset-lg-11 { + margin-left: 91.666667%; + } +} + +@media (min-width: 1200px) { + .col-xl { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + min-width: 0; + max-width: 100%; + } + .row-cols-xl-1 > * { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .row-cols-xl-2 > * { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .row-cols-xl-3 > * { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .row-cols-xl-4 > * { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .row-cols-xl-5 > * { + -ms-flex: 0 0 20%; + flex: 0 0 20%; + max-width: 20%; + } + .row-cols-xl-6 > * { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-xl-auto { + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + max-width: 100%; + } + .col-xl-1 { + -ms-flex: 0 0 8.333333%; + flex: 0 0 8.333333%; + max-width: 8.333333%; + } + .col-xl-2 { + -ms-flex: 0 0 16.666667%; + flex: 0 0 16.666667%; + max-width: 16.666667%; + } + .col-xl-3 { + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; + } + .col-xl-4 { + -ms-flex: 0 0 33.333333%; + flex: 0 0 33.333333%; + max-width: 33.333333%; + } + .col-xl-5 { + -ms-flex: 0 0 41.666667%; + flex: 0 0 41.666667%; + max-width: 41.666667%; + } + .col-xl-6 { + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; + } + .col-xl-7 { + -ms-flex: 0 0 58.333333%; + flex: 0 0 58.333333%; + max-width: 58.333333%; + } + .col-xl-8 { + -ms-flex: 0 0 66.666667%; + flex: 0 0 66.666667%; + max-width: 66.666667%; + } + .col-xl-9 { + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; + } + .col-xl-10 { + -ms-flex: 0 0 83.333333%; + flex: 0 0 83.333333%; + max-width: 83.333333%; + } + .col-xl-11 { + -ms-flex: 0 0 91.666667%; + flex: 0 0 91.666667%; + max-width: 91.666667%; + } + .col-xl-12 { + -ms-flex: 0 0 100%; + flex: 0 0 100%; + max-width: 100%; + } + .order-xl-first { + -ms-flex-order: -1; + order: -1; + } + .order-xl-last { + -ms-flex-order: 13; + order: 13; + } + .order-xl-0 { + -ms-flex-order: 0; + order: 0; + } + .order-xl-1 { + -ms-flex-order: 1; + order: 1; + } + .order-xl-2 { + -ms-flex-order: 2; + order: 2; + } + .order-xl-3 { + -ms-flex-order: 3; + order: 3; + } + .order-xl-4 { + -ms-flex-order: 4; + order: 4; + } + .order-xl-5 { + -ms-flex-order: 5; + order: 5; + } + .order-xl-6 { + -ms-flex-order: 6; + order: 6; + } + .order-xl-7 { + -ms-flex-order: 7; + order: 7; + } + .order-xl-8 { + -ms-flex-order: 8; + order: 8; + } + .order-xl-9 { + -ms-flex-order: 9; + order: 9; + } + .order-xl-10 { + -ms-flex-order: 10; + order: 10; + } + .order-xl-11 { + -ms-flex-order: 11; + order: 11; + } + .order-xl-12 { + -ms-flex-order: 12; + order: 12; + } + .offset-xl-0 { + margin-left: 0; + } + .offset-xl-1 { + margin-left: 8.333333%; + } + .offset-xl-2 { + margin-left: 16.666667%; + } + .offset-xl-3 { + margin-left: 25%; + } + .offset-xl-4 { + margin-left: 33.333333%; + } + .offset-xl-5 { + margin-left: 41.666667%; + } + .offset-xl-6 { + margin-left: 50%; + } + .offset-xl-7 { + margin-left: 58.333333%; + } + .offset-xl-8 { + margin-left: 66.666667%; + } + .offset-xl-9 { + margin-left: 75%; + } + .offset-xl-10 { + margin-left: 83.333333%; + } + .offset-xl-11 { + margin-left: 91.666667%; + } +} + +.table { + width: 100%; + margin-bottom: 1rem; + color: #212529; +} + +.table th, +.table td { + padding: 0.75rem; + vertical-align: top; + border-top: 1px solid #dee2e6; +} + +.table thead th { + vertical-align: bottom; + border-bottom: 2px solid #dee2e6; +} + +.table tbody + tbody { + border-top: 2px solid #dee2e6; +} + +.table-sm th, +.table-sm td { + padding: 0.3rem; +} + +.table-bordered { + border: 1px solid #dee2e6; +} + +.table-bordered th, +.table-bordered td { + border: 1px solid #dee2e6; +} + +.table-bordered thead th, +.table-bordered thead td { + border-bottom-width: 2px; +} + +.table-borderless th, +.table-borderless td, +.table-borderless thead th, +.table-borderless tbody + tbody { + border: 0; +} + +.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(0, 0, 0, 0.05); +} + +.table-hover tbody tr:hover { + color: #212529; + background-color: rgba(0, 0, 0, 0.075); +} + +.table-primary, +.table-primary > th, +.table-primary > td { + background-color: #b8daff; +} + +.table-primary th, +.table-primary td, +.table-primary thead th, +.table-primary tbody + tbody { + border-color: #7abaff; +} + +.table-hover .table-primary:hover { + background-color: #9fcdff; +} + +.table-hover .table-primary:hover > td, +.table-hover .table-primary:hover > th { + background-color: #9fcdff; +} + +.table-secondary, +.table-secondary > th, +.table-secondary > td { + background-color: #d6d8db; +} + +.table-secondary th, +.table-secondary td, +.table-secondary thead th, +.table-secondary tbody + tbody { + border-color: #b3b7bb; +} + +.table-hover .table-secondary:hover { + background-color: #c8cbcf; +} + +.table-hover .table-secondary:hover > td, +.table-hover .table-secondary:hover > th { + background-color: #c8cbcf; +} + +.table-success, +.table-success > th, +.table-success > td { + background-color: #c3e6cb; +} + +.table-success th, +.table-success td, +.table-success thead th, +.table-success tbody + tbody { + border-color: #8fd19e; +} + +.table-hover .table-success:hover { + background-color: #b1dfbb; +} + +.table-hover .table-success:hover > td, +.table-hover .table-success:hover > th { + background-color: #b1dfbb; +} + +.table-info, +.table-info > th, +.table-info > td { + background-color: #bee5eb; +} + +.table-info th, +.table-info td, +.table-info thead th, +.table-info tbody + tbody { + border-color: #86cfda; +} + +.table-hover .table-info:hover { + background-color: #abdde5; +} + +.table-hover .table-info:hover > td, +.table-hover .table-info:hover > th { + background-color: #abdde5; +} + +.table-warning, +.table-warning > th, +.table-warning > td { + background-color: #ffeeba; +} + +.table-warning th, +.table-warning td, +.table-warning thead th, +.table-warning tbody + tbody { + border-color: #ffdf7e; +} + +.table-hover .table-warning:hover { + background-color: #ffe8a1; +} + +.table-hover .table-warning:hover > td, +.table-hover .table-warning:hover > th { + background-color: #ffe8a1; +} + +.table-danger, +.table-danger > th, +.table-danger > td { + background-color: #f5c6cb; +} + +.table-danger th, +.table-danger td, +.table-danger thead th, +.table-danger tbody + tbody { + border-color: #ed969e; +} + +.table-hover .table-danger:hover { + background-color: #f1b0b7; +} + +.table-hover .table-danger:hover > td, +.table-hover .table-danger:hover > th { + background-color: #f1b0b7; +} + +.table-light, +.table-light > th, +.table-light > td { + background-color: #fdfdfe; +} + +.table-light th, +.table-light td, +.table-light thead th, +.table-light tbody + tbody { + border-color: #fbfcfc; +} + +.table-hover .table-light:hover { + background-color: #ececf6; +} + +.table-hover .table-light:hover > td, +.table-hover .table-light:hover > th { + background-color: #ececf6; +} + +.table-dark, +.table-dark > th, +.table-dark > td { + background-color: #c6c8ca; +} + +.table-dark th, +.table-dark td, +.table-dark thead th, +.table-dark tbody + tbody { + border-color: #95999c; +} + +.table-hover .table-dark:hover { + background-color: #b9bbbe; +} + +.table-hover .table-dark:hover > td, +.table-hover .table-dark:hover > th { + background-color: #b9bbbe; +} + +.table-active, +.table-active > th, +.table-active > td { + background-color: rgba(0, 0, 0, 0.075); +} + +.table-hover .table-active:hover { + background-color: rgba(0, 0, 0, 0.075); +} + +.table-hover .table-active:hover > td, +.table-hover .table-active:hover > th { + background-color: rgba(0, 0, 0, 0.075); +} + +.table .thead-dark th { + color: #fff; + background-color: #343a40; + border-color: #454d55; +} + +.table .thead-light th { + color: #495057; + background-color: #e9ecef; + border-color: #dee2e6; +} + +.table-dark { + color: #fff; + background-color: #343a40; +} + +.table-dark th, +.table-dark td, +.table-dark thead th { + border-color: #454d55; +} + +.table-dark.table-bordered { + border: 0; +} + +.table-dark.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(255, 255, 255, 0.05); +} + +.table-dark.table-hover tbody tr:hover { + color: #fff; + background-color: rgba(255, 255, 255, 0.075); +} + +@media (max-width: 575.98px) { + .table-responsive-sm { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + .table-responsive-sm > .table-bordered { + border: 0; + } +} + +@media (max-width: 767.98px) { + .table-responsive-md { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + .table-responsive-md > .table-bordered { + border: 0; + } +} + +@media (max-width: 991.98px) { + .table-responsive-lg { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + .table-responsive-lg > .table-bordered { + border: 0; + } +} + +@media (max-width: 1199.98px) { + .table-responsive-xl { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + .table-responsive-xl > .table-bordered { + border: 0; + } +} + +.table-responsive { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} + +.table-responsive > .table-bordered { + border: 0; +} + +.form-control { + display: block; + width: 100%; + height: calc(1.5em + 0.75rem + 2px); + padding: 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ced4da; + border-radius: 0.25rem; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .form-control { + transition: none; + } +} + +.form-control::-ms-expand { + background-color: transparent; + border: 0; +} + +.form-control:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 #495057; +} + +.form-control:focus { + color: #495057; + background-color: #fff; + border-color: #80bdff; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.form-control::-webkit-input-placeholder { + color: #6c757d; + opacity: 1; +} + +.form-control::-moz-placeholder { + color: #6c757d; + opacity: 1; +} + +.form-control:-ms-input-placeholder { + color: #6c757d; + opacity: 1; +} + +.form-control::-ms-input-placeholder { + color: #6c757d; + opacity: 1; +} + +.form-control::placeholder { + color: #6c757d; + opacity: 1; +} + +.form-control:disabled, .form-control[readonly] { + background-color: #e9ecef; + opacity: 1; +} + +input[type="date"].form-control, +input[type="time"].form-control, +input[type="datetime-local"].form-control, +input[type="month"].form-control { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +select.form-control:focus::-ms-value { + color: #495057; + background-color: #fff; +} + +.form-control-file, +.form-control-range { + display: block; + width: 100%; +} + +.col-form-label { + padding-top: calc(0.375rem + 1px); + padding-bottom: calc(0.375rem + 1px); + margin-bottom: 0; + font-size: inherit; + line-height: 1.5; +} + +.col-form-label-lg { + padding-top: calc(0.5rem + 1px); + padding-bottom: calc(0.5rem + 1px); + font-size: 1.25rem; + line-height: 1.5; +} + +.col-form-label-sm { + padding-top: calc(0.25rem + 1px); + padding-bottom: calc(0.25rem + 1px); + font-size: 0.875rem; + line-height: 1.5; +} + +.form-control-plaintext { + display: block; + width: 100%; + padding: 0.375rem 0; + margin-bottom: 0; + font-size: 1rem; + line-height: 1.5; + color: #212529; + background-color: transparent; + border: solid transparent; + border-width: 1px 0; +} + +.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { + padding-right: 0; + padding-left: 0; +} + +.form-control-sm { + height: calc(1.5em + 0.5rem + 2px); + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; + border-radius: 0.2rem; +} + +.form-control-lg { + height: calc(1.5em + 1rem + 2px); + padding: 0.5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: 0.3rem; +} + +select.form-control[size], select.form-control[multiple] { + height: auto; +} + +textarea.form-control { + height: auto; +} + +.form-group { + margin-bottom: 1rem; +} + +.form-text { + display: block; + margin-top: 0.25rem; +} + +.form-row { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -5px; + margin-left: -5px; +} + +.form-row > .col, +.form-row > [class*="col-"] { + padding-right: 5px; + padding-left: 5px; +} + +.form-check { + position: relative; + display: block; + padding-left: 1.25rem; +} + +.form-check-input { + position: absolute; + margin-top: 0.3rem; + margin-left: -1.25rem; +} + +.form-check-input[disabled] ~ .form-check-label, +.form-check-input:disabled ~ .form-check-label { + color: #6c757d; +} + +.form-check-label { + margin-bottom: 0; +} + +.form-check-inline { + display: -ms-inline-flexbox; + display: inline-flex; + -ms-flex-align: center; + align-items: center; + padding-left: 0; + margin-right: 0.75rem; +} + +.form-check-inline .form-check-input { + position: static; + margin-top: 0; + margin-right: 0.3125rem; + margin-left: 0; +} + +.valid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 80%; + color: #28a745; +} + +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: .1rem; + font-size: 0.875rem; + line-height: 1.5; + color: #fff; + background-color: rgba(40, 167, 69, 0.9); + border-radius: 0.25rem; +} + +.was-validated :valid ~ .valid-feedback, +.was-validated :valid ~ .valid-tooltip, +.is-valid ~ .valid-feedback, +.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .form-control:valid, .form-control.is-valid { + border-color: #28a745; + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.1875rem) center; + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} + +.was-validated .form-control:valid:focus, .form-control.is-valid:focus { + border-color: #28a745; + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); +} + +.was-validated textarea.form-control:valid, textarea.form-control.is-valid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); +} + +.was-validated .custom-select:valid, .custom-select.is-valid { + border-color: #28a745; + padding-right: calc(0.75em + 2.3125rem); + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} + +.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus { + border-color: #28a745; + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); +} + +.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { + color: #28a745; +} + +.was-validated .form-check-input:valid ~ .valid-feedback, +.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback, +.form-check-input.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label { + color: #28a745; +} + +.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before { + border-color: #28a745; +} + +.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before { + border-color: #34ce57; + background-color: #34ce57; +} + +.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); +} + +.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before { + border-color: #28a745; +} + +.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label { + border-color: #28a745; +} + +.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label { + border-color: #28a745; + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); +} + +.invalid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 80%; + color: #dc3545; +} + +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: .1rem; + font-size: 0.875rem; + line-height: 1.5; + color: #fff; + background-color: rgba(220, 53, 69, 0.9); + border-radius: 0.25rem; +} + +.was-validated :invalid ~ .invalid-feedback, +.was-validated :invalid ~ .invalid-tooltip, +.is-invalid ~ .invalid-feedback, +.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .form-control:invalid, .form-control.is-invalid { + border-color: #dc3545; + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.1875rem) center; + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} + +.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { + border-color: #dc3545; + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); +} + +.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); +} + +.was-validated .custom-select:invalid, .custom-select.is-invalid { + border-color: #dc3545; + padding-right: calc(0.75em + 2.3125rem); + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} + +.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus { + border-color: #dc3545; + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); +} + +.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { + color: #dc3545; +} + +.was-validated .form-check-input:invalid ~ .invalid-feedback, +.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback, +.form-check-input.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label { + color: #dc3545; +} + +.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before { + border-color: #dc3545; +} + +.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before { + border-color: #e4606d; + background-color: #e4606d; +} + +.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); +} + +.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before, .custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before { + border-color: #dc3545; +} + +.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label { + border-color: #dc3545; +} + +.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label { + border-color: #dc3545; + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); +} + +.form-inline { + display: -ms-flexbox; + display: flex; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -ms-flex-align: center; + align-items: center; +} + +.form-inline .form-check { + width: 100%; +} + +@media (min-width: 576px) { + .form-inline label { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + margin-bottom: 0; + } + .form-inline .form-group { + display: -ms-flexbox; + display: flex; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -ms-flex-align: center; + align-items: center; + margin-bottom: 0; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-plaintext { + display: inline-block; + } + .form-inline .input-group, + .form-inline .custom-select { + width: auto; + } + .form-inline .form-check { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + width: auto; + padding-left: 0; + } + .form-inline .form-check-input { + position: relative; + -ms-flex-negative: 0; + flex-shrink: 0; + margin-top: 0; + margin-right: 0.25rem; + margin-left: 0; + } + .form-inline .custom-control { + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + } + .form-inline .custom-control-label { + margin-bottom: 0; + } +} + +.btn { + display: inline-block; + font-weight: 400; + color: #212529; + text-align: center; + vertical-align: middle; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-color: transparent; + border: 1px solid transparent; + padding: 0.375rem 0.75rem; + font-size: 1rem; + line-height: 1.5; + border-radius: 0.25rem; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .btn { + transition: none; + } +} + +.btn:hover { + color: #212529; + text-decoration: none; +} + +.btn:focus, .btn.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.btn.disabled, .btn:disabled { + opacity: 0.65; +} + +.btn:not(:disabled):not(.disabled) { + cursor: pointer; +} + +a.btn.disabled, +fieldset:disabled a.btn { + pointer-events: none; +} + +.btn-primary { + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.btn-primary:hover { + color: #fff; + background-color: #0069d9; + border-color: #0062cc; +} + +.btn-primary:focus, .btn-primary.focus { + color: #fff; + background-color: #0069d9; + border-color: #0062cc; + box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5); +} + +.btn-primary.disabled, .btn-primary:disabled { + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active, +.show > .btn-primary.dropdown-toggle { + color: #fff; + background-color: #0062cc; + border-color: #005cbf; +} + +.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus, +.show > .btn-primary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5); +} + +.btn-secondary { + color: #fff; + background-color: #6c757d; + border-color: #6c757d; +} + +.btn-secondary:hover { + color: #fff; + background-color: #5a6268; + border-color: #545b62; +} + +.btn-secondary:focus, .btn-secondary.focus { + color: #fff; + background-color: #5a6268; + border-color: #545b62; + box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5); +} + +.btn-secondary.disabled, .btn-secondary:disabled { + color: #fff; + background-color: #6c757d; + border-color: #6c757d; +} + +.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active, +.show > .btn-secondary.dropdown-toggle { + color: #fff; + background-color: #545b62; + border-color: #4e555b; +} + +.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus, +.show > .btn-secondary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5); +} + +.btn-success { + color: #fff; + background-color: #28a745; + border-color: #28a745; +} + +.btn-success:hover { + color: #fff; + background-color: #218838; + border-color: #1e7e34; +} + +.btn-success:focus, .btn-success.focus { + color: #fff; + background-color: #218838; + border-color: #1e7e34; + box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5); +} + +.btn-success.disabled, .btn-success:disabled { + color: #fff; + background-color: #28a745; + border-color: #28a745; +} + +.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active, +.show > .btn-success.dropdown-toggle { + color: #fff; + background-color: #1e7e34; + border-color: #1c7430; +} + +.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus, +.show > .btn-success.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(72, 180, 97, 0.5); +} + +.btn-info { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; +} + +.btn-info:hover { + color: #fff; + background-color: #138496; + border-color: #117a8b; +} + +.btn-info:focus, .btn-info.focus { + color: #fff; + background-color: #138496; + border-color: #117a8b; + box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5); +} + +.btn-info.disabled, .btn-info:disabled { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; +} + +.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active, +.show > .btn-info.dropdown-toggle { + color: #fff; + background-color: #117a8b; + border-color: #10707f; +} + +.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus, +.show > .btn-info.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(58, 176, 195, 0.5); +} + +.btn-warning { + color: #212529; + background-color: #ffc107; + border-color: #ffc107; +} + +.btn-warning:hover { + color: #212529; + background-color: #e0a800; + border-color: #d39e00; +} + +.btn-warning:focus, .btn-warning.focus { + color: #212529; + background-color: #e0a800; + border-color: #d39e00; + box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5); +} + +.btn-warning.disabled, .btn-warning:disabled { + color: #212529; + background-color: #ffc107; + border-color: #ffc107; +} + +.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active, +.show > .btn-warning.dropdown-toggle { + color: #212529; + background-color: #d39e00; + border-color: #c69500; +} + +.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus, +.show > .btn-warning.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(222, 170, 12, 0.5); +} + +.btn-danger { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; +} + +.btn-danger:hover { + color: #fff; + background-color: #c82333; + border-color: #bd2130; +} + +.btn-danger:focus, .btn-danger.focus { + color: #fff; + background-color: #c82333; + border-color: #bd2130; + box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5); +} + +.btn-danger.disabled, .btn-danger:disabled { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; +} + +.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active, +.show > .btn-danger.dropdown-toggle { + color: #fff; + background-color: #bd2130; + border-color: #b21f2d; +} + +.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus, +.show > .btn-danger.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(225, 83, 97, 0.5); +} + +.btn-light { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-light:hover { + color: #212529; + background-color: #e2e6ea; + border-color: #dae0e5; +} + +.btn-light:focus, .btn-light.focus { + color: #212529; + background-color: #e2e6ea; + border-color: #dae0e5; + box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); +} + +.btn-light.disabled, .btn-light:disabled { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active, +.show > .btn-light.dropdown-toggle { + color: #212529; + background-color: #dae0e5; + border-color: #d3d9df; +} + +.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus, +.show > .btn-light.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(216, 217, 219, 0.5); +} + +.btn-dark { + color: #fff; + background-color: #343a40; + border-color: #343a40; +} + +.btn-dark:hover { + color: #fff; + background-color: #23272b; + border-color: #1d2124; +} + +.btn-dark:focus, .btn-dark.focus { + color: #fff; + background-color: #23272b; + border-color: #1d2124; + box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5); +} + +.btn-dark.disabled, .btn-dark:disabled { + color: #fff; + background-color: #343a40; + border-color: #343a40; +} + +.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active, +.show > .btn-dark.dropdown-toggle { + color: #fff; + background-color: #1d2124; + border-color: #171a1d; +} + +.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus, +.show > .btn-dark.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(82, 88, 93, 0.5); +} + +.btn-outline-primary { + color: #007bff; + border-color: #007bff; +} + +.btn-outline-primary:hover { + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.btn-outline-primary:focus, .btn-outline-primary.focus { + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); +} + +.btn-outline-primary.disabled, .btn-outline-primary:disabled { + color: #007bff; + background-color: transparent; +} + +.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active, +.show > .btn-outline-primary.dropdown-toggle { + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-primary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); +} + +.btn-outline-secondary { + color: #6c757d; + border-color: #6c757d; +} + +.btn-outline-secondary:hover { + color: #fff; + background-color: #6c757d; + border-color: #6c757d; +} + +.btn-outline-secondary:focus, .btn-outline-secondary.focus { + box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); +} + +.btn-outline-secondary.disabled, .btn-outline-secondary:disabled { + color: #6c757d; + background-color: transparent; +} + +.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active, +.show > .btn-outline-secondary.dropdown-toggle { + color: #fff; + background-color: #6c757d; + border-color: #6c757d; +} + +.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-secondary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); +} + +.btn-outline-success { + color: #28a745; + border-color: #28a745; +} + +.btn-outline-success:hover { + color: #fff; + background-color: #28a745; + border-color: #28a745; +} + +.btn-outline-success:focus, .btn-outline-success.focus { + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); +} + +.btn-outline-success.disabled, .btn-outline-success:disabled { + color: #28a745; + background-color: transparent; +} + +.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active, +.show > .btn-outline-success.dropdown-toggle { + color: #fff; + background-color: #28a745; + border-color: #28a745; +} + +.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-success.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); +} + +.btn-outline-info { + color: #17a2b8; + border-color: #17a2b8; +} + +.btn-outline-info:hover { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; +} + +.btn-outline-info:focus, .btn-outline-info.focus { + box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); +} + +.btn-outline-info.disabled, .btn-outline-info:disabled { + color: #17a2b8; + background-color: transparent; +} + +.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active, +.show > .btn-outline-info.dropdown-toggle { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; +} + +.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-info.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); +} + +.btn-outline-warning { + color: #ffc107; + border-color: #ffc107; +} + +.btn-outline-warning:hover { + color: #212529; + background-color: #ffc107; + border-color: #ffc107; +} + +.btn-outline-warning:focus, .btn-outline-warning.focus { + box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); +} + +.btn-outline-warning.disabled, .btn-outline-warning:disabled { + color: #ffc107; + background-color: transparent; +} + +.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active, +.show > .btn-outline-warning.dropdown-toggle { + color: #212529; + background-color: #ffc107; + border-color: #ffc107; +} + +.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-warning.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); +} + +.btn-outline-danger { + color: #dc3545; + border-color: #dc3545; +} + +.btn-outline-danger:hover { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; +} + +.btn-outline-danger:focus, .btn-outline-danger.focus { + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); +} + +.btn-outline-danger.disabled, .btn-outline-danger:disabled { + color: #dc3545; + background-color: transparent; +} + +.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active, +.show > .btn-outline-danger.dropdown-toggle { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; +} + +.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-danger.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); +} + +.btn-outline-light { + color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-outline-light:hover { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-outline-light:focus, .btn-outline-light.focus { + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); +} + +.btn-outline-light.disabled, .btn-outline-light:disabled { + color: #f8f9fa; + background-color: transparent; +} + +.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active, +.show > .btn-outline-light.dropdown-toggle { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-light.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); +} + +.btn-outline-dark { + color: #343a40; + border-color: #343a40; +} + +.btn-outline-dark:hover { + color: #fff; + background-color: #343a40; + border-color: #343a40; +} + +.btn-outline-dark:focus, .btn-outline-dark.focus { + box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); +} + +.btn-outline-dark.disabled, .btn-outline-dark:disabled { + color: #343a40; + background-color: transparent; +} + +.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active, +.show > .btn-outline-dark.dropdown-toggle { + color: #fff; + background-color: #343a40; + border-color: #343a40; +} + +.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus, +.show > .btn-outline-dark.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); +} + +.btn-link { + font-weight: 400; + color: #007bff; + text-decoration: none; +} + +.btn-link:hover { + color: #0056b3; + text-decoration: underline; +} + +.btn-link:focus, .btn-link.focus { + text-decoration: underline; +} + +.btn-link:disabled, .btn-link.disabled { + color: #6c757d; + pointer-events: none; +} + +.btn-lg, .btn-group-lg > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: 0.3rem; +} + +.btn-sm, .btn-group-sm > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; + border-radius: 0.2rem; +} + +.btn-block { + display: block; + width: 100%; +} + +.btn-block + .btn-block { + margin-top: 0.5rem; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.fade { + transition: opacity 0.15s linear; +} + +@media (prefers-reduced-motion: reduce) { + .fade { + transition: none; + } +} + +.fade:not(.show) { + opacity: 0; +} + +.collapse:not(.show) { + display: none; +} + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + transition: height 0.35s ease; +} + +@media (prefers-reduced-motion: reduce) { + .collapsing { + transition: none; + } +} + +.dropup, +.dropright, +.dropdown, +.dropleft { + position: relative; +} + +.dropdown-toggle { + white-space: nowrap; +} + +.dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent; +} + +.dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 10rem; + padding: 0.5rem 0; + margin: 0.125rem 0 0; + font-size: 1rem; + color: #212529; + text-align: left; + list-style: none; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; +} + +.dropdown-menu-left { + right: auto; + left: 0; +} + +.dropdown-menu-right { + right: 0; + left: auto; +} + +@media (min-width: 576px) { + .dropdown-menu-sm-left { + right: auto; + left: 0; + } + .dropdown-menu-sm-right { + right: 0; + left: auto; + } +} + +@media (min-width: 768px) { + .dropdown-menu-md-left { + right: auto; + left: 0; + } + .dropdown-menu-md-right { + right: 0; + left: auto; + } +} + +@media (min-width: 992px) { + .dropdown-menu-lg-left { + right: auto; + left: 0; + } + .dropdown-menu-lg-right { + right: 0; + left: auto; + } +} + +@media (min-width: 1200px) { + .dropdown-menu-xl-left { + right: auto; + left: 0; + } + .dropdown-menu-xl-right { + right: 0; + left: auto; + } +} + +.dropup .dropdown-menu { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: 0.125rem; +} + +.dropup .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0; + border-right: 0.3em solid transparent; + border-bottom: 0.3em solid; + border-left: 0.3em solid transparent; +} + +.dropup .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropright .dropdown-menu { + top: 0; + right: auto; + left: 100%; + margin-top: 0; + margin-left: 0.125rem; +} + +.dropright .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0; + border-bottom: 0.3em solid transparent; + border-left: 0.3em solid; +} + +.dropright .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropright .dropdown-toggle::after { + vertical-align: 0; +} + +.dropleft .dropdown-menu { + top: 0; + right: 100%; + left: auto; + margin-top: 0; + margin-right: 0.125rem; +} + +.dropleft .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; +} + +.dropleft .dropdown-toggle::after { + display: none; +} + +.dropleft .dropdown-toggle::before { + display: inline-block; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0.3em solid; + border-bottom: 0.3em solid transparent; +} + +.dropleft .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropleft .dropdown-toggle::before { + vertical-align: 0; +} + +.dropdown-menu[x-placement^="top"], .dropdown-menu[x-placement^="right"], .dropdown-menu[x-placement^="bottom"], .dropdown-menu[x-placement^="left"] { + right: auto; + bottom: auto; +} + +.dropdown-divider { + height: 0; + margin: 0.5rem 0; + overflow: hidden; + border-top: 1px solid #e9ecef; +} + +.dropdown-item { + display: block; + width: 100%; + padding: 0.25rem 1.5rem; + clear: both; + font-weight: 400; + color: #212529; + text-align: inherit; + white-space: nowrap; + background-color: transparent; + border: 0; +} + +.dropdown-item:hover, .dropdown-item:focus { + color: #16181b; + text-decoration: none; + background-color: #f8f9fa; +} + +.dropdown-item.active, .dropdown-item:active { + color: #fff; + text-decoration: none; + background-color: #007bff; +} + +.dropdown-item.disabled, .dropdown-item:disabled { + color: #6c757d; + pointer-events: none; + background-color: transparent; +} + +.dropdown-menu.show { + display: block; +} + +.dropdown-header { + display: block; + padding: 0.5rem 1.5rem; + margin-bottom: 0; + font-size: 0.875rem; + color: #6c757d; + white-space: nowrap; +} + +.dropdown-item-text { + display: block; + padding: 0.25rem 1.5rem; + color: #212529; +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: -ms-inline-flexbox; + display: inline-flex; + vertical-align: middle; +} + +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + -ms-flex: 1 1 auto; + flex: 1 1 auto; +} + +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover { + z-index: 1; +} + +.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, +.btn-group-vertical > .btn:focus, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn.active { + z-index: 1; +} + +.btn-toolbar { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-pack: start; + justify-content: flex-start; +} + +.btn-toolbar .input-group { + width: auto; +} + +.btn-group > .btn:not(:first-child), +.btn-group > .btn-group:not(:first-child) { + margin-left: -1px; +} + +.btn-group > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.btn-group > .btn:not(:first-child), +.btn-group > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.dropdown-toggle-split { + padding-right: 0.5625rem; + padding-left: 0.5625rem; +} + +.dropdown-toggle-split::after, +.dropup .dropdown-toggle-split::after, +.dropright .dropdown-toggle-split::after { + margin-left: 0; +} + +.dropleft .dropdown-toggle-split::before { + margin-right: 0; +} + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { + padding-right: 0.375rem; + padding-left: 0.375rem; +} + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.75rem; +} + +.btn-group-vertical { + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-align: start; + align-items: flex-start; + -ms-flex-pack: center; + justify-content: center; +} + +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group { + width: 100%; +} + +.btn-group-vertical > .btn:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) { + margin-top: -1px; +} + +.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group-vertical > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.btn-group-vertical > .btn:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.btn-group-toggle > .btn, +.btn-group-toggle > .btn-group > .btn { + margin-bottom: 0; +} + +.btn-group-toggle > .btn input[type="radio"], +.btn-group-toggle > .btn input[type="checkbox"], +.btn-group-toggle > .btn-group > .btn input[type="radio"], +.btn-group-toggle > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} + +.input-group { + position: relative; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-align: stretch; + align-items: stretch; + width: 100%; +} + +.input-group > .form-control, +.input-group > .form-control-plaintext, +.input-group > .custom-select, +.input-group > .custom-file { + position: relative; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + width: 1%; + min-width: 0; + margin-bottom: 0; +} + +.input-group > .form-control + .form-control, +.input-group > .form-control + .custom-select, +.input-group > .form-control + .custom-file, +.input-group > .form-control-plaintext + .form-control, +.input-group > .form-control-plaintext + .custom-select, +.input-group > .form-control-plaintext + .custom-file, +.input-group > .custom-select + .form-control, +.input-group > .custom-select + .custom-select, +.input-group > .custom-select + .custom-file, +.input-group > .custom-file + .form-control, +.input-group > .custom-file + .custom-select, +.input-group > .custom-file + .custom-file { + margin-left: -1px; +} + +.input-group > .form-control:focus, +.input-group > .custom-select:focus, +.input-group > .custom-file .custom-file-input:focus ~ .custom-file-label { + z-index: 3; +} + +.input-group > .custom-file .custom-file-input:focus { + z-index: 4; +} + +.input-group > .form-control:not(:last-child), +.input-group > .custom-select:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group > .form-control:not(:first-child), +.input-group > .custom-select:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.input-group > .custom-file { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; +} + +.input-group > .custom-file:not(:last-child) .custom-file-label, +.input-group > .custom-file:not(:last-child) .custom-file-label::after { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group > .custom-file:not(:first-child) .custom-file-label { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.input-group-prepend, +.input-group-append { + display: -ms-flexbox; + display: flex; +} + +.input-group-prepend .btn, +.input-group-append .btn { + position: relative; + z-index: 2; +} + +.input-group-prepend .btn:focus, +.input-group-append .btn:focus { + z-index: 3; +} + +.input-group-prepend .btn + .btn, +.input-group-prepend .btn + .input-group-text, +.input-group-prepend .input-group-text + .input-group-text, +.input-group-prepend .input-group-text + .btn, +.input-group-append .btn + .btn, +.input-group-append .btn + .input-group-text, +.input-group-append .input-group-text + .input-group-text, +.input-group-append .input-group-text + .btn { + margin-left: -1px; +} + +.input-group-prepend { + margin-right: -1px; +} + +.input-group-append { + margin-left: -1px; +} + +.input-group-text { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + padding: 0.375rem 0.75rem; + margin-bottom: 0; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + text-align: center; + white-space: nowrap; + background-color: #e9ecef; + border: 1px solid #ced4da; + border-radius: 0.25rem; +} + +.input-group-text input[type="radio"], +.input-group-text input[type="checkbox"] { + margin-top: 0; +} + +.input-group-lg > .form-control:not(textarea), +.input-group-lg > .custom-select { + height: calc(1.5em + 1rem + 2px); +} + +.input-group-lg > .form-control, +.input-group-lg > .custom-select, +.input-group-lg > .input-group-prepend > .input-group-text, +.input-group-lg > .input-group-append > .input-group-text, +.input-group-lg > .input-group-prepend > .btn, +.input-group-lg > .input-group-append > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: 0.3rem; +} + +.input-group-sm > .form-control:not(textarea), +.input-group-sm > .custom-select { + height: calc(1.5em + 0.5rem + 2px); +} + +.input-group-sm > .form-control, +.input-group-sm > .custom-select, +.input-group-sm > .input-group-prepend > .input-group-text, +.input-group-sm > .input-group-append > .input-group-text, +.input-group-sm > .input-group-prepend > .btn, +.input-group-sm > .input-group-append > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; + border-radius: 0.2rem; +} + +.input-group-lg > .custom-select, +.input-group-sm > .custom-select { + padding-right: 1.75rem; +} + +.input-group > .input-group-prepend > .btn, +.input-group > .input-group-prepend > .input-group-text, +.input-group > .input-group-append:not(:last-child) > .btn, +.input-group > .input-group-append:not(:last-child) > .input-group-text, +.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.input-group > .input-group-append > .btn, +.input-group > .input-group-append > .input-group-text, +.input-group > .input-group-prepend:not(:first-child) > .btn, +.input-group > .input-group-prepend:not(:first-child) > .input-group-text, +.input-group > .input-group-prepend:first-child > .btn:not(:first-child), +.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.custom-control { + position: relative; + display: block; + min-height: 1.5rem; + padding-left: 1.5rem; +} + +.custom-control-inline { + display: -ms-inline-flexbox; + display: inline-flex; + margin-right: 1rem; +} + +.custom-control-input { + position: absolute; + left: 0; + z-index: -1; + width: 1rem; + height: 1.25rem; + opacity: 0; +} + +.custom-control-input:checked ~ .custom-control-label::before { + color: #fff; + border-color: #007bff; + background-color: #007bff; +} + +.custom-control-input:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.custom-control-input:focus:not(:checked) ~ .custom-control-label::before { + border-color: #80bdff; +} + +.custom-control-input:not(:disabled):active ~ .custom-control-label::before { + color: #fff; + background-color: #b3d7ff; + border-color: #b3d7ff; +} + +.custom-control-input[disabled] ~ .custom-control-label, .custom-control-input:disabled ~ .custom-control-label { + color: #6c757d; +} + +.custom-control-input[disabled] ~ .custom-control-label::before, .custom-control-input:disabled ~ .custom-control-label::before { + background-color: #e9ecef; +} + +.custom-control-label { + position: relative; + margin-bottom: 0; + vertical-align: top; +} + +.custom-control-label::before { + position: absolute; + top: 0.25rem; + left: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + pointer-events: none; + content: ""; + background-color: #fff; + border: #adb5bd solid 1px; +} + +.custom-control-label::after { + position: absolute; + top: 0.25rem; + left: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + content: ""; + background: no-repeat 50% / 50% 50%; +} + +.custom-checkbox .custom-control-label::before { + border-radius: 0.25rem; +} + +.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e"); +} + +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before { + border-color: #007bff; + background-color: #007bff; +} + +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e"); +} + +.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(0, 123, 255, 0.5); +} + +.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before { + background-color: rgba(0, 123, 255, 0.5); +} + +.custom-radio .custom-control-label::before { + border-radius: 50%; +} + +.custom-radio .custom-control-input:checked ~ .custom-control-label::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); +} + +.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(0, 123, 255, 0.5); +} + +.custom-switch { + padding-left: 2.25rem; +} + +.custom-switch .custom-control-label::before { + left: -2.25rem; + width: 1.75rem; + pointer-events: all; + border-radius: 0.5rem; +} + +.custom-switch .custom-control-label::after { + top: calc(0.25rem + 2px); + left: calc(-2.25rem + 2px); + width: calc(1rem - 4px); + height: calc(1rem - 4px); + background-color: #adb5bd; + border-radius: 0.5rem; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out; + transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .custom-switch .custom-control-label::after { + transition: none; + } +} + +.custom-switch .custom-control-input:checked ~ .custom-control-label::after { + background-color: #fff; + -webkit-transform: translateX(0.75rem); + transform: translateX(0.75rem); +} + +.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(0, 123, 255, 0.5); +} + +.custom-select { + display: inline-block; + width: 100%; + height: calc(1.5em + 0.75rem + 2px); + padding: 0.375rem 1.75rem 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + vertical-align: middle; + background: #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px; + border: 1px solid #ced4da; + border-radius: 0.25rem; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +.custom-select:focus { + border-color: #80bdff; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.custom-select:focus::-ms-value { + color: #495057; + background-color: #fff; +} + +.custom-select[multiple], .custom-select[size]:not([size="1"]) { + height: auto; + padding-right: 0.75rem; + background-image: none; +} + +.custom-select:disabled { + color: #6c757d; + background-color: #e9ecef; +} + +.custom-select::-ms-expand { + display: none; +} + +.custom-select:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 #495057; +} + +.custom-select-sm { + height: calc(1.5em + 0.5rem + 2px); + padding-top: 0.25rem; + padding-bottom: 0.25rem; + padding-left: 0.5rem; + font-size: 0.875rem; +} + +.custom-select-lg { + height: calc(1.5em + 1rem + 2px); + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 1rem; + font-size: 1.25rem; +} + +.custom-file { + position: relative; + display: inline-block; + width: 100%; + height: calc(1.5em + 0.75rem + 2px); + margin-bottom: 0; +} + +.custom-file-input { + position: relative; + z-index: 2; + width: 100%; + height: calc(1.5em + 0.75rem + 2px); + margin: 0; + opacity: 0; +} + +.custom-file-input:focus ~ .custom-file-label { + border-color: #80bdff; + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.custom-file-input[disabled] ~ .custom-file-label, +.custom-file-input:disabled ~ .custom-file-label { + background-color: #e9ecef; +} + +.custom-file-input:lang(en) ~ .custom-file-label::after { + content: "Browse"; +} + +.custom-file-input ~ .custom-file-label[data-browse]::after { + content: attr(data-browse); +} + +.custom-file-label { + position: absolute; + top: 0; + right: 0; + left: 0; + z-index: 1; + height: calc(1.5em + 0.75rem + 2px); + padding: 0.375rem 0.75rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + background-color: #fff; + border: 1px solid #ced4da; + border-radius: 0.25rem; +} + +.custom-file-label::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + z-index: 3; + display: block; + height: calc(1.5em + 0.75rem); + padding: 0.375rem 0.75rem; + line-height: 1.5; + color: #495057; + content: "Browse"; + background-color: #e9ecef; + border-left: inherit; + border-radius: 0 0.25rem 0.25rem 0; +} + +.custom-range { + width: 100%; + height: 1.4rem; + padding: 0; + background-color: transparent; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} + +.custom-range:focus { + outline: none; +} + +.custom-range:focus::-webkit-slider-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.custom-range:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.custom-range:focus::-ms-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.custom-range::-moz-focus-outer { + border: 0; +} + +.custom-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.25rem; + background-color: #007bff; + border: 0; + border-radius: 1rem; + -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -webkit-appearance: none; + appearance: none; +} + +@media (prefers-reduced-motion: reduce) { + .custom-range::-webkit-slider-thumb { + -webkit-transition: none; + transition: none; + } +} + +.custom-range::-webkit-slider-thumb:active { + background-color: #b3d7ff; +} + +.custom-range::-webkit-slider-runnable-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem; +} + +.custom-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + background-color: #007bff; + border: 0; + border-radius: 1rem; + -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -moz-appearance: none; + appearance: none; +} + +@media (prefers-reduced-motion: reduce) { + .custom-range::-moz-range-thumb { + -moz-transition: none; + transition: none; + } +} + +.custom-range::-moz-range-thumb:active { + background-color: #b3d7ff; +} + +.custom-range::-moz-range-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem; +} + +.custom-range::-ms-thumb { + width: 1rem; + height: 1rem; + margin-top: 0; + margin-right: 0.2rem; + margin-left: 0.2rem; + background-color: #007bff; + border: 0; + border-radius: 1rem; + -ms-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + appearance: none; +} + +@media (prefers-reduced-motion: reduce) { + .custom-range::-ms-thumb { + -ms-transition: none; + transition: none; + } +} + +.custom-range::-ms-thumb:active { + background-color: #b3d7ff; +} + +.custom-range::-ms-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: transparent; + border-color: transparent; + border-width: 0.5rem; +} + +.custom-range::-ms-fill-lower { + background-color: #dee2e6; + border-radius: 1rem; +} + +.custom-range::-ms-fill-upper { + margin-right: 15px; + background-color: #dee2e6; + border-radius: 1rem; +} + +.custom-range:disabled::-webkit-slider-thumb { + background-color: #adb5bd; +} + +.custom-range:disabled::-webkit-slider-runnable-track { + cursor: default; +} + +.custom-range:disabled::-moz-range-thumb { + background-color: #adb5bd; +} + +.custom-range:disabled::-moz-range-track { + cursor: default; +} + +.custom-range:disabled::-ms-thumb { + background-color: #adb5bd; +} + +.custom-control-label::before, +.custom-file-label, +.custom-select { + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .custom-control-label::before, + .custom-file-label, + .custom-select { + transition: none; + } +} + +.nav { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.nav-link { + display: block; + padding: 0.5rem 1rem; +} + +.nav-link:hover, .nav-link:focus { + text-decoration: none; +} + +.nav-link.disabled { + color: #6c757d; + pointer-events: none; + cursor: default; +} + +.nav-tabs { + border-bottom: 1px solid #dee2e6; +} + +.nav-tabs .nav-item { + margin-bottom: -1px; +} + +.nav-tabs .nav-link { + border: 1px solid transparent; + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; +} + +.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { + border-color: #e9ecef #e9ecef #dee2e6; +} + +.nav-tabs .nav-link.disabled { + color: #6c757d; + background-color: transparent; + border-color: transparent; +} + +.nav-tabs .nav-link.active, +.nav-tabs .nav-item.show .nav-link { + color: #495057; + background-color: #fff; + border-color: #dee2e6 #dee2e6 #fff; +} + +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav-pills .nav-link { + border-radius: 0.25rem; +} + +.nav-pills .nav-link.active, +.nav-pills .show > .nav-link { + color: #fff; + background-color: #007bff; +} + +.nav-fill .nav-item { + -ms-flex: 1 1 auto; + flex: 1 1 auto; + text-align: center; +} + +.nav-justified .nav-item { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -ms-flex-positive: 1; + flex-grow: 1; + text-align: center; +} + +.tab-content > .tab-pane { + display: none; +} + +.tab-content > .active { + display: block; +} + +.navbar { + position: relative; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 0.5rem 1rem; +} + +.navbar .container, +.navbar .container-fluid, .navbar .container-sm, .navbar .container-md, .navbar .container-lg, .navbar .container-xl { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: justify; + justify-content: space-between; +} + +.navbar-brand { + display: inline-block; + padding-top: 0.3125rem; + padding-bottom: 0.3125rem; + margin-right: 1rem; + font-size: 1.25rem; + line-height: inherit; + white-space: nowrap; +} + +.navbar-brand:hover, .navbar-brand:focus { + text-decoration: none; +} + +.navbar-nav { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.navbar-nav .nav-link { + padding-right: 0; + padding-left: 0; +} + +.navbar-nav .dropdown-menu { + position: static; + float: none; +} + +.navbar-text { + display: inline-block; + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} + +.navbar-collapse { + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + -ms-flex-positive: 1; + flex-grow: 1; + -ms-flex-align: center; + align-items: center; +} + +.navbar-toggler { + padding: 0.25rem 0.75rem; + font-size: 1.25rem; + line-height: 1; + background-color: transparent; + border: 1px solid transparent; + border-radius: 0.25rem; +} + +.navbar-toggler:hover, .navbar-toggler:focus { + text-decoration: none; +} + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + content: ""; + background: no-repeat center center; + background-size: 100% 100%; +} + +@media (max-width: 575.98px) { + .navbar-expand-sm > .container, + .navbar-expand-sm > .container-fluid, .navbar-expand-sm > .container-sm, .navbar-expand-sm > .container-md, .navbar-expand-sm > .container-lg, .navbar-expand-sm > .container-xl { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 576px) { + .navbar-expand-sm { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start; + } + .navbar-expand-sm .navbar-nav { + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-sm .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-sm > .container, + .navbar-expand-sm > .container-fluid, .navbar-expand-sm > .container-sm, .navbar-expand-sm > .container-md, .navbar-expand-sm > .container-lg, .navbar-expand-sm > .container-xl { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .navbar-expand-sm .navbar-collapse { + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto; + } + .navbar-expand-sm .navbar-toggler { + display: none; + } +} + +@media (max-width: 767.98px) { + .navbar-expand-md > .container, + .navbar-expand-md > .container-fluid, .navbar-expand-md > .container-sm, .navbar-expand-md > .container-md, .navbar-expand-md > .container-lg, .navbar-expand-md > .container-xl { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 768px) { + .navbar-expand-md { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start; + } + .navbar-expand-md .navbar-nav { + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-md .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-md > .container, + .navbar-expand-md > .container-fluid, .navbar-expand-md > .container-sm, .navbar-expand-md > .container-md, .navbar-expand-md > .container-lg, .navbar-expand-md > .container-xl { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .navbar-expand-md .navbar-collapse { + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto; + } + .navbar-expand-md .navbar-toggler { + display: none; + } +} + +@media (max-width: 991.98px) { + .navbar-expand-lg > .container, + .navbar-expand-lg > .container-fluid, .navbar-expand-lg > .container-sm, .navbar-expand-lg > .container-md, .navbar-expand-lg > .container-lg, .navbar-expand-lg > .container-xl { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 992px) { + .navbar-expand-lg { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start; + } + .navbar-expand-lg .navbar-nav { + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-lg > .container, + .navbar-expand-lg > .container-fluid, .navbar-expand-lg > .container-sm, .navbar-expand-lg > .container-md, .navbar-expand-lg > .container-lg, .navbar-expand-lg > .container-xl { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .navbar-expand-lg .navbar-collapse { + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto; + } + .navbar-expand-lg .navbar-toggler { + display: none; + } +} + +@media (max-width: 1199.98px) { + .navbar-expand-xl > .container, + .navbar-expand-xl > .container-fluid, .navbar-expand-xl > .container-sm, .navbar-expand-xl > .container-md, .navbar-expand-xl > .container-lg, .navbar-expand-xl > .container-xl { + padding-right: 0; + padding-left: 0; + } +} + +@media (min-width: 1200px) { + .navbar-expand-xl { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start; + } + .navbar-expand-xl .navbar-nav { + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xl .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-xl > .container, + .navbar-expand-xl > .container-fluid, .navbar-expand-xl > .container-sm, .navbar-expand-xl > .container-md, .navbar-expand-xl > .container-lg, .navbar-expand-xl > .container-xl { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .navbar-expand-xl .navbar-collapse { + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto; + } + .navbar-expand-xl .navbar-toggler { + display: none; + } +} + +.navbar-expand { + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-pack: start; + justify-content: flex-start; +} + +.navbar-expand > .container, +.navbar-expand > .container-fluid, .navbar-expand > .container-sm, .navbar-expand > .container-md, .navbar-expand > .container-lg, .navbar-expand > .container-xl { + padding-right: 0; + padding-left: 0; +} + +.navbar-expand .navbar-nav { + -ms-flex-direction: row; + flex-direction: row; +} + +.navbar-expand .navbar-nav .dropdown-menu { + position: absolute; +} + +.navbar-expand .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; +} + +.navbar-expand > .container, +.navbar-expand > .container-fluid, .navbar-expand > .container-sm, .navbar-expand > .container-md, .navbar-expand > .container-lg, .navbar-expand > .container-xl { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; +} + +.navbar-expand .navbar-collapse { + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto; +} + +.navbar-expand .navbar-toggler { + display: none; +} + +.navbar-light .navbar-brand { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-nav .nav-link { + color: rgba(0, 0, 0, 0.5); +} + +.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus { + color: rgba(0, 0, 0, 0.7); +} + +.navbar-light .navbar-nav .nav-link.disabled { + color: rgba(0, 0, 0, 0.3); +} + +.navbar-light .navbar-nav .show > .nav-link, +.navbar-light .navbar-nav .active > .nav-link, +.navbar-light .navbar-nav .nav-link.show, +.navbar-light .navbar-nav .nav-link.active { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-toggler { + color: rgba(0, 0, 0, 0.5); + border-color: rgba(0, 0, 0, 0.1); +} + +.navbar-light .navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +.navbar-light .navbar-text { + color: rgba(0, 0, 0, 0.5); +} + +.navbar-light .navbar-text a { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-dark .navbar-brand { + color: #fff; +} + +.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus { + color: #fff; +} + +.navbar-dark .navbar-nav .nav-link { + color: rgba(255, 255, 255, 0.5); +} + +.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus { + color: rgba(255, 255, 255, 0.75); +} + +.navbar-dark .navbar-nav .nav-link.disabled { + color: rgba(255, 255, 255, 0.25); +} + +.navbar-dark .navbar-nav .show > .nav-link, +.navbar-dark .navbar-nav .active > .nav-link, +.navbar-dark .navbar-nav .nav-link.show, +.navbar-dark .navbar-nav .nav-link.active { + color: #fff; +} + +.navbar-dark .navbar-toggler { + color: rgba(255, 255, 255, 0.5); + border-color: rgba(255, 255, 255, 0.1); +} + +.navbar-dark .navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +.navbar-dark .navbar-text { + color: rgba(255, 255, 255, 0.5); +} + +.navbar-dark .navbar-text a { + color: #fff; +} + +.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus { + color: #fff; +} + +.card { + position: relative; + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + min-width: 0; + word-wrap: break-word; + background-color: #fff; + background-clip: border-box; + border: 1px solid rgba(0, 0, 0, 0.125); + border-radius: 0.25rem; +} + +.card > hr { + margin-right: 0; + margin-left: 0; +} + +.card > .list-group { + border-top: inherit; + border-bottom: inherit; +} + +.card > .list-group:first-child { + border-top-width: 0; + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px); +} + +.card > .list-group:last-child { + border-bottom-width: 0; + border-bottom-right-radius: calc(0.25rem - 1px); + border-bottom-left-radius: calc(0.25rem - 1px); +} + +.card-body { + -ms-flex: 1 1 auto; + flex: 1 1 auto; + min-height: 1px; + padding: 1.25rem; +} + +.card-title { + margin-bottom: 0.75rem; +} + +.card-subtitle { + margin-top: -0.375rem; + margin-bottom: 0; +} + +.card-text:last-child { + margin-bottom: 0; +} + +.card-link:hover { + text-decoration: none; +} + +.card-link + .card-link { + margin-left: 1.25rem; +} + +.card-header { + padding: 0.75rem 1.25rem; + margin-bottom: 0; + background-color: rgba(0, 0, 0, 0.03); + border-bottom: 1px solid rgba(0, 0, 0, 0.125); +} + +.card-header:first-child { + border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; +} + +.card-header + .list-group .list-group-item:first-child { + border-top: 0; +} + +.card-footer { + padding: 0.75rem 1.25rem; + background-color: rgba(0, 0, 0, 0.03); + border-top: 1px solid rgba(0, 0, 0, 0.125); +} + +.card-footer:last-child { + border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px); +} + +.card-header-tabs { + margin-right: -0.625rem; + margin-bottom: -0.75rem; + margin-left: -0.625rem; + border-bottom: 0; +} + +.card-header-pills { + margin-right: -0.625rem; + margin-left: -0.625rem; +} + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: 1.25rem; +} + +.card-img, +.card-img-top, +.card-img-bottom { + -ms-flex-negative: 0; + flex-shrink: 0; + width: 100%; +} + +.card-img, +.card-img-top { + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px); +} + +.card-img, +.card-img-bottom { + border-bottom-right-radius: calc(0.25rem - 1px); + border-bottom-left-radius: calc(0.25rem - 1px); +} + +.card-deck .card { + margin-bottom: 15px; +} + +@media (min-width: 576px) { + .card-deck { + display: -ms-flexbox; + display: flex; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + margin-right: -15px; + margin-left: -15px; + } + .card-deck .card { + -ms-flex: 1 0 0%; + flex: 1 0 0%; + margin-right: 15px; + margin-bottom: 0; + margin-left: 15px; + } +} + +.card-group > .card { + margin-bottom: 15px; +} + +@media (min-width: 576px) { + .card-group { + display: -ms-flexbox; + display: flex; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + } + .card-group > .card { + -ms-flex: 1 0 0%; + flex: 1 0 0%; + margin-bottom: 0; + } + .card-group > .card + .card { + margin-left: 0; + border-left: 0; + } + .card-group > .card:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-top, + .card-group > .card:not(:last-child) .card-header { + border-top-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-bottom, + .card-group > .card:not(:last-child) .card-footer { + border-bottom-right-radius: 0; + } + .card-group > .card:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-top, + .card-group > .card:not(:first-child) .card-header { + border-top-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-bottom, + .card-group > .card:not(:first-child) .card-footer { + border-bottom-left-radius: 0; + } +} + +.card-columns .card { + margin-bottom: 0.75rem; +} + +@media (min-width: 576px) { + .card-columns { + -webkit-column-count: 3; + -moz-column-count: 3; + column-count: 3; + -webkit-column-gap: 1.25rem; + -moz-column-gap: 1.25rem; + column-gap: 1.25rem; + orphans: 1; + widows: 1; + } + .card-columns .card { + display: inline-block; + width: 100%; + } +} + +.accordion > .card { + overflow: hidden; +} + +.accordion > .card:not(:last-of-type) { + border-bottom: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.accordion > .card:not(:first-of-type) { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.accordion > .card > .card-header { + border-radius: 0; + margin-bottom: -1px; +} + +.breadcrumb { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding: 0.75rem 1rem; + margin-bottom: 1rem; + list-style: none; + background-color: #e9ecef; + border-radius: 0.25rem; +} + +.breadcrumb-item { + display: -ms-flexbox; + display: flex; +} + +.breadcrumb-item + .breadcrumb-item { + padding-left: 0.5rem; +} + +.breadcrumb-item + .breadcrumb-item::before { + display: inline-block; + padding-right: 0.5rem; + color: #6c757d; + content: "/"; +} + +.breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: underline; +} + +.breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: none; +} + +.breadcrumb-item.active { + color: #6c757d; +} + +.pagination { + display: -ms-flexbox; + display: flex; + padding-left: 0; + list-style: none; + border-radius: 0.25rem; +} + +.page-link { + position: relative; + display: block; + padding: 0.5rem 0.75rem; + margin-left: -1px; + line-height: 1.25; + color: #007bff; + background-color: #fff; + border: 1px solid #dee2e6; +} + +.page-link:hover { + z-index: 2; + color: #0056b3; + text-decoration: none; + background-color: #e9ecef; + border-color: #dee2e6; +} + +.page-link:focus { + z-index: 3; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25); +} + +.page-item:first-child .page-link { + margin-left: 0; + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} + +.page-item:last-child .page-link { + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; +} + +.page-item.active .page-link { + z-index: 3; + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.page-item.disabled .page-link { + color: #6c757d; + pointer-events: none; + cursor: auto; + background-color: #fff; + border-color: #dee2e6; +} + +.pagination-lg .page-link { + padding: 0.75rem 1.5rem; + font-size: 1.25rem; + line-height: 1.5; +} + +.pagination-lg .page-item:first-child .page-link { + border-top-left-radius: 0.3rem; + border-bottom-left-radius: 0.3rem; +} + +.pagination-lg .page-item:last-child .page-link { + border-top-right-radius: 0.3rem; + border-bottom-right-radius: 0.3rem; +} + +.pagination-sm .page-link { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; +} + +.pagination-sm .page-item:first-child .page-link { + border-top-left-radius: 0.2rem; + border-bottom-left-radius: 0.2rem; +} + +.pagination-sm .page-item:last-child .page-link { + border-top-right-radius: 0.2rem; + border-bottom-right-radius: 0.2rem; +} + +.badge { + display: inline-block; + padding: 0.25em 0.4em; + font-size: 75%; + font-weight: 700; + line-height: 1; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: 0.25rem; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .badge { + transition: none; + } +} + +a.badge:hover, a.badge:focus { + text-decoration: none; +} + +.badge:empty { + display: none; +} + +.btn .badge { + position: relative; + top: -1px; +} + +.badge-pill { + padding-right: 0.6em; + padding-left: 0.6em; + border-radius: 10rem; +} + +.badge-primary { + color: #fff; + background-color: #007bff; +} + +a.badge-primary:hover, a.badge-primary:focus { + color: #fff; + background-color: #0062cc; +} + +a.badge-primary:focus, a.badge-primary.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5); +} + +.badge-secondary { + color: #fff; + background-color: #6c757d; +} + +a.badge-secondary:hover, a.badge-secondary:focus { + color: #fff; + background-color: #545b62; +} + +a.badge-secondary:focus, a.badge-secondary.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5); +} + +.badge-success { + color: #fff; + background-color: #28a745; +} + +a.badge-success:hover, a.badge-success:focus { + color: #fff; + background-color: #1e7e34; +} + +a.badge-success:focus, a.badge-success.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); +} + +.badge-info { + color: #fff; + background-color: #17a2b8; +} + +a.badge-info:hover, a.badge-info:focus { + color: #fff; + background-color: #117a8b; +} + +a.badge-info:focus, a.badge-info.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); +} + +.badge-warning { + color: #212529; + background-color: #ffc107; +} + +a.badge-warning:hover, a.badge-warning:focus { + color: #212529; + background-color: #d39e00; +} + +a.badge-warning:focus, a.badge-warning.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); +} + +.badge-danger { + color: #fff; + background-color: #dc3545; +} + +a.badge-danger:hover, a.badge-danger:focus { + color: #fff; + background-color: #bd2130; +} + +a.badge-danger:focus, a.badge-danger.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); +} + +.badge-light { + color: #212529; + background-color: #f8f9fa; +} + +a.badge-light:hover, a.badge-light:focus { + color: #212529; + background-color: #dae0e5; +} + +a.badge-light:focus, a.badge-light.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); +} + +.badge-dark { + color: #fff; + background-color: #343a40; +} + +a.badge-dark:hover, a.badge-dark:focus { + color: #fff; + background-color: #1d2124; +} + +a.badge-dark:focus, a.badge-dark.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5); +} + +.jumbotron { + padding: 2rem 1rem; + margin-bottom: 2rem; + background-color: #e9ecef; + border-radius: 0.3rem; +} + +@media (min-width: 576px) { + .jumbotron { + padding: 4rem 2rem; + } +} + +.jumbotron-fluid { + padding-right: 0; + padding-left: 0; + border-radius: 0; +} + +.alert { + position: relative; + padding: 0.75rem 1.25rem; + margin-bottom: 1rem; + border: 1px solid transparent; + border-radius: 0.25rem; +} + +.alert-heading { + color: inherit; +} + +.alert-link { + font-weight: 700; +} + +.alert-dismissible { + padding-right: 4rem; +} + +.alert-dismissible .close { + position: absolute; + top: 0; + right: 0; + padding: 0.75rem 1.25rem; + color: inherit; +} + +.alert-primary { + color: #004085; + background-color: #cce5ff; + border-color: #b8daff; +} + +.alert-primary hr { + border-top-color: #9fcdff; +} + +.alert-primary .alert-link { + color: #002752; +} + +.alert-secondary { + color: #383d41; + background-color: #e2e3e5; + border-color: #d6d8db; +} + +.alert-secondary hr { + border-top-color: #c8cbcf; +} + +.alert-secondary .alert-link { + color: #202326; +} + +.alert-success { + color: #155724; + background-color: #d4edda; + border-color: #c3e6cb; +} + +.alert-success hr { + border-top-color: #b1dfbb; +} + +.alert-success .alert-link { + color: #0b2e13; +} + +.alert-info { + color: #0c5460; + background-color: #d1ecf1; + border-color: #bee5eb; +} + +.alert-info hr { + border-top-color: #abdde5; +} + +.alert-info .alert-link { + color: #062c33; +} + +.alert-warning { + color: #856404; + background-color: #fff3cd; + border-color: #ffeeba; +} + +.alert-warning hr { + border-top-color: #ffe8a1; +} + +.alert-warning .alert-link { + color: #533f03; +} + +.alert-danger { + color: #721c24; + background-color: #f8d7da; + border-color: #f5c6cb; +} + +.alert-danger hr { + border-top-color: #f1b0b7; +} + +.alert-danger .alert-link { + color: #491217; +} + +.alert-light { + color: #818182; + background-color: #fefefe; + border-color: #fdfdfe; +} + +.alert-light hr { + border-top-color: #ececf6; +} + +.alert-light .alert-link { + color: #686868; +} + +.alert-dark { + color: #1b1e21; + background-color: #d6d8d9; + border-color: #c6c8ca; +} + +.alert-dark hr { + border-top-color: #b9bbbe; +} + +.alert-dark .alert-link { + color: #040505; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 1rem 0; + } + to { + background-position: 0 0; + } +} + +.progress { + display: -ms-flexbox; + display: flex; + height: 1rem; + overflow: hidden; + line-height: 0; + font-size: 0.75rem; + background-color: #e9ecef; + border-radius: 0.25rem; +} + +.progress-bar { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: center; + justify-content: center; + overflow: hidden; + color: #fff; + text-align: center; + white-space: nowrap; + background-color: #007bff; + transition: width 0.6s ease; +} + +@media (prefers-reduced-motion: reduce) { + .progress-bar { + transition: none; + } +} + +.progress-bar-striped { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 1rem 1rem; +} + +.progress-bar-animated { + -webkit-animation: progress-bar-stripes 1s linear infinite; + animation: progress-bar-stripes 1s linear infinite; +} + +@media (prefers-reduced-motion: reduce) { + .progress-bar-animated { + -webkit-animation: none; + animation: none; + } +} + +.media { + display: -ms-flexbox; + display: flex; + -ms-flex-align: start; + align-items: flex-start; +} + +.media-body { + -ms-flex: 1; + flex: 1; +} + +.list-group { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + border-radius: 0.25rem; +} + +.list-group-item-action { + width: 100%; + color: #495057; + text-align: inherit; +} + +.list-group-item-action:hover, .list-group-item-action:focus { + z-index: 1; + color: #495057; + text-decoration: none; + background-color: #f8f9fa; +} + +.list-group-item-action:active { + color: #212529; + background-color: #e9ecef; +} + +.list-group-item { + position: relative; + display: block; + padding: 0.75rem 1.25rem; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, 0.125); +} + +.list-group-item:first-child { + border-top-left-radius: inherit; + border-top-right-radius: inherit; +} + +.list-group-item:last-child { + border-bottom-right-radius: inherit; + border-bottom-left-radius: inherit; +} + +.list-group-item.disabled, .list-group-item:disabled { + color: #6c757d; + pointer-events: none; + background-color: #fff; +} + +.list-group-item.active { + z-index: 2; + color: #fff; + background-color: #007bff; + border-color: #007bff; +} + +.list-group-item + .list-group-item { + border-top-width: 0; +} + +.list-group-item + .list-group-item.active { + margin-top: -1px; + border-top-width: 1px; +} + +.list-group-horizontal { + -ms-flex-direction: row; + flex-direction: row; +} + +.list-group-horizontal > .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; +} + +.list-group-horizontal > .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; +} + +.list-group-horizontal > .list-group-item.active { + margin-top: 0; +} + +.list-group-horizontal > .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; +} + +.list-group-horizontal > .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; +} + +@media (min-width: 576px) { + .list-group-horizontal-sm { + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-sm > .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .list-group-horizontal-sm > .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + .list-group-horizontal-sm > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; + } +} + +@media (min-width: 768px) { + .list-group-horizontal-md { + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-md > .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .list-group-horizontal-md > .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + .list-group-horizontal-md > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; + } +} + +@media (min-width: 992px) { + .list-group-horizontal-lg { + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-lg > .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .list-group-horizontal-lg > .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + .list-group-horizontal-lg > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; + } +} + +@media (min-width: 1200px) { + .list-group-horizontal-xl { + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-xl > .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .list-group-horizontal-xl > .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + .list-group-horizontal-xl > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; + } +} + +.list-group-flush { + border-radius: 0; +} + +.list-group-flush > .list-group-item { + border-width: 0 0 1px; +} + +.list-group-flush > .list-group-item:last-child { + border-bottom-width: 0; +} + +.list-group-item-primary { + color: #004085; + background-color: #b8daff; +} + +.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { + color: #004085; + background-color: #9fcdff; +} + +.list-group-item-primary.list-group-item-action.active { + color: #fff; + background-color: #004085; + border-color: #004085; +} + +.list-group-item-secondary { + color: #383d41; + background-color: #d6d8db; +} + +.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { + color: #383d41; + background-color: #c8cbcf; +} + +.list-group-item-secondary.list-group-item-action.active { + color: #fff; + background-color: #383d41; + border-color: #383d41; +} + +.list-group-item-success { + color: #155724; + background-color: #c3e6cb; +} + +.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { + color: #155724; + background-color: #b1dfbb; +} + +.list-group-item-success.list-group-item-action.active { + color: #fff; + background-color: #155724; + border-color: #155724; +} + +.list-group-item-info { + color: #0c5460; + background-color: #bee5eb; +} + +.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { + color: #0c5460; + background-color: #abdde5; +} + +.list-group-item-info.list-group-item-action.active { + color: #fff; + background-color: #0c5460; + border-color: #0c5460; +} + +.list-group-item-warning { + color: #856404; + background-color: #ffeeba; +} + +.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { + color: #856404; + background-color: #ffe8a1; +} + +.list-group-item-warning.list-group-item-action.active { + color: #fff; + background-color: #856404; + border-color: #856404; +} + +.list-group-item-danger { + color: #721c24; + background-color: #f5c6cb; +} + +.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { + color: #721c24; + background-color: #f1b0b7; +} + +.list-group-item-danger.list-group-item-action.active { + color: #fff; + background-color: #721c24; + border-color: #721c24; +} + +.list-group-item-light { + color: #818182; + background-color: #fdfdfe; +} + +.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { + color: #818182; + background-color: #ececf6; +} + +.list-group-item-light.list-group-item-action.active { + color: #fff; + background-color: #818182; + border-color: #818182; +} + +.list-group-item-dark { + color: #1b1e21; + background-color: #c6c8ca; +} + +.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { + color: #1b1e21; + background-color: #b9bbbe; +} + +.list-group-item-dark.list-group-item-action.active { + color: #fff; + background-color: #1b1e21; + border-color: #1b1e21; +} + +.close { + float: right; + font-size: 1.5rem; + font-weight: 700; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + opacity: .5; +} + +.close:hover { + color: #000; + text-decoration: none; +} + +.close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus { + opacity: .75; +} + +button.close { + padding: 0; + background-color: transparent; + border: 0; +} + +a.close.disabled { + pointer-events: none; +} + +.toast { + max-width: 350px; + overflow: hidden; + font-size: 0.875rem; + background-color: rgba(255, 255, 255, 0.85); + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.1); + box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1); + -webkit-backdrop-filter: blur(10px); + backdrop-filter: blur(10px); + opacity: 0; + border-radius: 0.25rem; +} + +.toast:not(:last-child) { + margin-bottom: 0.75rem; +} + +.toast.showing { + opacity: 1; +} + +.toast.show { + display: block; + opacity: 1; +} + +.toast.hide { + display: none; +} + +.toast-header { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + padding: 0.25rem 0.75rem; + color: #6c757d; + background-color: rgba(255, 255, 255, 0.85); + background-clip: padding-box; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); +} + +.toast-body { + padding: 0.75rem; +} + +.modal-open { + overflow: hidden; +} + +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} + +.modal { + position: fixed; + top: 0; + left: 0; + z-index: 1050; + display: none; + width: 100%; + height: 100%; + overflow: hidden; + outline: 0; +} + +.modal-dialog { + position: relative; + width: auto; + margin: 0.5rem; + pointer-events: none; +} + +.modal.fade .modal-dialog { + transition: -webkit-transform 0.3s ease-out; + transition: transform 0.3s ease-out; + transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out; + -webkit-transform: translate(0, -50px); + transform: translate(0, -50px); +} + +@media (prefers-reduced-motion: reduce) { + .modal.fade .modal-dialog { + transition: none; + } +} + +.modal.show .modal-dialog { + -webkit-transform: none; + transform: none; +} + +.modal.modal-static .modal-dialog { + -webkit-transform: scale(1.02); + transform: scale(1.02); +} + +.modal-dialog-scrollable { + display: -ms-flexbox; + display: flex; + max-height: calc(100% - 1rem); +} + +.modal-dialog-scrollable .modal-content { + max-height: calc(100vh - 1rem); + overflow: hidden; +} + +.modal-dialog-scrollable .modal-header, +.modal-dialog-scrollable .modal-footer { + -ms-flex-negative: 0; + flex-shrink: 0; +} + +.modal-dialog-scrollable .modal-body { + overflow-y: auto; +} + +.modal-dialog-centered { + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + min-height: calc(100% - 1rem); +} + +.modal-dialog-centered::before { + display: block; + height: calc(100vh - 1rem); + height: -webkit-min-content; + height: -moz-min-content; + height: min-content; + content: ""; +} + +.modal-dialog-centered.modal-dialog-scrollable { + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: center; + justify-content: center; + height: 100%; +} + +.modal-dialog-centered.modal-dialog-scrollable .modal-content { + max-height: none; +} + +.modal-dialog-centered.modal-dialog-scrollable::before { + content: none; +} + +.modal-content { + position: relative; + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + width: 100%; + pointer-events: auto; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; + outline: 0; +} + +.modal-backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 1040; + width: 100vw; + height: 100vh; + background-color: #000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop.show { + opacity: 0.5; +} + +.modal-header { + display: -ms-flexbox; + display: flex; + -ms-flex-align: start; + align-items: flex-start; + -ms-flex-pack: justify; + justify-content: space-between; + padding: 1rem 1rem; + border-bottom: 1px solid #dee2e6; + border-top-left-radius: calc(0.3rem - 1px); + border-top-right-radius: calc(0.3rem - 1px); +} + +.modal-header .close { + padding: 1rem 1rem; + margin: -1rem -1rem -1rem auto; +} + +.modal-title { + margin-bottom: 0; + line-height: 1.5; +} + +.modal-body { + position: relative; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + padding: 1rem; +} + +.modal-footer { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: end; + justify-content: flex-end; + padding: 0.75rem; + border-top: 1px solid #dee2e6; + border-bottom-right-radius: calc(0.3rem - 1px); + border-bottom-left-radius: calc(0.3rem - 1px); +} + +.modal-footer > * { + margin: 0.25rem; +} + +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} + +@media (min-width: 576px) { + .modal-dialog { + max-width: 500px; + margin: 1.75rem auto; + } + .modal-dialog-scrollable { + max-height: calc(100% - 3.5rem); + } + .modal-dialog-scrollable .modal-content { + max-height: calc(100vh - 3.5rem); + } + .modal-dialog-centered { + min-height: calc(100% - 3.5rem); + } + .modal-dialog-centered::before { + height: calc(100vh - 3.5rem); + height: -webkit-min-content; + height: -moz-min-content; + height: min-content; + } + .modal-sm { + max-width: 300px; + } +} + +@media (min-width: 992px) { + .modal-lg, + .modal-xl { + max-width: 800px; + } +} + +@media (min-width: 1200px) { + .modal-xl { + max-width: 1140px; + } +} + +.tooltip { + position: absolute; + z-index: 1070; + display: block; + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + opacity: 0; +} + +.tooltip.show { + opacity: 0.9; +} + +.tooltip .arrow { + position: absolute; + display: block; + width: 0.8rem; + height: 0.4rem; +} + +.tooltip .arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-tooltip-top, .bs-tooltip-auto[x-placement^="top"] { + padding: 0.4rem 0; +} + +.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^="top"] .arrow { + bottom: 0; +} + +.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^="top"] .arrow::before { + top: 0; + border-width: 0.4rem 0.4rem 0; + border-top-color: #000; +} + +.bs-tooltip-right, .bs-tooltip-auto[x-placement^="right"] { + padding: 0 0.4rem; +} + +.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^="right"] .arrow { + left: 0; + width: 0.4rem; + height: 0.8rem; +} + +.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^="right"] .arrow::before { + right: 0; + border-width: 0.4rem 0.4rem 0.4rem 0; + border-right-color: #000; +} + +.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^="bottom"] { + padding: 0.4rem 0; +} + +.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^="bottom"] .arrow { + top: 0; +} + +.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^="bottom"] .arrow::before { + bottom: 0; + border-width: 0 0.4rem 0.4rem; + border-bottom-color: #000; +} + +.bs-tooltip-left, .bs-tooltip-auto[x-placement^="left"] { + padding: 0 0.4rem; +} + +.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^="left"] .arrow { + right: 0; + width: 0.4rem; + height: 0.8rem; +} + +.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^="left"] .arrow::before { + left: 0; + border-width: 0.4rem 0 0.4rem 0.4rem; + border-left-color: #000; +} + +.tooltip-inner { + max-width: 200px; + padding: 0.25rem 0.5rem; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 0.25rem; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: block; + max-width: 276px; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; +} + +.popover .arrow { + position: absolute; + display: block; + width: 1rem; + height: 0.5rem; + margin: 0 0.3rem; +} + +.popover .arrow::before, .popover .arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-popover-top, .bs-popover-auto[x-placement^="top"] { + margin-bottom: 0.5rem; +} + +.bs-popover-top > .arrow, .bs-popover-auto[x-placement^="top"] > .arrow { + bottom: calc(-0.5rem - 1px); +} + +.bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^="top"] > .arrow::before { + bottom: 0; + border-width: 0.5rem 0.5rem 0; + border-top-color: rgba(0, 0, 0, 0.25); +} + +.bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^="top"] > .arrow::after { + bottom: 1px; + border-width: 0.5rem 0.5rem 0; + border-top-color: #fff; +} + +.bs-popover-right, .bs-popover-auto[x-placement^="right"] { + margin-left: 0.5rem; +} + +.bs-popover-right > .arrow, .bs-popover-auto[x-placement^="right"] > .arrow { + left: calc(-0.5rem - 1px); + width: 0.5rem; + height: 1rem; + margin: 0.3rem 0; +} + +.bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^="right"] > .arrow::before { + left: 0; + border-width: 0.5rem 0.5rem 0.5rem 0; + border-right-color: rgba(0, 0, 0, 0.25); +} + +.bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^="right"] > .arrow::after { + left: 1px; + border-width: 0.5rem 0.5rem 0.5rem 0; + border-right-color: #fff; +} + +.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"] { + margin-top: 0.5rem; +} + +.bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^="bottom"] > .arrow { + top: calc(-0.5rem - 1px); +} + +.bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^="bottom"] > .arrow::before { + top: 0; + border-width: 0 0.5rem 0.5rem 0.5rem; + border-bottom-color: rgba(0, 0, 0, 0.25); +} + +.bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^="bottom"] > .arrow::after { + top: 1px; + border-width: 0 0.5rem 0.5rem 0.5rem; + border-bottom-color: #fff; +} + +.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^="bottom"] .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: 1rem; + margin-left: -0.5rem; + content: ""; + border-bottom: 1px solid #f7f7f7; +} + +.bs-popover-left, .bs-popover-auto[x-placement^="left"] { + margin-right: 0.5rem; +} + +.bs-popover-left > .arrow, .bs-popover-auto[x-placement^="left"] > .arrow { + right: calc(-0.5rem - 1px); + width: 0.5rem; + height: 1rem; + margin: 0.3rem 0; +} + +.bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^="left"] > .arrow::before { + right: 0; + border-width: 0.5rem 0 0.5rem 0.5rem; + border-left-color: rgba(0, 0, 0, 0.25); +} + +.bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^="left"] > .arrow::after { + right: 1px; + border-width: 0.5rem 0 0.5rem 0.5rem; + border-left-color: #fff; +} + +.popover-header { + padding: 0.5rem 0.75rem; + margin-bottom: 0; + font-size: 1rem; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-top-left-radius: calc(0.3rem - 1px); + border-top-right-radius: calc(0.3rem - 1px); +} + +.popover-header:empty { + display: none; +} + +.popover-body { + padding: 0.5rem 0.75rem; + color: #212529; +} + +.carousel { + position: relative; +} + +.carousel.pointer-event { + -ms-touch-action: pan-y; + touch-action: pan-y; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-inner::after { + display: block; + clear: both; + content: ""; +} + +.carousel-item { + position: relative; + display: none; + float: left; + width: 100%; + margin-right: -100%; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + transition: -webkit-transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-item { + transition: none; + } +} + +.carousel-item.active, +.carousel-item-next, +.carousel-item-prev { + display: block; +} + +.carousel-item-next:not(.carousel-item-left), +.active.carousel-item-right { + -webkit-transform: translateX(100%); + transform: translateX(100%); +} + +.carousel-item-prev:not(.carousel-item-right), +.active.carousel-item-left { + -webkit-transform: translateX(-100%); + transform: translateX(-100%); +} + +.carousel-fade .carousel-item { + opacity: 0; + transition-property: opacity; + -webkit-transform: none; + transform: none; +} + +.carousel-fade .carousel-item.active, +.carousel-fade .carousel-item-next.carousel-item-left, +.carousel-fade .carousel-item-prev.carousel-item-right { + z-index: 1; + opacity: 1; +} + +.carousel-fade .active.carousel-item-left, +.carousel-fade .active.carousel-item-right { + z-index: 0; + opacity: 0; + transition: opacity 0s 0.6s; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-fade .active.carousel-item-left, + .carousel-fade .active.carousel-item-right { + transition: none; + } +} + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + display: -ms-flexbox; + display: flex; + -ms-flex-align: center; + align-items: center; + -ms-flex-pack: center; + justify-content: center; + width: 15%; + color: #fff; + text-align: center; + opacity: 0.5; + transition: opacity 0.15s ease; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-control-prev, + .carousel-control-next { + transition: none; + } +} + +.carousel-control-prev:hover, .carousel-control-prev:focus, +.carousel-control-next:hover, +.carousel-control-next:focus { + color: #fff; + text-decoration: none; + outline: 0; + opacity: 0.9; +} + +.carousel-control-prev { + left: 0; +} + +.carousel-control-next { + right: 0; +} + +.carousel-control-prev-icon, +.carousel-control-next-icon { + display: inline-block; + width: 20px; + height: 20px; + background: no-repeat 50% / 100% 100%; +} + +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e"); +} + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e"); +} + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 0; + left: 0; + z-index: 15; + display: -ms-flexbox; + display: flex; + -ms-flex-pack: center; + justify-content: center; + padding-left: 0; + margin-right: 15%; + margin-left: 15%; + list-style: none; +} + +.carousel-indicators li { + box-sizing: content-box; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + width: 30px; + height: 3px; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + cursor: pointer; + background-color: #fff; + background-clip: padding-box; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + opacity: .5; + transition: opacity 0.6s ease; +} + +@media (prefers-reduced-motion: reduce) { + .carousel-indicators li { + transition: none; + } +} + +.carousel-indicators .active { + opacity: 1; +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; +} + +@-webkit-keyframes spinner-border { + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes spinner-border { + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +.spinner-border { + display: inline-block; + width: 2rem; + height: 2rem; + vertical-align: text-bottom; + border: 0.25em solid currentColor; + border-right-color: transparent; + border-radius: 50%; + -webkit-animation: spinner-border .75s linear infinite; + animation: spinner-border .75s linear infinite; +} + +.spinner-border-sm { + width: 1rem; + height: 1rem; + border-width: 0.2em; +} + +@-webkit-keyframes spinner-grow { + 0% { + -webkit-transform: scale(0); + transform: scale(0); + } + 50% { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes spinner-grow { + 0% { + -webkit-transform: scale(0); + transform: scale(0); + } + 50% { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +.spinner-grow { + display: inline-block; + width: 2rem; + height: 2rem; + vertical-align: text-bottom; + background-color: currentColor; + border-radius: 50%; + opacity: 0; + -webkit-animation: spinner-grow .75s linear infinite; + animation: spinner-grow .75s linear infinite; +} + +.spinner-grow-sm { + width: 1rem; + height: 1rem; +} + +.align-baseline { + vertical-align: baseline !important; +} + +.align-top { + vertical-align: top !important; +} + +.align-middle { + vertical-align: middle !important; +} + +.align-bottom { + vertical-align: bottom !important; +} + +.align-text-bottom { + vertical-align: text-bottom !important; +} + +.align-text-top { + vertical-align: text-top !important; +} + +.bg-primary { + background-color: #007bff !important; +} + +a.bg-primary:hover, a.bg-primary:focus, +button.bg-primary:hover, +button.bg-primary:focus { + background-color: #0062cc !important; +} + +.bg-secondary { + background-color: #6c757d !important; +} + +a.bg-secondary:hover, a.bg-secondary:focus, +button.bg-secondary:hover, +button.bg-secondary:focus { + background-color: #545b62 !important; +} + +.bg-success { + background-color: #28a745 !important; +} + +a.bg-success:hover, a.bg-success:focus, +button.bg-success:hover, +button.bg-success:focus { + background-color: #1e7e34 !important; +} + +.bg-info { + background-color: #17a2b8 !important; +} + +a.bg-info:hover, a.bg-info:focus, +button.bg-info:hover, +button.bg-info:focus { + background-color: #117a8b !important; +} + +.bg-warning { + background-color: #ffc107 !important; +} + +a.bg-warning:hover, a.bg-warning:focus, +button.bg-warning:hover, +button.bg-warning:focus { + background-color: #d39e00 !important; +} + +.bg-danger { + background-color: #dc3545 !important; +} + +a.bg-danger:hover, a.bg-danger:focus, +button.bg-danger:hover, +button.bg-danger:focus { + background-color: #bd2130 !important; +} + +.bg-light { + background-color: #f8f9fa !important; +} + +a.bg-light:hover, a.bg-light:focus, +button.bg-light:hover, +button.bg-light:focus { + background-color: #dae0e5 !important; +} + +.bg-dark { + background-color: #343a40 !important; +} + +a.bg-dark:hover, a.bg-dark:focus, +button.bg-dark:hover, +button.bg-dark:focus { + background-color: #1d2124 !important; +} + +.bg-white { + background-color: #fff !important; +} + +.bg-transparent { + background-color: transparent !important; +} + +.border { + border: 1px solid #dee2e6 !important; +} + +.border-top { + border-top: 1px solid #dee2e6 !important; +} + +.border-right { + border-right: 1px solid #dee2e6 !important; +} + +.border-bottom { + border-bottom: 1px solid #dee2e6 !important; +} + +.border-left { + border-left: 1px solid #dee2e6 !important; +} + +.border-0 { + border: 0 !important; +} + +.border-top-0 { + border-top: 0 !important; +} + +.border-right-0 { + border-right: 0 !important; +} + +.border-bottom-0 { + border-bottom: 0 !important; +} + +.border-left-0 { + border-left: 0 !important; +} + +.border-primary { + border-color: #007bff !important; +} + +.border-secondary { + border-color: #6c757d !important; +} + +.border-success { + border-color: #28a745 !important; +} + +.border-info { + border-color: #17a2b8 !important; +} + +.border-warning { + border-color: #ffc107 !important; +} + +.border-danger { + border-color: #dc3545 !important; +} + +.border-light { + border-color: #f8f9fa !important; +} + +.border-dark { + border-color: #343a40 !important; +} + +.border-white { + border-color: #fff !important; +} + +.rounded-sm { + border-radius: 0.2rem !important; +} + +.rounded { + border-radius: 0.25rem !important; +} + +.rounded-top { + border-top-left-radius: 0.25rem !important; + border-top-right-radius: 0.25rem !important; +} + +.rounded-right { + border-top-right-radius: 0.25rem !important; + border-bottom-right-radius: 0.25rem !important; +} + +.rounded-bottom { + border-bottom-right-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important; +} + +.rounded-left { + border-top-left-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important; +} + +.rounded-lg { + border-radius: 0.3rem !important; +} + +.rounded-circle { + border-radius: 50% !important; +} + +.rounded-pill { + border-radius: 50rem !important; +} + +.rounded-0 { + border-radius: 0 !important; +} + +.clearfix::after { + display: block; + clear: both; + content: ""; +} + +.d-none { + display: none !important; +} + +.d-inline { + display: inline !important; +} + +.d-inline-block { + display: inline-block !important; +} + +.d-block { + display: block !important; +} + +.d-table { + display: table !important; +} + +.d-table-row { + display: table-row !important; +} + +.d-table-cell { + display: table-cell !important; +} + +.d-flex { + display: -ms-flexbox !important; + display: flex !important; +} + +.d-inline-flex { + display: -ms-inline-flexbox !important; + display: inline-flex !important; +} + +@media (min-width: 576px) { + .d-sm-none { + display: none !important; + } + .d-sm-inline { + display: inline !important; + } + .d-sm-inline-block { + display: inline-block !important; + } + .d-sm-block { + display: block !important; + } + .d-sm-table { + display: table !important; + } + .d-sm-table-row { + display: table-row !important; + } + .d-sm-table-cell { + display: table-cell !important; + } + .d-sm-flex { + display: -ms-flexbox !important; + display: flex !important; + } + .d-sm-inline-flex { + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +@media (min-width: 768px) { + .d-md-none { + display: none !important; + } + .d-md-inline { + display: inline !important; + } + .d-md-inline-block { + display: inline-block !important; + } + .d-md-block { + display: block !important; + } + .d-md-table { + display: table !important; + } + .d-md-table-row { + display: table-row !important; + } + .d-md-table-cell { + display: table-cell !important; + } + .d-md-flex { + display: -ms-flexbox !important; + display: flex !important; + } + .d-md-inline-flex { + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +@media (min-width: 992px) { + .d-lg-none { + display: none !important; + } + .d-lg-inline { + display: inline !important; + } + .d-lg-inline-block { + display: inline-block !important; + } + .d-lg-block { + display: block !important; + } + .d-lg-table { + display: table !important; + } + .d-lg-table-row { + display: table-row !important; + } + .d-lg-table-cell { + display: table-cell !important; + } + .d-lg-flex { + display: -ms-flexbox !important; + display: flex !important; + } + .d-lg-inline-flex { + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +@media (min-width: 1200px) { + .d-xl-none { + display: none !important; + } + .d-xl-inline { + display: inline !important; + } + .d-xl-inline-block { + display: inline-block !important; + } + .d-xl-block { + display: block !important; + } + .d-xl-table { + display: table !important; + } + .d-xl-table-row { + display: table-row !important; + } + .d-xl-table-cell { + display: table-cell !important; + } + .d-xl-flex { + display: -ms-flexbox !important; + display: flex !important; + } + .d-xl-inline-flex { + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +@media print { + .d-print-none { + display: none !important; + } + .d-print-inline { + display: inline !important; + } + .d-print-inline-block { + display: inline-block !important; + } + .d-print-block { + display: block !important; + } + .d-print-table { + display: table !important; + } + .d-print-table-row { + display: table-row !important; + } + .d-print-table-cell { + display: table-cell !important; + } + .d-print-flex { + display: -ms-flexbox !important; + display: flex !important; + } + .d-print-inline-flex { + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } +} + +.embed-responsive { + position: relative; + display: block; + width: 100%; + padding: 0; + overflow: hidden; +} + +.embed-responsive::before { + display: block; + content: ""; +} + +.embed-responsive .embed-responsive-item, +.embed-responsive iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; +} + +.embed-responsive-21by9::before { + padding-top: 42.857143%; +} + +.embed-responsive-16by9::before { + padding-top: 56.25%; +} + +.embed-responsive-4by3::before { + padding-top: 75%; +} + +.embed-responsive-1by1::before { + padding-top: 100%; +} + +.flex-row { + -ms-flex-direction: row !important; + flex-direction: row !important; +} + +.flex-column { + -ms-flex-direction: column !important; + flex-direction: column !important; +} + +.flex-row-reverse { + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; +} + +.flex-column-reverse { + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; +} + +.flex-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; +} + +.flex-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; +} + +.flex-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; +} + +.flex-fill { + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; +} + +.flex-grow-0 { + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; +} + +.flex-grow-1 { + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; +} + +.flex-shrink-0 { + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; +} + +.flex-shrink-1 { + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; +} + +.justify-content-start { + -ms-flex-pack: start !important; + justify-content: flex-start !important; +} + +.justify-content-end { + -ms-flex-pack: end !important; + justify-content: flex-end !important; +} + +.justify-content-center { + -ms-flex-pack: center !important; + justify-content: center !important; +} + +.justify-content-between { + -ms-flex-pack: justify !important; + justify-content: space-between !important; +} + +.justify-content-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; +} + +.align-items-start { + -ms-flex-align: start !important; + align-items: flex-start !important; +} + +.align-items-end { + -ms-flex-align: end !important; + align-items: flex-end !important; +} + +.align-items-center { + -ms-flex-align: center !important; + align-items: center !important; +} + +.align-items-baseline { + -ms-flex-align: baseline !important; + align-items: baseline !important; +} + +.align-items-stretch { + -ms-flex-align: stretch !important; + align-items: stretch !important; +} + +.align-content-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; +} + +.align-content-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; +} + +.align-content-center { + -ms-flex-line-pack: center !important; + align-content: center !important; +} + +.align-content-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; +} + +.align-content-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; +} + +.align-content-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; +} + +.align-self-auto { + -ms-flex-item-align: auto !important; + align-self: auto !important; +} + +.align-self-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; +} + +.align-self-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; +} + +.align-self-center { + -ms-flex-item-align: center !important; + align-self: center !important; +} + +.align-self-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; +} + +.align-self-stretch { + -ms-flex-item-align: stretch !important; + align-self: stretch !important; +} + +@media (min-width: 576px) { + .flex-sm-row { + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-sm-column { + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-sm-row-reverse { + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-sm-column-reverse { + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-sm-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-sm-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-sm-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .flex-sm-fill { + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-sm-grow-0 { + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-sm-grow-1 { + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; + } + .flex-sm-shrink-0 { + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; + } + .flex-sm-shrink-1 { + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; + } + .justify-content-sm-start { + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-sm-end { + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-sm-center { + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-sm-between { + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-sm-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .align-items-sm-start { + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-sm-end { + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-sm-center { + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-sm-baseline { + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-sm-stretch { + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-sm-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-sm-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-sm-center { + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-sm-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-sm-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-sm-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-sm-auto { + -ms-flex-item-align: auto !important; + align-self: auto !important; + } + .align-self-sm-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-sm-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-sm-center { + -ms-flex-item-align: center !important; + align-self: center !important; + } + .align-self-sm-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-sm-stretch { + -ms-flex-item-align: stretch !important; + align-self: stretch !important; + } +} + +@media (min-width: 768px) { + .flex-md-row { + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-md-column { + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-md-row-reverse { + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-md-column-reverse { + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-md-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-md-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-md-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .flex-md-fill { + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-md-grow-0 { + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-md-grow-1 { + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; + } + .flex-md-shrink-0 { + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; + } + .flex-md-shrink-1 { + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; + } + .justify-content-md-start { + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-md-end { + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-md-center { + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-md-between { + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-md-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .align-items-md-start { + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-md-end { + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-md-center { + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-md-baseline { + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-md-stretch { + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-md-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-md-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-md-center { + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-md-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-md-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-md-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-md-auto { + -ms-flex-item-align: auto !important; + align-self: auto !important; + } + .align-self-md-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-md-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-md-center { + -ms-flex-item-align: center !important; + align-self: center !important; + } + .align-self-md-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-md-stretch { + -ms-flex-item-align: stretch !important; + align-self: stretch !important; + } +} + +@media (min-width: 992px) { + .flex-lg-row { + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-lg-column { + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-lg-row-reverse { + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-lg-column-reverse { + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-lg-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-lg-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-lg-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .flex-lg-fill { + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-lg-grow-0 { + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-lg-grow-1 { + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; + } + .flex-lg-shrink-0 { + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; + } + .flex-lg-shrink-1 { + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; + } + .justify-content-lg-start { + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-lg-end { + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-lg-center { + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-lg-between { + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-lg-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .align-items-lg-start { + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-lg-end { + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-lg-center { + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-lg-baseline { + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-lg-stretch { + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-lg-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-lg-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-lg-center { + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-lg-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-lg-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-lg-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-lg-auto { + -ms-flex-item-align: auto !important; + align-self: auto !important; + } + .align-self-lg-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-lg-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-lg-center { + -ms-flex-item-align: center !important; + align-self: center !important; + } + .align-self-lg-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-lg-stretch { + -ms-flex-item-align: stretch !important; + align-self: stretch !important; + } +} + +@media (min-width: 1200px) { + .flex-xl-row { + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-xl-column { + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-xl-row-reverse { + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-xl-column-reverse { + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-xl-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-xl-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-xl-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .flex-xl-fill { + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-xl-grow-0 { + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-xl-grow-1 { + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; + } + .flex-xl-shrink-0 { + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; + } + .flex-xl-shrink-1 { + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; + } + .justify-content-xl-start { + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-xl-end { + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-xl-center { + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-xl-between { + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-xl-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .align-items-xl-start { + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-xl-end { + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-xl-center { + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-xl-baseline { + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-xl-stretch { + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-xl-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-xl-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-xl-center { + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-xl-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-xl-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-xl-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-xl-auto { + -ms-flex-item-align: auto !important; + align-self: auto !important; + } + .align-self-xl-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-xl-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-xl-center { + -ms-flex-item-align: center !important; + align-self: center !important; + } + .align-self-xl-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-xl-stretch { + -ms-flex-item-align: stretch !important; + align-self: stretch !important; + } +} + +.float-left { + float: left !important; +} + +.float-right { + float: right !important; +} + +.float-none { + float: none !important; +} + +@media (min-width: 576px) { + .float-sm-left { + float: left !important; + } + .float-sm-right { + float: right !important; + } + .float-sm-none { + float: none !important; + } +} + +@media (min-width: 768px) { + .float-md-left { + float: left !important; + } + .float-md-right { + float: right !important; + } + .float-md-none { + float: none !important; + } +} + +@media (min-width: 992px) { + .float-lg-left { + float: left !important; + } + .float-lg-right { + float: right !important; + } + .float-lg-none { + float: none !important; + } +} + +@media (min-width: 1200px) { + .float-xl-left { + float: left !important; + } + .float-xl-right { + float: right !important; + } + .float-xl-none { + float: none !important; + } +} + +.user-select-all { + -webkit-user-select: all !important; + -moz-user-select: all !important; + -ms-user-select: all !important; + user-select: all !important; +} + +.user-select-auto { + -webkit-user-select: auto !important; + -moz-user-select: auto !important; + -ms-user-select: auto !important; + user-select: auto !important; +} + +.user-select-none { + -webkit-user-select: none !important; + -moz-user-select: none !important; + -ms-user-select: none !important; + user-select: none !important; +} + +.overflow-auto { + overflow: auto !important; +} + +.overflow-hidden { + overflow: hidden !important; +} + +.position-static { + position: static !important; +} + +.position-relative { + position: relative !important; +} + +.position-absolute { + position: absolute !important; +} + +.position-fixed { + position: fixed !important; +} + +.position-sticky { + position: -webkit-sticky !important; + position: sticky !important; +} + +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; +} + +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; +} + +@supports ((position: -webkit-sticky) or (position: sticky)) { + .sticky-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + +.sr-only-focusable:active, .sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + overflow: visible; + clip: auto; + white-space: normal; +} + +.shadow-sm { + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; +} + +.shadow { + box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; +} + +.shadow-lg { + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; +} + +.shadow-none { + box-shadow: none !important; +} + +.w-25 { + width: 25% !important; +} + +.w-50 { + width: 50% !important; +} + +.w-75 { + width: 75% !important; +} + +.w-100 { + width: 100% !important; +} + +.w-auto { + width: auto !important; +} + +.h-25 { + height: 25% !important; +} + +.h-50 { + height: 50% !important; +} + +.h-75 { + height: 75% !important; +} + +.h-100 { + height: 100% !important; +} + +.h-auto { + height: auto !important; +} + +.mw-100 { + max-width: 100% !important; +} + +.mh-100 { + max-height: 100% !important; +} + +.min-vw-100 { + min-width: 100vw !important; +} + +.min-vh-100 { + min-height: 100vh !important; +} + +.vw-100 { + width: 100vw !important; +} + +.vh-100 { + height: 100vh !important; +} + +.m-0 { + margin: 0 !important; +} + +.mt-0, +.my-0 { + margin-top: 0 !important; +} + +.mr-0, +.mx-0 { + margin-right: 0 !important; +} + +.mb-0, +.my-0 { + margin-bottom: 0 !important; +} + +.ml-0, +.mx-0 { + margin-left: 0 !important; +} + +.m-1 { + margin: 0.25rem !important; +} + +.mt-1, +.my-1 { + margin-top: 0.25rem !important; +} + +.mr-1, +.mx-1 { + margin-right: 0.25rem !important; +} + +.mb-1, +.my-1 { + margin-bottom: 0.25rem !important; +} + +.ml-1, +.mx-1 { + margin-left: 0.25rem !important; +} + +.m-2 { + margin: 0.5rem !important; +} + +.mt-2, +.my-2 { + margin-top: 0.5rem !important; +} + +.mr-2, +.mx-2 { + margin-right: 0.5rem !important; +} + +.mb-2, +.my-2 { + margin-bottom: 0.5rem !important; +} + +.ml-2, +.mx-2 { + margin-left: 0.5rem !important; +} + +.m-3 { + margin: 1rem !important; +} + +.mt-3, +.my-3 { + margin-top: 1rem !important; +} + +.mr-3, +.mx-3 { + margin-right: 1rem !important; +} + +.mb-3, +.my-3 { + margin-bottom: 1rem !important; +} + +.ml-3, +.mx-3 { + margin-left: 1rem !important; +} + +.m-4 { + margin: 1.5rem !important; +} + +.mt-4, +.my-4 { + margin-top: 1.5rem !important; +} + +.mr-4, +.mx-4 { + margin-right: 1.5rem !important; +} + +.mb-4, +.my-4 { + margin-bottom: 1.5rem !important; +} + +.ml-4, +.mx-4 { + margin-left: 1.5rem !important; +} + +.m-5 { + margin: 3rem !important; +} + +.mt-5, +.my-5 { + margin-top: 3rem !important; +} + +.mr-5, +.mx-5 { + margin-right: 3rem !important; +} + +.mb-5, +.my-5 { + margin-bottom: 3rem !important; +} + +.ml-5, +.mx-5 { + margin-left: 3rem !important; +} + +.p-0 { + padding: 0 !important; +} + +.pt-0, +.py-0 { + padding-top: 0 !important; +} + +.pr-0, +.px-0 { + padding-right: 0 !important; +} + +.pb-0, +.py-0 { + padding-bottom: 0 !important; +} + +.pl-0, +.px-0 { + padding-left: 0 !important; +} + +.p-1 { + padding: 0.25rem !important; +} + +.pt-1, +.py-1 { + padding-top: 0.25rem !important; +} + +.pr-1, +.px-1 { + padding-right: 0.25rem !important; +} + +.pb-1, +.py-1 { + padding-bottom: 0.25rem !important; +} + +.pl-1, +.px-1 { + padding-left: 0.25rem !important; +} + +.p-2 { + padding: 0.5rem !important; +} + +.pt-2, +.py-2 { + padding-top: 0.5rem !important; +} + +.pr-2, +.px-2 { + padding-right: 0.5rem !important; +} + +.pb-2, +.py-2 { + padding-bottom: 0.5rem !important; +} + +.pl-2, +.px-2 { + padding-left: 0.5rem !important; +} + +.p-3 { + padding: 1rem !important; +} + +.pt-3, +.py-3 { + padding-top: 1rem !important; +} + +.pr-3, +.px-3 { + padding-right: 1rem !important; +} + +.pb-3, +.py-3 { + padding-bottom: 1rem !important; +} + +.pl-3, +.px-3 { + padding-left: 1rem !important; +} + +.p-4 { + padding: 1.5rem !important; +} + +.pt-4, +.py-4 { + padding-top: 1.5rem !important; +} + +.pr-4, +.px-4 { + padding-right: 1.5rem !important; +} + +.pb-4, +.py-4 { + padding-bottom: 1.5rem !important; +} + +.pl-4, +.px-4 { + padding-left: 1.5rem !important; +} + +.p-5 { + padding: 3rem !important; +} + +.pt-5, +.py-5 { + padding-top: 3rem !important; +} + +.pr-5, +.px-5 { + padding-right: 3rem !important; +} + +.pb-5, +.py-5 { + padding-bottom: 3rem !important; +} + +.pl-5, +.px-5 { + padding-left: 3rem !important; +} + +.m-n1 { + margin: -0.25rem !important; +} + +.mt-n1, +.my-n1 { + margin-top: -0.25rem !important; +} + +.mr-n1, +.mx-n1 { + margin-right: -0.25rem !important; +} + +.mb-n1, +.my-n1 { + margin-bottom: -0.25rem !important; +} + +.ml-n1, +.mx-n1 { + margin-left: -0.25rem !important; +} + +.m-n2 { + margin: -0.5rem !important; +} + +.mt-n2, +.my-n2 { + margin-top: -0.5rem !important; +} + +.mr-n2, +.mx-n2 { + margin-right: -0.5rem !important; +} + +.mb-n2, +.my-n2 { + margin-bottom: -0.5rem !important; +} + +.ml-n2, +.mx-n2 { + margin-left: -0.5rem !important; +} + +.m-n3 { + margin: -1rem !important; +} + +.mt-n3, +.my-n3 { + margin-top: -1rem !important; +} + +.mr-n3, +.mx-n3 { + margin-right: -1rem !important; +} + +.mb-n3, +.my-n3 { + margin-bottom: -1rem !important; +} + +.ml-n3, +.mx-n3 { + margin-left: -1rem !important; +} + +.m-n4 { + margin: -1.5rem !important; +} + +.mt-n4, +.my-n4 { + margin-top: -1.5rem !important; +} + +.mr-n4, +.mx-n4 { + margin-right: -1.5rem !important; +} + +.mb-n4, +.my-n4 { + margin-bottom: -1.5rem !important; +} + +.ml-n4, +.mx-n4 { + margin-left: -1.5rem !important; +} + +.m-n5 { + margin: -3rem !important; +} + +.mt-n5, +.my-n5 { + margin-top: -3rem !important; +} + +.mr-n5, +.mx-n5 { + margin-right: -3rem !important; +} + +.mb-n5, +.my-n5 { + margin-bottom: -3rem !important; +} + +.ml-n5, +.mx-n5 { + margin-left: -3rem !important; +} + +.m-auto { + margin: auto !important; +} + +.mt-auto, +.my-auto { + margin-top: auto !important; +} + +.mr-auto, +.mx-auto { + margin-right: auto !important; +} + +.mb-auto, +.my-auto { + margin-bottom: auto !important; +} + +.ml-auto, +.mx-auto { + margin-left: auto !important; +} + +@media (min-width: 576px) { + .m-sm-0 { + margin: 0 !important; + } + .mt-sm-0, + .my-sm-0 { + margin-top: 0 !important; + } + .mr-sm-0, + .mx-sm-0 { + margin-right: 0 !important; + } + .mb-sm-0, + .my-sm-0 { + margin-bottom: 0 !important; + } + .ml-sm-0, + .mx-sm-0 { + margin-left: 0 !important; + } + .m-sm-1 { + margin: 0.25rem !important; + } + .mt-sm-1, + .my-sm-1 { + margin-top: 0.25rem !important; + } + .mr-sm-1, + .mx-sm-1 { + margin-right: 0.25rem !important; + } + .mb-sm-1, + .my-sm-1 { + margin-bottom: 0.25rem !important; + } + .ml-sm-1, + .mx-sm-1 { + margin-left: 0.25rem !important; + } + .m-sm-2 { + margin: 0.5rem !important; + } + .mt-sm-2, + .my-sm-2 { + margin-top: 0.5rem !important; + } + .mr-sm-2, + .mx-sm-2 { + margin-right: 0.5rem !important; + } + .mb-sm-2, + .my-sm-2 { + margin-bottom: 0.5rem !important; + } + .ml-sm-2, + .mx-sm-2 { + margin-left: 0.5rem !important; + } + .m-sm-3 { + margin: 1rem !important; + } + .mt-sm-3, + .my-sm-3 { + margin-top: 1rem !important; + } + .mr-sm-3, + .mx-sm-3 { + margin-right: 1rem !important; + } + .mb-sm-3, + .my-sm-3 { + margin-bottom: 1rem !important; + } + .ml-sm-3, + .mx-sm-3 { + margin-left: 1rem !important; + } + .m-sm-4 { + margin: 1.5rem !important; + } + .mt-sm-4, + .my-sm-4 { + margin-top: 1.5rem !important; + } + .mr-sm-4, + .mx-sm-4 { + margin-right: 1.5rem !important; + } + .mb-sm-4, + .my-sm-4 { + margin-bottom: 1.5rem !important; + } + .ml-sm-4, + .mx-sm-4 { + margin-left: 1.5rem !important; + } + .m-sm-5 { + margin: 3rem !important; + } + .mt-sm-5, + .my-sm-5 { + margin-top: 3rem !important; + } + .mr-sm-5, + .mx-sm-5 { + margin-right: 3rem !important; + } + .mb-sm-5, + .my-sm-5 { + margin-bottom: 3rem !important; + } + .ml-sm-5, + .mx-sm-5 { + margin-left: 3rem !important; + } + .p-sm-0 { + padding: 0 !important; + } + .pt-sm-0, + .py-sm-0 { + padding-top: 0 !important; + } + .pr-sm-0, + .px-sm-0 { + padding-right: 0 !important; + } + .pb-sm-0, + .py-sm-0 { + padding-bottom: 0 !important; + } + .pl-sm-0, + .px-sm-0 { + padding-left: 0 !important; + } + .p-sm-1 { + padding: 0.25rem !important; + } + .pt-sm-1, + .py-sm-1 { + padding-top: 0.25rem !important; + } + .pr-sm-1, + .px-sm-1 { + padding-right: 0.25rem !important; + } + .pb-sm-1, + .py-sm-1 { + padding-bottom: 0.25rem !important; + } + .pl-sm-1, + .px-sm-1 { + padding-left: 0.25rem !important; + } + .p-sm-2 { + padding: 0.5rem !important; + } + .pt-sm-2, + .py-sm-2 { + padding-top: 0.5rem !important; + } + .pr-sm-2, + .px-sm-2 { + padding-right: 0.5rem !important; + } + .pb-sm-2, + .py-sm-2 { + padding-bottom: 0.5rem !important; + } + .pl-sm-2, + .px-sm-2 { + padding-left: 0.5rem !important; + } + .p-sm-3 { + padding: 1rem !important; + } + .pt-sm-3, + .py-sm-3 { + padding-top: 1rem !important; + } + .pr-sm-3, + .px-sm-3 { + padding-right: 1rem !important; + } + .pb-sm-3, + .py-sm-3 { + padding-bottom: 1rem !important; + } + .pl-sm-3, + .px-sm-3 { + padding-left: 1rem !important; + } + .p-sm-4 { + padding: 1.5rem !important; + } + .pt-sm-4, + .py-sm-4 { + padding-top: 1.5rem !important; + } + .pr-sm-4, + .px-sm-4 { + padding-right: 1.5rem !important; + } + .pb-sm-4, + .py-sm-4 { + padding-bottom: 1.5rem !important; + } + .pl-sm-4, + .px-sm-4 { + padding-left: 1.5rem !important; + } + .p-sm-5 { + padding: 3rem !important; + } + .pt-sm-5, + .py-sm-5 { + padding-top: 3rem !important; + } + .pr-sm-5, + .px-sm-5 { + padding-right: 3rem !important; + } + .pb-sm-5, + .py-sm-5 { + padding-bottom: 3rem !important; + } + .pl-sm-5, + .px-sm-5 { + padding-left: 3rem !important; + } + .m-sm-n1 { + margin: -0.25rem !important; + } + .mt-sm-n1, + .my-sm-n1 { + margin-top: -0.25rem !important; + } + .mr-sm-n1, + .mx-sm-n1 { + margin-right: -0.25rem !important; + } + .mb-sm-n1, + .my-sm-n1 { + margin-bottom: -0.25rem !important; + } + .ml-sm-n1, + .mx-sm-n1 { + margin-left: -0.25rem !important; + } + .m-sm-n2 { + margin: -0.5rem !important; + } + .mt-sm-n2, + .my-sm-n2 { + margin-top: -0.5rem !important; + } + .mr-sm-n2, + .mx-sm-n2 { + margin-right: -0.5rem !important; + } + .mb-sm-n2, + .my-sm-n2 { + margin-bottom: -0.5rem !important; + } + .ml-sm-n2, + .mx-sm-n2 { + margin-left: -0.5rem !important; + } + .m-sm-n3 { + margin: -1rem !important; + } + .mt-sm-n3, + .my-sm-n3 { + margin-top: -1rem !important; + } + .mr-sm-n3, + .mx-sm-n3 { + margin-right: -1rem !important; + } + .mb-sm-n3, + .my-sm-n3 { + margin-bottom: -1rem !important; + } + .ml-sm-n3, + .mx-sm-n3 { + margin-left: -1rem !important; + } + .m-sm-n4 { + margin: -1.5rem !important; + } + .mt-sm-n4, + .my-sm-n4 { + margin-top: -1.5rem !important; + } + .mr-sm-n4, + .mx-sm-n4 { + margin-right: -1.5rem !important; + } + .mb-sm-n4, + .my-sm-n4 { + margin-bottom: -1.5rem !important; + } + .ml-sm-n4, + .mx-sm-n4 { + margin-left: -1.5rem !important; + } + .m-sm-n5 { + margin: -3rem !important; + } + .mt-sm-n5, + .my-sm-n5 { + margin-top: -3rem !important; + } + .mr-sm-n5, + .mx-sm-n5 { + margin-right: -3rem !important; + } + .mb-sm-n5, + .my-sm-n5 { + margin-bottom: -3rem !important; + } + .ml-sm-n5, + .mx-sm-n5 { + margin-left: -3rem !important; + } + .m-sm-auto { + margin: auto !important; + } + .mt-sm-auto, + .my-sm-auto { + margin-top: auto !important; + } + .mr-sm-auto, + .mx-sm-auto { + margin-right: auto !important; + } + .mb-sm-auto, + .my-sm-auto { + margin-bottom: auto !important; + } + .ml-sm-auto, + .mx-sm-auto { + margin-left: auto !important; + } +} + +@media (min-width: 768px) { + .m-md-0 { + margin: 0 !important; + } + .mt-md-0, + .my-md-0 { + margin-top: 0 !important; + } + .mr-md-0, + .mx-md-0 { + margin-right: 0 !important; + } + .mb-md-0, + .my-md-0 { + margin-bottom: 0 !important; + } + .ml-md-0, + .mx-md-0 { + margin-left: 0 !important; + } + .m-md-1 { + margin: 0.25rem !important; + } + .mt-md-1, + .my-md-1 { + margin-top: 0.25rem !important; + } + .mr-md-1, + .mx-md-1 { + margin-right: 0.25rem !important; + } + .mb-md-1, + .my-md-1 { + margin-bottom: 0.25rem !important; + } + .ml-md-1, + .mx-md-1 { + margin-left: 0.25rem !important; + } + .m-md-2 { + margin: 0.5rem !important; + } + .mt-md-2, + .my-md-2 { + margin-top: 0.5rem !important; + } + .mr-md-2, + .mx-md-2 { + margin-right: 0.5rem !important; + } + .mb-md-2, + .my-md-2 { + margin-bottom: 0.5rem !important; + } + .ml-md-2, + .mx-md-2 { + margin-left: 0.5rem !important; + } + .m-md-3 { + margin: 1rem !important; + } + .mt-md-3, + .my-md-3 { + margin-top: 1rem !important; + } + .mr-md-3, + .mx-md-3 { + margin-right: 1rem !important; + } + .mb-md-3, + .my-md-3 { + margin-bottom: 1rem !important; + } + .ml-md-3, + .mx-md-3 { + margin-left: 1rem !important; + } + .m-md-4 { + margin: 1.5rem !important; + } + .mt-md-4, + .my-md-4 { + margin-top: 1.5rem !important; + } + .mr-md-4, + .mx-md-4 { + margin-right: 1.5rem !important; + } + .mb-md-4, + .my-md-4 { + margin-bottom: 1.5rem !important; + } + .ml-md-4, + .mx-md-4 { + margin-left: 1.5rem !important; + } + .m-md-5 { + margin: 3rem !important; + } + .mt-md-5, + .my-md-5 { + margin-top: 3rem !important; + } + .mr-md-5, + .mx-md-5 { + margin-right: 3rem !important; + } + .mb-md-5, + .my-md-5 { + margin-bottom: 3rem !important; + } + .ml-md-5, + .mx-md-5 { + margin-left: 3rem !important; + } + .p-md-0 { + padding: 0 !important; + } + .pt-md-0, + .py-md-0 { + padding-top: 0 !important; + } + .pr-md-0, + .px-md-0 { + padding-right: 0 !important; + } + .pb-md-0, + .py-md-0 { + padding-bottom: 0 !important; + } + .pl-md-0, + .px-md-0 { + padding-left: 0 !important; + } + .p-md-1 { + padding: 0.25rem !important; + } + .pt-md-1, + .py-md-1 { + padding-top: 0.25rem !important; + } + .pr-md-1, + .px-md-1 { + padding-right: 0.25rem !important; + } + .pb-md-1, + .py-md-1 { + padding-bottom: 0.25rem !important; + } + .pl-md-1, + .px-md-1 { + padding-left: 0.25rem !important; + } + .p-md-2 { + padding: 0.5rem !important; + } + .pt-md-2, + .py-md-2 { + padding-top: 0.5rem !important; + } + .pr-md-2, + .px-md-2 { + padding-right: 0.5rem !important; + } + .pb-md-2, + .py-md-2 { + padding-bottom: 0.5rem !important; + } + .pl-md-2, + .px-md-2 { + padding-left: 0.5rem !important; + } + .p-md-3 { + padding: 1rem !important; + } + .pt-md-3, + .py-md-3 { + padding-top: 1rem !important; + } + .pr-md-3, + .px-md-3 { + padding-right: 1rem !important; + } + .pb-md-3, + .py-md-3 { + padding-bottom: 1rem !important; + } + .pl-md-3, + .px-md-3 { + padding-left: 1rem !important; + } + .p-md-4 { + padding: 1.5rem !important; + } + .pt-md-4, + .py-md-4 { + padding-top: 1.5rem !important; + } + .pr-md-4, + .px-md-4 { + padding-right: 1.5rem !important; + } + .pb-md-4, + .py-md-4 { + padding-bottom: 1.5rem !important; + } + .pl-md-4, + .px-md-4 { + padding-left: 1.5rem !important; + } + .p-md-5 { + padding: 3rem !important; + } + .pt-md-5, + .py-md-5 { + padding-top: 3rem !important; + } + .pr-md-5, + .px-md-5 { + padding-right: 3rem !important; + } + .pb-md-5, + .py-md-5 { + padding-bottom: 3rem !important; + } + .pl-md-5, + .px-md-5 { + padding-left: 3rem !important; + } + .m-md-n1 { + margin: -0.25rem !important; + } + .mt-md-n1, + .my-md-n1 { + margin-top: -0.25rem !important; + } + .mr-md-n1, + .mx-md-n1 { + margin-right: -0.25rem !important; + } + .mb-md-n1, + .my-md-n1 { + margin-bottom: -0.25rem !important; + } + .ml-md-n1, + .mx-md-n1 { + margin-left: -0.25rem !important; + } + .m-md-n2 { + margin: -0.5rem !important; + } + .mt-md-n2, + .my-md-n2 { + margin-top: -0.5rem !important; + } + .mr-md-n2, + .mx-md-n2 { + margin-right: -0.5rem !important; + } + .mb-md-n2, + .my-md-n2 { + margin-bottom: -0.5rem !important; + } + .ml-md-n2, + .mx-md-n2 { + margin-left: -0.5rem !important; + } + .m-md-n3 { + margin: -1rem !important; + } + .mt-md-n3, + .my-md-n3 { + margin-top: -1rem !important; + } + .mr-md-n3, + .mx-md-n3 { + margin-right: -1rem !important; + } + .mb-md-n3, + .my-md-n3 { + margin-bottom: -1rem !important; + } + .ml-md-n3, + .mx-md-n3 { + margin-left: -1rem !important; + } + .m-md-n4 { + margin: -1.5rem !important; + } + .mt-md-n4, + .my-md-n4 { + margin-top: -1.5rem !important; + } + .mr-md-n4, + .mx-md-n4 { + margin-right: -1.5rem !important; + } + .mb-md-n4, + .my-md-n4 { + margin-bottom: -1.5rem !important; + } + .ml-md-n4, + .mx-md-n4 { + margin-left: -1.5rem !important; + } + .m-md-n5 { + margin: -3rem !important; + } + .mt-md-n5, + .my-md-n5 { + margin-top: -3rem !important; + } + .mr-md-n5, + .mx-md-n5 { + margin-right: -3rem !important; + } + .mb-md-n5, + .my-md-n5 { + margin-bottom: -3rem !important; + } + .ml-md-n5, + .mx-md-n5 { + margin-left: -3rem !important; + } + .m-md-auto { + margin: auto !important; + } + .mt-md-auto, + .my-md-auto { + margin-top: auto !important; + } + .mr-md-auto, + .mx-md-auto { + margin-right: auto !important; + } + .mb-md-auto, + .my-md-auto { + margin-bottom: auto !important; + } + .ml-md-auto, + .mx-md-auto { + margin-left: auto !important; + } +} + +@media (min-width: 992px) { + .m-lg-0 { + margin: 0 !important; + } + .mt-lg-0, + .my-lg-0 { + margin-top: 0 !important; + } + .mr-lg-0, + .mx-lg-0 { + margin-right: 0 !important; + } + .mb-lg-0, + .my-lg-0 { + margin-bottom: 0 !important; + } + .ml-lg-0, + .mx-lg-0 { + margin-left: 0 !important; + } + .m-lg-1 { + margin: 0.25rem !important; + } + .mt-lg-1, + .my-lg-1 { + margin-top: 0.25rem !important; + } + .mr-lg-1, + .mx-lg-1 { + margin-right: 0.25rem !important; + } + .mb-lg-1, + .my-lg-1 { + margin-bottom: 0.25rem !important; + } + .ml-lg-1, + .mx-lg-1 { + margin-left: 0.25rem !important; + } + .m-lg-2 { + margin: 0.5rem !important; + } + .mt-lg-2, + .my-lg-2 { + margin-top: 0.5rem !important; + } + .mr-lg-2, + .mx-lg-2 { + margin-right: 0.5rem !important; + } + .mb-lg-2, + .my-lg-2 { + margin-bottom: 0.5rem !important; + } + .ml-lg-2, + .mx-lg-2 { + margin-left: 0.5rem !important; + } + .m-lg-3 { + margin: 1rem !important; + } + .mt-lg-3, + .my-lg-3 { + margin-top: 1rem !important; + } + .mr-lg-3, + .mx-lg-3 { + margin-right: 1rem !important; + } + .mb-lg-3, + .my-lg-3 { + margin-bottom: 1rem !important; + } + .ml-lg-3, + .mx-lg-3 { + margin-left: 1rem !important; + } + .m-lg-4 { + margin: 1.5rem !important; + } + .mt-lg-4, + .my-lg-4 { + margin-top: 1.5rem !important; + } + .mr-lg-4, + .mx-lg-4 { + margin-right: 1.5rem !important; + } + .mb-lg-4, + .my-lg-4 { + margin-bottom: 1.5rem !important; + } + .ml-lg-4, + .mx-lg-4 { + margin-left: 1.5rem !important; + } + .m-lg-5 { + margin: 3rem !important; + } + .mt-lg-5, + .my-lg-5 { + margin-top: 3rem !important; + } + .mr-lg-5, + .mx-lg-5 { + margin-right: 3rem !important; + } + .mb-lg-5, + .my-lg-5 { + margin-bottom: 3rem !important; + } + .ml-lg-5, + .mx-lg-5 { + margin-left: 3rem !important; + } + .p-lg-0 { + padding: 0 !important; + } + .pt-lg-0, + .py-lg-0 { + padding-top: 0 !important; + } + .pr-lg-0, + .px-lg-0 { + padding-right: 0 !important; + } + .pb-lg-0, + .py-lg-0 { + padding-bottom: 0 !important; + } + .pl-lg-0, + .px-lg-0 { + padding-left: 0 !important; + } + .p-lg-1 { + padding: 0.25rem !important; + } + .pt-lg-1, + .py-lg-1 { + padding-top: 0.25rem !important; + } + .pr-lg-1, + .px-lg-1 { + padding-right: 0.25rem !important; + } + .pb-lg-1, + .py-lg-1 { + padding-bottom: 0.25rem !important; + } + .pl-lg-1, + .px-lg-1 { + padding-left: 0.25rem !important; + } + .p-lg-2 { + padding: 0.5rem !important; + } + .pt-lg-2, + .py-lg-2 { + padding-top: 0.5rem !important; + } + .pr-lg-2, + .px-lg-2 { + padding-right: 0.5rem !important; + } + .pb-lg-2, + .py-lg-2 { + padding-bottom: 0.5rem !important; + } + .pl-lg-2, + .px-lg-2 { + padding-left: 0.5rem !important; + } + .p-lg-3 { + padding: 1rem !important; + } + .pt-lg-3, + .py-lg-3 { + padding-top: 1rem !important; + } + .pr-lg-3, + .px-lg-3 { + padding-right: 1rem !important; + } + .pb-lg-3, + .py-lg-3 { + padding-bottom: 1rem !important; + } + .pl-lg-3, + .px-lg-3 { + padding-left: 1rem !important; + } + .p-lg-4 { + padding: 1.5rem !important; + } + .pt-lg-4, + .py-lg-4 { + padding-top: 1.5rem !important; + } + .pr-lg-4, + .px-lg-4 { + padding-right: 1.5rem !important; + } + .pb-lg-4, + .py-lg-4 { + padding-bottom: 1.5rem !important; + } + .pl-lg-4, + .px-lg-4 { + padding-left: 1.5rem !important; + } + .p-lg-5 { + padding: 3rem !important; + } + .pt-lg-5, + .py-lg-5 { + padding-top: 3rem !important; + } + .pr-lg-5, + .px-lg-5 { + padding-right: 3rem !important; + } + .pb-lg-5, + .py-lg-5 { + padding-bottom: 3rem !important; + } + .pl-lg-5, + .px-lg-5 { + padding-left: 3rem !important; + } + .m-lg-n1 { + margin: -0.25rem !important; + } + .mt-lg-n1, + .my-lg-n1 { + margin-top: -0.25rem !important; + } + .mr-lg-n1, + .mx-lg-n1 { + margin-right: -0.25rem !important; + } + .mb-lg-n1, + .my-lg-n1 { + margin-bottom: -0.25rem !important; + } + .ml-lg-n1, + .mx-lg-n1 { + margin-left: -0.25rem !important; + } + .m-lg-n2 { + margin: -0.5rem !important; + } + .mt-lg-n2, + .my-lg-n2 { + margin-top: -0.5rem !important; + } + .mr-lg-n2, + .mx-lg-n2 { + margin-right: -0.5rem !important; + } + .mb-lg-n2, + .my-lg-n2 { + margin-bottom: -0.5rem !important; + } + .ml-lg-n2, + .mx-lg-n2 { + margin-left: -0.5rem !important; + } + .m-lg-n3 { + margin: -1rem !important; + } + .mt-lg-n3, + .my-lg-n3 { + margin-top: -1rem !important; + } + .mr-lg-n3, + .mx-lg-n3 { + margin-right: -1rem !important; + } + .mb-lg-n3, + .my-lg-n3 { + margin-bottom: -1rem !important; + } + .ml-lg-n3, + .mx-lg-n3 { + margin-left: -1rem !important; + } + .m-lg-n4 { + margin: -1.5rem !important; + } + .mt-lg-n4, + .my-lg-n4 { + margin-top: -1.5rem !important; + } + .mr-lg-n4, + .mx-lg-n4 { + margin-right: -1.5rem !important; + } + .mb-lg-n4, + .my-lg-n4 { + margin-bottom: -1.5rem !important; + } + .ml-lg-n4, + .mx-lg-n4 { + margin-left: -1.5rem !important; + } + .m-lg-n5 { + margin: -3rem !important; + } + .mt-lg-n5, + .my-lg-n5 { + margin-top: -3rem !important; + } + .mr-lg-n5, + .mx-lg-n5 { + margin-right: -3rem !important; + } + .mb-lg-n5, + .my-lg-n5 { + margin-bottom: -3rem !important; + } + .ml-lg-n5, + .mx-lg-n5 { + margin-left: -3rem !important; + } + .m-lg-auto { + margin: auto !important; + } + .mt-lg-auto, + .my-lg-auto { + margin-top: auto !important; + } + .mr-lg-auto, + .mx-lg-auto { + margin-right: auto !important; + } + .mb-lg-auto, + .my-lg-auto { + margin-bottom: auto !important; + } + .ml-lg-auto, + .mx-lg-auto { + margin-left: auto !important; + } +} + +@media (min-width: 1200px) { + .m-xl-0 { + margin: 0 !important; + } + .mt-xl-0, + .my-xl-0 { + margin-top: 0 !important; + } + .mr-xl-0, + .mx-xl-0 { + margin-right: 0 !important; + } + .mb-xl-0, + .my-xl-0 { + margin-bottom: 0 !important; + } + .ml-xl-0, + .mx-xl-0 { + margin-left: 0 !important; + } + .m-xl-1 { + margin: 0.25rem !important; + } + .mt-xl-1, + .my-xl-1 { + margin-top: 0.25rem !important; + } + .mr-xl-1, + .mx-xl-1 { + margin-right: 0.25rem !important; + } + .mb-xl-1, + .my-xl-1 { + margin-bottom: 0.25rem !important; + } + .ml-xl-1, + .mx-xl-1 { + margin-left: 0.25rem !important; + } + .m-xl-2 { + margin: 0.5rem !important; + } + .mt-xl-2, + .my-xl-2 { + margin-top: 0.5rem !important; + } + .mr-xl-2, + .mx-xl-2 { + margin-right: 0.5rem !important; + } + .mb-xl-2, + .my-xl-2 { + margin-bottom: 0.5rem !important; + } + .ml-xl-2, + .mx-xl-2 { + margin-left: 0.5rem !important; + } + .m-xl-3 { + margin: 1rem !important; + } + .mt-xl-3, + .my-xl-3 { + margin-top: 1rem !important; + } + .mr-xl-3, + .mx-xl-3 { + margin-right: 1rem !important; + } + .mb-xl-3, + .my-xl-3 { + margin-bottom: 1rem !important; + } + .ml-xl-3, + .mx-xl-3 { + margin-left: 1rem !important; + } + .m-xl-4 { + margin: 1.5rem !important; + } + .mt-xl-4, + .my-xl-4 { + margin-top: 1.5rem !important; + } + .mr-xl-4, + .mx-xl-4 { + margin-right: 1.5rem !important; + } + .mb-xl-4, + .my-xl-4 { + margin-bottom: 1.5rem !important; + } + .ml-xl-4, + .mx-xl-4 { + margin-left: 1.5rem !important; + } + .m-xl-5 { + margin: 3rem !important; + } + .mt-xl-5, + .my-xl-5 { + margin-top: 3rem !important; + } + .mr-xl-5, + .mx-xl-5 { + margin-right: 3rem !important; + } + .mb-xl-5, + .my-xl-5 { + margin-bottom: 3rem !important; + } + .ml-xl-5, + .mx-xl-5 { + margin-left: 3rem !important; + } + .p-xl-0 { + padding: 0 !important; + } + .pt-xl-0, + .py-xl-0 { + padding-top: 0 !important; + } + .pr-xl-0, + .px-xl-0 { + padding-right: 0 !important; + } + .pb-xl-0, + .py-xl-0 { + padding-bottom: 0 !important; + } + .pl-xl-0, + .px-xl-0 { + padding-left: 0 !important; + } + .p-xl-1 { + padding: 0.25rem !important; + } + .pt-xl-1, + .py-xl-1 { + padding-top: 0.25rem !important; + } + .pr-xl-1, + .px-xl-1 { + padding-right: 0.25rem !important; + } + .pb-xl-1, + .py-xl-1 { + padding-bottom: 0.25rem !important; + } + .pl-xl-1, + .px-xl-1 { + padding-left: 0.25rem !important; + } + .p-xl-2 { + padding: 0.5rem !important; + } + .pt-xl-2, + .py-xl-2 { + padding-top: 0.5rem !important; + } + .pr-xl-2, + .px-xl-2 { + padding-right: 0.5rem !important; + } + .pb-xl-2, + .py-xl-2 { + padding-bottom: 0.5rem !important; + } + .pl-xl-2, + .px-xl-2 { + padding-left: 0.5rem !important; + } + .p-xl-3 { + padding: 1rem !important; + } + .pt-xl-3, + .py-xl-3 { + padding-top: 1rem !important; + } + .pr-xl-3, + .px-xl-3 { + padding-right: 1rem !important; + } + .pb-xl-3, + .py-xl-3 { + padding-bottom: 1rem !important; + } + .pl-xl-3, + .px-xl-3 { + padding-left: 1rem !important; + } + .p-xl-4 { + padding: 1.5rem !important; + } + .pt-xl-4, + .py-xl-4 { + padding-top: 1.5rem !important; + } + .pr-xl-4, + .px-xl-4 { + padding-right: 1.5rem !important; + } + .pb-xl-4, + .py-xl-4 { + padding-bottom: 1.5rem !important; + } + .pl-xl-4, + .px-xl-4 { + padding-left: 1.5rem !important; + } + .p-xl-5 { + padding: 3rem !important; + } + .pt-xl-5, + .py-xl-5 { + padding-top: 3rem !important; + } + .pr-xl-5, + .px-xl-5 { + padding-right: 3rem !important; + } + .pb-xl-5, + .py-xl-5 { + padding-bottom: 3rem !important; + } + .pl-xl-5, + .px-xl-5 { + padding-left: 3rem !important; + } + .m-xl-n1 { + margin: -0.25rem !important; + } + .mt-xl-n1, + .my-xl-n1 { + margin-top: -0.25rem !important; + } + .mr-xl-n1, + .mx-xl-n1 { + margin-right: -0.25rem !important; + } + .mb-xl-n1, + .my-xl-n1 { + margin-bottom: -0.25rem !important; + } + .ml-xl-n1, + .mx-xl-n1 { + margin-left: -0.25rem !important; + } + .m-xl-n2 { + margin: -0.5rem !important; + } + .mt-xl-n2, + .my-xl-n2 { + margin-top: -0.5rem !important; + } + .mr-xl-n2, + .mx-xl-n2 { + margin-right: -0.5rem !important; + } + .mb-xl-n2, + .my-xl-n2 { + margin-bottom: -0.5rem !important; + } + .ml-xl-n2, + .mx-xl-n2 { + margin-left: -0.5rem !important; + } + .m-xl-n3 { + margin: -1rem !important; + } + .mt-xl-n3, + .my-xl-n3 { + margin-top: -1rem !important; + } + .mr-xl-n3, + .mx-xl-n3 { + margin-right: -1rem !important; + } + .mb-xl-n3, + .my-xl-n3 { + margin-bottom: -1rem !important; + } + .ml-xl-n3, + .mx-xl-n3 { + margin-left: -1rem !important; + } + .m-xl-n4 { + margin: -1.5rem !important; + } + .mt-xl-n4, + .my-xl-n4 { + margin-top: -1.5rem !important; + } + .mr-xl-n4, + .mx-xl-n4 { + margin-right: -1.5rem !important; + } + .mb-xl-n4, + .my-xl-n4 { + margin-bottom: -1.5rem !important; + } + .ml-xl-n4, + .mx-xl-n4 { + margin-left: -1.5rem !important; + } + .m-xl-n5 { + margin: -3rem !important; + } + .mt-xl-n5, + .my-xl-n5 { + margin-top: -3rem !important; + } + .mr-xl-n5, + .mx-xl-n5 { + margin-right: -3rem !important; + } + .mb-xl-n5, + .my-xl-n5 { + margin-bottom: -3rem !important; + } + .ml-xl-n5, + .mx-xl-n5 { + margin-left: -3rem !important; + } + .m-xl-auto { + margin: auto !important; + } + .mt-xl-auto, + .my-xl-auto { + margin-top: auto !important; + } + .mr-xl-auto, + .mx-xl-auto { + margin-right: auto !important; + } + .mb-xl-auto, + .my-xl-auto { + margin-bottom: auto !important; + } + .ml-xl-auto, + .mx-xl-auto { + margin-left: auto !important; + } +} + +.stretched-link::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1; + pointer-events: auto; + content: ""; + background-color: rgba(0, 0, 0, 0); +} + +.text-monospace { + font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important; +} + +.text-justify { + text-align: justify !important; +} + +.text-wrap { + white-space: normal !important; +} + +.text-nowrap { + white-space: nowrap !important; +} + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.text-left { + text-align: left !important; +} + +.text-right { + text-align: right !important; +} + +.text-center { + text-align: center !important; +} + +@media (min-width: 576px) { + .text-sm-left { + text-align: left !important; + } + .text-sm-right { + text-align: right !important; + } + .text-sm-center { + text-align: center !important; + } +} + +@media (min-width: 768px) { + .text-md-left { + text-align: left !important; + } + .text-md-right { + text-align: right !important; + } + .text-md-center { + text-align: center !important; + } +} + +@media (min-width: 992px) { + .text-lg-left { + text-align: left !important; + } + .text-lg-right { + text-align: right !important; + } + .text-lg-center { + text-align: center !important; + } +} + +@media (min-width: 1200px) { + .text-xl-left { + text-align: left !important; + } + .text-xl-right { + text-align: right !important; + } + .text-xl-center { + text-align: center !important; + } +} + +.text-lowercase { + text-transform: lowercase !important; +} + +.text-uppercase { + text-transform: uppercase !important; +} + +.text-capitalize { + text-transform: capitalize !important; +} + +.font-weight-light { + font-weight: 300 !important; +} + +.font-weight-lighter { + font-weight: lighter !important; +} + +.font-weight-normal { + font-weight: 400 !important; +} + +.font-weight-bold { + font-weight: 700 !important; +} + +.font-weight-bolder { + font-weight: bolder !important; +} + +.font-italic { + font-style: italic !important; +} + +.text-white { + color: #fff !important; +} + +.text-primary { + color: #007bff !important; +} + +a.text-primary:hover, a.text-primary:focus { + color: #0056b3 !important; +} + +.text-secondary { + color: #6c757d !important; +} + +a.text-secondary:hover, a.text-secondary:focus { + color: #494f54 !important; +} + +.text-success { + color: #28a745 !important; +} + +a.text-success:hover, a.text-success:focus { + color: #19692c !important; +} + +.text-info { + color: #17a2b8 !important; +} + +a.text-info:hover, a.text-info:focus { + color: #0f6674 !important; +} + +.text-warning { + color: #ffc107 !important; +} + +a.text-warning:hover, a.text-warning:focus { + color: #ba8b00 !important; +} + +.text-danger { + color: #dc3545 !important; +} + +a.text-danger:hover, a.text-danger:focus { + color: #a71d2a !important; +} + +.text-light { + color: #f8f9fa !important; +} + +a.text-light:hover, a.text-light:focus { + color: #cbd3da !important; +} + +.text-dark { + color: #343a40 !important; +} + +a.text-dark:hover, a.text-dark:focus { + color: #121416 !important; +} + +.text-body { + color: #212529 !important; +} + +.text-muted { + color: #6c757d !important; +} + +.text-black-50 { + color: rgba(0, 0, 0, 0.5) !important; +} + +.text-white-50 { + color: rgba(255, 255, 255, 0.5) !important; +} + +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.text-decoration-none { + text-decoration: none !important; +} + +.text-break { + word-wrap: break-word !important; +} + +.text-reset { + color: inherit !important; +} + +.visible { + visibility: visible !important; +} + +.invisible { + visibility: hidden !important; +} + +@media print { + *, + *::before, + *::after { + text-shadow: none !important; + box-shadow: none !important; + } + a:not(.btn) { + text-decoration: underline; + } + abbr[title]::after { + content: " (" attr(title) ")"; + } + pre { + white-space: pre-wrap !important; + } + pre, + blockquote { + border: 1px solid #adb5bd; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + @page { + size: a3; + } + body { + min-width: 992px !important; + } + .container { + min-width: 992px !important; + } + .navbar { + display: none; + } + .badge { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #dee2e6 !important; + } + .table-dark { + color: inherit; + } + .table-dark th, + .table-dark td, + .table-dark thead th, + .table-dark tbody + tbody { + border-color: #dee2e6; + } + .table .thead-dark th { + color: inherit; + border-color: #dee2e6; + } +} +/*# sourceMappingURL=bootstrap.css.map */ \ No newline at end of file diff --git a/docs/css/bootstrap.min.css b/docs/css/bootstrap.min.css new file mode 100644 index 0000000..7d2a868 --- /dev/null +++ b/docs/css/bootstrap.min.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.5.0 (https://getbootstrap.com/) + * Copyright 2011-2020 The Bootstrap Authors + * Copyright 2011-2020 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]){color:inherit;text-decoration:none}a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;min-width:0;max-width:100%}.row-cols-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;min-width:0;max-width:100%}.row-cols-sm-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-sm-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;min-width:0;max-width:100%}.row-cols-md-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-md-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;min-width:0;max-width:100%}.row-cols-lg-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-lg-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;min-width:0;max-width:100%}.row-cols-xl-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-xl-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#0069d9;border-color:#0062cc;box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before,.custom-control-input[disabled]~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img,.card-img-bottom,.card-img-top{-ms-flex-negative:0;flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item{display:-ms-flexbox;display:flex}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);height:-webkit-min-content;height:-moz-min-content;height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem);height:-webkit-min-content;height:-moz-min-content;height:min-content}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;-ms-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/docs/css/flatpickr.css b/docs/css/flatpickr.css new file mode 100644 index 0000000..64eb467 --- /dev/null +++ b/docs/css/flatpickr.css @@ -0,0 +1,784 @@ +.flatpickr-calendar { + background: transparent; + opacity: 0; + display: none; + text-align: center; + visibility: hidden; + padding: 0; + -webkit-animation: none; + animation: none; + direction: ltr; + border: 0; + font-size: 14px; + line-height: 24px; + border-radius: 5px; + position: absolute; + width: 307.875px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + -ms-touch-action: manipulation; + touch-action: manipulation; + background: #fff; + -webkit-box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6, 0 -1px 0 #e6e6e6, 0 3px 13px rgba(0,0,0,0.08); + box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6, 0 -1px 0 #e6e6e6, 0 3px 13px rgba(0,0,0,0.08); +} +.flatpickr-calendar.open, +.flatpickr-calendar.inline { + opacity: 1; + max-height: 640px; + visibility: visible; +} +.flatpickr-calendar.open { + display: inline-block; + z-index: 99999; +} +.flatpickr-calendar.animate.open { + -webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1); + animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1); +} +.flatpickr-calendar.inline { + display: block; + position: relative; + top: 2px; +} +.flatpickr-calendar.static { + position: absolute; + top: calc(100% + 2px); +} +.flatpickr-calendar.static.open { + z-index: 999; + display: block; +} +.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) { + -webkit-box-shadow: none !important; + box-shadow: none !important; +} +.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) { + -webkit-box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6; + box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6; +} +.flatpickr-calendar .hasWeeks .dayContainer, +.flatpickr-calendar .hasTime .dayContainer { + border-bottom: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.flatpickr-calendar .hasWeeks .dayContainer { + border-left: 0; +} +.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time { + height: 40px; + border-top: 1px solid #e6e6e6; +} +.flatpickr-calendar.noCalendar.hasTime .flatpickr-time { + height: auto; +} +.flatpickr-calendar:before, +.flatpickr-calendar:after { + position: absolute; + display: block; + pointer-events: none; + border: solid transparent; + content: ''; + height: 0; + width: 0; + left: 22px; +} +.flatpickr-calendar.rightMost:before, +.flatpickr-calendar.rightMost:after { + left: auto; + right: 22px; +} +.flatpickr-calendar:before { + border-width: 5px; + margin: 0 -5px; +} +.flatpickr-calendar:after { + border-width: 4px; + margin: 0 -4px; +} +.flatpickr-calendar.arrowTop:before, +.flatpickr-calendar.arrowTop:after { + bottom: 100%; +} +.flatpickr-calendar.arrowTop:before { + border-bottom-color: #e6e6e6; +} +.flatpickr-calendar.arrowTop:after { + border-bottom-color: #fff; +} +.flatpickr-calendar.arrowBottom:before, +.flatpickr-calendar.arrowBottom:after { + top: 100%; +} +.flatpickr-calendar.arrowBottom:before { + border-top-color: #e6e6e6; +} +.flatpickr-calendar.arrowBottom:after { + border-top-color: #fff; +} +.flatpickr-calendar:focus { + outline: 0; +} +.flatpickr-wrapper { + position: relative; + display: inline-block; +} +.flatpickr-months { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} +.flatpickr-months .flatpickr-month { + background: transparent; + color: rgba(0,0,0,0.9); + fill: rgba(0,0,0,0.9); + height: 34px; + line-height: 1; + text-align: center; + position: relative; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + overflow: hidden; + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; +} +.flatpickr-months .flatpickr-prev-month, +.flatpickr-months .flatpickr-next-month { + text-decoration: none; + cursor: pointer; + position: absolute; + top: 0; + height: 34px; + padding: 10px; + z-index: 3; + color: rgba(0,0,0,0.9); + fill: rgba(0,0,0,0.9); +} +.flatpickr-months .flatpickr-prev-month.flatpickr-disabled, +.flatpickr-months .flatpickr-next-month.flatpickr-disabled { + display: none; +} +.flatpickr-months .flatpickr-prev-month i, +.flatpickr-months .flatpickr-next-month i { + position: relative; +} +.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month, +.flatpickr-months .flatpickr-next-month.flatpickr-prev-month { +/* + /*rtl:begin:ignore*/ +/* + */ + left: 0; +/* + /*rtl:end:ignore*/ +/* + */ +} +/* + /*rtl:begin:ignore*/ +/* + /*rtl:end:ignore*/ +.flatpickr-months .flatpickr-prev-month.flatpickr-next-month, +.flatpickr-months .flatpickr-next-month.flatpickr-next-month { +/* + /*rtl:begin:ignore*/ +/* + */ + right: 0; +/* + /*rtl:end:ignore*/ +/* + */ +} +/* + /*rtl:begin:ignore*/ +/* + /*rtl:end:ignore*/ +.flatpickr-months .flatpickr-prev-month:hover, +.flatpickr-months .flatpickr-next-month:hover { + color: #959ea9; +} +.flatpickr-months .flatpickr-prev-month:hover svg, +.flatpickr-months .flatpickr-next-month:hover svg { + fill: #f64747; +} +.flatpickr-months .flatpickr-prev-month svg, +.flatpickr-months .flatpickr-next-month svg { + width: 14px; + height: 14px; +} +.flatpickr-months .flatpickr-prev-month svg path, +.flatpickr-months .flatpickr-next-month svg path { + -webkit-transition: fill 0.1s; + transition: fill 0.1s; + fill: inherit; +} +.numInputWrapper { + position: relative; + height: auto; +} +.numInputWrapper input, +.numInputWrapper span { + display: inline-block; +} +.numInputWrapper input { + width: 100%; +} +.numInputWrapper input::-ms-clear { + display: none; +} +.numInputWrapper input::-webkit-outer-spin-button, +.numInputWrapper input::-webkit-inner-spin-button { + margin: 0; + -webkit-appearance: none; +} +.numInputWrapper span { + position: absolute; + right: 0; + width: 14px; + padding: 0 4px 0 2px; + height: 50%; + line-height: 50%; + opacity: 0; + cursor: pointer; + border: 1px solid rgba(57,57,57,0.15); + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.numInputWrapper span:hover { + background: rgba(0,0,0,0.1); +} +.numInputWrapper span:active { + background: rgba(0,0,0,0.2); +} +.numInputWrapper span:after { + display: block; + content: ""; + position: absolute; +} +.numInputWrapper span.arrowUp { + top: 0; + border-bottom: 0; +} +.numInputWrapper span.arrowUp:after { + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-bottom: 4px solid rgba(57,57,57,0.6); + top: 26%; +} +.numInputWrapper span.arrowDown { + top: 50%; +} +.numInputWrapper span.arrowDown:after { + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 4px solid rgba(57,57,57,0.6); + top: 40%; +} +.numInputWrapper span svg { + width: inherit; + height: auto; +} +.numInputWrapper span svg path { + fill: rgba(0,0,0,0.5); +} +.numInputWrapper:hover { + background: rgba(0,0,0,0.05); +} +.numInputWrapper:hover span { + opacity: 1; +} +.flatpickr-current-month { + font-size: 135%; + line-height: inherit; + font-weight: 300; + color: inherit; + position: absolute; + width: 75%; + left: 12.5%; + padding: 7.48px 0 0 0; + line-height: 1; + height: 34px; + display: inline-block; + text-align: center; + -webkit-transform: translate3d(0px, 0px, 0px); + transform: translate3d(0px, 0px, 0px); +} +.flatpickr-current-month span.cur-month { + font-family: inherit; + font-weight: 700; + color: inherit; + display: inline-block; + margin-left: 0.5ch; + padding: 0; +} +.flatpickr-current-month span.cur-month:hover { + background: rgba(0,0,0,0.05); +} +.flatpickr-current-month .numInputWrapper { + width: 6ch; + width: 7ch\0; + display: inline-block; +} +.flatpickr-current-month .numInputWrapper span.arrowUp:after { + border-bottom-color: rgba(0,0,0,0.9); +} +.flatpickr-current-month .numInputWrapper span.arrowDown:after { + border-top-color: rgba(0,0,0,0.9); +} +.flatpickr-current-month input.cur-year { + background: transparent; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: inherit; + cursor: text; + padding: 0 0 0 0.5ch; + margin: 0; + display: inline-block; + font-size: inherit; + font-family: inherit; + font-weight: 300; + line-height: inherit; + height: auto; + border: 0; + border-radius: 0; + vertical-align: initial; + -webkit-appearance: textfield; + -moz-appearance: textfield; + appearance: textfield; +} +.flatpickr-current-month input.cur-year:focus { + outline: 0; +} +.flatpickr-current-month input.cur-year[disabled], +.flatpickr-current-month input.cur-year[disabled]:hover { + font-size: 100%; + color: rgba(0,0,0,0.5); + background: transparent; + pointer-events: none; +} +.flatpickr-current-month .flatpickr-monthDropdown-months { + appearance: menulist; + background: transparent; + border: none; + border-radius: 0; + box-sizing: border-box; + color: inherit; + cursor: pointer; + font-size: inherit; + font-family: inherit; + font-weight: 300; + height: auto; + line-height: inherit; + margin: -1px 0 0 0; + outline: none; + padding: 0 0 0 0.5ch; + position: relative; + vertical-align: initial; + -webkit-box-sizing: border-box; + -webkit-appearance: menulist; + -moz-appearance: menulist; + width: auto; +} +.flatpickr-current-month .flatpickr-monthDropdown-months:focus, +.flatpickr-current-month .flatpickr-monthDropdown-months:active { + outline: none; +} +.flatpickr-current-month .flatpickr-monthDropdown-months:hover { + background: rgba(0,0,0,0.05); +} +.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month { + background-color: transparent; + outline: none; + padding: 0; +} +.flatpickr-weekdays { + background: transparent; + text-align: center; + overflow: hidden; + width: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + height: 28px; +} +.flatpickr-weekdays .flatpickr-weekdaycontainer { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; +} +span.flatpickr-weekday { + cursor: default; + font-size: 90%; + background: transparent; + color: rgba(0,0,0,0.54); + line-height: 1; + margin: 0; + text-align: center; + display: block; + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + font-weight: bolder; +} +.dayContainer, +.flatpickr-weeks { + padding: 1px 0 0 0; +} +.flatpickr-days { + position: relative; + overflow: hidden; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -webkit-align-items: flex-start; + -ms-flex-align: start; + align-items: flex-start; + width: 307.875px; +} +.flatpickr-days:focus { + outline: 0; +} +.dayContainer { + padding: 0; + outline: 0; + text-align: left; + width: 307.875px; + min-width: 307.875px; + max-width: 307.875px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + display: inline-block; + display: -ms-flexbox; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-flex-wrap: wrap; + flex-wrap: wrap; + -ms-flex-wrap: wrap; + -ms-flex-pack: justify; + -webkit-justify-content: space-around; + justify-content: space-around; + -webkit-transform: translate3d(0px, 0px, 0px); + transform: translate3d(0px, 0px, 0px); + opacity: 1; +} +.dayContainer + .dayContainer { + -webkit-box-shadow: -1px 0 0 #e6e6e6; + box-shadow: -1px 0 0 #e6e6e6; +} +.flatpickr-day { + background: none; + border: 1px solid transparent; + border-radius: 150px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: #393939; + cursor: pointer; + font-weight: 400; + width: 14.2857143%; + -webkit-flex-basis: 14.2857143%; + -ms-flex-preferred-size: 14.2857143%; + flex-basis: 14.2857143%; + max-width: 39px; + height: 39px; + line-height: 39px; + margin: 0; + display: inline-block; + position: relative; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + text-align: center; +} +.flatpickr-day.inRange, +.flatpickr-day.prevMonthDay.inRange, +.flatpickr-day.nextMonthDay.inRange, +.flatpickr-day.today.inRange, +.flatpickr-day.prevMonthDay.today.inRange, +.flatpickr-day.nextMonthDay.today.inRange, +.flatpickr-day:hover, +.flatpickr-day.prevMonthDay:hover, +.flatpickr-day.nextMonthDay:hover, +.flatpickr-day:focus, +.flatpickr-day.prevMonthDay:focus, +.flatpickr-day.nextMonthDay:focus { + cursor: pointer; + outline: 0; + background: #e6e6e6; + border-color: #e6e6e6; +} +.flatpickr-day.today { + border-color: #959ea9; +} +.flatpickr-day.today:hover, +.flatpickr-day.today:focus { + border-color: #959ea9; + background: #959ea9; + color: #fff; +} +.flatpickr-day.selected, +.flatpickr-day.startRange, +.flatpickr-day.endRange, +.flatpickr-day.selected.inRange, +.flatpickr-day.startRange.inRange, +.flatpickr-day.endRange.inRange, +.flatpickr-day.selected:focus, +.flatpickr-day.startRange:focus, +.flatpickr-day.endRange:focus, +.flatpickr-day.selected:hover, +.flatpickr-day.startRange:hover, +.flatpickr-day.endRange:hover, +.flatpickr-day.selected.prevMonthDay, +.flatpickr-day.startRange.prevMonthDay, +.flatpickr-day.endRange.prevMonthDay, +.flatpickr-day.selected.nextMonthDay, +.flatpickr-day.startRange.nextMonthDay, +.flatpickr-day.endRange.nextMonthDay { + background: #569ff7; + -webkit-box-shadow: none; + box-shadow: none; + color: #fff; + border-color: #569ff7; +} +.flatpickr-day.selected.startRange, +.flatpickr-day.startRange.startRange, +.flatpickr-day.endRange.startRange { + border-radius: 50px 0 0 50px; +} +.flatpickr-day.selected.endRange, +.flatpickr-day.startRange.endRange, +.flatpickr-day.endRange.endRange { + border-radius: 0 50px 50px 0; +} +.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)), +.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)), +.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) { + -webkit-box-shadow: -10px 0 0 #569ff7; + box-shadow: -10px 0 0 #569ff7; +} +.flatpickr-day.selected.startRange.endRange, +.flatpickr-day.startRange.startRange.endRange, +.flatpickr-day.endRange.startRange.endRange { + border-radius: 50px; +} +.flatpickr-day.inRange { + border-radius: 0; + -webkit-box-shadow: -5px 0 0 #e6e6e6, 5px 0 0 #e6e6e6; + box-shadow: -5px 0 0 #e6e6e6, 5px 0 0 #e6e6e6; +} +.flatpickr-day.flatpickr-disabled, +.flatpickr-day.flatpickr-disabled:hover, +.flatpickr-day.prevMonthDay, +.flatpickr-day.nextMonthDay, +.flatpickr-day.notAllowed, +.flatpickr-day.notAllowed.prevMonthDay, +.flatpickr-day.notAllowed.nextMonthDay { + color: rgba(57,57,57,0.3); + background: transparent; + border-color: transparent; + cursor: default; +} +.flatpickr-day.flatpickr-disabled, +.flatpickr-day.flatpickr-disabled:hover { + cursor: not-allowed; + color: rgba(57,57,57,0.1); +} +.flatpickr-day.week.selected { + border-radius: 0; + -webkit-box-shadow: -5px 0 0 #569ff7, 5px 0 0 #569ff7; + box-shadow: -5px 0 0 #569ff7, 5px 0 0 #569ff7; +} +.flatpickr-day.hidden { + visibility: hidden; +} +.rangeMode .flatpickr-day { + margin-top: 1px; +} +.flatpickr-weekwrapper { + float: left; +} +.flatpickr-weekwrapper .flatpickr-weeks { + padding: 0 12px; + -webkit-box-shadow: 1px 0 0 #e6e6e6; + box-shadow: 1px 0 0 #e6e6e6; +} +.flatpickr-weekwrapper .flatpickr-weekday { + float: none; + width: 100%; + line-height: 28px; +} +.flatpickr-weekwrapper span.flatpickr-day, +.flatpickr-weekwrapper span.flatpickr-day:hover { + display: block; + width: 100%; + max-width: none; + color: rgba(57,57,57,0.3); + background: transparent; + cursor: default; + border: none; +} +.flatpickr-innerContainer { + display: block; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-sizing: border-box; + box-sizing: border-box; + overflow: hidden; +} +.flatpickr-rContainer { + display: inline-block; + padding: 0; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.flatpickr-time { + text-align: center; + outline: 0; + display: block; + height: 0; + line-height: 40px; + max-height: 40px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + overflow: hidden; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; +} +.flatpickr-time:after { + content: ""; + display: table; + clear: both; +} +.flatpickr-time .numInputWrapper { + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + width: 40%; + height: 40px; + float: left; +} +.flatpickr-time .numInputWrapper span.arrowUp:after { + border-bottom-color: #393939; +} +.flatpickr-time .numInputWrapper span.arrowDown:after { + border-top-color: #393939; +} +.flatpickr-time.hasSeconds .numInputWrapper { + width: 26%; +} +.flatpickr-time.time24hr .numInputWrapper { + width: 49%; +} +.flatpickr-time input { + background: transparent; + -webkit-box-shadow: none; + box-shadow: none; + border: 0; + border-radius: 0; + text-align: center; + margin: 0; + padding: 0; + height: inherit; + line-height: inherit; + color: #393939; + font-size: 14px; + position: relative; + -webkit-box-sizing: border-box; + box-sizing: border-box; + -webkit-appearance: textfield; + -moz-appearance: textfield; + appearance: textfield; +} +.flatpickr-time input.flatpickr-hour { + font-weight: bold; +} +.flatpickr-time input.flatpickr-minute, +.flatpickr-time input.flatpickr-second { + font-weight: 400; +} +.flatpickr-time input:focus { + outline: 0; + border: 0; +} +.flatpickr-time .flatpickr-time-separator, +.flatpickr-time .flatpickr-am-pm { + height: inherit; + float: left; + line-height: inherit; + color: #393939; + font-weight: bold; + width: 2%; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-align-self: center; + -ms-flex-item-align: center; + align-self: center; +} +.flatpickr-time .flatpickr-am-pm { + outline: 0; + width: 18%; + cursor: pointer; + text-align: center; + font-weight: 400; +} +.flatpickr-time input:hover, +.flatpickr-time .flatpickr-am-pm:hover, +.flatpickr-time input:focus, +.flatpickr-time .flatpickr-am-pm:focus { + background: #eee; +} +.flatpickr-input[readonly] { + cursor: pointer; +} +@-webkit-keyframes fpFadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +@keyframes fpFadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -20px, 0); + transform: translate3d(0, -20px, 0); + } + to { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} diff --git a/docs/css/flatpickr.min.css b/docs/css/flatpickr.min.css new file mode 100644 index 0000000..46c57b7 --- /dev/null +++ b/docs/css/flatpickr.min.css @@ -0,0 +1,13 @@ +.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px);}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.rightMost:after{left:auto;right:22px}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/* + /*rtl:begin:ignore*/left:0;/* + /*rtl:end:ignore*/}/* + /*rtl:begin:ignore*/ +/* + /*rtl:end:ignore*/ +.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/* + /*rtl:begin:ignore*/right:0;/* + /*rtl:end:ignore*/}/* + /*rtl:begin:ignore*/ +/* + /*rtl:end:ignore*/ +.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9;}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px;}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto;}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%;}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box;}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0;}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%;}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto;}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05);}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0;}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\0;display:inline-block;}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto;}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px;}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px;}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1;}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center;}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9;}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left;}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left;}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}} \ No newline at end of file diff --git a/docs/css/highlight-docco.css b/docs/css/highlight-docco.css new file mode 100644 index 0000000..db366be --- /dev/null +++ b/docs/css/highlight-docco.css @@ -0,0 +1,97 @@ +/* +Docco style used in http://jashkenas.github.com/docco/ converted by Simon Madine (@thingsinjars) +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #000; + background: #f8f8ff; +} + +.hljs-comment, +.hljs-quote { + color: #408080; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-subst { + color: #954121; +} + +.hljs-number { + color: #40a070; +} + +.hljs-string, +.hljs-doctag { + color: #219161; +} + +.hljs-selector-id, +.hljs-selector-class, +.hljs-section, +.hljs-type { + color: #19469d; +} + +.hljs-params { + color: #00f; +} + +.hljs-title { + color: #458; + font-weight: bold; +} + +.hljs-tag, +.hljs-name, +.hljs-attribute { + color: #000080; + font-weight: normal; +} + +.hljs-variable, +.hljs-template-variable { + color: #008080; +} + +.hljs-regexp, +.hljs-link { + color: #b68; +} + +.hljs-symbol, +.hljs-bullet { + color: #990073; +} + +.hljs-built_in, +.hljs-builtin-name { + color: #0086b3; +} + +.hljs-meta { + color: #999; + font-weight: bold; +} + +.hljs-deletion { + background: #fdd; +} + +.hljs-addition { + background: #dfd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/docs/css/highlight.min.css b/docs/css/highlight.min.css new file mode 100644 index 0000000..8fc9a15 --- /dev/null +++ b/docs/css/highlight.min.css @@ -0,0 +1 @@ +.hljs{display:block;overflow-x:auto;padding:.5em;background:#f0f0f0}.hljs,.hljs-subst{color:#444}.hljs-comment{color:#888}.hljs-attribute,.hljs-doctag,.hljs-keyword,.hljs-meta-keyword,.hljs-name,.hljs-selector-tag{font-weight:700}.hljs-deletion,.hljs-number,.hljs-quote,.hljs-selector-class,.hljs-selector-id,.hljs-string,.hljs-template-tag,.hljs-type{color:#800}.hljs-section,.hljs-title{color:#800;font-weight:700}.hljs-link,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#bc6060}.hljs-literal{color:#78a960}.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-code{color:#397300}.hljs-meta{color:#1f7199}.hljs-meta-string{color:#4d99bf}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/docs/css/theme.css b/docs/css/theme.css new file mode 100644 index 0000000..3cbb33d --- /dev/null +++ b/docs/css/theme.css @@ -0,0 +1,5696 @@ +/*! Themestr.app `Bootstrap Purple` Bootstrap 4.3.1 theme */ +/*! + * Bootstrap v4.1.1 (https://getbootstrap.com/) + * Copyright 2011-2018 The Bootstrap Authors + * Copyright 2011-2018 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +:root { + --blue: #007bff; + --indigo: #6610f2; + --purple: #6f42c1; + --pink: #e83e8c; + --red: #dc3545; + --orange: #fd7e14; + --yellow: #ffc107; + --green: #28a745; + --teal: #20c997; + --cyan: #17a2b8; + --white: #fff; + --gray: #6c757d; + --gray-dark: #343a40; + --primary: #563d7c; + --secondary: #868e96; + --success: #28a745; + --info: #17a2b8; + --warning: #ffc107; + --danger: #dc3545; + --light: #f8f9fa; + --dark: #343434; + --breakpoint-xs: 0; + --breakpoint-sm: 576px; + --breakpoint-md: 768px; + --breakpoint-lg: 992px; + --breakpoint-xl: 1200px; + --font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; } + +*, +*::before, +*::after { + box-sizing: border-box; } + +html { + font-family: sans-serif; + line-height: 1.15; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + -ms-overflow-style: scrollbar; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } + +@-ms-viewport { + width: device-width; } + +article, aside, figcaption, figure, footer, header, hgroup, main, nav, section { + display: block; } + +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #212529; + text-align: left; + background-color: #fff; } + +[tabindex="-1"]:focus { + outline: 0 !important; } + +hr { + box-sizing: content-box; + height: 0; + overflow: visible; } + +h1, h2, h3, h4, h5, h6 { + margin-top: 0; + margin-bottom: 0.5rem; } + +p { + margin-top: 0; + margin-bottom: 1rem; } + +abbr[title], +abbr[data-original-title] { + text-decoration: underline; + text-decoration: underline dotted; + cursor: help; + border-bottom: 0; } + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; } + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; } + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; } + +dt { + font-weight: 700; } + +dd { + margin-bottom: .5rem; + margin-left: 0; } + +blockquote { + margin: 0 0 1rem; } + +dfn { + font-style: italic; } + +b, +strong { + font-weight: bolder; } + +small { + font-size: 80%; } + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; } + +sub { + bottom: -.25em; } + +sup { + top: -.5em; } + +a { + color: #563d7c; + text-decoration: none; + background-color: transparent; + -webkit-text-decoration-skip: objects; } + a:hover { + color: #322449; + text-decoration: underline; } + +a:not([href]):not([tabindex]) { + color: inherit; + text-decoration: none; } + a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus { + color: inherit; + text-decoration: none; } + a:not([href]):not([tabindex]):focus { + outline: 0; } + +pre, +code, +kbd, +samp { + font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + font-size: 1em; } + +pre { + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; + -ms-overflow-style: scrollbar; } + +figure { + margin: 0 0 1rem; } + +img { + vertical-align: middle; + border-style: none; } + +svg:not(:root) { + overflow: hidden; } + +table { + border-collapse: collapse; } + +caption { + padding-top: 0.75rem; + padding-bottom: 0.75rem; + color: #6c757d; + text-align: left; + caption-side: bottom; } + +th { + text-align: inherit; } + +label { + display: inline-block; + margin-bottom: 0.5rem; } + +button { + border-radius: 0; } + +button:focus { + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color; } + +input, +button, +select, +optgroup, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; } + +button, +input { + overflow: visible; } + +button, +select { + text-transform: none; } + +button, +html [type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; } + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + padding: 0; + border-style: none; } + +input[type="radio"], +input[type="checkbox"] { + box-sizing: border-box; + padding: 0; } + +input[type="date"], +input[type="time"], +input[type="datetime-local"], +input[type="month"] { + -webkit-appearance: listbox; } + +textarea { + overflow: auto; + resize: vertical; } + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; } + +legend { + display: block; + width: 100%; + max-width: 100%; + padding: 0; + margin-bottom: .5rem; + font-size: 1.5rem; + line-height: inherit; + color: inherit; + white-space: normal; } + +progress { + vertical-align: baseline; } + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; } + +[type="search"] { + outline-offset: -2px; + -webkit-appearance: none; } + +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; } + +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button; } + +output { + display: inline-block; } + +summary { + display: list-item; + cursor: pointer; } + +template { + display: none; } + +[hidden] { + display: none !important; } + +h1, h2, h3, h4, h5, h6, +.h1, .h2, .h3, .h4, .h5, .h6 { + margin-bottom: 0.5rem; + font-family: inherit; + font-weight: 500; + line-height: 1.2; + color: inherit; } + +h1, .h1 { + font-size: 2.5rem; } + +h2, .h2 { + font-size: 2rem; } + +h3, .h3 { + font-size: 1.75rem; } + +h4, .h4 { + font-size: 1.5rem; } + +h5, .h5 { + font-size: 1.25rem; } + +h6, .h6 { + font-size: 1rem; } + +.lead { + font-size: 1.25rem; + font-weight: 300; } + +.display-1 { + font-size: 6rem; + font-weight: 300; + line-height: 1.2; } + +.display-2 { + font-size: 5.5rem; + font-weight: 300; + line-height: 1.2; } + +.display-3 { + font-size: 4.5rem; + font-weight: 300; + line-height: 1.2; } + +.display-4 { + font-size: 3.5rem; + font-weight: 300; + line-height: 1.2; } + +hr { + margin-top: 1rem; + margin-bottom: 1rem; + border: 0; + border-top: 1px solid rgba(0, 0, 0, 0.1); } + +small, +.small { + font-size: 80%; + font-weight: 400; } + +mark, +.mark { + padding: 0.2em; + background-color: #fcf8e3; } + +.list-unstyled { + padding-left: 0; + list-style: none; } + +.list-inline { + padding-left: 0; + list-style: none; } + +.list-inline-item { + display: inline-block; } + .list-inline-item:not(:last-child) { + margin-right: 0.5rem; } + +.initialism { + font-size: 90%; + text-transform: uppercase; } + +.blockquote { + margin-bottom: 1rem; + font-size: 1.25rem; } + +.blockquote-footer { + display: block; + font-size: 80%; + color: #6c757d; } + .blockquote-footer::before { + content: "\2014 \00A0"; } + +.img-fluid { + max-width: 100%; + height: auto; } + +.img-thumbnail { + padding: 0.25rem; + background-color: #fff; + border: 1px solid #dee2e6; + border-radius: 0.25rem; + max-width: 100%; + height: auto; } + +.figure { + display: inline-block; } + +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; } + +.figure-caption { + font-size: 90%; + color: #6c757d; } + +code { + font-size: 87.5%; + color: #e83e8c; + word-break: break-word; } + a > code { + color: inherit; } + +kbd { + padding: 0.2rem 0.4rem; + font-size: 87.5%; + color: #fff; + background-color: #212529; + border-radius: 0.2rem; } + kbd kbd { + padding: 0; + font-size: 100%; + font-weight: 700; } + +pre { + display: block; + font-size: 87.5%; + color: #212529; } + pre code { + font-size: inherit; + color: inherit; + word-break: normal; } + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; } + +.table { + width: 100%; + max-width: 100%; + margin-bottom: 1rem; + background-color: transparent; } + .table th, + .table td { + padding: 0.75rem; + vertical-align: top; + border-top: 1px solid #dee2e6; } + .table thead th { + vertical-align: bottom; + border-bottom: 2px solid #dee2e6; } + .table tbody + tbody { + border-top: 2px solid #dee2e6; } + .table .table { + background-color: #fff; } + +.table-sm th, +.table-sm td { + padding: 0.3rem; } + +.table-bordered { + border: 1px solid #dee2e6; } + .table-bordered th, + .table-bordered td { + border: 1px solid #dee2e6; } + .table-bordered thead th, + .table-bordered thead td { + border-bottom-width: 2px; } + +.table-borderless th, +.table-borderless td, +.table-borderless thead th, +.table-borderless tbody + tbody { + border: 0; } + +.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(0, 0, 0, 0.05); } + +.table-hover tbody tr:hover { + background-color: rgba(0, 0, 0, 0.075); } + +.table-primary, +.table-primary > th, +.table-primary > td { + background-color: #d0c9da; } + +.table-hover .table-primary:hover { + background-color: #c3bad0; } + .table-hover .table-primary:hover > td, + .table-hover .table-primary:hover > th { + background-color: #c3bad0; } + +.table-secondary, +.table-secondary > th, +.table-secondary > td { + background-color: #dddfe2; } + +.table-hover .table-secondary:hover { + background-color: #cfd2d6; } + .table-hover .table-secondary:hover > td, + .table-hover .table-secondary:hover > th { + background-color: #cfd2d6; } + +.table-success, +.table-success > th, +.table-success > td { + background-color: #c3e6cb; } + +.table-hover .table-success:hover { + background-color: #b1dfbb; } + .table-hover .table-success:hover > td, + .table-hover .table-success:hover > th { + background-color: #b1dfbb; } + +.table-info, +.table-info > th, +.table-info > td { + background-color: #bee5eb; } + +.table-hover .table-info:hover { + background-color: #abdde5; } + .table-hover .table-info:hover > td, + .table-hover .table-info:hover > th { + background-color: #abdde5; } + +.table-warning, +.table-warning > th, +.table-warning > td { + background-color: #ffeeba; } + +.table-hover .table-warning:hover { + background-color: #ffe8a1; } + .table-hover .table-warning:hover > td, + .table-hover .table-warning:hover > th { + background-color: #ffe8a1; } + +.table-danger, +.table-danger > th, +.table-danger > td { + background-color: #f5c6cb; } + +.table-hover .table-danger:hover { + background-color: #f1b0b7; } + .table-hover .table-danger:hover > td, + .table-hover .table-danger:hover > th { + background-color: #f1b0b7; } + +.table-light, +.table-light > th, +.table-light > td { + background-color: #fdfdfe; } + +.table-hover .table-light:hover { + background-color: #ececf6; } + .table-hover .table-light:hover > td, + .table-hover .table-light:hover > th { + background-color: #ececf6; } + +.table-dark, +.table-dark > th, +.table-dark > td { + background-color: #c6c6c6; } + +.table-hover .table-dark:hover { + background-color: #b9b9b9; } + .table-hover .table-dark:hover > td, + .table-hover .table-dark:hover > th { + background-color: #b9b9b9; } + +.table-active, +.table-active > th, +.table-active > td { + background-color: rgba(0, 0, 0, 0.075); } + +.table-hover .table-active:hover { + background-color: rgba(0, 0, 0, 0.075); } + .table-hover .table-active:hover > td, + .table-hover .table-active:hover > th { + background-color: rgba(0, 0, 0, 0.075); } + +.table .thead-dark th { + color: #fff; + background-color: #212529; + border-color: #32383e; } + +.table .thead-light th { + color: #495057; + background-color: #e9ecef; + border-color: #dee2e6; } + +.table-dark { + color: #fff; + background-color: #212529; } + .table-dark th, + .table-dark td, + .table-dark thead th { + border-color: #32383e; } + .table-dark.table-bordered { + border: 0; } + .table-dark.table-striped tbody tr:nth-of-type(odd) { + background-color: rgba(255, 255, 255, 0.05); } + .table-dark.table-hover tbody tr:hover { + background-color: rgba(255, 255, 255, 0.075); } + +@media (max-width: 575.98px) { + .table-responsive-sm { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; } + .table-responsive-sm > .table-bordered { + border: 0; } } + +@media (max-width: 767.98px) { + .table-responsive-md { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; } + .table-responsive-md > .table-bordered { + border: 0; } } + +@media (max-width: 991.98px) { + .table-responsive-lg { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; } + .table-responsive-lg > .table-bordered { + border: 0; } } + +@media (max-width: 1199.98px) { + .table-responsive-xl { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; } + .table-responsive-xl > .table-bordered { + border: 0; } } + +.table-responsive { + display: block; + width: 100%; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; } + .table-responsive > .table-bordered { + border: 0; } + +.form-control { + display: block; + width: 100%; + padding: 0.375rem 0.75rem; + font-size: 1rem; + line-height: 1.5; + color: #495057; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ced4da; + border-radius: 0.25rem; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } + @media screen and (prefers-reduced-motion: reduce) { + .form-control { + transition: none; } } + .form-control::-ms-expand { + background-color: transparent; + border: 0; } + .form-control:focus { + color: #495057; + background-color: #fff; + border-color: #957bbe; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(86, 61, 124, 0.25); } + .form-control::placeholder { + color: #6c757d; + opacity: 1; } + .form-control:disabled, .form-control[readonly] { + background-color: #e9ecef; + opacity: 1; } + +select.form-control:not([size]):not([multiple]) { + height: calc(2.25rem + 2px); } + +select.form-control:focus::-ms-value { + color: #495057; + background-color: #fff; } + +.form-control-file, +.form-control-range { + display: block; + width: 100%; } + +.col-form-label { + padding-top: calc(0.375rem + 1px); + padding-bottom: calc(0.375rem + 1px); + margin-bottom: 0; + font-size: inherit; + line-height: 1.5; } + +.col-form-label-lg { + padding-top: calc(0.5rem + 1px); + padding-bottom: calc(0.5rem + 1px); + font-size: 1.25rem; + line-height: 1.5; } + +.col-form-label-sm { + padding-top: calc(0.25rem + 1px); + padding-bottom: calc(0.25rem + 1px); + font-size: 0.875rem; + line-height: 1.5; } + +.form-control-plaintext { + display: block; + width: 100%; + padding-top: 0.375rem; + padding-bottom: 0.375rem; + margin-bottom: 0; + line-height: 1.5; + color: #212529; + background-color: transparent; + border: solid transparent; + border-width: 1px 0; } + .form-control-plaintext.form-control-sm, .input-group-sm > .form-control-plaintext.form-control, + .input-group-sm > .input-group-prepend > .form-control-plaintext.input-group-text, + .input-group-sm > .input-group-append > .form-control-plaintext.input-group-text, + .input-group-sm > .input-group-prepend > .form-control-plaintext.btn, + .input-group-sm > .input-group-append > .form-control-plaintext.btn, .form-control-plaintext.form-control-lg, .input-group-lg > .form-control-plaintext.form-control, + .input-group-lg > .input-group-prepend > .form-control-plaintext.input-group-text, + .input-group-lg > .input-group-append > .form-control-plaintext.input-group-text, + .input-group-lg > .input-group-prepend > .form-control-plaintext.btn, + .input-group-lg > .input-group-append > .form-control-plaintext.btn { + padding-right: 0; + padding-left: 0; } + +.form-control-sm, .input-group-sm > .form-control, +.input-group-sm > .input-group-prepend > .input-group-text, +.input-group-sm > .input-group-append > .input-group-text, +.input-group-sm > .input-group-prepend > .btn, +.input-group-sm > .input-group-append > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; + border-radius: 0.2rem; } + +select.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.form-control:not([size]):not([multiple]), +.input-group-sm > .input-group-prepend > select.input-group-text:not([size]):not([multiple]), +.input-group-sm > .input-group-append > select.input-group-text:not([size]):not([multiple]), +.input-group-sm > .input-group-prepend > select.btn:not([size]):not([multiple]), +.input-group-sm > .input-group-append > select.btn:not([size]):not([multiple]) { + height: calc(1.8125rem + 2px); } + +.form-control-lg, .input-group-lg > .form-control, +.input-group-lg > .input-group-prepend > .input-group-text, +.input-group-lg > .input-group-append > .input-group-text, +.input-group-lg > .input-group-prepend > .btn, +.input-group-lg > .input-group-append > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: 0.3rem; } + +select.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.form-control:not([size]):not([multiple]), +.input-group-lg > .input-group-prepend > select.input-group-text:not([size]):not([multiple]), +.input-group-lg > .input-group-append > select.input-group-text:not([size]):not([multiple]), +.input-group-lg > .input-group-prepend > select.btn:not([size]):not([multiple]), +.input-group-lg > .input-group-append > select.btn:not([size]):not([multiple]) { + height: calc(2.875rem + 2px); } + +.form-group { + margin-bottom: 1rem; } + +.form-text { + display: block; + margin-top: 0.25rem; } + +.form-row { + display: flex; + flex-wrap: wrap; + margin-right: -5px; + margin-left: -5px; } + .form-row > .col, + .form-row > [class*="col-"] { + padding-right: 5px; + padding-left: 5px; } + +.form-check { + position: relative; + display: block; + padding-left: 1.25rem; } + +.form-check-input { + position: absolute; + margin-top: 0.3rem; + margin-left: -1.25rem; } + .form-check-input:disabled ~ .form-check-label { + color: #6c757d; } + +.form-check-label { + margin-bottom: 0; } + +.form-check-inline { + display: inline-flex; + align-items: center; + padding-left: 0; + margin-right: 0.75rem; } + .form-check-inline .form-check-input { + position: static; + margin-top: 0; + margin-right: 0.3125rem; + margin-left: 0; } + +.valid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 80%; + color: #28a745; } + +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: .5rem; + margin-top: .1rem; + font-size: .875rem; + line-height: 1; + color: #fff; + background-color: rgba(40, 167, 69, 0.8); + border-radius: .2rem; } + +.was-validated .form-control:valid, .form-control.is-valid, .was-validated +.custom-select:valid, +.custom-select.is-valid { + border-color: #28a745; } + .was-validated .form-control:valid:focus, .form-control.is-valid:focus, .was-validated + .custom-select:valid:focus, + .custom-select.is-valid:focus { + border-color: #28a745; + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); } + .was-validated .form-control:valid ~ .valid-feedback, + .was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback, + .form-control.is-valid ~ .valid-tooltip, .was-validated + .custom-select:valid ~ .valid-feedback, + .was-validated + .custom-select:valid ~ .valid-tooltip, + .custom-select.is-valid ~ .valid-feedback, + .custom-select.is-valid ~ .valid-tooltip { + display: block; } + +.was-validated .form-control-file:valid ~ .valid-feedback, +.was-validated .form-control-file:valid ~ .valid-tooltip, .form-control-file.is-valid ~ .valid-feedback, +.form-control-file.is-valid ~ .valid-tooltip { + display: block; } + +.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { + color: #28a745; } + +.was-validated .form-check-input:valid ~ .valid-feedback, +.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback, +.form-check-input.is-valid ~ .valid-tooltip { + display: block; } + +.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label { + color: #28a745; } + .was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before { + background-color: #71dd8a; } + +.was-validated .custom-control-input:valid ~ .valid-feedback, +.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback, +.custom-control-input.is-valid ~ .valid-tooltip { + display: block; } + +.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before { + background-color: #34ce57; } + +.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(40, 167, 69, 0.25); } + +.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label { + border-color: #28a745; } + .was-validated .custom-file-input:valid ~ .custom-file-label::before, .custom-file-input.is-valid ~ .custom-file-label::before { + border-color: inherit; } + +.was-validated .custom-file-input:valid ~ .valid-feedback, +.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback, +.custom-file-input.is-valid ~ .valid-tooltip { + display: block; } + +.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label { + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25); } + +.invalid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 80%; + color: #dc3545; } + +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: .5rem; + margin-top: .1rem; + font-size: .875rem; + line-height: 1; + color: #fff; + background-color: rgba(220, 53, 69, 0.8); + border-radius: .2rem; } + +.was-validated .form-control:invalid, .form-control.is-invalid, .was-validated +.custom-select:invalid, +.custom-select.is-invalid { + border-color: #dc3545; } + .was-validated .form-control:invalid:focus, .form-control.is-invalid:focus, .was-validated + .custom-select:invalid:focus, + .custom-select.is-invalid:focus { + border-color: #dc3545; + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); } + .was-validated .form-control:invalid ~ .invalid-feedback, + .was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback, + .form-control.is-invalid ~ .invalid-tooltip, .was-validated + .custom-select:invalid ~ .invalid-feedback, + .was-validated + .custom-select:invalid ~ .invalid-tooltip, + .custom-select.is-invalid ~ .invalid-feedback, + .custom-select.is-invalid ~ .invalid-tooltip { + display: block; } + +.was-validated .form-control-file:invalid ~ .invalid-feedback, +.was-validated .form-control-file:invalid ~ .invalid-tooltip, .form-control-file.is-invalid ~ .invalid-feedback, +.form-control-file.is-invalid ~ .invalid-tooltip { + display: block; } + +.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { + color: #dc3545; } + +.was-validated .form-check-input:invalid ~ .invalid-feedback, +.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback, +.form-check-input.is-invalid ~ .invalid-tooltip { + display: block; } + +.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label { + color: #dc3545; } + .was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before { + background-color: #efa2a9; } + +.was-validated .custom-control-input:invalid ~ .invalid-feedback, +.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback, +.custom-control-input.is-invalid ~ .invalid-tooltip { + display: block; } + +.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before { + background-color: #e4606d; } + +.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(220, 53, 69, 0.25); } + +.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label { + border-color: #dc3545; } + .was-validated .custom-file-input:invalid ~ .custom-file-label::before, .custom-file-input.is-invalid ~ .custom-file-label::before { + border-color: inherit; } + +.was-validated .custom-file-input:invalid ~ .invalid-feedback, +.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback, +.custom-file-input.is-invalid ~ .invalid-tooltip { + display: block; } + +.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label { + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25); } + +.form-inline { + display: flex; + flex-flow: row wrap; + align-items: center; } + .form-inline .form-check { + width: 100%; } + @media (min-width: 576px) { + .form-inline label { + display: flex; + align-items: center; + justify-content: center; + margin-bottom: 0; } + .form-inline .form-group { + display: flex; + flex: 0 0 auto; + flex-flow: row wrap; + align-items: center; + margin-bottom: 0; } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; } + .form-inline .form-control-plaintext { + display: inline-block; } + .form-inline .input-group, + .form-inline .custom-select { + width: auto; } + .form-inline .form-check { + display: flex; + align-items: center; + justify-content: center; + width: auto; + padding-left: 0; } + .form-inline .form-check-input { + position: relative; + margin-top: 0; + margin-right: 0.25rem; + margin-left: 0; } + .form-inline .custom-control { + align-items: center; + justify-content: center; } + .form-inline .custom-control-label { + margin-bottom: 0; } } + +.btn { + display: inline-block; + font-weight: 400; + text-align: center; + white-space: nowrap; + vertical-align: middle; + user-select: none; + border: 1px solid transparent; + padding: 0.375rem 0.75rem; + font-size: 1rem; + line-height: 1.5; + border-radius: 0.25rem; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } + @media screen and (prefers-reduced-motion: reduce) { + .btn { + transition: none; } } + .btn:hover, .btn:focus { + text-decoration: none; } + .btn:focus, .btn.focus { + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(86, 61, 124, 0.25); } + .btn.disabled, .btn:disabled { + opacity: 0.65; } + .btn:not(:disabled):not(.disabled) { + cursor: pointer; } + .btn:not(:disabled):not(.disabled):active, .btn:not(:disabled):not(.disabled).active { + background-image: none; } + +a.btn.disabled, +fieldset:disabled a.btn { + pointer-events: none; } + +.btn-primary { + color: #fff; + background-color: #563d7c; + border-color: #563d7c; } + .btn-primary:hover { + color: #fff; + background-color: #443062; + border-color: #3e2c5a; } + .btn-primary:focus, .btn-primary.focus { + box-shadow: 0 0 0 0.2rem rgba(86, 61, 124, 0.5); } + .btn-primary.disabled, .btn-primary:disabled { + color: #fff; + background-color: #563d7c; + border-color: #563d7c; } + .btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active, + .show > .btn-primary.dropdown-toggle { + color: #fff; + background-color: #3e2c5a; + border-color: #382851; } + .btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus, + .show > .btn-primary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(86, 61, 124, 0.5); } + +.btn-secondary { + color: #fff; + background-color: #868e96; + border-color: #868e96; } + .btn-secondary:hover { + color: #fff; + background-color: #727b84; + border-color: #6c757d; } + .btn-secondary:focus, .btn-secondary.focus { + box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5); } + .btn-secondary.disabled, .btn-secondary:disabled { + color: #fff; + background-color: #868e96; + border-color: #868e96; } + .btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active, + .show > .btn-secondary.dropdown-toggle { + color: #fff; + background-color: #6c757d; + border-color: #666e76; } + .btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus, + .show > .btn-secondary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5); } + +.btn-success { + color: #fff; + background-color: #28a745; + border-color: #28a745; } + .btn-success:hover { + color: #fff; + background-color: #218838; + border-color: #1e7e34; } + .btn-success:focus, .btn-success.focus { + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); } + .btn-success.disabled, .btn-success:disabled { + color: #fff; + background-color: #28a745; + border-color: #28a745; } + .btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active, + .show > .btn-success.dropdown-toggle { + color: #fff; + background-color: #1e7e34; + border-color: #1c7430; } + .btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus, + .show > .btn-success.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); } + +.btn-info { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; } + .btn-info:hover { + color: #fff; + background-color: #138496; + border-color: #117a8b; } + .btn-info:focus, .btn-info.focus { + box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } + .btn-info.disabled, .btn-info:disabled { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; } + .btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active, + .show > .btn-info.dropdown-toggle { + color: #fff; + background-color: #117a8b; + border-color: #10707f; } + .btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus, + .show > .btn-info.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } + +.btn-warning { + color: #212529; + background-color: #ffc107; + border-color: #ffc107; } + .btn-warning:hover { + color: #212529; + background-color: #e0a800; + border-color: #d39e00; } + .btn-warning:focus, .btn-warning.focus { + box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); } + .btn-warning.disabled, .btn-warning:disabled { + color: #212529; + background-color: #ffc107; + border-color: #ffc107; } + .btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active, + .show > .btn-warning.dropdown-toggle { + color: #212529; + background-color: #d39e00; + border-color: #c69500; } + .btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus, + .show > .btn-warning.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); } + +.btn-danger { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; } + .btn-danger:hover { + color: #fff; + background-color: #c82333; + border-color: #bd2130; } + .btn-danger:focus, .btn-danger.focus { + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); } + .btn-danger.disabled, .btn-danger:disabled { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; } + .btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active, + .show > .btn-danger.dropdown-toggle { + color: #fff; + background-color: #bd2130; + border-color: #b21f2d; } + .btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus, + .show > .btn-danger.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); } + +.btn-light { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; } + .btn-light:hover { + color: #212529; + background-color: #e2e6ea; + border-color: #dae0e5; } + .btn-light:focus, .btn-light.focus { + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); } + .btn-light.disabled, .btn-light:disabled { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; } + .btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active, + .show > .btn-light.dropdown-toggle { + color: #212529; + background-color: #dae0e5; + border-color: #d3d9df; } + .btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus, + .show > .btn-light.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); } + +.btn-dark { + color: #fff; + background-color: #343434; + border-color: #343434; } + .btn-dark:hover { + color: #fff; + background-color: #212121; + border-color: #1b1b1b; } + .btn-dark:focus, .btn-dark.focus { + box-shadow: 0 0 0 0.2rem rgba(52, 52, 52, 0.5); } + .btn-dark.disabled, .btn-dark:disabled { + color: #fff; + background-color: #343434; + border-color: #343434; } + .btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active, + .show > .btn-dark.dropdown-toggle { + color: #fff; + background-color: #1b1b1b; + border-color: #141414; } + .btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus, + .show > .btn-dark.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(52, 52, 52, 0.5); } + +.btn-outline-primary { + color: #563d7c; + background-color: transparent; + background-image: none; + border-color: #563d7c; } + .btn-outline-primary:hover { + color: #fff; + background-color: #563d7c; + border-color: #563d7c; } + .btn-outline-primary:focus, .btn-outline-primary.focus { + box-shadow: 0 0 0 0.2rem rgba(86, 61, 124, 0.5); } + .btn-outline-primary.disabled, .btn-outline-primary:disabled { + color: #563d7c; + background-color: transparent; } + .btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active, + .show > .btn-outline-primary.dropdown-toggle { + color: #fff; + background-color: #563d7c; + border-color: #563d7c; } + .btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus, + .show > .btn-outline-primary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(86, 61, 124, 0.5); } + +.btn-outline-secondary { + color: #868e96; + background-color: transparent; + background-image: none; + border-color: #868e96; } + .btn-outline-secondary:hover { + color: #fff; + background-color: #868e96; + border-color: #868e96; } + .btn-outline-secondary:focus, .btn-outline-secondary.focus { + box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5); } + .btn-outline-secondary.disabled, .btn-outline-secondary:disabled { + color: #868e96; + background-color: transparent; } + .btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active, + .show > .btn-outline-secondary.dropdown-toggle { + color: #fff; + background-color: #868e96; + border-color: #868e96; } + .btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus, + .show > .btn-outline-secondary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(134, 142, 150, 0.5); } + +.btn-outline-success { + color: #28a745; + background-color: transparent; + background-image: none; + border-color: #28a745; } + .btn-outline-success:hover { + color: #fff; + background-color: #28a745; + border-color: #28a745; } + .btn-outline-success:focus, .btn-outline-success.focus { + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); } + .btn-outline-success.disabled, .btn-outline-success:disabled { + color: #28a745; + background-color: transparent; } + .btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active, + .show > .btn-outline-success.dropdown-toggle { + color: #fff; + background-color: #28a745; + border-color: #28a745; } + .btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus, + .show > .btn-outline-success.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5); } + +.btn-outline-info { + color: #17a2b8; + background-color: transparent; + background-image: none; + border-color: #17a2b8; } + .btn-outline-info:hover { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; } + .btn-outline-info:focus, .btn-outline-info.focus { + box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } + .btn-outline-info.disabled, .btn-outline-info:disabled { + color: #17a2b8; + background-color: transparent; } + .btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active, + .show > .btn-outline-info.dropdown-toggle { + color: #fff; + background-color: #17a2b8; + border-color: #17a2b8; } + .btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus, + .show > .btn-outline-info.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5); } + +.btn-outline-warning { + color: #ffc107; + background-color: transparent; + background-image: none; + border-color: #ffc107; } + .btn-outline-warning:hover { + color: #212529; + background-color: #ffc107; + border-color: #ffc107; } + .btn-outline-warning:focus, .btn-outline-warning.focus { + box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); } + .btn-outline-warning.disabled, .btn-outline-warning:disabled { + color: #ffc107; + background-color: transparent; } + .btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active, + .show > .btn-outline-warning.dropdown-toggle { + color: #212529; + background-color: #ffc107; + border-color: #ffc107; } + .btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus, + .show > .btn-outline-warning.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5); } + +.btn-outline-danger { + color: #dc3545; + background-color: transparent; + background-image: none; + border-color: #dc3545; } + .btn-outline-danger:hover { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; } + .btn-outline-danger:focus, .btn-outline-danger.focus { + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); } + .btn-outline-danger.disabled, .btn-outline-danger:disabled { + color: #dc3545; + background-color: transparent; } + .btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active, + .show > .btn-outline-danger.dropdown-toggle { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; } + .btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus, + .show > .btn-outline-danger.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5); } + +.btn-outline-light { + color: #f8f9fa; + background-color: transparent; + background-image: none; + border-color: #f8f9fa; } + .btn-outline-light:hover { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; } + .btn-outline-light:focus, .btn-outline-light.focus { + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); } + .btn-outline-light.disabled, .btn-outline-light:disabled { + color: #f8f9fa; + background-color: transparent; } + .btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active, + .show > .btn-outline-light.dropdown-toggle { + color: #212529; + background-color: #f8f9fa; + border-color: #f8f9fa; } + .btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus, + .show > .btn-outline-light.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5); } + +.btn-outline-dark { + color: #343434; + background-color: transparent; + background-image: none; + border-color: #343434; } + .btn-outline-dark:hover { + color: #fff; + background-color: #343434; + border-color: #343434; } + .btn-outline-dark:focus, .btn-outline-dark.focus { + box-shadow: 0 0 0 0.2rem rgba(52, 52, 52, 0.5); } + .btn-outline-dark.disabled, .btn-outline-dark:disabled { + color: #343434; + background-color: transparent; } + .btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active, + .show > .btn-outline-dark.dropdown-toggle { + color: #fff; + background-color: #343434; + border-color: #343434; } + .btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus, + .show > .btn-outline-dark.dropdown-toggle:focus { + box-shadow: 0 0 0 0.2rem rgba(52, 52, 52, 0.5); } + +.btn-link { + font-weight: 400; + color: #563d7c; + background-color: transparent; } + .btn-link:hover { + color: #322449; + text-decoration: underline; + background-color: transparent; + border-color: transparent; } + .btn-link:focus, .btn-link.focus { + text-decoration: underline; + border-color: transparent; + box-shadow: none; } + .btn-link:disabled, .btn-link.disabled { + color: #6c757d; + pointer-events: none; } + +.btn-lg, .btn-group-lg > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + line-height: 1.5; + border-radius: 0.3rem; } + +.btn-sm, .btn-group-sm > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; + border-radius: 0.2rem; } + +.btn-block { + display: block; + width: 100%; } + .btn-block + .btn-block { + margin-top: 0.5rem; } + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; } + +.fade { + transition: opacity 0.15s linear; } + @media screen and (prefers-reduced-motion: reduce) { + .fade { + transition: none; } } + .fade:not(.show) { + opacity: 0; } + +.collapse:not(.show) { + display: none; } + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + transition: height 0.35s ease; } + @media screen and (prefers-reduced-motion: reduce) { + .collapsing { + transition: none; } } + +.dropup, +.dropright, +.dropdown, +.dropleft { + position: relative; } + +.dropdown-toggle::after { + display: inline-block; + width: 0; + height: 0; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent; } + +.dropdown-toggle:empty::after { + margin-left: 0; } + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 10rem; + padding: 0.5rem 0; + margin: 0.125rem 0 0; + font-size: 1rem; + color: #212529; + text-align: left; + list-style: none; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; } + +.dropdown-menu-right { + right: 0; + left: auto; } + +.dropup .dropdown-menu { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: 0.125rem; } + +.dropup .dropdown-toggle::after { + display: inline-block; + width: 0; + height: 0; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0; + border-right: 0.3em solid transparent; + border-bottom: 0.3em solid; + border-left: 0.3em solid transparent; } + +.dropup .dropdown-toggle:empty::after { + margin-left: 0; } + +.dropright .dropdown-menu { + top: 0; + right: auto; + left: 100%; + margin-top: 0; + margin-left: 0.125rem; } + +.dropright .dropdown-toggle::after { + display: inline-block; + width: 0; + height: 0; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0; + border-bottom: 0.3em solid transparent; + border-left: 0.3em solid; } + +.dropright .dropdown-toggle:empty::after { + margin-left: 0; } + +.dropright .dropdown-toggle::after { + vertical-align: 0; } + +.dropleft .dropdown-menu { + top: 0; + right: 100%; + left: auto; + margin-top: 0; + margin-right: 0.125rem; } + +.dropleft .dropdown-toggle::after { + display: inline-block; + width: 0; + height: 0; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; } + +.dropleft .dropdown-toggle::after { + display: none; } + +.dropleft .dropdown-toggle::before { + display: inline-block; + width: 0; + height: 0; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0.3em solid; + border-bottom: 0.3em solid transparent; } + +.dropleft .dropdown-toggle:empty::after { + margin-left: 0; } + +.dropleft .dropdown-toggle::before { + vertical-align: 0; } + +.dropdown-menu[x-placement^="top"], .dropdown-menu[x-placement^="right"], .dropdown-menu[x-placement^="bottom"], .dropdown-menu[x-placement^="left"] { + right: auto; + bottom: auto; } + +.dropdown-divider { + height: 0; + margin: 0.5rem 0; + overflow: hidden; + border-top: 1px solid #e9ecef; } + +.dropdown-item { + display: block; + width: 100%; + padding: 0.25rem 1.5rem; + clear: both; + font-weight: 400; + color: #212529; + text-align: inherit; + white-space: nowrap; + background-color: transparent; + border: 0; } + .dropdown-item:hover, .dropdown-item:focus { + color: #16181b; + text-decoration: none; + background-color: #f8f9fa; } + .dropdown-item.active, .dropdown-item:active { + color: #fff; + text-decoration: none; + background-color: #563d7c; } + .dropdown-item.disabled, .dropdown-item:disabled { + color: #6c757d; + background-color: transparent; } + +.dropdown-menu.show { + display: block; } + +.dropdown-header { + display: block; + padding: 0.5rem 1.5rem; + margin-bottom: 0; + font-size: 0.875rem; + color: #6c757d; + white-space: nowrap; } + +.dropdown-item-text { + display: block; + padding: 0.25rem 1.5rem; + color: #212529; } + +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-flex; + vertical-align: middle; } + .btn-group > .btn, + .btn-group-vertical > .btn { + position: relative; + flex: 0 1 auto; } + .btn-group > .btn:hover, + .btn-group-vertical > .btn:hover { + z-index: 1; } + .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active, + .btn-group-vertical > .btn:focus, + .btn-group-vertical > .btn:active, + .btn-group-vertical > .btn.active { + z-index: 1; } + .btn-group .btn + .btn, + .btn-group .btn + .btn-group, + .btn-group .btn-group + .btn, + .btn-group .btn-group + .btn-group, + .btn-group-vertical .btn + .btn, + .btn-group-vertical .btn + .btn-group, + .btn-group-vertical .btn-group + .btn, + .btn-group-vertical .btn-group + .btn-group { + margin-left: -1px; } + +.btn-toolbar { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; } + .btn-toolbar .input-group { + width: auto; } + +.btn-group > .btn:first-child { + margin-left: 0; } + +.btn-group > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; } + +.btn-group > .btn:not(:first-child), +.btn-group > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + +.dropdown-toggle-split { + padding-right: 0.5625rem; + padding-left: 0.5625rem; } + .dropdown-toggle-split::after, + .dropup .dropdown-toggle-split::after, + .dropright .dropdown-toggle-split::after { + margin-left: 0; } + .dropleft .dropdown-toggle-split::before { + margin-right: 0; } + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { + padding-right: 0.375rem; + padding-left: 0.375rem; } + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.75rem; } + +.btn-group-vertical { + flex-direction: column; + align-items: flex-start; + justify-content: center; } + .btn-group-vertical .btn, + .btn-group-vertical .btn-group { + width: 100%; } + .btn-group-vertical > .btn + .btn, + .btn-group-vertical > .btn + .btn-group, + .btn-group-vertical > .btn-group + .btn, + .btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; } + .btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), + .btn-group-vertical > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; } + .btn-group-vertical > .btn:not(:first-child), + .btn-group-vertical > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.btn-group-toggle > .btn, +.btn-group-toggle > .btn-group > .btn { + margin-bottom: 0; } + .btn-group-toggle > .btn input[type="radio"], + .btn-group-toggle > .btn input[type="checkbox"], + .btn-group-toggle > .btn-group > .btn input[type="radio"], + .btn-group-toggle > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; } + +.input-group { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: stretch; + width: 100%; } + .input-group > .form-control, + .input-group > .custom-select, + .input-group > .custom-file { + position: relative; + flex: 1 1 auto; + width: 1%; + margin-bottom: 0; } + .input-group > .form-control:focus, + .input-group > .custom-select:focus, + .input-group > .custom-file:focus { + z-index: 3; } + .input-group > .form-control + .form-control, + .input-group > .form-control + .custom-select, + .input-group > .form-control + .custom-file, + .input-group > .custom-select + .form-control, + .input-group > .custom-select + .custom-select, + .input-group > .custom-select + .custom-file, + .input-group > .custom-file + .form-control, + .input-group > .custom-file + .custom-select, + .input-group > .custom-file + .custom-file { + margin-left: -1px; } + .input-group > .form-control:not(:last-child), + .input-group > .custom-select:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; } + .input-group > .form-control:not(:first-child), + .input-group > .custom-select:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + .input-group > .custom-file { + display: flex; + align-items: center; } + .input-group > .custom-file:not(:last-child) .custom-file-label, + .input-group > .custom-file:not(:last-child) .custom-file-label::after { + border-top-right-radius: 0; + border-bottom-right-radius: 0; } + .input-group > .custom-file:not(:first-child) .custom-file-label { + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + +.input-group-prepend, +.input-group-append { + display: flex; } + .input-group-prepend .btn, + .input-group-append .btn { + position: relative; + z-index: 2; } + .input-group-prepend .btn + .btn, + .input-group-prepend .btn + .input-group-text, + .input-group-prepend .input-group-text + .input-group-text, + .input-group-prepend .input-group-text + .btn, + .input-group-append .btn + .btn, + .input-group-append .btn + .input-group-text, + .input-group-append .input-group-text + .input-group-text, + .input-group-append .input-group-text + .btn { + margin-left: -1px; } + +.input-group-prepend { + margin-right: -1px; } + +.input-group-append { + margin-left: -1px; } + +.input-group-text { + display: flex; + align-items: center; + padding: 0.375rem 0.75rem; + margin-bottom: 0; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #495057; + text-align: center; + white-space: nowrap; + background-color: #e9ecef; + border: 1px solid #ced4da; + border-radius: 0.25rem; } + .input-group-text input[type="radio"], + .input-group-text input[type="checkbox"] { + margin-top: 0; } + +.input-group > .input-group-prepend > .btn, +.input-group > .input-group-prepend > .input-group-text, +.input-group > .input-group-append:not(:last-child) > .btn, +.input-group > .input-group-append:not(:last-child) > .input-group-text, +.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; } + +.input-group > .input-group-append > .btn, +.input-group > .input-group-append > .input-group-text, +.input-group > .input-group-prepend:not(:first-child) > .btn, +.input-group > .input-group-prepend:not(:first-child) > .input-group-text, +.input-group > .input-group-prepend:first-child > .btn:not(:first-child), +.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + +.custom-control { + position: relative; + display: block; + min-height: 1.5rem; + padding-left: 1.5rem; } + +.custom-control-inline { + display: inline-flex; + margin-right: 1rem; } + +.custom-control-input { + position: absolute; + z-index: -1; + opacity: 0; } + .custom-control-input:checked ~ .custom-control-label::before { + color: #fff; + background-color: #563d7c; } + .custom-control-input:focus ~ .custom-control-label::before { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(86, 61, 124, 0.25); } + .custom-control-input:active ~ .custom-control-label::before { + color: #fff; + background-color: #b19dcf; } + .custom-control-input:disabled ~ .custom-control-label { + color: #6c757d; } + .custom-control-input:disabled ~ .custom-control-label::before { + background-color: #e9ecef; } + +.custom-control-label { + position: relative; + margin-bottom: 0; } + .custom-control-label::before { + position: absolute; + top: 0.25rem; + left: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + pointer-events: none; + content: ""; + user-select: none; + background-color: #dee2e6; } + .custom-control-label::after { + position: absolute; + top: 0.25rem; + left: -1.5rem; + display: block; + width: 1rem; + height: 1rem; + content: ""; + background-repeat: no-repeat; + background-position: center center; + background-size: 50% 50%; } + +.custom-checkbox .custom-control-label::before { + border-radius: 0.25rem; } + +.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before { + background-color: #563d7c; } + +.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E"); } + +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before { + background-color: #563d7c; } + +.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E"); } + +.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(86, 61, 124, 0.5); } + +.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before { + background-color: rgba(86, 61, 124, 0.5); } + +.custom-radio .custom-control-label::before { + border-radius: 50%; } + +.custom-radio .custom-control-input:checked ~ .custom-control-label::before { + background-color: #563d7c; } + +.custom-radio .custom-control-input:checked ~ .custom-control-label::after { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E"); } + +.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before { + background-color: rgba(86, 61, 124, 0.5); } + +.custom-select { + display: inline-block; + width: 100%; + height: calc(2.25rem + 2px); + padding: 0.375rem 1.75rem 0.375rem 0.75rem; + line-height: 1.5; + color: #495057; + vertical-align: middle; + background: #fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right 0.75rem center; + background-size: 8px 10px; + border: 1px solid #ced4da; + border-radius: 0.25rem; + appearance: none; } + .custom-select:focus { + border-color: #957bbe; + outline: 0; + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 5px rgba(149, 123, 190, 0.5); } + .custom-select:focus::-ms-value { + color: #495057; + background-color: #fff; } + .custom-select[multiple], .custom-select[size]:not([size="1"]) { + height: auto; + padding-right: 0.75rem; + background-image: none; } + .custom-select:disabled { + color: #6c757d; + background-color: #e9ecef; } + .custom-select::-ms-expand { + opacity: 0; } + +.custom-select-sm { + height: calc(1.8125rem + 2px); + padding-top: 0.375rem; + padding-bottom: 0.375rem; + font-size: 75%; } + +.custom-select-lg { + height: calc(2.875rem + 2px); + padding-top: 0.375rem; + padding-bottom: 0.375rem; + font-size: 125%; } + +.custom-file { + position: relative; + display: inline-block; + width: 100%; + height: calc(2.25rem + 2px); + margin-bottom: 0; } + +.custom-file-input { + position: relative; + z-index: 2; + width: 100%; + height: calc(2.25rem + 2px); + margin: 0; + opacity: 0; } + .custom-file-input:focus ~ .custom-file-label { + border-color: #957bbe; + box-shadow: 0 0 0 0.2rem rgba(86, 61, 124, 0.25); } + .custom-file-input:focus ~ .custom-file-label::after { + border-color: #957bbe; } + .custom-file-input:lang(en) ~ .custom-file-label::after { + content: "Browse"; } + +.custom-file-label { + position: absolute; + top: 0; + right: 0; + left: 0; + z-index: 1; + height: calc(2.25rem + 2px); + padding: 0.375rem 0.75rem; + line-height: 1.5; + color: #495057; + background-color: #fff; + border: 1px solid #ced4da; + border-radius: 0.25rem; } + .custom-file-label::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + z-index: 3; + display: block; + height: 2.25rem; + padding: 0.375rem 0.75rem; + line-height: 1.5; + color: #495057; + content: "Browse"; + background-color: #e9ecef; + border-left: 1px solid #ced4da; + border-radius: 0 0.25rem 0.25rem 0; } + +.custom-range { + width: 100%; + padding-left: 0; + background-color: transparent; + appearance: none; } + .custom-range:focus { + outline: none; } + .custom-range::-moz-focus-outer { + border: 0; } + .custom-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.25rem; + background-color: #563d7c; + border: 0; + border-radius: 1rem; + appearance: none; } + .custom-range::-webkit-slider-thumb:focus { + outline: none; + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(86, 61, 124, 0.25); } + .custom-range::-webkit-slider-thumb:active { + background-color: #b19dcf; } + .custom-range::-webkit-slider-runnable-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem; } + .custom-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + background-color: #563d7c; + border: 0; + border-radius: 1rem; + appearance: none; } + .custom-range::-moz-range-thumb:focus { + outline: none; + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(86, 61, 124, 0.25); } + .custom-range::-moz-range-thumb:active { + background-color: #b19dcf; } + .custom-range::-moz-range-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem; } + .custom-range::-ms-thumb { + width: 1rem; + height: 1rem; + background-color: #563d7c; + border: 0; + border-radius: 1rem; + appearance: none; } + .custom-range::-ms-thumb:focus { + outline: none; + box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(86, 61, 124, 0.25); } + .custom-range::-ms-thumb:active { + background-color: #b19dcf; } + .custom-range::-ms-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: transparent; + border-color: transparent; + border-width: 0.5rem; } + .custom-range::-ms-fill-lower { + background-color: #dee2e6; + border-radius: 1rem; } + .custom-range::-ms-fill-upper { + margin-right: 15px; + background-color: #dee2e6; + border-radius: 1rem; } + +.nav { + display: flex; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; } + +.nav-link { + display: block; + padding: 0.5rem 1rem; } + .nav-link:hover, .nav-link:focus { + text-decoration: none; } + .nav-link.disabled { + color: #6c757d; } + +.nav-tabs { + border-bottom: 1px solid #dee2e6; } + .nav-tabs .nav-item { + margin-bottom: -1px; } + .nav-tabs .nav-link { + border: 1px solid transparent; + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; } + .nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { + border-color: #e9ecef #e9ecef #dee2e6; } + .nav-tabs .nav-link.disabled { + color: #6c757d; + background-color: transparent; + border-color: transparent; } + .nav-tabs .nav-link.active, + .nav-tabs .nav-item.show .nav-link { + color: #495057; + background-color: #fff; + border-color: #dee2e6 #dee2e6 #fff; } + .nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.nav-pills .nav-link { + border-radius: 0.25rem; } + +.nav-pills .nav-link.active, +.nav-pills .show > .nav-link { + color: #fff; + background-color: #563d7c; } + +.nav-fill .nav-item { + flex: 1 1 auto; + text-align: center; } + +.nav-justified .nav-item { + flex-basis: 0; + flex-grow: 1; + text-align: center; } + +.tab-content > .tab-pane { + display: none; } + +.tab-content > .active { + display: block; } + +.navbar { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + padding: 0.5rem 1rem; } + .navbar > .container, + .navbar > .container-fluid { + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; } + +.navbar-brand { + display: inline-block; + padding-top: 0.3125rem; + padding-bottom: 0.3125rem; + margin-right: 1rem; + font-size: 1.25rem; + line-height: inherit; + white-space: nowrap; } + .navbar-brand:hover, .navbar-brand:focus { + text-decoration: none; } + +.navbar-nav { + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none; } + .navbar-nav .nav-link { + padding-right: 0; + padding-left: 0; } + .navbar-nav .dropdown-menu { + position: static; + float: none; } + +.navbar-text { + display: inline-block; + padding-top: 0.5rem; + padding-bottom: 0.5rem; } + +.navbar-collapse { + flex-basis: 100%; + flex-grow: 1; + align-items: center; } + +.navbar-toggler { + padding: 0.25rem 0.75rem; + font-size: 1.25rem; + line-height: 1; + background-color: transparent; + border: 1px solid transparent; + border-radius: 0.25rem; } + .navbar-toggler:hover, .navbar-toggler:focus { + text-decoration: none; } + .navbar-toggler:not(:disabled):not(.disabled) { + cursor: pointer; } + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + content: ""; + background: no-repeat center center; + background-size: 100% 100%; } + +@media (max-width: 575.98px) { + .navbar-expand-sm > .container, + .navbar-expand-sm > .container-fluid { + padding-right: 0; + padding-left: 0; } } + +@media (min-width: 576px) { + .navbar-expand-sm { + flex-flow: row nowrap; + justify-content: flex-start; } + .navbar-expand-sm .navbar-nav { + flex-direction: row; } + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute; } + .navbar-expand-sm .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; } + .navbar-expand-sm > .container, + .navbar-expand-sm > .container-fluid { + flex-wrap: nowrap; } + .navbar-expand-sm .navbar-collapse { + display: flex !important; + flex-basis: auto; } + .navbar-expand-sm .navbar-toggler { + display: none; } } + +@media (max-width: 767.98px) { + .navbar-expand-md > .container, + .navbar-expand-md > .container-fluid { + padding-right: 0; + padding-left: 0; } } + +@media (min-width: 768px) { + .navbar-expand-md { + flex-flow: row nowrap; + justify-content: flex-start; } + .navbar-expand-md .navbar-nav { + flex-direction: row; } + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute; } + .navbar-expand-md .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; } + .navbar-expand-md > .container, + .navbar-expand-md > .container-fluid { + flex-wrap: nowrap; } + .navbar-expand-md .navbar-collapse { + display: flex !important; + flex-basis: auto; } + .navbar-expand-md .navbar-toggler { + display: none; } } + +@media (max-width: 991.98px) { + .navbar-expand-lg > .container, + .navbar-expand-lg > .container-fluid { + padding-right: 0; + padding-left: 0; } } + +@media (min-width: 992px) { + .navbar-expand-lg { + flex-flow: row nowrap; + justify-content: flex-start; } + .navbar-expand-lg .navbar-nav { + flex-direction: row; } + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute; } + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; } + .navbar-expand-lg > .container, + .navbar-expand-lg > .container-fluid { + flex-wrap: nowrap; } + .navbar-expand-lg .navbar-collapse { + display: flex !important; + flex-basis: auto; } + .navbar-expand-lg .navbar-toggler { + display: none; } } + +@media (max-width: 1199.98px) { + .navbar-expand-xl > .container, + .navbar-expand-xl > .container-fluid { + padding-right: 0; + padding-left: 0; } } + +@media (min-width: 1200px) { + .navbar-expand-xl { + flex-flow: row nowrap; + justify-content: flex-start; } + .navbar-expand-xl .navbar-nav { + flex-direction: row; } + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute; } + .navbar-expand-xl .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; } + .navbar-expand-xl > .container, + .navbar-expand-xl > .container-fluid { + flex-wrap: nowrap; } + .navbar-expand-xl .navbar-collapse { + display: flex !important; + flex-basis: auto; } + .navbar-expand-xl .navbar-toggler { + display: none; } } + +.navbar-expand { + flex-flow: row nowrap; + justify-content: flex-start; } + .navbar-expand > .container, + .navbar-expand > .container-fluid { + padding-right: 0; + padding-left: 0; } + .navbar-expand .navbar-nav { + flex-direction: row; } + .navbar-expand .navbar-nav .dropdown-menu { + position: absolute; } + .navbar-expand .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; } + .navbar-expand > .container, + .navbar-expand > .container-fluid { + flex-wrap: nowrap; } + .navbar-expand .navbar-collapse { + display: flex !important; + flex-basis: auto; } + .navbar-expand .navbar-toggler { + display: none; } + +.navbar-light .navbar-brand { + color: rgba(0, 0, 0, 0.9); } + .navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus { + color: rgba(0, 0, 0, 0.9); } + +.navbar-light .navbar-nav .nav-link { + color: rgba(0, 0, 0, 0.5); } + .navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus { + color: rgba(0, 0, 0, 0.7); } + .navbar-light .navbar-nav .nav-link.disabled { + color: rgba(0, 0, 0, 0.3); } + +.navbar-light .navbar-nav .show > .nav-link, +.navbar-light .navbar-nav .active > .nav-link, +.navbar-light .navbar-nav .nav-link.show, +.navbar-light .navbar-nav .nav-link.active { + color: rgba(0, 0, 0, 0.9); } + +.navbar-light .navbar-toggler { + color: rgba(0, 0, 0, 0.5); + border-color: rgba(0, 0, 0, 0.1); } + +.navbar-light .navbar-toggler-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"); } + +.navbar-light .navbar-text { + color: rgba(0, 0, 0, 0.5); } + .navbar-light .navbar-text a { + color: rgba(0, 0, 0, 0.9); } + .navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus { + color: rgba(0, 0, 0, 0.9); } + +.navbar-dark .navbar-brand { + color: #fff; } + .navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus { + color: #fff; } + +.navbar-dark .navbar-nav .nav-link { + color: rgba(255, 255, 255, 0.5); } + .navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus { + color: rgba(255, 255, 255, 0.75); } + .navbar-dark .navbar-nav .nav-link.disabled { + color: rgba(255, 255, 255, 0.25); } + +.navbar-dark .navbar-nav .show > .nav-link, +.navbar-dark .navbar-nav .active > .nav-link, +.navbar-dark .navbar-nav .nav-link.show, +.navbar-dark .navbar-nav .nav-link.active { + color: #fff; } + +.navbar-dark .navbar-toggler { + color: rgba(255, 255, 255, 0.5); + border-color: rgba(255, 255, 255, 0.1); } + +.navbar-dark .navbar-toggler-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"); } + +.navbar-dark .navbar-text { + color: rgba(255, 255, 255, 0.5); } + .navbar-dark .navbar-text a { + color: #fff; } + .navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus { + color: #fff; } + +.card { + position: relative; + display: flex; + flex-direction: column; + min-width: 0; + word-wrap: break-word; + background-color: #fff; + background-clip: border-box; + border: 1px solid rgba(0, 0, 0, 0.125); + border-radius: 0.25rem; } + .card > hr { + margin-right: 0; + margin-left: 0; } + .card > .list-group:first-child .list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; } + .card > .list-group:last-child .list-group-item:last-child { + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; } + +.card-body { + flex: 1 1 auto; + padding: 1.25rem; } + +.card-title { + margin-bottom: 0.75rem; } + +.card-subtitle { + margin-top: -0.375rem; + margin-bottom: 0; } + +.card-text:last-child { + margin-bottom: 0; } + +.card-link:hover { + text-decoration: none; } + +.card-link + .card-link { + margin-left: 1.25rem; } + +.card-header { + padding: 0.75rem 1.25rem; + margin-bottom: 0; + background-color: rgba(0, 0, 0, 0.03); + border-bottom: 1px solid rgba(0, 0, 0, 0.125); } + .card-header:first-child { + border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; } + .card-header + .list-group .list-group-item:first-child { + border-top: 0; } + +.card-footer { + padding: 0.75rem 1.25rem; + background-color: rgba(0, 0, 0, 0.03); + border-top: 1px solid rgba(0, 0, 0, 0.125); } + .card-footer:last-child { + border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px); } + +.card-header-tabs { + margin-right: -0.625rem; + margin-bottom: -0.75rem; + margin-left: -0.625rem; + border-bottom: 0; } + +.card-header-pills { + margin-right: -0.625rem; + margin-left: -0.625rem; } + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: 1.25rem; } + +.card-img { + width: 100%; + border-radius: calc(0.25rem - 1px); } + +.card-img-top { + width: 100%; + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px); } + +.card-img-bottom { + width: 100%; + border-bottom-right-radius: calc(0.25rem - 1px); + border-bottom-left-radius: calc(0.25rem - 1px); } + +.card-deck { + display: flex; + flex-direction: column; } + .card-deck .card { + margin-bottom: 15px; } + @media (min-width: 576px) { + .card-deck { + flex-flow: row wrap; + margin-right: -15px; + margin-left: -15px; } + .card-deck .card { + display: flex; + flex: 1 0 0%; + flex-direction: column; + margin-right: 15px; + margin-bottom: 0; + margin-left: 15px; } } + +.card-group { + display: flex; + flex-direction: column; } + .card-group > .card { + margin-bottom: 15px; } + @media (min-width: 576px) { + .card-group { + flex-flow: row wrap; } + .card-group > .card { + flex: 1 0 0%; + margin-bottom: 0; } + .card-group > .card + .card { + margin-left: 0; + border-left: 0; } + .card-group > .card:first-child { + border-top-right-radius: 0; + border-bottom-right-radius: 0; } + .card-group > .card:first-child .card-img-top, + .card-group > .card:first-child .card-header { + border-top-right-radius: 0; } + .card-group > .card:first-child .card-img-bottom, + .card-group > .card:first-child .card-footer { + border-bottom-right-radius: 0; } + .card-group > .card:last-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; } + .card-group > .card:last-child .card-img-top, + .card-group > .card:last-child .card-header { + border-top-left-radius: 0; } + .card-group > .card:last-child .card-img-bottom, + .card-group > .card:last-child .card-footer { + border-bottom-left-radius: 0; } + .card-group > .card:only-child { + border-radius: 0.25rem; } + .card-group > .card:only-child .card-img-top, + .card-group > .card:only-child .card-header { + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; } + .card-group > .card:only-child .card-img-bottom, + .card-group > .card:only-child .card-footer { + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; } + .card-group > .card:not(:first-child):not(:last-child):not(:only-child) { + border-radius: 0; } + .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top, + .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom, + .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header, + .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer { + border-radius: 0; } } + +.card-columns .card { + margin-bottom: 0.75rem; } + +@media (min-width: 576px) { + .card-columns { + column-count: 3; + column-gap: 1.25rem; + orphans: 1; + widows: 1; } + .card-columns .card { + display: inline-block; + width: 100%; } } + +.accordion .card:not(:first-of-type):not(:last-of-type) { + border-bottom: 0; + border-radius: 0; } + +.accordion .card:not(:first-of-type) .card-header:first-child { + border-radius: 0; } + +.accordion .card:first-of-type { + border-bottom: 0; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; } + +.accordion .card:last-of-type { + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.breadcrumb { + display: flex; + flex-wrap: wrap; + padding: 0.75rem 1rem; + margin-bottom: 1rem; + list-style: none; + background-color: #e9ecef; + border-radius: 0.25rem; } + +.breadcrumb-item + .breadcrumb-item { + padding-left: 0.5rem; } + .breadcrumb-item + .breadcrumb-item::before { + display: inline-block; + padding-right: 0.5rem; + color: #6c757d; + content: "/"; } + +.breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: underline; } + +.breadcrumb-item + .breadcrumb-item:hover::before { + text-decoration: none; } + +.breadcrumb-item.active { + color: #6c757d; } + +.pagination { + display: flex; + padding-left: 0; + list-style: none; + border-radius: 0.25rem; } + +.page-link { + position: relative; + display: block; + padding: 0.5rem 0.75rem; + margin-left: -1px; + line-height: 1.25; + color: #563d7c; + background-color: #fff; + border: 1px solid #dee2e6; } + .page-link:hover { + z-index: 2; + color: #322449; + text-decoration: none; + background-color: #e9ecef; + border-color: #dee2e6; } + .page-link:focus { + z-index: 2; + outline: 0; + box-shadow: 0 0 0 0.2rem rgba(86, 61, 124, 0.25); } + .page-link:not(:disabled):not(.disabled) { + cursor: pointer; } + +.page-item:first-child .page-link { + margin-left: 0; + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; } + +.page-item:last-child .page-link { + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; } + +.page-item.active .page-link { + z-index: 1; + color: #fff; + background-color: #563d7c; + border-color: #563d7c; } + +.page-item.disabled .page-link { + color: #6c757d; + pointer-events: none; + cursor: auto; + background-color: #fff; + border-color: #dee2e6; } + +.pagination-lg .page-link { + padding: 0.75rem 1.5rem; + font-size: 1.25rem; + line-height: 1.5; } + +.pagination-lg .page-item:first-child .page-link { + border-top-left-radius: 0.3rem; + border-bottom-left-radius: 0.3rem; } + +.pagination-lg .page-item:last-child .page-link { + border-top-right-radius: 0.3rem; + border-bottom-right-radius: 0.3rem; } + +.pagination-sm .page-link { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + line-height: 1.5; } + +.pagination-sm .page-item:first-child .page-link { + border-top-left-radius: 0.2rem; + border-bottom-left-radius: 0.2rem; } + +.pagination-sm .page-item:last-child .page-link { + border-top-right-radius: 0.2rem; + border-bottom-right-radius: 0.2rem; } + +.badge { + display: inline-block; + padding: 0.25em 0.4em; + font-size: 75%; + font-weight: 700; + line-height: 1; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: 0.25rem; } + .badge:empty { + display: none; } + +.btn .badge { + position: relative; + top: -1px; } + +.badge-pill { + padding-right: 0.6em; + padding-left: 0.6em; + border-radius: 10rem; } + +.badge-primary { + color: #fff; + background-color: #563d7c; } + .badge-primary[href]:hover, .badge-primary[href]:focus { + color: #fff; + text-decoration: none; + background-color: #3e2c5a; } + +.badge-secondary { + color: #fff; + background-color: #868e96; } + .badge-secondary[href]:hover, .badge-secondary[href]:focus { + color: #fff; + text-decoration: none; + background-color: #6c757d; } + +.badge-success { + color: #fff; + background-color: #28a745; } + .badge-success[href]:hover, .badge-success[href]:focus { + color: #fff; + text-decoration: none; + background-color: #1e7e34; } + +.badge-info { + color: #fff; + background-color: #17a2b8; } + .badge-info[href]:hover, .badge-info[href]:focus { + color: #fff; + text-decoration: none; + background-color: #117a8b; } + +.badge-warning { + color: #212529; + background-color: #ffc107; } + .badge-warning[href]:hover, .badge-warning[href]:focus { + color: #212529; + text-decoration: none; + background-color: #d39e00; } + +.badge-danger { + color: #fff; + background-color: #dc3545; } + .badge-danger[href]:hover, .badge-danger[href]:focus { + color: #fff; + text-decoration: none; + background-color: #bd2130; } + +.badge-light { + color: #212529; + background-color: #f8f9fa; } + .badge-light[href]:hover, .badge-light[href]:focus { + color: #212529; + text-decoration: none; + background-color: #dae0e5; } + +.badge-dark { + color: #fff; + background-color: #343434; } + .badge-dark[href]:hover, .badge-dark[href]:focus { + color: #fff; + text-decoration: none; + background-color: #1b1b1b; } + +.jumbotron { + padding: 2rem 1rem; + margin-bottom: 2rem; + background-color: #e9ecef; + border-radius: 0.3rem; } + @media (min-width: 576px) { + .jumbotron { + padding: 4rem 2rem; } } + +.jumbotron-fluid { + padding-right: 0; + padding-left: 0; + border-radius: 0; } + +.alert { + position: relative; + padding: 0.75rem 1.25rem; + margin-bottom: 1rem; + border: 1px solid transparent; + border-radius: 0.25rem; } + +.alert-heading { + color: inherit; } + +.alert-link { + font-weight: 700; } + +.alert-dismissible { + padding-right: 4rem; } + .alert-dismissible .close { + position: absolute; + top: 0; + right: 0; + padding: 0.75rem 1.25rem; + color: inherit; } + +.alert-primary { + color: #2d2040; + background-color: #ddd8e5; + border-color: #d0c9da; } + .alert-primary hr { + border-top-color: #c3bad0; } + .alert-primary .alert-link { + color: #150f1e; } + +.alert-secondary { + color: #464a4e; + background-color: #e7e8ea; + border-color: #dddfe2; } + .alert-secondary hr { + border-top-color: #cfd2d6; } + .alert-secondary .alert-link { + color: #2e3133; } + +.alert-success { + color: #155724; + background-color: #d4edda; + border-color: #c3e6cb; } + .alert-success hr { + border-top-color: #b1dfbb; } + .alert-success .alert-link { + color: #0b2e13; } + +.alert-info { + color: #0c5460; + background-color: #d1ecf1; + border-color: #bee5eb; } + .alert-info hr { + border-top-color: #abdde5; } + .alert-info .alert-link { + color: #062c33; } + +.alert-warning { + color: #856404; + background-color: #fff3cd; + border-color: #ffeeba; } + .alert-warning hr { + border-top-color: #ffe8a1; } + .alert-warning .alert-link { + color: #533f03; } + +.alert-danger { + color: #721c24; + background-color: #f8d7da; + border-color: #f5c6cb; } + .alert-danger hr { + border-top-color: #f1b0b7; } + .alert-danger .alert-link { + color: #491217; } + +.alert-light { + color: #818182; + background-color: #fefefe; + border-color: #fdfdfe; } + .alert-light hr { + border-top-color: #ececf6; } + .alert-light .alert-link { + color: #686868; } + +.alert-dark { + color: #1b1b1b; + background-color: #d6d6d6; + border-color: #c6c6c6; } + .alert-dark hr { + border-top-color: #b9b9b9; } + .alert-dark .alert-link { + color: #020202; } + +@keyframes progress-bar-stripes { + from { + background-position: 1rem 0; } + to { + background-position: 0 0; } } + +.progress { + display: flex; + height: 1rem; + overflow: hidden; + font-size: 0.75rem; + background-color: #e9ecef; + border-radius: 0.25rem; } + +.progress-bar { + display: flex; + flex-direction: column; + justify-content: center; + color: #fff; + text-align: center; + white-space: nowrap; + background-color: #563d7c; + transition: width 0.6s ease; } + @media screen and (prefers-reduced-motion: reduce) { + .progress-bar { + transition: none; } } + +.progress-bar-striped { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 1rem 1rem; } + +.progress-bar-animated { + animation: progress-bar-stripes 1s linear infinite; } + +.media { + display: flex; + align-items: flex-start; } + +.media-body { + flex: 1; } + +.list-group { + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; } + +.list-group-item-action { + width: 100%; + color: #495057; + text-align: inherit; } + .list-group-item-action:hover, .list-group-item-action:focus { + color: #495057; + text-decoration: none; + background-color: #f8f9fa; } + .list-group-item-action:active { + color: #212529; + background-color: #e9ecef; } + +.list-group-item { + position: relative; + display: block; + padding: 0.75rem 1.25rem; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, 0.125); } + .list-group-item:first-child { + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; } + .list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; } + .list-group-item:hover, .list-group-item:focus { + z-index: 1; + text-decoration: none; } + .list-group-item.disabled, .list-group-item:disabled { + color: #6c757d; + background-color: #fff; } + .list-group-item.active { + z-index: 2; + color: #fff; + background-color: #563d7c; + border-color: #563d7c; } + +.list-group-flush .list-group-item { + border-right: 0; + border-left: 0; + border-radius: 0; } + +.list-group-flush:first-child .list-group-item:first-child { + border-top: 0; } + +.list-group-flush:last-child .list-group-item:last-child { + border-bottom: 0; } + +.list-group-item-primary { + color: #2d2040; + background-color: #d0c9da; } + .list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { + color: #2d2040; + background-color: #c3bad0; } + .list-group-item-primary.list-group-item-action.active { + color: #fff; + background-color: #2d2040; + border-color: #2d2040; } + +.list-group-item-secondary { + color: #464a4e; + background-color: #dddfe2; } + .list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { + color: #464a4e; + background-color: #cfd2d6; } + .list-group-item-secondary.list-group-item-action.active { + color: #fff; + background-color: #464a4e; + border-color: #464a4e; } + +.list-group-item-success { + color: #155724; + background-color: #c3e6cb; } + .list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { + color: #155724; + background-color: #b1dfbb; } + .list-group-item-success.list-group-item-action.active { + color: #fff; + background-color: #155724; + border-color: #155724; } + +.list-group-item-info { + color: #0c5460; + background-color: #bee5eb; } + .list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { + color: #0c5460; + background-color: #abdde5; } + .list-group-item-info.list-group-item-action.active { + color: #fff; + background-color: #0c5460; + border-color: #0c5460; } + +.list-group-item-warning { + color: #856404; + background-color: #ffeeba; } + .list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { + color: #856404; + background-color: #ffe8a1; } + .list-group-item-warning.list-group-item-action.active { + color: #fff; + background-color: #856404; + border-color: #856404; } + +.list-group-item-danger { + color: #721c24; + background-color: #f5c6cb; } + .list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { + color: #721c24; + background-color: #f1b0b7; } + .list-group-item-danger.list-group-item-action.active { + color: #fff; + background-color: #721c24; + border-color: #721c24; } + +.list-group-item-light { + color: #818182; + background-color: #fdfdfe; } + .list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { + color: #818182; + background-color: #ececf6; } + .list-group-item-light.list-group-item-action.active { + color: #fff; + background-color: #818182; + border-color: #818182; } + +.list-group-item-dark { + color: #1b1b1b; + background-color: #c6c6c6; } + .list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { + color: #1b1b1b; + background-color: #b9b9b9; } + .list-group-item-dark.list-group-item-action.active { + color: #fff; + background-color: #1b1b1b; + border-color: #1b1b1b; } + +.close { + float: right; + font-size: 1.5rem; + font-weight: 700; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + opacity: .5; } + .close:hover, .close:focus { + color: #000; + text-decoration: none; + opacity: .75; } + .close:not(:disabled):not(.disabled) { + cursor: pointer; } + +button.close { + padding: 0; + background-color: transparent; + border: 0; + -webkit-appearance: none; } + +.modal-open { + overflow: hidden; } + +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + display: none; + overflow: hidden; + outline: 0; } + .modal-open .modal { + overflow-x: hidden; + overflow-y: auto; } + +.modal-dialog { + position: relative; + width: auto; + margin: 0.5rem; + pointer-events: none; } + .modal.fade .modal-dialog { + transition: transform 0.3s ease-out; + transform: translate(0, -25%); } + @media screen and (prefers-reduced-motion: reduce) { + .modal.fade .modal-dialog { + transition: none; } } + .modal.show .modal-dialog { + transform: translate(0, 0); } + +.modal-dialog-centered { + display: flex; + align-items: center; + min-height: calc(100% - (0.5rem * 2)); } + +.modal-content { + position: relative; + display: flex; + flex-direction: column; + width: 100%; + pointer-events: auto; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; + outline: 0; } + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000; } + .modal-backdrop.fade { + opacity: 0; } + .modal-backdrop.show { + opacity: 0.5; } + +.modal-header { + display: flex; + align-items: flex-start; + justify-content: space-between; + padding: 1rem; + border-bottom: 1px solid #e9ecef; + border-top-left-radius: 0.3rem; + border-top-right-radius: 0.3rem; } + .modal-header .close { + padding: 1rem; + margin: -1rem -1rem -1rem auto; } + +.modal-title { + margin-bottom: 0; + line-height: 1.5; } + +.modal-body { + position: relative; + flex: 1 1 auto; + padding: 1rem; } + +.modal-footer { + display: flex; + align-items: center; + justify-content: flex-end; + padding: 1rem; + border-top: 1px solid #e9ecef; } + .modal-footer > :not(:first-child) { + margin-left: .25rem; } + .modal-footer > :not(:last-child) { + margin-right: .25rem; } + +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; } + +@media (min-width: 576px) { + .modal-dialog { + max-width: 500px; + margin: 1.75rem auto; } + .modal-dialog-centered { + min-height: calc(100% - (1.75rem * 2)); } + .modal-sm { + max-width: 300px; } } + +@media (min-width: 992px) { + .modal-lg { + max-width: 800px; } } + +.tooltip { + position: absolute; + z-index: 1070; + display: block; + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + opacity: 0; } + .tooltip.show { + opacity: 0.9; } + .tooltip .arrow { + position: absolute; + display: block; + width: 0.8rem; + height: 0.4rem; } + .tooltip .arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid; } + +.bs-tooltip-top, .bs-tooltip-auto[x-placement^="top"] { + padding: 0.4rem 0; } + .bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^="top"] .arrow { + bottom: 0; } + .bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^="top"] .arrow::before { + top: 0; + border-width: 0.4rem 0.4rem 0; + border-top-color: #000; } + +.bs-tooltip-right, .bs-tooltip-auto[x-placement^="right"] { + padding: 0 0.4rem; } + .bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^="right"] .arrow { + left: 0; + width: 0.4rem; + height: 0.8rem; } + .bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^="right"] .arrow::before { + right: 0; + border-width: 0.4rem 0.4rem 0.4rem 0; + border-right-color: #000; } + +.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^="bottom"] { + padding: 0.4rem 0; } + .bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^="bottom"] .arrow { + top: 0; } + .bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^="bottom"] .arrow::before { + bottom: 0; + border-width: 0 0.4rem 0.4rem; + border-bottom-color: #000; } + +.bs-tooltip-left, .bs-tooltip-auto[x-placement^="left"] { + padding: 0 0.4rem; } + .bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^="left"] .arrow { + right: 0; + width: 0.4rem; + height: 0.8rem; } + .bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^="left"] .arrow::before { + left: 0; + border-width: 0.4rem 0 0.4rem 0.4rem; + border-left-color: #000; } + +.tooltip-inner { + max-width: 200px; + padding: 0.25rem 0.5rem; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 0.25rem; } + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: block; + max-width: 276px; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; } + .popover .arrow { + position: absolute; + display: block; + width: 1rem; + height: 0.5rem; + margin: 0 0.3rem; } + .popover .arrow::before, .popover .arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; } + +.bs-popover-top, .bs-popover-auto[x-placement^="top"] { + margin-bottom: 0.5rem; } + .bs-popover-top .arrow, .bs-popover-auto[x-placement^="top"] .arrow { + bottom: calc((0.5rem + 1px) * -1); } + .bs-popover-top .arrow::before, .bs-popover-auto[x-placement^="top"] .arrow::before, + .bs-popover-top .arrow::after, + .bs-popover-auto[x-placement^="top"] .arrow::after { + border-width: 0.5rem 0.5rem 0; } + .bs-popover-top .arrow::before, .bs-popover-auto[x-placement^="top"] .arrow::before { + bottom: 0; + border-top-color: rgba(0, 0, 0, 0.25); } + + .bs-popover-top .arrow::after, + .bs-popover-auto[x-placement^="top"] .arrow::after { + bottom: 1px; + border-top-color: #fff; } + +.bs-popover-right, .bs-popover-auto[x-placement^="right"] { + margin-left: 0.5rem; } + .bs-popover-right .arrow, .bs-popover-auto[x-placement^="right"] .arrow { + left: calc((0.5rem + 1px) * -1); + width: 0.5rem; + height: 1rem; + margin: 0.3rem 0; } + .bs-popover-right .arrow::before, .bs-popover-auto[x-placement^="right"] .arrow::before, + .bs-popover-right .arrow::after, + .bs-popover-auto[x-placement^="right"] .arrow::after { + border-width: 0.5rem 0.5rem 0.5rem 0; } + .bs-popover-right .arrow::before, .bs-popover-auto[x-placement^="right"] .arrow::before { + left: 0; + border-right-color: rgba(0, 0, 0, 0.25); } + + .bs-popover-right .arrow::after, + .bs-popover-auto[x-placement^="right"] .arrow::after { + left: 1px; + border-right-color: #fff; } + +.bs-popover-bottom, .bs-popover-auto[x-placement^="bottom"] { + margin-top: 0.5rem; } + .bs-popover-bottom .arrow, .bs-popover-auto[x-placement^="bottom"] .arrow { + top: calc((0.5rem + 1px) * -1); } + .bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^="bottom"] .arrow::before, + .bs-popover-bottom .arrow::after, + .bs-popover-auto[x-placement^="bottom"] .arrow::after { + border-width: 0 0.5rem 0.5rem 0.5rem; } + .bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^="bottom"] .arrow::before { + top: 0; + border-bottom-color: rgba(0, 0, 0, 0.25); } + + .bs-popover-bottom .arrow::after, + .bs-popover-auto[x-placement^="bottom"] .arrow::after { + top: 1px; + border-bottom-color: #fff; } + .bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^="bottom"] .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: 1rem; + margin-left: -0.5rem; + content: ""; + border-bottom: 1px solid #f7f7f7; } + +.bs-popover-left, .bs-popover-auto[x-placement^="left"] { + margin-right: 0.5rem; } + .bs-popover-left .arrow, .bs-popover-auto[x-placement^="left"] .arrow { + right: calc((0.5rem + 1px) * -1); + width: 0.5rem; + height: 1rem; + margin: 0.3rem 0; } + .bs-popover-left .arrow::before, .bs-popover-auto[x-placement^="left"] .arrow::before, + .bs-popover-left .arrow::after, + .bs-popover-auto[x-placement^="left"] .arrow::after { + border-width: 0.5rem 0 0.5rem 0.5rem; } + .bs-popover-left .arrow::before, .bs-popover-auto[x-placement^="left"] .arrow::before { + right: 0; + border-left-color: rgba(0, 0, 0, 0.25); } + + .bs-popover-left .arrow::after, + .bs-popover-auto[x-placement^="left"] .arrow::after { + right: 1px; + border-left-color: #fff; } + +.popover-header { + padding: 0.5rem 0.75rem; + margin-bottom: 0; + font-size: 1rem; + color: inherit; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-top-left-radius: calc(0.3rem - 1px); + border-top-right-radius: calc(0.3rem - 1px); } + .popover-header:empty { + display: none; } + +.popover-body { + padding: 0.5rem 0.75rem; + color: #212529; } + +.carousel { + position: relative; } + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; } + +.carousel-item { + position: relative; + display: none; + align-items: center; + width: 100%; + transition: transform 0.6s ease; + backface-visibility: hidden; + perspective: 1000px; } + @media screen and (prefers-reduced-motion: reduce) { + .carousel-item { + transition: none; } } + +.carousel-item.active, +.carousel-item-next, +.carousel-item-prev { + display: block; } + +.carousel-item-next, +.carousel-item-prev { + position: absolute; + top: 0; } + +.carousel-item-next.carousel-item-left, +.carousel-item-prev.carousel-item-right { + transform: translateX(0); } + @supports (transform-style: preserve-3d) { + .carousel-item-next.carousel-item-left, + .carousel-item-prev.carousel-item-right { + transform: translate3d(0, 0, 0); } } + +.carousel-item-next, +.active.carousel-item-right { + transform: translateX(100%); } + @supports (transform-style: preserve-3d) { + .carousel-item-next, + .active.carousel-item-right { + transform: translate3d(100%, 0, 0); } } + +.carousel-item-prev, +.active.carousel-item-left { + transform: translateX(-100%); } + @supports (transform-style: preserve-3d) { + .carousel-item-prev, + .active.carousel-item-left { + transform: translate3d(-100%, 0, 0); } } + +.carousel-fade .carousel-item { + opacity: 0; + transition-duration: .6s; + transition-property: opacity; } + +.carousel-fade .carousel-item.active, +.carousel-fade .carousel-item-next.carousel-item-left, +.carousel-fade .carousel-item-prev.carousel-item-right { + opacity: 1; } + +.carousel-fade .active.carousel-item-left, +.carousel-fade .active.carousel-item-right { + opacity: 0; } + +.carousel-fade .carousel-item-next, +.carousel-fade .carousel-item-prev, +.carousel-fade .carousel-item.active, +.carousel-fade .active.carousel-item-left, +.carousel-fade .active.carousel-item-prev { + transform: translateX(0); } + @supports (transform-style: preserve-3d) { + .carousel-fade .carousel-item-next, + .carousel-fade .carousel-item-prev, + .carousel-fade .carousel-item.active, + .carousel-fade .active.carousel-item-left, + .carousel-fade .active.carousel-item-prev { + transform: translate3d(0, 0, 0); } } + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + display: flex; + align-items: center; + justify-content: center; + width: 15%; + color: #fff; + text-align: center; + opacity: 0.5; } + .carousel-control-prev:hover, .carousel-control-prev:focus, + .carousel-control-next:hover, + .carousel-control-next:focus { + color: #fff; + text-decoration: none; + outline: 0; + opacity: .9; } + +.carousel-control-prev { + left: 0; } + +.carousel-control-next { + right: 0; } + +.carousel-control-prev-icon, +.carousel-control-next-icon { + display: inline-block; + width: 20px; + height: 20px; + background: transparent no-repeat center center; + background-size: 100% 100%; } + +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E"); } + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E"); } + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 10px; + left: 0; + z-index: 15; + display: flex; + justify-content: center; + padding-left: 0; + margin-right: 15%; + margin-left: 15%; + list-style: none; } + .carousel-indicators li { + position: relative; + flex: 0 1 auto; + width: 30px; + height: 3px; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + cursor: pointer; + background-color: rgba(255, 255, 255, 0.5); } + .carousel-indicators li::before { + position: absolute; + top: -10px; + left: 0; + display: inline-block; + width: 100%; + height: 10px; + content: ""; } + .carousel-indicators li::after { + position: absolute; + bottom: -10px; + left: 0; + display: inline-block; + width: 100%; + height: 10px; + content: ""; } + .carousel-indicators .active { + background-color: #fff; } + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; } + +.align-baseline { + vertical-align: baseline !important; } + +.align-top { + vertical-align: top !important; } + +.align-middle { + vertical-align: middle !important; } + +.align-bottom { + vertical-align: bottom !important; } + +.align-text-bottom { + vertical-align: text-bottom !important; } + +.align-text-top { + vertical-align: text-top !important; } + +.bg-primary { + background-color: #563d7c !important; } + +a.bg-primary:hover, a.bg-primary:focus, +button.bg-primary:hover, +button.bg-primary:focus { + background-color: #3e2c5a !important; } + +.bg-secondary { + background-color: #868e96 !important; } + +a.bg-secondary:hover, a.bg-secondary:focus, +button.bg-secondary:hover, +button.bg-secondary:focus { + background-color: #6c757d !important; } + +.bg-success { + background-color: #28a745 !important; } + +a.bg-success:hover, a.bg-success:focus, +button.bg-success:hover, +button.bg-success:focus { + background-color: #1e7e34 !important; } + +.bg-info { + background-color: #17a2b8 !important; } + +a.bg-info:hover, a.bg-info:focus, +button.bg-info:hover, +button.bg-info:focus { + background-color: #117a8b !important; } + +.bg-warning { + background-color: #ffc107 !important; } + +a.bg-warning:hover, a.bg-warning:focus, +button.bg-warning:hover, +button.bg-warning:focus { + background-color: #d39e00 !important; } + +.bg-danger { + background-color: #dc3545 !important; } + +a.bg-danger:hover, a.bg-danger:focus, +button.bg-danger:hover, +button.bg-danger:focus { + background-color: #bd2130 !important; } + +.bg-light { + background-color: #f8f9fa !important; } + +a.bg-light:hover, a.bg-light:focus, +button.bg-light:hover, +button.bg-light:focus { + background-color: #dae0e5 !important; } + +.bg-dark { + background-color: #343434 !important; } + +a.bg-dark:hover, a.bg-dark:focus, +button.bg-dark:hover, +button.bg-dark:focus { + background-color: #1b1b1b !important; } + +.bg-white { + background-color: #fff !important; } + +.bg-transparent { + background-color: transparent !important; } + +.border { + border: 1px solid #dee2e6 !important; } + +.border-top { + border-top: 1px solid #dee2e6 !important; } + +.border-right { + border-right: 1px solid #dee2e6 !important; } + +.border-bottom { + border-bottom: 1px solid #dee2e6 !important; } + +.border-left { + border-left: 1px solid #dee2e6 !important; } + +.border-0 { + border: 0 !important; } + +.border-top-0 { + border-top: 0 !important; } + +.border-right-0 { + border-right: 0 !important; } + +.border-bottom-0 { + border-bottom: 0 !important; } + +.border-left-0 { + border-left: 0 !important; } + +.border-primary { + border-color: #563d7c !important; } + +.border-secondary { + border-color: #868e96 !important; } + +.border-success { + border-color: #28a745 !important; } + +.border-info { + border-color: #17a2b8 !important; } + +.border-warning { + border-color: #ffc107 !important; } + +.border-danger { + border-color: #dc3545 !important; } + +.border-light { + border-color: #f8f9fa !important; } + +.border-dark { + border-color: #343434 !important; } + +.border-white { + border-color: #fff !important; } + +.rounded { + border-radius: 0.25rem !important; } + +.rounded-top { + border-top-left-radius: 0.25rem !important; + border-top-right-radius: 0.25rem !important; } + +.rounded-right { + border-top-right-radius: 0.25rem !important; + border-bottom-right-radius: 0.25rem !important; } + +.rounded-bottom { + border-bottom-right-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important; } + +.rounded-left { + border-top-left-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important; } + +.rounded-circle { + border-radius: 50% !important; } + +.rounded-0 { + border-radius: 0 !important; } + +.clearfix::after { + display: block; + clear: both; + content: ""; } + +.d-none { + display: none !important; } + +.d-inline { + display: inline !important; } + +.d-inline-block { + display: inline-block !important; } + +.d-block { + display: block !important; } + +.d-table { + display: table !important; } + +.d-table-row { + display: table-row !important; } + +.d-table-cell { + display: table-cell !important; } + +.d-flex { + display: flex !important; } + +.d-inline-flex { + display: inline-flex !important; } + +@media (min-width: 576px) { + .d-sm-none { + display: none !important; } + .d-sm-inline { + display: inline !important; } + .d-sm-inline-block { + display: inline-block !important; } + .d-sm-block { + display: block !important; } + .d-sm-table { + display: table !important; } + .d-sm-table-row { + display: table-row !important; } + .d-sm-table-cell { + display: table-cell !important; } + .d-sm-flex { + display: flex !important; } + .d-sm-inline-flex { + display: inline-flex !important; } } + +@media (min-width: 768px) { + .d-md-none { + display: none !important; } + .d-md-inline { + display: inline !important; } + .d-md-inline-block { + display: inline-block !important; } + .d-md-block { + display: block !important; } + .d-md-table { + display: table !important; } + .d-md-table-row { + display: table-row !important; } + .d-md-table-cell { + display: table-cell !important; } + .d-md-flex { + display: flex !important; } + .d-md-inline-flex { + display: inline-flex !important; } } + +@media (min-width: 992px) { + .d-lg-none { + display: none !important; } + .d-lg-inline { + display: inline !important; } + .d-lg-inline-block { + display: inline-block !important; } + .d-lg-block { + display: block !important; } + .d-lg-table { + display: table !important; } + .d-lg-table-row { + display: table-row !important; } + .d-lg-table-cell { + display: table-cell !important; } + .d-lg-flex { + display: flex !important; } + .d-lg-inline-flex { + display: inline-flex !important; } } + +@media (min-width: 1200px) { + .d-xl-none { + display: none !important; } + .d-xl-inline { + display: inline !important; } + .d-xl-inline-block { + display: inline-block !important; } + .d-xl-block { + display: block !important; } + .d-xl-table { + display: table !important; } + .d-xl-table-row { + display: table-row !important; } + .d-xl-table-cell { + display: table-cell !important; } + .d-xl-flex { + display: flex !important; } + .d-xl-inline-flex { + display: inline-flex !important; } } + +@media print { + .d-print-none { + display: none !important; } + .d-print-inline { + display: inline !important; } + .d-print-inline-block { + display: inline-block !important; } + .d-print-block { + display: block !important; } + .d-print-table { + display: table !important; } + .d-print-table-row { + display: table-row !important; } + .d-print-table-cell { + display: table-cell !important; } + .d-print-flex { + display: flex !important; } + .d-print-inline-flex { + display: inline-flex !important; } } + +.embed-responsive { + position: relative; + display: block; + width: 100%; + padding: 0; + overflow: hidden; } + .embed-responsive::before { + display: block; + content: ""; } + .embed-responsive .embed-responsive-item, + .embed-responsive iframe, + .embed-responsive embed, + .embed-responsive object, + .embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; } + +.embed-responsive-21by9::before { + padding-top: 42.85714%; } + +.embed-responsive-16by9::before { + padding-top: 56.25%; } + +.embed-responsive-4by3::before { + padding-top: 75%; } + +.embed-responsive-1by1::before { + padding-top: 100%; } + +.flex-row { + flex-direction: row !important; } + +.flex-column { + flex-direction: column !important; } + +.flex-row-reverse { + flex-direction: row-reverse !important; } + +.flex-column-reverse { + flex-direction: column-reverse !important; } + +.flex-wrap { + flex-wrap: wrap !important; } + +.flex-nowrap { + flex-wrap: nowrap !important; } + +.flex-wrap-reverse { + flex-wrap: wrap-reverse !important; } + +.flex-fill { + flex: 1 1 auto !important; } + +.flex-grow-0 { + flex-grow: 0 !important; } + +.flex-grow-1 { + flex-grow: 1 !important; } + +.flex-shrink-0 { + flex-shrink: 0 !important; } + +.flex-shrink-1 { + flex-shrink: 1 !important; } + +.justify-content-start { + justify-content: flex-start !important; } + +.justify-content-end { + justify-content: flex-end !important; } + +.justify-content-center { + justify-content: center !important; } + +.justify-content-between { + justify-content: space-between !important; } + +.justify-content-around { + justify-content: space-around !important; } + +.align-items-start { + align-items: flex-start !important; } + +.align-items-end { + align-items: flex-end !important; } + +.align-items-center { + align-items: center !important; } + +.align-items-baseline { + align-items: baseline !important; } + +.align-items-stretch { + align-items: stretch !important; } + +.align-content-start { + align-content: flex-start !important; } + +.align-content-end { + align-content: flex-end !important; } + +.align-content-center { + align-content: center !important; } + +.align-content-between { + align-content: space-between !important; } + +.align-content-around { + align-content: space-around !important; } + +.align-content-stretch { + align-content: stretch !important; } + +.align-self-auto { + align-self: auto !important; } + +.align-self-start { + align-self: flex-start !important; } + +.align-self-end { + align-self: flex-end !important; } + +.align-self-center { + align-self: center !important; } + +.align-self-baseline { + align-self: baseline !important; } + +.align-self-stretch { + align-self: stretch !important; } + +@media (min-width: 576px) { + .flex-sm-row { + flex-direction: row !important; } + .flex-sm-column { + flex-direction: column !important; } + .flex-sm-row-reverse { + flex-direction: row-reverse !important; } + .flex-sm-column-reverse { + flex-direction: column-reverse !important; } + .flex-sm-wrap { + flex-wrap: wrap !important; } + .flex-sm-nowrap { + flex-wrap: nowrap !important; } + .flex-sm-wrap-reverse { + flex-wrap: wrap-reverse !important; } + .flex-sm-fill { + flex: 1 1 auto !important; } + .flex-sm-grow-0 { + flex-grow: 0 !important; } + .flex-sm-grow-1 { + flex-grow: 1 !important; } + .flex-sm-shrink-0 { + flex-shrink: 0 !important; } + .flex-sm-shrink-1 { + flex-shrink: 1 !important; } + .justify-content-sm-start { + justify-content: flex-start !important; } + .justify-content-sm-end { + justify-content: flex-end !important; } + .justify-content-sm-center { + justify-content: center !important; } + .justify-content-sm-between { + justify-content: space-between !important; } + .justify-content-sm-around { + justify-content: space-around !important; } + .align-items-sm-start { + align-items: flex-start !important; } + .align-items-sm-end { + align-items: flex-end !important; } + .align-items-sm-center { + align-items: center !important; } + .align-items-sm-baseline { + align-items: baseline !important; } + .align-items-sm-stretch { + align-items: stretch !important; } + .align-content-sm-start { + align-content: flex-start !important; } + .align-content-sm-end { + align-content: flex-end !important; } + .align-content-sm-center { + align-content: center !important; } + .align-content-sm-between { + align-content: space-between !important; } + .align-content-sm-around { + align-content: space-around !important; } + .align-content-sm-stretch { + align-content: stretch !important; } + .align-self-sm-auto { + align-self: auto !important; } + .align-self-sm-start { + align-self: flex-start !important; } + .align-self-sm-end { + align-self: flex-end !important; } + .align-self-sm-center { + align-self: center !important; } + .align-self-sm-baseline { + align-self: baseline !important; } + .align-self-sm-stretch { + align-self: stretch !important; } } + +@media (min-width: 768px) { + .flex-md-row { + flex-direction: row !important; } + .flex-md-column { + flex-direction: column !important; } + .flex-md-row-reverse { + flex-direction: row-reverse !important; } + .flex-md-column-reverse { + flex-direction: column-reverse !important; } + .flex-md-wrap { + flex-wrap: wrap !important; } + .flex-md-nowrap { + flex-wrap: nowrap !important; } + .flex-md-wrap-reverse { + flex-wrap: wrap-reverse !important; } + .flex-md-fill { + flex: 1 1 auto !important; } + .flex-md-grow-0 { + flex-grow: 0 !important; } + .flex-md-grow-1 { + flex-grow: 1 !important; } + .flex-md-shrink-0 { + flex-shrink: 0 !important; } + .flex-md-shrink-1 { + flex-shrink: 1 !important; } + .justify-content-md-start { + justify-content: flex-start !important; } + .justify-content-md-end { + justify-content: flex-end !important; } + .justify-content-md-center { + justify-content: center !important; } + .justify-content-md-between { + justify-content: space-between !important; } + .justify-content-md-around { + justify-content: space-around !important; } + .align-items-md-start { + align-items: flex-start !important; } + .align-items-md-end { + align-items: flex-end !important; } + .align-items-md-center { + align-items: center !important; } + .align-items-md-baseline { + align-items: baseline !important; } + .align-items-md-stretch { + align-items: stretch !important; } + .align-content-md-start { + align-content: flex-start !important; } + .align-content-md-end { + align-content: flex-end !important; } + .align-content-md-center { + align-content: center !important; } + .align-content-md-between { + align-content: space-between !important; } + .align-content-md-around { + align-content: space-around !important; } + .align-content-md-stretch { + align-content: stretch !important; } + .align-self-md-auto { + align-self: auto !important; } + .align-self-md-start { + align-self: flex-start !important; } + .align-self-md-end { + align-self: flex-end !important; } + .align-self-md-center { + align-self: center !important; } + .align-self-md-baseline { + align-self: baseline !important; } + .align-self-md-stretch { + align-self: stretch !important; } } + +@media (min-width: 992px) { + .flex-lg-row { + flex-direction: row !important; } + .flex-lg-column { + flex-direction: column !important; } + .flex-lg-row-reverse { + flex-direction: row-reverse !important; } + .flex-lg-column-reverse { + flex-direction: column-reverse !important; } + .flex-lg-wrap { + flex-wrap: wrap !important; } + .flex-lg-nowrap { + flex-wrap: nowrap !important; } + .flex-lg-wrap-reverse { + flex-wrap: wrap-reverse !important; } + .flex-lg-fill { + flex: 1 1 auto !important; } + .flex-lg-grow-0 { + flex-grow: 0 !important; } + .flex-lg-grow-1 { + flex-grow: 1 !important; } + .flex-lg-shrink-0 { + flex-shrink: 0 !important; } + .flex-lg-shrink-1 { + flex-shrink: 1 !important; } + .justify-content-lg-start { + justify-content: flex-start !important; } + .justify-content-lg-end { + justify-content: flex-end !important; } + .justify-content-lg-center { + justify-content: center !important; } + .justify-content-lg-between { + justify-content: space-between !important; } + .justify-content-lg-around { + justify-content: space-around !important; } + .align-items-lg-start { + align-items: flex-start !important; } + .align-items-lg-end { + align-items: flex-end !important; } + .align-items-lg-center { + align-items: center !important; } + .align-items-lg-baseline { + align-items: baseline !important; } + .align-items-lg-stretch { + align-items: stretch !important; } + .align-content-lg-start { + align-content: flex-start !important; } + .align-content-lg-end { + align-content: flex-end !important; } + .align-content-lg-center { + align-content: center !important; } + .align-content-lg-between { + align-content: space-between !important; } + .align-content-lg-around { + align-content: space-around !important; } + .align-content-lg-stretch { + align-content: stretch !important; } + .align-self-lg-auto { + align-self: auto !important; } + .align-self-lg-start { + align-self: flex-start !important; } + .align-self-lg-end { + align-self: flex-end !important; } + .align-self-lg-center { + align-self: center !important; } + .align-self-lg-baseline { + align-self: baseline !important; } + .align-self-lg-stretch { + align-self: stretch !important; } } + +@media (min-width: 1200px) { + .flex-xl-row { + flex-direction: row !important; } + .flex-xl-column { + flex-direction: column !important; } + .flex-xl-row-reverse { + flex-direction: row-reverse !important; } + .flex-xl-column-reverse { + flex-direction: column-reverse !important; } + .flex-xl-wrap { + flex-wrap: wrap !important; } + .flex-xl-nowrap { + flex-wrap: nowrap !important; } + .flex-xl-wrap-reverse { + flex-wrap: wrap-reverse !important; } + .flex-xl-fill { + flex: 1 1 auto !important; } + .flex-xl-grow-0 { + flex-grow: 0 !important; } + .flex-xl-grow-1 { + flex-grow: 1 !important; } + .flex-xl-shrink-0 { + flex-shrink: 0 !important; } + .flex-xl-shrink-1 { + flex-shrink: 1 !important; } + .justify-content-xl-start { + justify-content: flex-start !important; } + .justify-content-xl-end { + justify-content: flex-end !important; } + .justify-content-xl-center { + justify-content: center !important; } + .justify-content-xl-between { + justify-content: space-between !important; } + .justify-content-xl-around { + justify-content: space-around !important; } + .align-items-xl-start { + align-items: flex-start !important; } + .align-items-xl-end { + align-items: flex-end !important; } + .align-items-xl-center { + align-items: center !important; } + .align-items-xl-baseline { + align-items: baseline !important; } + .align-items-xl-stretch { + align-items: stretch !important; } + .align-content-xl-start { + align-content: flex-start !important; } + .align-content-xl-end { + align-content: flex-end !important; } + .align-content-xl-center { + align-content: center !important; } + .align-content-xl-between { + align-content: space-between !important; } + .align-content-xl-around { + align-content: space-around !important; } + .align-content-xl-stretch { + align-content: stretch !important; } + .align-self-xl-auto { + align-self: auto !important; } + .align-self-xl-start { + align-self: flex-start !important; } + .align-self-xl-end { + align-self: flex-end !important; } + .align-self-xl-center { + align-self: center !important; } + .align-self-xl-baseline { + align-self: baseline !important; } + .align-self-xl-stretch { + align-self: stretch !important; } } + +.float-left { + float: left !important; } + +.float-right { + float: right !important; } + +.float-none { + float: none !important; } + +@media (min-width: 576px) { + .float-sm-left { + float: left !important; } + .float-sm-right { + float: right !important; } + .float-sm-none { + float: none !important; } } + +@media (min-width: 768px) { + .float-md-left { + float: left !important; } + .float-md-right { + float: right !important; } + .float-md-none { + float: none !important; } } + +@media (min-width: 992px) { + .float-lg-left { + float: left !important; } + .float-lg-right { + float: right !important; } + .float-lg-none { + float: none !important; } } + +@media (min-width: 1200px) { + .float-xl-left { + float: left !important; } + .float-xl-right { + float: right !important; } + .float-xl-none { + float: none !important; } } + +.position-static { + position: static !important; } + +.position-relative { + position: relative !important; } + +.position-absolute { + position: absolute !important; } + +.position-fixed { + position: fixed !important; } + +.position-sticky { + position: sticky !important; } + +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; } + +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; } + +@supports (position: sticky) { + .sticky-top { + position: sticky; + top: 0; + z-index: 1020; } } + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; } + +.sr-only-focusable:active, .sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + overflow: visible; + clip: auto; + white-space: normal; } + +.shadow-sm { + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; } + +.shadow { + box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; } + +.shadow-lg { + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; } + +.shadow-none { + box-shadow: none !important; } + +.w-25 { + width: 25% !important; } + +.w-50 { + width: 50% !important; } + +.w-75 { + width: 75% !important; } + +.w-100 { + width: 100% !important; } + +.w-auto { + width: auto !important; } + +.h-25 { + height: 25% !important; } + +.h-50 { + height: 50% !important; } + +.h-75 { + height: 75% !important; } + +.h-100 { + height: 100% !important; } + +.h-auto { + height: auto !important; } + +.mw-100 { + max-width: 100% !important; } + +.mh-100 { + max-height: 100% !important; } + +.m-0 { + margin: 0 !important; } + +.mt-0, +.my-0 { + margin-top: 0 !important; } + +.mr-0, +.mx-0 { + margin-right: 0 !important; } + +.mb-0, +.my-0 { + margin-bottom: 0 !important; } + +.ml-0, +.mx-0 { + margin-left: 0 !important; } + +.m-1 { + margin: 0.25rem !important; } + +.mt-1, +.my-1 { + margin-top: 0.25rem !important; } + +.mr-1, +.mx-1 { + margin-right: 0.25rem !important; } + +.mb-1, +.my-1 { + margin-bottom: 0.25rem !important; } + +.ml-1, +.mx-1 { + margin-left: 0.25rem !important; } + +.m-2 { + margin: 0.5rem !important; } + +.mt-2, +.my-2 { + margin-top: 0.5rem !important; } + +.mr-2, +.mx-2 { + margin-right: 0.5rem !important; } + +.mb-2, +.my-2 { + margin-bottom: 0.5rem !important; } + +.ml-2, +.mx-2 { + margin-left: 0.5rem !important; } + +.m-3 { + margin: 1rem !important; } + +.mt-3, +.my-3 { + margin-top: 1rem !important; } + +.mr-3, +.mx-3 { + margin-right: 1rem !important; } + +.mb-3, +.my-3 { + margin-bottom: 1rem !important; } + +.ml-3, +.mx-3 { + margin-left: 1rem !important; } + +.m-4 { + margin: 1.5rem !important; } + +.mt-4, +.my-4 { + margin-top: 1.5rem !important; } + +.mr-4, +.mx-4 { + margin-right: 1.5rem !important; } + +.mb-4, +.my-4 { + margin-bottom: 1.5rem !important; } + +.ml-4, +.mx-4 { + margin-left: 1.5rem !important; } + +.m-5 { + margin: 3rem !important; } + +.mt-5, +.my-5 { + margin-top: 3rem !important; } + +.mr-5, +.mx-5 { + margin-right: 3rem !important; } + +.mb-5, +.my-5 { + margin-bottom: 3rem !important; } + +.ml-5, +.mx-5 { + margin-left: 3rem !important; } + +.p-0 { + padding: 0 !important; } + +.pt-0, +.py-0 { + padding-top: 0 !important; } + +.pr-0, +.px-0 { + padding-right: 0 !important; } + +.pb-0, +.py-0 { + padding-bottom: 0 !important; } + +.pl-0, +.px-0 { + padding-left: 0 !important; } + +.p-1 { + padding: 0.25rem !important; } + +.pt-1, +.py-1 { + padding-top: 0.25rem !important; } + +.pr-1, +.px-1 { + padding-right: 0.25rem !important; } + +.pb-1, +.py-1 { + padding-bottom: 0.25rem !important; } + +.pl-1, +.px-1 { + padding-left: 0.25rem !important; } + +.p-2 { + padding: 0.5rem !important; } + +.pt-2, +.py-2 { + padding-top: 0.5rem !important; } + +.pr-2, +.px-2 { + padding-right: 0.5rem !important; } + +.pb-2, +.py-2 { + padding-bottom: 0.5rem !important; } + +.pl-2, +.px-2 { + padding-left: 0.5rem !important; } + +.p-3 { + padding: 1rem !important; } + +.pt-3, +.py-3 { + padding-top: 1rem !important; } + +.pr-3, +.px-3 { + padding-right: 1rem !important; } + +.pb-3, +.py-3 { + padding-bottom: 1rem !important; } + +.pl-3, +.px-3 { + padding-left: 1rem !important; } + +.p-4 { + padding: 1.5rem !important; } + +.pt-4, +.py-4 { + padding-top: 1.5rem !important; } + +.pr-4, +.px-4 { + padding-right: 1.5rem !important; } + +.pb-4, +.py-4 { + padding-bottom: 1.5rem !important; } + +.pl-4, +.px-4 { + padding-left: 1.5rem !important; } + +.p-5 { + padding: 3rem !important; } + +.pt-5, +.py-5 { + padding-top: 3rem !important; } + +.pr-5, +.px-5 { + padding-right: 3rem !important; } + +.pb-5, +.py-5 { + padding-bottom: 3rem !important; } + +.pl-5, +.px-5 { + padding-left: 3rem !important; } + +.m-auto { + margin: auto !important; } + +.mt-auto, +.my-auto { + margin-top: auto !important; } + +.mr-auto, +.mx-auto { + margin-right: auto !important; } + +.mb-auto, +.my-auto { + margin-bottom: auto !important; } + +.ml-auto, +.mx-auto { + margin-left: auto !important; } + +@media (min-width: 576px) { + .m-sm-0 { + margin: 0 !important; } + .mt-sm-0, + .my-sm-0 { + margin-top: 0 !important; } + .mr-sm-0, + .mx-sm-0 { + margin-right: 0 !important; } + .mb-sm-0, + .my-sm-0 { + margin-bottom: 0 !important; } + .ml-sm-0, + .mx-sm-0 { + margin-left: 0 !important; } + .m-sm-1 { + margin: 0.25rem !important; } + .mt-sm-1, + .my-sm-1 { + margin-top: 0.25rem !important; } + .mr-sm-1, + .mx-sm-1 { + margin-right: 0.25rem !important; } + .mb-sm-1, + .my-sm-1 { + margin-bottom: 0.25rem !important; } + .ml-sm-1, + .mx-sm-1 { + margin-left: 0.25rem !important; } + .m-sm-2 { + margin: 0.5rem !important; } + .mt-sm-2, + .my-sm-2 { + margin-top: 0.5rem !important; } + .mr-sm-2, + .mx-sm-2 { + margin-right: 0.5rem !important; } + .mb-sm-2, + .my-sm-2 { + margin-bottom: 0.5rem !important; } + .ml-sm-2, + .mx-sm-2 { + margin-left: 0.5rem !important; } + .m-sm-3 { + margin: 1rem !important; } + .mt-sm-3, + .my-sm-3 { + margin-top: 1rem !important; } + .mr-sm-3, + .mx-sm-3 { + margin-right: 1rem !important; } + .mb-sm-3, + .my-sm-3 { + margin-bottom: 1rem !important; } + .ml-sm-3, + .mx-sm-3 { + margin-left: 1rem !important; } + .m-sm-4 { + margin: 1.5rem !important; } + .mt-sm-4, + .my-sm-4 { + margin-top: 1.5rem !important; } + .mr-sm-4, + .mx-sm-4 { + margin-right: 1.5rem !important; } + .mb-sm-4, + .my-sm-4 { + margin-bottom: 1.5rem !important; } + .ml-sm-4, + .mx-sm-4 { + margin-left: 1.5rem !important; } + .m-sm-5 { + margin: 3rem !important; } + .mt-sm-5, + .my-sm-5 { + margin-top: 3rem !important; } + .mr-sm-5, + .mx-sm-5 { + margin-right: 3rem !important; } + .mb-sm-5, + .my-sm-5 { + margin-bottom: 3rem !important; } + .ml-sm-5, + .mx-sm-5 { + margin-left: 3rem !important; } + .p-sm-0 { + padding: 0 !important; } + .pt-sm-0, + .py-sm-0 { + padding-top: 0 !important; } + .pr-sm-0, + .px-sm-0 { + padding-right: 0 !important; } + .pb-sm-0, + .py-sm-0 { + padding-bottom: 0 !important; } + .pl-sm-0, + .px-sm-0 { + padding-left: 0 !important; } + .p-sm-1 { + padding: 0.25rem !important; } + .pt-sm-1, + .py-sm-1 { + padding-top: 0.25rem !important; } + .pr-sm-1, + .px-sm-1 { + padding-right: 0.25rem !important; } + .pb-sm-1, + .py-sm-1 { + padding-bottom: 0.25rem !important; } + .pl-sm-1, + .px-sm-1 { + padding-left: 0.25rem !important; } + .p-sm-2 { + padding: 0.5rem !important; } + .pt-sm-2, + .py-sm-2 { + padding-top: 0.5rem !important; } + .pr-sm-2, + .px-sm-2 { + padding-right: 0.5rem !important; } + .pb-sm-2, + .py-sm-2 { + padding-bottom: 0.5rem !important; } + .pl-sm-2, + .px-sm-2 { + padding-left: 0.5rem !important; } + .p-sm-3 { + padding: 1rem !important; } + .pt-sm-3, + .py-sm-3 { + padding-top: 1rem !important; } + .pr-sm-3, + .px-sm-3 { + padding-right: 1rem !important; } + .pb-sm-3, + .py-sm-3 { + padding-bottom: 1rem !important; } + .pl-sm-3, + .px-sm-3 { + padding-left: 1rem !important; } + .p-sm-4 { + padding: 1.5rem !important; } + .pt-sm-4, + .py-sm-4 { + padding-top: 1.5rem !important; } + .pr-sm-4, + .px-sm-4 { + padding-right: 1.5rem !important; } + .pb-sm-4, + .py-sm-4 { + padding-bottom: 1.5rem !important; } + .pl-sm-4, + .px-sm-4 { + padding-left: 1.5rem !important; } + .p-sm-5 { + padding: 3rem !important; } + .pt-sm-5, + .py-sm-5 { + padding-top: 3rem !important; } + .pr-sm-5, + .px-sm-5 { + padding-right: 3rem !important; } + .pb-sm-5, + .py-sm-5 { + padding-bottom: 3rem !important; } + .pl-sm-5, + .px-sm-5 { + padding-left: 3rem !important; } + .m-sm-auto { + margin: auto !important; } + .mt-sm-auto, + .my-sm-auto { + margin-top: auto !important; } + .mr-sm-auto, + .mx-sm-auto { + margin-right: auto !important; } + .mb-sm-auto, + .my-sm-auto { + margin-bottom: auto !important; } + .ml-sm-auto, + .mx-sm-auto { + margin-left: auto !important; } } + +@media (min-width: 768px) { + .m-md-0 { + margin: 0 !important; } + .mt-md-0, + .my-md-0 { + margin-top: 0 !important; } + .mr-md-0, + .mx-md-0 { + margin-right: 0 !important; } + .mb-md-0, + .my-md-0 { + margin-bottom: 0 !important; } + .ml-md-0, + .mx-md-0 { + margin-left: 0 !important; } + .m-md-1 { + margin: 0.25rem !important; } + .mt-md-1, + .my-md-1 { + margin-top: 0.25rem !important; } + .mr-md-1, + .mx-md-1 { + margin-right: 0.25rem !important; } + .mb-md-1, + .my-md-1 { + margin-bottom: 0.25rem !important; } + .ml-md-1, + .mx-md-1 { + margin-left: 0.25rem !important; } + .m-md-2 { + margin: 0.5rem !important; } + .mt-md-2, + .my-md-2 { + margin-top: 0.5rem !important; } + .mr-md-2, + .mx-md-2 { + margin-right: 0.5rem !important; } + .mb-md-2, + .my-md-2 { + margin-bottom: 0.5rem !important; } + .ml-md-2, + .mx-md-2 { + margin-left: 0.5rem !important; } + .m-md-3 { + margin: 1rem !important; } + .mt-md-3, + .my-md-3 { + margin-top: 1rem !important; } + .mr-md-3, + .mx-md-3 { + margin-right: 1rem !important; } + .mb-md-3, + .my-md-3 { + margin-bottom: 1rem !important; } + .ml-md-3, + .mx-md-3 { + margin-left: 1rem !important; } + .m-md-4 { + margin: 1.5rem !important; } + .mt-md-4, + .my-md-4 { + margin-top: 1.5rem !important; } + .mr-md-4, + .mx-md-4 { + margin-right: 1.5rem !important; } + .mb-md-4, + .my-md-4 { + margin-bottom: 1.5rem !important; } + .ml-md-4, + .mx-md-4 { + margin-left: 1.5rem !important; } + .m-md-5 { + margin: 3rem !important; } + .mt-md-5, + .my-md-5 { + margin-top: 3rem !important; } + .mr-md-5, + .mx-md-5 { + margin-right: 3rem !important; } + .mb-md-5, + .my-md-5 { + margin-bottom: 3rem !important; } + .ml-md-5, + .mx-md-5 { + margin-left: 3rem !important; } + .p-md-0 { + padding: 0 !important; } + .pt-md-0, + .py-md-0 { + padding-top: 0 !important; } + .pr-md-0, + .px-md-0 { + padding-right: 0 !important; } + .pb-md-0, + .py-md-0 { + padding-bottom: 0 !important; } + .pl-md-0, + .px-md-0 { + padding-left: 0 !important; } + .p-md-1 { + padding: 0.25rem !important; } + .pt-md-1, + .py-md-1 { + padding-top: 0.25rem !important; } + .pr-md-1, + .px-md-1 { + padding-right: 0.25rem !important; } + .pb-md-1, + .py-md-1 { + padding-bottom: 0.25rem !important; } + .pl-md-1, + .px-md-1 { + padding-left: 0.25rem !important; } + .p-md-2 { + padding: 0.5rem !important; } + .pt-md-2, + .py-md-2 { + padding-top: 0.5rem !important; } + .pr-md-2, + .px-md-2 { + padding-right: 0.5rem !important; } + .pb-md-2, + .py-md-2 { + padding-bottom: 0.5rem !important; } + .pl-md-2, + .px-md-2 { + padding-left: 0.5rem !important; } + .p-md-3 { + padding: 1rem !important; } + .pt-md-3, + .py-md-3 { + padding-top: 1rem !important; } + .pr-md-3, + .px-md-3 { + padding-right: 1rem !important; } + .pb-md-3, + .py-md-3 { + padding-bottom: 1rem !important; } + .pl-md-3, + .px-md-3 { + padding-left: 1rem !important; } + .p-md-4 { + padding: 1.5rem !important; } + .pt-md-4, + .py-md-4 { + padding-top: 1.5rem !important; } + .pr-md-4, + .px-md-4 { + padding-right: 1.5rem !important; } + .pb-md-4, + .py-md-4 { + padding-bottom: 1.5rem !important; } + .pl-md-4, + .px-md-4 { + padding-left: 1.5rem !important; } + .p-md-5 { + padding: 3rem !important; } + .pt-md-5, + .py-md-5 { + padding-top: 3rem !important; } + .pr-md-5, + .px-md-5 { + padding-right: 3rem !important; } + .pb-md-5, + .py-md-5 { + padding-bottom: 3rem !important; } + .pl-md-5, + .px-md-5 { + padding-left: 3rem !important; } + .m-md-auto { + margin: auto !important; } + .mt-md-auto, + .my-md-auto { + margin-top: auto !important; } + .mr-md-auto, + .mx-md-auto { + margin-right: auto !important; } + .mb-md-auto, + .my-md-auto { + margin-bottom: auto !important; } + .ml-md-auto, + .mx-md-auto { + margin-left: auto !important; } } + +@media (min-width: 992px) { + .m-lg-0 { + margin: 0 !important; } + .mt-lg-0, + .my-lg-0 { + margin-top: 0 !important; } + .mr-lg-0, + .mx-lg-0 { + margin-right: 0 !important; } + .mb-lg-0, + .my-lg-0 { + margin-bottom: 0 !important; } + .ml-lg-0, + .mx-lg-0 { + margin-left: 0 !important; } + .m-lg-1 { + margin: 0.25rem !important; } + .mt-lg-1, + .my-lg-1 { + margin-top: 0.25rem !important; } + .mr-lg-1, + .mx-lg-1 { + margin-right: 0.25rem !important; } + .mb-lg-1, + .my-lg-1 { + margin-bottom: 0.25rem !important; } + .ml-lg-1, + .mx-lg-1 { + margin-left: 0.25rem !important; } + .m-lg-2 { + margin: 0.5rem !important; } + .mt-lg-2, + .my-lg-2 { + margin-top: 0.5rem !important; } + .mr-lg-2, + .mx-lg-2 { + margin-right: 0.5rem !important; } + .mb-lg-2, + .my-lg-2 { + margin-bottom: 0.5rem !important; } + .ml-lg-2, + .mx-lg-2 { + margin-left: 0.5rem !important; } + .m-lg-3 { + margin: 1rem !important; } + .mt-lg-3, + .my-lg-3 { + margin-top: 1rem !important; } + .mr-lg-3, + .mx-lg-3 { + margin-right: 1rem !important; } + .mb-lg-3, + .my-lg-3 { + margin-bottom: 1rem !important; } + .ml-lg-3, + .mx-lg-3 { + margin-left: 1rem !important; } + .m-lg-4 { + margin: 1.5rem !important; } + .mt-lg-4, + .my-lg-4 { + margin-top: 1.5rem !important; } + .mr-lg-4, + .mx-lg-4 { + margin-right: 1.5rem !important; } + .mb-lg-4, + .my-lg-4 { + margin-bottom: 1.5rem !important; } + .ml-lg-4, + .mx-lg-4 { + margin-left: 1.5rem !important; } + .m-lg-5 { + margin: 3rem !important; } + .mt-lg-5, + .my-lg-5 { + margin-top: 3rem !important; } + .mr-lg-5, + .mx-lg-5 { + margin-right: 3rem !important; } + .mb-lg-5, + .my-lg-5 { + margin-bottom: 3rem !important; } + .ml-lg-5, + .mx-lg-5 { + margin-left: 3rem !important; } + .p-lg-0 { + padding: 0 !important; } + .pt-lg-0, + .py-lg-0 { + padding-top: 0 !important; } + .pr-lg-0, + .px-lg-0 { + padding-right: 0 !important; } + .pb-lg-0, + .py-lg-0 { + padding-bottom: 0 !important; } + .pl-lg-0, + .px-lg-0 { + padding-left: 0 !important; } + .p-lg-1 { + padding: 0.25rem !important; } + .pt-lg-1, + .py-lg-1 { + padding-top: 0.25rem !important; } + .pr-lg-1, + .px-lg-1 { + padding-right: 0.25rem !important; } + .pb-lg-1, + .py-lg-1 { + padding-bottom: 0.25rem !important; } + .pl-lg-1, + .px-lg-1 { + padding-left: 0.25rem !important; } + .p-lg-2 { + padding: 0.5rem !important; } + .pt-lg-2, + .py-lg-2 { + padding-top: 0.5rem !important; } + .pr-lg-2, + .px-lg-2 { + padding-right: 0.5rem !important; } + .pb-lg-2, + .py-lg-2 { + padding-bottom: 0.5rem !important; } + .pl-lg-2, + .px-lg-2 { + padding-left: 0.5rem !important; } + .p-lg-3 { + padding: 1rem !important; } + .pt-lg-3, + .py-lg-3 { + padding-top: 1rem !important; } + .pr-lg-3, + .px-lg-3 { + padding-right: 1rem !important; } + .pb-lg-3, + .py-lg-3 { + padding-bottom: 1rem !important; } + .pl-lg-3, + .px-lg-3 { + padding-left: 1rem !important; } + .p-lg-4 { + padding: 1.5rem !important; } + .pt-lg-4, + .py-lg-4 { + padding-top: 1.5rem !important; } + .pr-lg-4, + .px-lg-4 { + padding-right: 1.5rem !important; } + .pb-lg-4, + .py-lg-4 { + padding-bottom: 1.5rem !important; } + .pl-lg-4, + .px-lg-4 { + padding-left: 1.5rem !important; } + .p-lg-5 { + padding: 3rem !important; } + .pt-lg-5, + .py-lg-5 { + padding-top: 3rem !important; } + .pr-lg-5, + .px-lg-5 { + padding-right: 3rem !important; } + .pb-lg-5, + .py-lg-5 { + padding-bottom: 3rem !important; } + .pl-lg-5, + .px-lg-5 { + padding-left: 3rem !important; } + .m-lg-auto { + margin: auto !important; } + .mt-lg-auto, + .my-lg-auto { + margin-top: auto !important; } + .mr-lg-auto, + .mx-lg-auto { + margin-right: auto !important; } + .mb-lg-auto, + .my-lg-auto { + margin-bottom: auto !important; } + .ml-lg-auto, + .mx-lg-auto { + margin-left: auto !important; } } + +@media (min-width: 1200px) { + .m-xl-0 { + margin: 0 !important; } + .mt-xl-0, + .my-xl-0 { + margin-top: 0 !important; } + .mr-xl-0, + .mx-xl-0 { + margin-right: 0 !important; } + .mb-xl-0, + .my-xl-0 { + margin-bottom: 0 !important; } + .ml-xl-0, + .mx-xl-0 { + margin-left: 0 !important; } + .m-xl-1 { + margin: 0.25rem !important; } + .mt-xl-1, + .my-xl-1 { + margin-top: 0.25rem !important; } + .mr-xl-1, + .mx-xl-1 { + margin-right: 0.25rem !important; } + .mb-xl-1, + .my-xl-1 { + margin-bottom: 0.25rem !important; } + .ml-xl-1, + .mx-xl-1 { + margin-left: 0.25rem !important; } + .m-xl-2 { + margin: 0.5rem !important; } + .mt-xl-2, + .my-xl-2 { + margin-top: 0.5rem !important; } + .mr-xl-2, + .mx-xl-2 { + margin-right: 0.5rem !important; } + .mb-xl-2, + .my-xl-2 { + margin-bottom: 0.5rem !important; } + .ml-xl-2, + .mx-xl-2 { + margin-left: 0.5rem !important; } + .m-xl-3 { + margin: 1rem !important; } + .mt-xl-3, + .my-xl-3 { + margin-top: 1rem !important; } + .mr-xl-3, + .mx-xl-3 { + margin-right: 1rem !important; } + .mb-xl-3, + .my-xl-3 { + margin-bottom: 1rem !important; } + .ml-xl-3, + .mx-xl-3 { + margin-left: 1rem !important; } + .m-xl-4 { + margin: 1.5rem !important; } + .mt-xl-4, + .my-xl-4 { + margin-top: 1.5rem !important; } + .mr-xl-4, + .mx-xl-4 { + margin-right: 1.5rem !important; } + .mb-xl-4, + .my-xl-4 { + margin-bottom: 1.5rem !important; } + .ml-xl-4, + .mx-xl-4 { + margin-left: 1.5rem !important; } + .m-xl-5 { + margin: 3rem !important; } + .mt-xl-5, + .my-xl-5 { + margin-top: 3rem !important; } + .mr-xl-5, + .mx-xl-5 { + margin-right: 3rem !important; } + .mb-xl-5, + .my-xl-5 { + margin-bottom: 3rem !important; } + .ml-xl-5, + .mx-xl-5 { + margin-left: 3rem !important; } + .p-xl-0 { + padding: 0 !important; } + .pt-xl-0, + .py-xl-0 { + padding-top: 0 !important; } + .pr-xl-0, + .px-xl-0 { + padding-right: 0 !important; } + .pb-xl-0, + .py-xl-0 { + padding-bottom: 0 !important; } + .pl-xl-0, + .px-xl-0 { + padding-left: 0 !important; } + .p-xl-1 { + padding: 0.25rem !important; } + .pt-xl-1, + .py-xl-1 { + padding-top: 0.25rem !important; } + .pr-xl-1, + .px-xl-1 { + padding-right: 0.25rem !important; } + .pb-xl-1, + .py-xl-1 { + padding-bottom: 0.25rem !important; } + .pl-xl-1, + .px-xl-1 { + padding-left: 0.25rem !important; } + .p-xl-2 { + padding: 0.5rem !important; } + .pt-xl-2, + .py-xl-2 { + padding-top: 0.5rem !important; } + .pr-xl-2, + .px-xl-2 { + padding-right: 0.5rem !important; } + .pb-xl-2, + .py-xl-2 { + padding-bottom: 0.5rem !important; } + .pl-xl-2, + .px-xl-2 { + padding-left: 0.5rem !important; } + .p-xl-3 { + padding: 1rem !important; } + .pt-xl-3, + .py-xl-3 { + padding-top: 1rem !important; } + .pr-xl-3, + .px-xl-3 { + padding-right: 1rem !important; } + .pb-xl-3, + .py-xl-3 { + padding-bottom: 1rem !important; } + .pl-xl-3, + .px-xl-3 { + padding-left: 1rem !important; } + .p-xl-4 { + padding: 1.5rem !important; } + .pt-xl-4, + .py-xl-4 { + padding-top: 1.5rem !important; } + .pr-xl-4, + .px-xl-4 { + padding-right: 1.5rem !important; } + .pb-xl-4, + .py-xl-4 { + padding-bottom: 1.5rem !important; } + .pl-xl-4, + .px-xl-4 { + padding-left: 1.5rem !important; } + .p-xl-5 { + padding: 3rem !important; } + .pt-xl-5, + .py-xl-5 { + padding-top: 3rem !important; } + .pr-xl-5, + .px-xl-5 { + padding-right: 3rem !important; } + .pb-xl-5, + .py-xl-5 { + padding-bottom: 3rem !important; } + .pl-xl-5, + .px-xl-5 { + padding-left: 3rem !important; } + .m-xl-auto { + margin: auto !important; } + .mt-xl-auto, + .my-xl-auto { + margin-top: auto !important; } + .mr-xl-auto, + .mx-xl-auto { + margin-right: auto !important; } + .mb-xl-auto, + .my-xl-auto { + margin-bottom: auto !important; } + .ml-xl-auto, + .mx-xl-auto { + margin-left: auto !important; } } + +.text-monospace { + font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; } + +.text-justify { + text-align: justify !important; } + +.text-nowrap { + white-space: nowrap !important; } + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } + +.text-left { + text-align: left !important; } + +.text-right { + text-align: right !important; } + +.text-center { + text-align: center !important; } + +@media (min-width: 576px) { + .text-sm-left { + text-align: left !important; } + .text-sm-right { + text-align: right !important; } + .text-sm-center { + text-align: center !important; } } + +@media (min-width: 768px) { + .text-md-left { + text-align: left !important; } + .text-md-right { + text-align: right !important; } + .text-md-center { + text-align: center !important; } } + +@media (min-width: 992px) { + .text-lg-left { + text-align: left !important; } + .text-lg-right { + text-align: right !important; } + .text-lg-center { + text-align: center !important; } } + +@media (min-width: 1200px) { + .text-xl-left { + text-align: left !important; } + .text-xl-right { + text-align: right !important; } + .text-xl-center { + text-align: center !important; } } + +.text-lowercase { + text-transform: lowercase !important; } + +.text-uppercase { + text-transform: uppercase !important; } + +.text-capitalize { + text-transform: capitalize !important; } + +.font-weight-light { + font-weight: 300 !important; } + +.font-weight-normal { + font-weight: 400 !important; } + +.font-weight-bold { + font-weight: 700 !important; } + +.font-italic { + font-style: italic !important; } + +.text-white { + color: #fff !important; } + +.text-primary { + color: #563d7c !important; } + +a.text-primary:hover, a.text-primary:focus { + color: #3e2c5a !important; } + +.text-secondary { + color: #868e96 !important; } + +a.text-secondary:hover, a.text-secondary:focus { + color: #6c757d !important; } + +.text-success { + color: #28a745 !important; } + +a.text-success:hover, a.text-success:focus { + color: #1e7e34 !important; } + +.text-info { + color: #17a2b8 !important; } + +a.text-info:hover, a.text-info:focus { + color: #117a8b !important; } + +.text-warning { + color: #ffc107 !important; } + +a.text-warning:hover, a.text-warning:focus { + color: #d39e00 !important; } + +.text-danger { + color: #dc3545 !important; } + +a.text-danger:hover, a.text-danger:focus { + color: #bd2130 !important; } + +.text-light { + color: #f8f9fa !important; } + +a.text-light:hover, a.text-light:focus { + color: #dae0e5 !important; } + +.text-dark { + color: #343434 !important; } + +a.text-dark:hover, a.text-dark:focus { + color: #1b1b1b !important; } + +.text-body { + color: #212529 !important; } + +.text-muted { + color: #6c757d !important; } + +.text-black-50 { + color: rgba(0, 0, 0, 0.5) !important; } + +.text-white-50 { + color: rgba(255, 255, 255, 0.5) !important; } + +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; } + +.visible { + visibility: visible !important; } + +.invisible { + visibility: hidden !important; } + +@media print { + *, + *::before, + *::after { + text-shadow: none !important; + box-shadow: none !important; } + a:not(.btn) { + text-decoration: underline; } + abbr[title]::after { + content: " (" attr(title) ")"; } + pre { + white-space: pre-wrap !important; } + pre, + blockquote { + border: 1px solid #adb5bd; + page-break-inside: avoid; } + thead { + display: table-header-group; } + tr, + img { + page-break-inside: avoid; } + p, + h2, + h3 { + orphans: 3; + widows: 3; } + h2, + h3 { + page-break-after: avoid; } + @page { + size: a3; } + body { + min-width: 992px !important; } + .container { + min-width: 992px !important; } + .navbar { + display: none; } + .badge { + border: 1px solid #000; } + .table { + border-collapse: collapse !important; } + .table td, + .table th { + background-color: #fff !important; } + .table-bordered th, + .table-bordered td { + border: 1px solid #dee2e6 !important; } + .table-dark { + color: inherit; } + .table-dark th, + .table-dark td, + .table-dark thead th, + .table-dark tbody + tbody { + border-color: #dee2e6; } + .table .thead-dark th { + color: inherit; + border-color: #dee2e6; } } diff --git a/docs/css/theme.min.css b/docs/css/theme.min.css new file mode 100644 index 0000000..f5f22b5 --- /dev/null +++ b/docs/css/theme.min.css @@ -0,0 +1,6 @@ +/*! Themestr.app `Bootstrap Purple` Bootstrap 4.3.1 theme *//*! + * Bootstrap v4.1.1 (https://getbootstrap.com/) + * Copyright 2011-2018 The Bootstrap Authors + * Copyright 2011-2018 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#563d7c;--secondary:#868e96;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343434;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#563d7c;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#322449;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#d0c9da}.table-hover .table-primary:hover{background-color:#c3bad0}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#c3bad0}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#dddfe2}.table-hover .table-secondary:hover{background-color:#cfd2d6}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#cfd2d6}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c6c6}.table-hover .table-dark:hover{background-color:#b9b9b9}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9b9b9}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#212529}.table-dark td,.table-dark th,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media screen and (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#957bbe;outline:0;box-shadow:0 0 0 .2rem rgba(86,61,124,.25)}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-append>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),select.form-control-sm:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),select.form-control-lg:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(40,167,69,.8);border-radius:.2rem}.custom-select.is-valid,.form-control.is-valid,.was-validated .custom-select:valid,.was-validated .form-control:valid{border-color:#28a745}.custom-select.is-valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.form-control-file.is-valid~.valid-feedback,.form-control-file.is-valid~.valid-tooltip,.was-validated .form-control-file:valid~.valid-feedback,.was-validated .form-control-file:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{background-color:#71dd8a}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(40,167,69,.25)}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label::before,.was-validated .custom-file-input:valid~.custom-file-label::before{border-color:inherit}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,.8);border-radius:.2rem}.custom-select.is-invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.was-validated .form-control:invalid{border-color:#dc3545}.custom-select.is-invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.form-control-file.is-invalid~.invalid-feedback,.form-control-file.is-invalid~.invalid-tooltip,.was-validated .form-control-file:invalid~.invalid-feedback,.was-validated .form-control-file:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{background-color:#efa2a9}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(220,53,69,.25)}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label::before,.was-validated .custom-file-input:invalid~.custom-file-label::before{border-color:inherit}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:flex;align-items:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:flex;flex:0 0 auto;flex-flow:row wrap;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media screen and (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:focus,.btn:hover{text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(86,61,124,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled).active,.btn:not(:disabled):not(.disabled):active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#563d7c;border-color:#563d7c}.btn-primary:hover{color:#fff;background-color:#443062;border-color:#3e2c5a}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(86,61,124,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#563d7c;border-color:#563d7c}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#3e2c5a;border-color:#382851}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(86,61,124,.5)}.btn-secondary{color:#fff;background-color:#868e96;border-color:#868e96}.btn-secondary:hover{color:#fff;background-color:#727b84;border-color:#6c757d}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(134,142,150,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#868e96;border-color:#868e96}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#666e76}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(134,142,150,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-dark{color:#fff;background-color:#343434;border-color:#343434}.btn-dark:hover{color:#fff;background-color:#212121;border-color:#1b1b1b}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(52,52,52,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343434;border-color:#343434}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1b1b1b;border-color:#141414}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,52,52,.5)}.btn-outline-primary{color:#563d7c;background-color:transparent;background-image:none;border-color:#563d7c}.btn-outline-primary:hover{color:#fff;background-color:#563d7c;border-color:#563d7c}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(86,61,124,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#563d7c;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#563d7c;border-color:#563d7c}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(86,61,124,.5)}.btn-outline-secondary{color:#868e96;background-color:transparent;background-image:none;border-color:#868e96}.btn-outline-secondary:hover{color:#fff;background-color:#868e96;border-color:#868e96}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(134,142,150,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#868e96;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#868e96;border-color:#868e96}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(134,142,150,.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343434;background-color:transparent;background-image:none;border-color:#343434}.btn-outline-dark:hover{color:#fff;background-color:#343434;border-color:#343434}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,52,52,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343434;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343434;border-color:#343434}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,52,52,.5)}.btn-link{font-weight:400;color:#563d7c;background-color:transparent}.btn-link:hover{color:#322449;text-decoration:underline;background-color:transparent;border-color:transparent}.btn-link.focus,.btn-link:focus{text-decoration:underline;border-color:transparent;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media screen and (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media screen and (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-right{right:0;left:auto}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#563d7c}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:0 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control{position:relative;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file:focus,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control{margin-left:-1px}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;background-color:#563d7c}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(86,61,124,.25)}.custom-control-input:active~.custom-control-label::before{color:#fff;background-color:#b19dcf}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::before{background-color:#563d7c}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{background-color:#563d7c}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(86,61,124,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(86,61,124,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::before{background-color:#563d7c}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(86,61,124,.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;appearance:none}.custom-select:focus{border-color:#957bbe;outline:0;box-shadow:inset 0 1px 2px rgba(0,0,0,.075),0 0 5px rgba(149,123,190,.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#957bbe;box-shadow:0 0 0 .2rem rgba(86,61,124,.25)}.custom-file-input:focus~.custom-file-label::after{border-color:#957bbe}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:.375rem .75rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:2.25rem;padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;padding-left:0;background-color:transparent;appearance:none}.custom-range:focus{outline:0}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#563d7c;border:0;border-radius:1rem;appearance:none}.custom-range::-webkit-slider-thumb:focus{outline:0;box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(86,61,124,.25)}.custom-range::-webkit-slider-thumb:active{background-color:#b19dcf}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#563d7c;border:0;border-radius:1rem;appearance:none}.custom-range::-moz-range-thumb:focus{outline:0;box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(86,61,124,.25)}.custom-range::-moz-range-thumb:active{background-color:#b19dcf}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;background-color:#563d7c;border:0;border-radius:1rem;appearance:none}.custom-range::-ms-thumb:focus{outline:0;box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(86,61,124,.25)}.custom-range::-ms-thumb:active{background-color:#b19dcf}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#563d7c}.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:flex;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:flex;flex:1 0 0%;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:flex;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-header,.card-group>.card:first-child .card-img-top{border-top-right-radius:0}.card-group>.card:first-child .card-footer,.card-group>.card:first-child .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-header,.card-group>.card:last-child .card-img-top{border-top-left-radius:0}.card-group>.card:last-child .card-footer,.card-group>.card:last-child .card-img-bottom{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-header,.card-group>.card:only-child .card-img-top{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-footer,.card-group>.card:only-child .card-img-bottom{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{column-count:3;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion .card:not(:first-of-type):not(:last-of-type){border-bottom:0;border-radius:0}.accordion .card:not(:first-of-type) .card-header:first-child{border-radius:0}.accordion .card:first-of-type{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion .card:last-of-type{border-top-left-radius:0;border-top-right-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#563d7c;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#322449;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(86,61,124,.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#563d7c;border-color:#563d7c}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#563d7c}.badge-primary[href]:focus,.badge-primary[href]:hover{color:#fff;text-decoration:none;background-color:#3e2c5a}.badge-secondary{color:#fff;background-color:#868e96}.badge-secondary[href]:focus,.badge-secondary[href]:hover{color:#fff;text-decoration:none;background-color:#6c757d}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:focus,.badge-success[href]:hover{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:focus,.badge-info[href]:hover{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:focus,.badge-warning[href]:hover{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:focus,.badge-danger[href]:hover{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:focus,.badge-light[href]:hover{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343434}.badge-dark[href]:focus,.badge-dark[href]:hover{color:#fff;text-decoration:none;background-color:#1b1b1b}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#2d2040;background-color:#ddd8e5;border-color:#d0c9da}.alert-primary hr{border-top-color:#c3bad0}.alert-primary .alert-link{color:#150f1e}.alert-secondary{color:#464a4e;background-color:#e7e8ea;border-color:#dddfe2}.alert-secondary hr{border-top-color:#cfd2d6}.alert-secondary .alert-link{color:#2e3133}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1b1b;background-color:#d6d6d6;border-color:#c6c6c6}.alert-dark hr{border-top-color:#b9b9b9}.alert-dark .alert-link{color:#020202}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#563d7c;transition:width .6s ease}@media screen and (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{animation:progress-bar-stripes 1s linear infinite}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:focus,.list-group-item:hover{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#563d7c;border-color:#563d7c}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#2d2040;background-color:#d0c9da}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#2d2040;background-color:#c3bad0}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#2d2040;border-color:#2d2040}.list-group-item-secondary{color:#464a4e;background-color:#dddfe2}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#464a4e;background-color:#cfd2d6}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#464a4e;border-color:#464a4e}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1b1b;background-color:#c6c6c6}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1b1b;background-color:#b9b9b9}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1b1b;border-color:#1b1b1b}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:focus,.close:hover{color:#000;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-25%)}@media screen and (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:translate(0,0)}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - (.5rem * 2))}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;align-items:center;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top] .arrow,.bs-popover-top .arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-top .arrow::before{border-width:.5rem .5rem 0}.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::before{bottom:0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-top .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right] .arrow,.bs-popover-right .arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-right .arrow::before{border-width:.5rem .5rem .5rem 0}.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::before{left:0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-right .arrow::after{left:1px;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom] .arrow,.bs-popover-bottom .arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-bottom .arrow::before{border-width:0 .5rem .5rem .5rem}.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::before{top:0;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-bottom .arrow::after{top:1px;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left] .arrow,.bs-popover-left .arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-left .arrow::before{border-width:.5rem 0 .5rem .5rem}.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::before{right:0;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-left .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;align-items:center;width:100%;transition:transform .6s ease;backface-visibility:hidden;perspective:1000px}@media screen and (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{transform:translateX(0)}@supports (transform-style:preserve-3d){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{transform:translate3d(0,0,0)}}.active.carousel-item-right,.carousel-item-next{transform:translateX(100%)}@supports (transform-style:preserve-3d){.active.carousel-item-right,.carousel-item-next{transform:translate3d(100%,0,0)}}.active.carousel-item-left,.carousel-item-prev{transform:translateX(-100%)}@supports (transform-style:preserve-3d){.active.carousel-item-left,.carousel-item-prev{transform:translate3d(-100%,0,0)}}.carousel-fade .carousel-item{opacity:0;transition-duration:.6s;transition-property:opacity}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{opacity:0}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev,.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active{transform:translateX(0)}@supports (transform-style:preserve-3d){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev,.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active{transform:translate3d(0,0,0)}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:rgba(255,255,255,.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#563d7c!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#3e2c5a!important}.bg-secondary{background-color:#868e96!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#6c757d!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343434!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1b1b1b!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#563d7c!important}.border-secondary{border-color:#868e96!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343434!important}.border-white{border-color:#fff!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-circle{border-radius:50%!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.85714%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-fill{flex:1 1 auto!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}@media (min-width:576px){.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}}@media (min-width:768px){.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position:sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}.text-justify{text-align:justify!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#563d7c!important}a.text-primary:focus,a.text-primary:hover{color:#3e2c5a!important}.text-secondary{color:#868e96!important}a.text-secondary:focus,a.text-secondary:hover{color:#6c757d!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#1e7e34!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#117a8b!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#d39e00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#bd2130!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#dae0e5!important}.text-dark{color:#343434!important}a.text-dark:focus,a.text-dark:hover{color:#1b1b1b!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}} \ No newline at end of file diff --git a/docs/data.js b/docs/data.js new file mode 100644 index 0000000..bc85c72 --- /dev/null +++ b/docs/data.js @@ -0,0 +1,2610 @@ +const Data = { + template: ` +
+ Data + + + + Addresses: + {{ Object.keys(addresses).length }} + + + ERC-20 Contracts: + {{ totalERC20Contracts }} + + + ERC-721 Tokens: + {{ totalERC721Tokens }} + + + Registry: + {{ Object.keys(registry[chainId] || {}).length }} + + + Stealth Transfers: + {{ totalStealthTransfers }} + + + + +
+ `, + data: function () { + return { + count: 0, + reschedule: true, + } + }, + computed: { + powerOn() { + return store.getters['connection/powerOn']; + }, + coinbase() { + return store.getters['connection/coinbase']; + }, + chainId() { + return store.getters['connection/chainId']; + }, + addresses() { + return store.getters['data/addresses']; + }, + registry() { + return store.getters['data/registry']; + }, + stealthTransfers() { + return store.getters['data/stealthTransfers']; + }, + totalStealthTransfers() { + let result = (store.getters['data/forceRefresh'] % 2) == 0 ? 0 : 0; + for (const [blockNumber, logIndexes] of Object.entries(this.stealthTransfers[this.chainId] || {})) { + for (const [logIndex, item] of Object.entries(logIndexes)) { + result++; + } + } + return result; + }, + totalERC20Contracts() { + let result = (store.getters['data/forceRefresh'] % 2) == 0 ? 0 : 0; + // TODO + // for (const [address, data] of Object.entries(this.tokenContracts[this.chainId] || {})) { + // if (data.type == "erc20") { + // result++; + // } + // } + return result; + }, + totalERC721Tokens() { + let result = (store.getters['data/forceRefresh'] % 2) == 0 ? 0 : 0; + // TODO + // for (const [address, data] of Object.entries(this.tokenContracts[this.chainId] || {})) { + // if (data.type == "erc721") { + // result += Object.keys(data.tokenIds).length; + // } + // } + return result; + }, + // mappings() { + // return store.getters['data/mappings']; + // }, + // txs() { + // return store.getters['data/txs']; + // }, + // assets() { + // return store.getters['data/assets']; + // }, + // ens() { + // return store.getters['data/ens']; + // }, + }, + methods: { + async timeoutCallback() { + logDebug("Data", "timeoutCallback() count: " + this.count); + this.count++; + var t = this; + if (this.reschedule) { + setTimeout(function() { + t.timeoutCallback(); + }, 15000); + } + }, + }, + beforeDestroy() { + logDebug("Data", "beforeDestroy()"); + }, + mounted() { + logDebug("Data", "mounted() $route: " + JSON.stringify(this.$route.params)); + store.dispatch('config/restoreState'); + this.reschedule = true; + logDebug("Data", "Calling timeoutCallback()"); + this.timeoutCallback(); + }, + destroyed() { + this.reschedule = false; + }, +}; + +const dataModule = { + namespaced: true, + state: { + DB_PROCESSING_BATCH_SIZE: 12345, + + // address => info + addresses: {}, + + // "11155111": { + // "0x7439E9Bb6D8a84dd3A23fe621A30F95403F87fB9": { + // "type": "erc20", + // "balances": { + // "0x000001f568875F378Bf6d170B790967FE429C81A": "7002013838755293944542", + // "0x5d446D064757Cc92eFe92548F2D7b7a3eab30362": "11999205282222222222223" + // } + // }, + // "0x8b73448426797099b6b9a96c4343f528bbAfc55e": { + // "type": "erc721", + // "tokens": { + // "60": "0x000001f568875F378Bf6d170B790967FE429C81A", + // "6743": "0x5d446D064757Cc92eFe92548F2D7b7a3eab30362" + // } + // }, + // "0x3F15A716888EFb6871872fC4358F638DEE495f3b": { + // "type": "erc1155", + // "tokens": { + // "7": { + // "0x000001f568875F378Bf6d170B790967FE429C81A": "1" + // }, + // "8": { + // "0x000001f568875F378Bf6d170B790967FE429C81A": "1" + // } + // } + // } + // } + balances: {}, + approvals: {}, + + // { + // "11155111": { + // "0x8b73448426797099b6b9a96c4343f528bbAfc55e": { + // "junk": false, + // "tokens": { + // "6743": { + // "name": "CrypToadz #6743", + // "description": "CrypToadz #6743", + // "image": "ipfs://QmeWBcNJqTYvPoJ1au6h4xGR277QTcaH94Y9Z19UGaDejo", + // "attributes": [ + // { + // "trait_type": "Eyes", + // "value": "Butthole" + // } + // ], + // "favourite": false + // } + // } + // }, + // "0x3F15A716888EFb6871872fC4358F638DEE495f3b": { + // "junk": false, + // "tokens": { + // "8": { + // "name": "feels good", + // "description": "A piece that can be combined", + // "image": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHNoYXBlLXJlbmRlcmluZz0iY3Jpc3BFZGdlcyIgaWQ9InBpeGVsIiAgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMzkgMzkiIHdpZHRoPSIzOTAiIGhlaWdodD0iMzkwIj4gPGltYWdlIHg9IjAiIHk9IjAiIHdpZHRoPSIzOSIgaGVpZ2h0PSIzOSIgaHJlZj0iZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCM2FXUjBhRDBpTlRBd0lpQm9aV2xuYUhROUlqVXdNQ0lnZG1sbGQwSnZlRDBpTUNBd0lEVXdNQ0ExTURBaUlIWmxjbk5wYjI0OUlqRXVNaUlnZUcxc2JuTTlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5Mekl3TURBdmMzWm5JaUJ6ZEhsc1pUMGlZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqcDBjbUZ1YzNCaGNtVnVkRHRpWVdOclozSnZkVzVrTFdsdFlXZGxPblZ5YkNoa1lYUmhPbWx0WVdkbEwzQnVaenRpWVhObE5qUXNhVlpDVDFKM01FdEhaMjlCUVVGQlRsTlZhRVZWWjBGQlFVTmpRVUZCUVc1RFFWbEJRVUZEVFc4eFJURkJRVUZCUVZoT1UxSXdTVUZ5Y3pSak5sRkJRVUZRUmtwU1JVWlZWMGxZZEd4cVJVOW5ha0ZWVVVZclRuQXpSWGx6YW1kWlFuTXZRVU5TZURGalQwbFZWR2MwTm1WblRGQTBSMEZaV0VOQ1QxaEJZMjVITkZOSFUzSXJiWGt6T0V3MlZ5OHZOM2R6ZEV4aFFXOXBjVWx2YVhGS05FMU5URGg0YkVoUVJsRjBRMGwwWTBGaVJ6bDZRVTAzY25Bck1YZDRTVXh0UTFwWGVsbHRWMlJCY0VSTk4zQlNNV0Z3TDNadFJWRjNVa3MwYms1clVreGpVRkpqTURsR2NXWkpiemxrYTJOaVdEVTNNblppWVVWcFUyZGlUVTFhWjJwSVJ6SlBPSE0yZG01YVFWUjJVSFJyYjBwek16UnVabTVKSzNsVWRUTllUelZoWjFCa1kyeDJlRk5FTDFaclZuUnlVbWwxWm5oVGEwWllWalJLYW5KWmRVVmtOREJKYzJRNWFYTjFTSEpIYUVscVFtNDRLelZIU1dOM1pVRlRWREpTTWtsa016RkNOVEkxZERCNmJtSnZiSG80TUZBNFJDdFhWblJTVmtWVlNsTlpkbTR6V2xWMVJVZDNRVVEwUVVGQlFVRlRWVlpQVWtzMVExbEpTVDBwTzJKaFkydG5jbTkxYm1RdGNtVndaV0YwT201dkxYSmxjR1ZoZER0aVlXTnJaM0p2ZFc1a0xYTnBlbVU2WTI5dWRHRnBianRpWVdOclozSnZkVzVrTFhCdmMybDBhVzl1T21ObGJuUmxjanRwYldGblpTMXlaVzVrWlhKcGJtYzZMWGRsWW10cGRDMXZjSFJwYldsNlpTMWpiMjUwY21GemREc3RiWE10YVc1MFpYSndiMnhoZEdsdmJpMXRiMlJsT201bFlYSmxjM1F0Ym1WcFoyaGliM0k3YVcxaFoyVXRjbVZ1WkdWeWFXNW5PaTF0YjNvdFkzSnBjM0F0WldSblpYTTdhVzFoWjJVdGNtVnVaR1Z5YVc1bk9uQnBlR1ZzWVhSbFpEc2lQand2YzNablBnPT0iLz48c3R5bGU+I3BpeGVsIHtpbWFnZS1yZW5kZXJpbmc6IHBpeGVsYXRlZDsgaW1hZ2UtcmVuZGVyaW5nOiAtbW96LWNyaXNwLWVkZ2VzOyBpbWFnZS1yZW5kZXJpbmc6IC13ZWJraXQtY3Jpc3AtZWRnZXM7IC1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IG5lYXJlc3QtbmVpZ2hib3I7fTwvc3R5bGU+PC9zdmc+", + // "attributes": [ + // { + // "trait_type": "Tags", + // "value": "frog" + // }, + // { + // "trait_type": "Tags", + // "value": "derp" + // } + // ], + // "favourite": true + // } + // } + // }, + // "0x7439E9Bb6D8a84dd3A23fe621A30F95403F87fB9": { + // "type": "erc20", + // "symbol": "WEENUS", + // "name": "Weenus 💪", + // "decimals": 18, + // "totalSupply": "1358000000000000000000000", + // "junk": false, + // "favourite": false, + // "notes": null + // }, + // } + // } + tokens: {}, + expiries: {}, + + collection: {}, // chainId -> contract => { id, symbol, name, image, slug, creator, tokenCount } + timestamps: {}, // chainId -> blockNumber => timestamp + txs: {}, // txHash => tx & txReceipt + + registry: {}, // Address => StealthMetaAddress + stealthTransfers: {}, // ChainId, blockNumber, logIndex => data + ens: {}, + names: {}, + exchangeRates: {}, + forceRefresh: 0, + sync: { + section: null, + total: null, + completed: null, + halt: false, + }, + db: { + name: "magicalinternetmoneydata080a", + version: 1, + schemaDefinition: { + announcements: '[chainId+blockNumber+logIndex],[blockNumber+contract],contract,confirmations,stealthAddress', + registrations: '[chainId+blockNumber+logIndex],[blockNumber+contract],contract,confirmations', + tokenEvents: '[chainId+blockNumber+logIndex],[blockNumber+contract],contract,confirmations', + // tokenEvents: '[chainId+blockNumber+logIndex],[blockNumber+contract],contract,[eventType+confirmations]', + cache: '&objectName', + }, + updated: null, + }, + }, + getters: { + addresses: state => state.addresses, + balances: state => state.balances, + approvals: state => state.approvals, + tokens: state => state.tokens, + expiries: state => state.expiries, + + collection: state => state.collection, + timestamps: state => state.timestamps, + txs: state => state.txs, + + registry: state => state.registry, + stealthTransfers: state => state.stealthTransfers, + ens: state => state.ens, + names: state => state.names, + exchangeRates: state => state.exchangeRates, + forceRefresh: state => state.forceRefresh, + sync: state => state.sync, + db: state => state.db, + }, + mutations: { + setState(state, info) { + // console.log(now() + " INFO dataModule:mutations.setState - info: " + JSON.stringify(info, null, 2)); + Vue.set(state, info.name, info.data); + }, + updateBalances(state, info) { + // console.log(now() + " INFO dataModule:mutations.updateBalances - info: " + JSON.stringify(info, null, 2)); + Vue.set(state.balances, info.chainId, info.balances); + }, + updateApprovals(state, info) { + // console.log(now() + " INFO dataModule:mutations.updateApprovals - info: " + JSON.stringify(info, null, 2)); + Vue.set(state.approvals, info.chainId, info.approvals); + }, + toggleAddressField(state, info) { + Vue.set(state.addresses[info.address], info.field, !state.addresses[info.address][info.field]); + // console.log(now() + " INFO dataModule:mutations.toggleAddressField - addresses[" + info.address + "]." + info.field + " = " + state.addresses[info.address][info.field]); + }, + setAddressField(state, info) { + Vue.set(state.addresses[info.address], info.field, info.value); + // console.log(now() + " INFO dataModule:mutations.setAddressField - addresses[" + info.address + "]." + info.field + " = " + state.addresses[info.address][info.field]); + }, + toggleFungibleJunk(state, item) { + // console.log(now() + " INFO dataModule:mutations.toggleFungibleJunk - item: " + JSON.stringify(item)); + if (state.tokens[item.chainId] && state.tokens[item.chainId][item.contract]) { + Vue.set(state.tokens[item.chainId][item.contract], 'junk', !state.tokens[item.chainId][item.contract].junk); + } + }, + toggleFungibleActive(state, item) { + // console.log(now() + " INFO dataModule:mutations.toggleFungibleActive - item: " + JSON.stringify(item)); + if (state.tokens[item.chainId] && state.tokens[item.chainId][item.contract]) { + Vue.set(state.tokens[item.chainId][item.contract], 'active', !state.tokens[item.chainId][item.contract].active); + } + }, + setFungibleField(state, info) { + // console.log(now() + " INFO dataModule:mutations.setFungibleField: " + JSON.stringify(info, null, 2)); + if (state.tokens[info.chainId] && state.tokens[info.chainId][info.contract]) { + Vue.set(state.tokens[info.chainId][info.contract], info.field, info.value); + } + }, + updateFungibleTotalSupply(state, info) { + // console.log(now() + " INFO dataModule:mutations.updateFungibleTotalSupply: " + JSON.stringify(info, null, 2)); + if (state.tokens[info.chainId] && state.tokens[info.chainId][info.contract]) { + Vue.set(state.tokens[info.chainId][info.contract], 'totalSupply', info.totalSupply); + } + }, + toggleNonFungibleJunk(state, item) { + // console.log(now() + " INFO dataModule:mutations.toggleNonFungibleJunk - item: " + JSON.stringify(item)); + const [ chainId, contract, tokenId ] = [ item.chainId, item.contract, item.tokenId ]; + if (!(chainId in state.tokens)) { + Vue.set(state.tokens, chainId, {}); + } + if (!(contract in state.tokens[chainId])) { + Vue.set(state.tokens[chainId], contract, { + junk: false, + tokens: {}, + }); + } + Vue.set(state.tokens[chainId][contract], 'junk', !state.tokens[chainId][contract].junk); + }, + toggleNonFungibleActive(state, item) { + // console.log(now() + " INFO dataModule:mutations.toggleNonFungibleActive - item: " + JSON.stringify(item)); + const [ chainId, contract, tokenId ] = [ item.chainId, item.contract, item.tokenId ]; + if (!(chainId in state.tokens)) { + Vue.set(state.tokens, chainId, {}); + } + if (!(contract in state.tokens[chainId])) { + Vue.set(state.tokens[chainId], contract, { + junk: false, + tokens: {}, + }); + } + if (!(tokenId in state.tokens[chainId][contract].tokens)) { + Vue.set(state.tokens[chainId][contract].tokens, tokenId, { + name: null, + description: null, + image: null, + attributes: null, + active: false, + }); + } + Vue.set(state.tokens[chainId][contract].tokens[tokenId], 'active', !state.tokens[chainId][contract].tokens[tokenId].active); + }, + setNonFungibleField(state, info) { + // console.log(now() + " INFO dataModule:mutations.setNonFungibleField: " + JSON.stringify(info, null, 2)); + if (state.tokens[info.chainId] && state.tokens[info.chainId][info.contract] && state.tokens[info.chainId][info.contract].tokens[info.tokenId]) { + Vue.set(state.tokens[info.chainId][info.contract].tokens[info.tokenId], info.field, info.value); + } + }, + + addNewAddress(state, newAccount) { + // console.log(now() + " INFO dataModule:mutations.addNewAddress(" + JSON.stringify(newAccount, null, 2) + ")"); + let address = null; + let linkedToAddress = null; + let type = null; + let mine = false; + let source = null; + if (newAccount.action == "addCoinbase") { + address = store.getters['connection/coinbase']; + type = "address"; + mine = true; + source = "attached"; + } else if (newAccount.action == "addAddress") { + address = ethers.utils.getAddress(newAccount.address); + type = "address"; + mine = newAccount.mine; + source = "manual"; + } else if (newAccount.action == "addStealthMetaAddress") { + address = newAccount.address; + linkedToAddress = newAccount.linkedToAddress; + type = "stealthMetaAddress"; + mine = newAccount.mine; + source = "manual"; + } else { + address = newAccount.address; + linkedToAddress = newAccount.linkedToAddress; + type = "stealthMetaAddress"; + mine = true; + source = "attached"; + } + console.log("address: " + address); + console.log("linkedToAddress: " + linkedToAddress); + console.log("type: " + type); + if (address in state.addresses) { + Vue.set(state.addresses[address], 'type', type); + if (type == "stealthMetaAddress") { + Vue.set(state.addresses[address], 'linkedToAddress', linkedToAddress); + Vue.set(state.addresses[address], 'phrase', newAccount.action == "generateStealthMetaAddress" ? newAccount.phrase : undefined); + Vue.set(state.addresses[address], 'viewingPrivateKey', newAccount.action == "generateStealthMetaAddress" ? newAccount.viewingPrivateKey : undefined); + Vue.set(state.addresses[address], 'spendingPublicKey', newAccount.action == "generateStealthMetaAddress" ? newAccount.spendingPublicKey : undefined); + Vue.set(state.addresses[address], 'viewingPublicKey', newAccount.action == "generateStealthMetaAddress" ? newAccount.viewingPublicKey : undefined); + } + Vue.set(state.addresses[address], 'mine', mine); + Vue.set(state.addresses[address], 'watch', newAccount.watch); + Vue.set(state.addresses[address], 'sendFrom', newAccount.sendFrom); + Vue.set(state.addresses[address], 'sendTo', newAccount.sendTo); + Vue.set(state.addresses[address], 'name', newAccount.name); + } else { + if (type == "address") { + Vue.set(state.addresses, address, { + type, + source, + junk: false, + mine, + watch: newAccount.watch, + sendFrom: newAccount.sendFrom, + sendTo: newAccount.sendTo, + name: newAccount.name, + notes: null, + }); + } else { + Vue.set(state.addresses, address, { + type, + linkedToAddress, + phrase: newAccount.action == "generateStealthMetaAddress" ? newAccount.phrase : undefined, + viewingPrivateKey: newAccount.action == "generateStealthMetaAddress" ? newAccount.viewingPrivateKey : undefined, + spendingPublicKey: newAccount.action == "generateStealthMetaAddress" ? newAccount.spendingPublicKey : undefined, + viewingPublicKey: newAccount.action == "generateStealthMetaAddress" ? newAccount.viewingPublicKey : undefined, + source, + junk: false, + mine, + watch: newAccount.watch, + sendFrom: newAccount.sendFrom, + sendTo: newAccount.sendTo, + name: newAccount.name, + notes: null, + }); + } + } + // console.log(now() + " INFO dataModule:mutations.addNewAddress AFTER - state.accounts: " + JSON.stringify(state.accounts, null, 2)); + }, + addNewStealthAddress(state, info) { + // console.log(now() + " INFO dataModule:mutations.addNewStealthAddress: " + JSON.stringify(info, null, 2)); + Vue.set(state.addresses, info.stealthAddress, { + type: info.type, + linkedTo: info.linkedTo, + source: info.source, + junk: info.junk, + mine: info.mine, + watch: info.watch, + sendFrom: info.sendFrom, + sendTo: info.sendTo, + name: info.name, + notes: info.notes, + }); + }, + updateToStealthAddress(state, info) { + // console.log(now() + " INFO dataModule:mutations.updateToStealthAddress: " + JSON.stringify(info, null, 2)); + Vue.set(state.addresses[info.stealthAddress], 'type', info.type); + Vue.set(state.addresses[info.stealthAddress], 'linkedTo', info.linkedTo); + Vue.set(state.addresses[info.stealthAddress], 'junk', info.junk); + Vue.set(state.addresses[info.stealthAddress], 'mine', info.mine); + Vue.set(state.addresses[info.stealthAddress], 'sendFrom', info.sendFrom); + Vue.set(state.addresses[info.stealthAddress], 'sendTo', info.sendTo); + }, + deleteAddress(state, address) { + Vue.delete(state.addresses, address); + }, + addFungibleMetadata(state, info) { + // console.log(now() + " INFO dataModule:mutations.addFungibleMetadata info: " + JSON.stringify(info, null, 2)); + if (!(info.chainId in state.tokens)) { + Vue.set(state.tokens, info.chainId, {}); + } + if (!(info.contract in state.tokens[info.chainId])) { + Vue.set(state.tokens[info.chainId], info.contract, { + type: info.type, + symbol: info.symbol, + name: info.name, + decimals: info.decimals, + totalSupply: info.totalSupply, + image: info.image, + junk: false, + active: false, + notes: null, + }); + } + }, + addExpiry(state, info) { + // console.log(now() + " INFO dataModule:mutations.addExpiry info: " + JSON.stringify(info, null, 2)); + const [ chainId, contract, tokenId, expiry ] = [ info.chainId, info.contract, info.tokenId, info.expiry ]; + if (!(chainId in state.expiries)) { + Vue.set(state.expiries, chainId, {}); + } + if (!(contract in state.expiries[chainId])) { + Vue.set(state.expiries[chainId], contract, {}); + } + if (!(tokenId in state.expiries[chainId][contract])) { + Vue.set(state.expiries[chainId][contract], tokenId, expiry); + } else { + if (expiry > state.expiries[chainId][contract][tokenId]) { + Vue.set(state.expiries[chainId][contract], tokenId, expiry); + } + } + }, + addNonFungibleContractMetadata(state, info) { + // console.log(now() + " INFO dataModule:mutations.addNonFungibleContractMetadata info: " + JSON.stringify(info, null, 2)); + if (!(info.chainId in state.tokens)) { + Vue.set(state.tokens, info.chainId, {}); + } + if (!(info.contract in state.tokens[info.chainId])) { + Vue.set(state.tokens[info.chainId], info.contract, { + type: info.type, + symbol: info.symbol, + name: info.name, + image: null, + junk: false, + tokens: {}, + }); + } + }, + addNonFungibleMetadata(state, info) { + console.log(now() + " INFO dataModule:mutations.addNonFungibleMetadata info: " + JSON.stringify(info, null, 2)); + const [ chainId, contract, tokenId ] = [ info.chainId, info.contract, info.tokenId ]; + if (!(chainId in state.tokens)) { + Vue.set(state.tokens, chainId, {}); + } + if (!(contract in state.tokens[chainId])) { + Vue.set(state.tokens[chainId], contract, { + type: info.type, + symbol: info.collectionSymbol || null, + name: info.collectionName || null, + slug: info.slug || null, + image: null, + junk: false, + tokens: {}, + }); + } + if (!(tokenId in state.tokens[chainId][contract].tokens)) { + // console.log(now() + " INFO dataModule:mutations.addNonFungibleMetadata new info: " + JSON.stringify(info, null, 2)); + Vue.set(state.tokens[chainId][contract].tokens, tokenId, { + name: info.name, + description: info.description, + image: info.image, + attributes: info.attributes, + active: false, + lastSale: info.lastSale || null, + price: info.price || null, + topBid: info.topBid || null, + }); + } else { + // console.log(now() + " INFO dataModule:mutations.addNonFungibleMetadata existing: " + JSON.stringify(info, null, 2)); + Vue.set(state.tokens[chainId][contract].tokens[tokenId], 'name', info.name); + Vue.set(state.tokens[chainId][contract].tokens[tokenId], 'description', info.description); + Vue.set(state.tokens[chainId][contract].tokens[tokenId], 'image', info.image); + Vue.set(state.tokens[chainId][contract].tokens[tokenId], 'attributes', info.attributes); + Vue.set(state.tokens[chainId][contract].tokens[tokenId], 'lastSale', info.lastSale || null); + Vue.set(state.tokens[chainId][contract].tokens[tokenId], 'price', info.price || null); + Vue.set(state.tokens[chainId][contract].tokens[tokenId], 'topBid', info.topBid || null); + } + }, + addStealthTransfer(state, info) { + // console.log(now() + " INFO dataModule:mutations.addStealthTransfer: " + JSON.stringify(info, null, 2)); + if (!(info.chainId in state.stealthTransfers)) { + Vue.set(state.stealthTransfers, info.chainId, {}); + } + if (!(info.blockNumber in state.stealthTransfers[info.chainId])) { + Vue.set(state.stealthTransfers[info.chainId], info.blockNumber, {}); + } + if (!(info.logIndex in state.stealthTransfers[info.chainId][info.blockNumber])) { + Vue.set(state.stealthTransfers[info.chainId][info.blockNumber], info.logIndex, info); + } + }, + setENS(state, info) { + // console.log(now() + " INFO dataModule:mutations.setENS info: " + JSON.stringify(info)); + if (info.name) { + Vue.set(state.ens, info.address, info.name); + } else { + if (state.ens[info.address]) { + Vue.delete(state.ens, info.address); + } + } + }, + addTimestamp(state, info) { + // console.log(now() + " INFO dataModule:mutations.addTimestamp info: " + JSON.stringify(info, null, 2)); + if (!(info.chainId in state.timestamps)) { + Vue.set(state.timestamps, info.chainId, {}); + } + if (!(info.blockNumber in state.timestamps[info.chainId])) { + Vue.set(state.timestamps[info.chainId], info.blockNumber, info.timestamp); + } + }, + updateName(state, info) { + // console.log(now() + " INFO dataModule:mutations.updateName info: " + JSON.stringify(info, null, 2)); + Vue.set(state.names, info.address, info.name); + }, + addTx(state, tx) { + // console.log(now() + " INFO dataModule:mutations.addTx tx: " + JSON.stringify(tx, null, 2)); + if (!(tx.chainId in state.txs)) { + Vue.set(state.txs, tx.chainId, {}); + } + if (!(tx.txHash in state.txs[tx.chainId])) { + Vue.set(state.txs[tx.chainId], tx.txHash, tx); + } + }, + + setExchangeRates(state, exchangeRates) { + // const dates = Object.keys(exchangeRates); + // dates.sort(); + // for (let date of dates) { + // console.log(date + "\t" + exchangeRates[date]); + // } + Vue.set(state, 'exchangeRates', exchangeRates); + }, + forceRefresh(state) { + Vue.set(state, 'forceRefresh', parseInt(state.forceRefresh) + 1); + // console.log(now() + " INFO dataModule:mutations.forceRefresh: " + state.forceRefresh); + }, + saveTxTags(state, info) { + if (!(info.txHash in state.txsInfo)) { + Vue.set(state.txsInfo, info.txHash, { + tags: info.tags, + }); + } else { + Vue.set(state.txsInfo[info.txHash], 'tags', info.tags); + } + }, + addTagToTxs(state, info) { + for (const txHash of Object.keys(info.txHashes)) { + if (!(txHash in state.txsInfo)) { + Vue.set(state.txsInfo, txHash, { + tags: [info.tag], + }); + } else { + const currentTags = state.txsInfo[txHash].tags || []; + if (!currentTags.includes(info.tag)) { + currentTags.push(info.tag); + Vue.set(state.txsInfo[txHash], 'tags', currentTags); + } + } + } + }, + removeTagFromTxs(state, info) { + for (const txHash of Object.keys(info.txHashes)) { + if (txHash in state.txsInfo) { + const currentTags = state.txsInfo[txHash].tags || []; + if (currentTags.includes(info.tag)) { + const newTags = currentTags.filter(e => e != info.tag); + if (newTags.length == 0 && Object.keys(state.txsInfo[txHash]).length == 1) { + Vue.delete(state.txsInfo, txHash); + } else { + Vue.set(state.txsInfo[txHash], 'tags', newTags); + } + } + } + } + }, + setSyncSection(state, info) { + console.log(now() + " INFO dataModule:mutations.setSyncSection info: " + JSON.stringify(info)); + state.sync.section = info.section; + state.sync.total = info.total; + }, + setSyncCompleted(state, completed) { + console.log(now() + " INFO dataModule:mutations.setSyncCompleted completed: " + completed + (state.sync.total ? ("/" + state.sync.total) : "") + " " + state.sync.section); + state.sync.completed = completed; + }, + setSyncHalt(state, halt) { + state.sync.halt = halt; + }, + }, + actions: { + async restoreState(context) { + console.log(now() + " INFO dataModule:actions.restoreState"); + if (Object.keys(context.state.addresses).length == 0) { + const db0 = new Dexie(context.state.db.name); + db0.version(context.state.db.version).stores(context.state.db.schemaDefinition); + for (let type of ['names', 'ens', 'addresses', 'expiries', 'timestamps', 'txs', 'tokens', 'balances', 'approvals', 'registry', 'stealthTransfers']) { + const data = await db0.cache.where("objectName").equals(type).toArray(); + if (data.length == 1) { + // console.log(now() + " INFO dataModule:actions.restoreState " + type + " => " + JSON.stringify(data[0].object, null, 2)); + context.commit('setState', { name: type, data: data[0].object }); + } + } + } + }, + async saveData(context, types) { + // console.log(now() + " INFO dataModule:actions.saveData - types: " + JSON.stringify(types)); + const db0 = new Dexie(context.state.db.name); + db0.version(context.state.db.version).stores(context.state.db.schemaDefinition); + for (let type of types) { + await db0.cache.put({ objectName: type, object: context.state[type] }).then(function() { + }).catch(function(error) { + console.log("error: " + error); + }); + } + db0.close(); + }, + + async toggleAddressField(context, info) { + // console.log(now() + " INFO dataModule:actions.toggleAddressField - info: " + JSON.stringify(info)); + await context.commit('toggleAddressField', info); + await context.dispatch('saveData', ['addresses']); + }, + async setAddressField(context, info) { + // console.log(now() + " INFO dataModule:actions.setAddressField - info: " + JSON.stringify(info)); + await context.commit('setAddressField', info); + await context.dispatch('saveData', ['addresses']); + }, + async updateFungibleTotalSupply(context, info) { + // console.log(now() + " INFO dataModule:actions.updateFungibleTotalSupply - info: " + JSON.stringify(info)); + const provider = new ethers.providers.Web3Provider(window.ethereum); + const interface = new ethers.Contract(info.contract, ERC20ABI, provider); + try { + const totalSupply = await interface.totalSupply(); + await context.commit('updateFungibleTotalSupply', { ...info, totalSupply: totalSupply && totalSupply.toString() || null }); + } catch (e) { + } + // await context.dispatch('saveData', ['tokens']); + }, + async toggleFungibleJunk(context, item) { + // console.log(now() + " INFO dataModule:actions.toggleFungibleJunk - item: " + JSON.stringify(item)); + await context.commit('toggleFungibleJunk', item); + await context.dispatch('saveData', ['tokens']); + }, + async toggleFungibleActive(context, item) { + // console.log(now() + " INFO dataModule:actions.toggleFungibleActive - item: " + JSON.stringify(item)); + await context.commit('toggleFungibleActive', item); + await context.dispatch('saveData', ['tokens']); + }, + async setFungibleField(context, item) { + // console.log(now() + " INFO dataModule:actions.setFungibleField - item: " + JSON.stringify(item)); + await context.commit('setFungibleField', item); + await context.dispatch('saveData', ['tokens']); + }, + async toggleNonFungibleJunk(context, item) { + // console.log(now() + " INFO dataModule:actions.toggleNonFungibleJunk - item: " + JSON.stringify(item)); + await context.commit('toggleNonFungibleJunk', item); + await context.dispatch('saveData', ['tokens']); + }, + async toggleNonFungibleActive(context, item) { + // console.log(now() + " INFO dataModule:actions.toggleNonFungibleActive - item: " + JSON.stringify(item)); + await context.commit('toggleNonFungibleActive', item); + await context.dispatch('saveData', ['tokens']); + }, + async setNonFungibleField(context, item) { + // console.log(now() + " INFO dataModule:actions.setNonFungibleField - item: " + JSON.stringify(item)); + await context.commit('setNonFungibleField', item); + await context.dispatch('saveData', ['tokens']); + }, + async addNonFungibleMetadata(context, info) { + // console.log(now() + " INFO dataModule:actions.addNonFungibleMetadata - info: " + JSON.stringify(info, null, 2)); + context.commit('addNonFungibleMetadata', info); + await context.dispatch('saveData', ['tokens']); + }, + + async deleteAddress(context, address) { + console.log(now() + " INFO dataModule:actions.deleteAddress - address: " + JSON.stringify(address, null, 2)); + await context.commit('deleteAddress', address); + await context.dispatch('saveData', ['addresses']); + }, + async saveTxTags(context, info) { + await context.commit('saveTxTags', info); + await context.dispatch('saveData', ['txsInfo']); + }, + async addTagToTxs(context, info) { + await context.commit('addTagToTxs', info); + await context.dispatch('saveData', ['txsInfo']); + }, + async removeTagFromTxs(context, info) { + await context.commit('removeTagFromTxs', info); + await context.dispatch('saveData', ['txsInfo']); + }, + async refreshNonFungibleMetadata(context, tokens) { + console.log(now() + " INFO dataModule:actions.refreshNonFungibleMetadata - token: " + JSON.stringify(tokens)); + const chainId = store.getters['connection/chainId']; + const reservoirPrefix = NETWORKS[chainId] && NETWORKS[chainId].reservoir || null; + if (reservoirPrefix) { + const BATCHSIZE = 40; // 50 causes the Reservoir API to fail for some fetches + const DELAYINMILLIS = 2500; + for (let i = 0; i < tokens.length && !context.state.sync.halt; i += BATCHSIZE) { + const batch = tokens.slice(i, parseInt(i) + BATCHSIZE); + let continuation = null; + do { + if (continuation) { + await delay(DELAYINMILLIS); + } + let url = reservoirPrefix + "tokens/v7?" + batch.map(e => 'tokens=' + e.contract + ':' + e.tokenId).join("&"); + url = url + (continuation != null ? "&continuation=" + continuation : ''); + url = url + "&limit=50&includeAttributes=true&includeTopBid=true&includeLastSale=true"; + console.log(url); + const data = await fetch(url).then(response => response.json()); + continuation = data.continuation; + if (data.tokens) { + for (let record of data.tokens) { + const token = parseReservoirTokenData(record); + // if (data.image) { + // const imageBase64 = await imageUrlToBase64(data.image); + // console.log("imageBase64: " + JSON.stringify(imageBase64, null, 2)); + // } + context.commit('addNonFungibleMetadata', token); + } + } + } while (continuation != null); + } + } + await context.dispatch('saveData', ['tokens']); + }, + + async requestReservoirMetadataRefresh(context, tokens) { + console.log(now() + " INFO dataModule:actions.requestReservoirMetadataRefresh - token: " + JSON.stringify(tokens)); + const chainId = store.getters['connection/chainId']; + const reservoirPrefix = NETWORKS[chainId] && NETWORKS[chainId].reservoir || null; + if (reservoirPrefix) { + const BATCHSIZE = 40; // 50 causes the Reservoir API to fail for some fetches + const DELAYINMILLIS = 2500; + for (let i = 0; i < tokens.length && !context.state.sync.halt; i += BATCHSIZE) { + const batch = tokens.slice(i, parseInt(i) + BATCHSIZE); + console.log("batch: " + JSON.stringify(batch)); + const tokenList = batch.map(e => e.contract + ':' + e.tokenId); + console.log("tokenList: " + JSON.stringify(tokenList)); + const options = { + method: 'POST', + // mode: 'no-cors', // cors, no-cors, *cors, same-origin + headers: { accept: '*/*', 'content-type': 'application/json', 'x-api-key': 'demo-api-key' }, + body: JSON.stringify({ + liquidityOnly: false, + overrideCoolDown: false, + tokens: tokenList, + // tokens: ['0xa1eB40c284C5B44419425c4202Fa8DabFF31006b:178'], + }), + }; + console.log("options: " + JSON.stringify(options, null, 2)); + + const url = reservoirPrefix + "tokens/refresh/v2"; + console.log(url); + fetch(reservoirPrefix + "tokens/refresh/v2", options) + .then(response => response.json()) + .then(response => console.log(response)) + .catch(err => console.error(err)); + // TODO: Handle response + + // let continuation = null; + // do { + // if (!continuation) { + // await delay(DELAYINMILLIS); + // } + // let url = reservoirPrefix + "tokens/v7?" + batch.map(e => 'tokens=' + e.contract + ':' + e.tokenId).join("&"); + // url = url + (continuation != null ? "&continuation=" + continuation : ''); + // url = url + "&limit=50&includeAttributes=true&includeTopBid=true&includeLastSale=true"; + // console.log(url); + // const data = await fetch(url).then(response => response.json()); + // continuation = data.continuation; + // if (data.tokens) { + // for (let record of data.tokens) { + // const token = parseReservoirTokenData(record); + // // console.log("token: " + JSON.stringify(token, null, 2)); + // context.commit('addNonFungibleMetadata', token); + // } + // } + // } while (continuation != null); + } + } + await context.dispatch('saveData', ['tokens']); + }, + + + async setSyncHalt(context, halt) { + context.commit('setSyncHalt', halt); + }, + async resetTokens(context) { + await context.commit('resetTokens'); + await context.dispatch('saveData', ['accounts']); + }, + async resetData(context) { + console.log(now() + " INFO dataModule:actions.resetData"); + const db = new Dexie(context.state.db.name); + db.version(context.state.db.version).stores(context.state.db.schemaDefinition); + await db.announcements.clear(); + await db.cache.clear(); + await db.registrations.clear(); + await db.tokenEvents.clear(); + db.close(); + }, + async addNewAddress(context, newAddress) { + console.log(now() + " INFO dataModule:actions.addNewAddress - newAddress: " + JSON.stringify(newAddress, null, 2) + ")"); + context.commit('addNewAddress', newAddress); + await context.dispatch('saveData', ['addresses']); + }, + // async restoreAccount(context, addressData) { + // console.log(now() + " INFO dataModule:actions.restoreAccount - addressData: " + JSON.stringify(addressData)); + // const provider = new ethers.providers.Web3Provider(window.ethereum); + // const ensReverseRecordsContract = new ethers.Contract(ENSREVERSERECORDSADDRESS, ENSREVERSERECORDSABI, provider); + // const accountInfo = await getAccountInfo(addressData.account, provider) + // if (accountInfo.account) { + // context.commit('addNewAddress', accountInfo); + // context.commit('addNewAccountInfo', addressData); + // } + // const names = await ensReverseRecordsContract.getNames([addressData.account]); + // const name = names.length == 1 ? names[0] : addressData.account; + // if (!(addressData.account in context.state.ensMap)) { + // context.commit('addENSName', { account: addressData.account, name }); + // } + // }, + // async restoreIntermediateData(context, info) { + // if (info.blocks && info.txs) { + // await context.commit('setState', { name: 'blocks', data: info.blocks }); + // await context.commit('setState', { name: 'txs', data: info.txs }); + // } + // }, + async syncIt(context, options) { + console.log(now() + " INFO dataModule:actions.syncIt - options: " + JSON.stringify(options)); + // const db = new Dexie(context.state.db.name); + // db.version(context.state.db.version).stores(context.state.db.schemaDefinition); + const provider = new ethers.providers.Web3Provider(window.ethereum); + const block = await provider.getBlock(); + const confirmations = store.getters['config/settings'].confirmations && parseInt(store.getters['config/settings'].confirmations) || 10; + const blockNumber = block && block.number || null; + const cryptoCompareAPIKey = store.getters['config/settings'].cryptoCompareAPIKey && store.getters['config/settings'].cryptoCompareAPIKey.length > 0 && store.getters['config/settings'].cryptoCompareAPIKey || null; + const chainId = store.getters['connection/chainId']; + const coinbase = store.getters['connection/coinbase']; + if (!(coinbase in context.state.addresses) && Object.keys(context.state.addresses).length == 0) { + context.commit('addNewAddress', { action: "addCoinbase", check: ["ethers", "tokens"] }); + } + + const parameter = { chainId, coinbase, blockNumber, confirmations, cryptoCompareAPIKey, ...options }; + if (options.stealthTransfers && !options.devThing) { + await context.dispatch('syncStealthTransfers', parameter); + } + if (options.stealthTransfers && !options.devThing) { + await context.dispatch('syncStealthTransfersData', parameter); + } + if (options.stealthTransfers && !options.devThing) { + await context.dispatch('identifyMyStealthTransfers', parameter); + } + if (options.stealthTransfers && !options.devThing) { + await context.dispatch('collateStealthTransfers', parameter); + } + + if (options.stealthMetaAddressRegistry && !options.devThing) { + await context.dispatch('syncRegistrations', parameter); + } + if (options.stealthMetaAddressRegistry && !options.devThing) { + await context.dispatch('syncRegistrationsData', parameter); + } + if (options.stealthMetaAddressRegistry && !options.devThing) { + await context.dispatch('collateRegistrations', parameter); + } + + if ((options.tokens || options.selectedContract) && !options.devThing) { + await context.dispatch('syncTokenEvents', parameter); + } + if ((options.tokens || options.fungiblesMetadata || options.nonFungiblesMetadata || options.selectedContract) && !options.devThing) { + await context.dispatch('computeBalances', parameter); + await context.dispatch('computeApprovals', parameter); + } + + if (options.devThing) { + await context.dispatch('computeApprovals', parameter); + } + + if (options.ensEvents && chainId == 1 && !options.devThing) { + await context.dispatch('syncENSEvents', parameter); + } + + if (options.fungiblesMetadata && !options.devThing) { + await context.dispatch('syncFungiblesMetadata', parameter); + } + if (options.nonFungiblesMetadata && !options.devThing) { + await context.dispatch('syncNonFungiblesMetadataFromReservoir', parameter); + // await context.dispatch('syncNonFungiblesMetadata', parameter); + } + if (options.ens && chainId == 1 && !options.devThing) { + await context.dispatch('syncReverseENS', parameter); + } + if (options.timestamps && !options.devThing) { + await context.dispatch('syncTokenEventTimestamps', parameter); + } + if (options.txData && !options.devThing) { + await context.dispatch('syncTokenEventTxData', parameter); + } + + await context.dispatch('collateNames', parameter); + // if (options.devThing) { + // console.log("Dev Thing"); + // } + // context.dispatch('saveData', ['addresses', 'registry' /*, 'blocks', 'txs', 'ensMap'*/]); + context.commit('setSyncSection', { section: null, total: null }); + context.commit('setSyncHalt', false); + context.commit('forceRefresh'); + }, + + async syncStealthTransfers(context, parameter) { + console.log(now() + " INFO dataModule:actions.syncStealthTransfers BEGIN: " + JSON.stringify(parameter)); + const db = new Dexie(context.state.db.name); + db.version(context.state.db.version).stores(context.state.db.schemaDefinition); + const provider = new ethers.providers.Web3Provider(window.ethereum); + + // Announcement (index_topic_1 uint256 schemeId, index_topic_2 address stealthAddress, index_topic_3 address caller, bytes ephemeralPublicKey, bytes metadata) + // 0x5f0eab8057630ba7676c49b4f21a0231414e79474595be8e4c432fbf6bf0f4e7 + const erc5564AnnouncerContract = new ethers.Contract(ERC5564ANNOUNCERADDRESS, ERC5564ANNOUNCERABI, provider); + let total = 0; + let t = this; + async function processLogs(fromBlock, toBlock, selectedContracts, selectedCallers, logs) { + total = parseInt(total) + logs.length; + context.commit('setSyncCompleted', total); + console.log(now() + " INFO dataModule:actions.syncStealthTransfers.processLogs: " + fromBlock + " - " + toBlock + " " + logs.length + " " + total); + const records = []; + for (const log of logs) { + if (!log.removed) { + // console.log(JSON.stringify(log, null, 2)); + const logData = erc5564AnnouncerContract.interface.parseLog(log); + const contract = log.address; + const caller = logData.args[2]; + // if (selectedContracts.includes(contract) && selectedCallers.includes(caller)) { + // console.log(" Processing: " + JSON.stringify(log)); + const transfers = []; + const metadata = logData.args[4]; + let segment = 0; + let part; + do { + part = metadata.substring(4 + (segment * 112), 4 + (segment * 112) + 112); + if (part.length == 112) { + const functionSelector = "0x" + part.substring(0, 8); + const token = ethers.utils.getAddress("0x" + part.substring(8, 48)); + const valueString = part.substring(48, 112) + const value = ethers.BigNumber.from("0x" + valueString).toString(); + transfers.push({ functionSelector, token, value }); + } + segment++; + } while (part.length == 112); + records.push( { + chainId: parameter.chainId, + blockNumber: parseInt(log.blockNumber), + logIndex: parseInt(log.logIndex), + txIndex: parseInt(log.transactionIndex), + txHash: log.transactionHash, + contract, + name: logData.name, + schemeId: parseInt(logData.args[0]), + stealthAddress: logData.args[1], + linkedTo: { + stealthMetaAddress: null, + address: null, + }, + caller, + ephemeralPublicKey: logData.args[3], + metadata: logData.args[4], + transfers, + confirmations: parameter.blockNumber - log.blockNumber, + timestamp: null, + tx: null, + }); + // } + } + } + // console.log("records: " + JSON.stringify(records, null, 2)); + if (records.length) { + await db.announcements.bulkAdd(records).then(function(lastKey) { + console.log(now() + " INFO dataModule:actions.syncStealthTransfers.bulkAdd lastKey: " + JSON.stringify(lastKey)); + }).catch(Dexie.BulkError, function(e) { + // console.log(now() + " INFO dataModule:actions.syncStealthTransfers.bulkAdd e: " + JSON.stringify(e.failures, null, 2)); + }); + } + } + async function getLogs(fromBlock, toBlock, selectedContracts, selectedCallers, processLogs) { + console.log(now() + " INFO dataModule:actions.syncStealthTransfers.getLogs: " + fromBlock + " - " + toBlock); + let split = false; + const maxLogScrapingSize = NETWORKS['' + parameter.chainId].maxLogScrapingSize || null; + if (!maxLogScrapingSize || (toBlock - fromBlock) <= maxLogScrapingSize) { + try { + const filter = { + // TODO: address: null, + address: ERC5564ANNOUNCERADDRESS, + fromBlock, + toBlock, + topics: [ + '0x5f0eab8057630ba7676c49b4f21a0231414e79474595be8e4c432fbf6bf0f4e7', + null, + null + ] + }; + const eventLogs = await provider.getLogs(filter); + await processLogs(fromBlock, toBlock, selectedContracts, selectedCallers, eventLogs); + } catch (e) { + split = true; + } + } else { + split = true; + } + if (split) { + const mid = parseInt((fromBlock + toBlock) / 2); + await getLogs(fromBlock, mid, selectedContracts, selectedCallers, processLogs); + await getLogs(parseInt(mid) + 1, toBlock, selectedContracts, selectedCallers, processLogs); + } + } + console.log(now() + " INFO dataModule:actions.syncStealthTransfers BEGIN"); + context.commit('setSyncSection', { section: 'Stealth Transfers', total: null }); + const selectedContracts = []; + const selectedCallers = []; + // for (const [chainId, chainData] of Object.entries(this.contracts)) { + // for (const [contract, contractData] of Object.entries(chainData)) { + // if (contractData.type == "announcer" && contractData.read) { + // selectedContracts.push(contract); + // } + // if (contractData.type == "caller" && contractData.read) { + // selectedCallers.push(contract); + // } + // } + // } + // console.log("selectedCallers: " + JSON.stringify(selectedCallers, null, 2)); + // if (selectedContracts.length > 0) { + const deleteCall = await db.announcements.where("confirmations").below(parameter.confirmations).delete(); + const latest = await db.announcements.where('[chainId+blockNumber+logIndex]').between([parameter.chainId, Dexie.minKey, Dexie.minKey],[parameter.chainId, Dexie.maxKey, Dexie.maxKey]).last(); + const startBlock = (parameter.incrementalSync && latest) ? parseInt(latest.blockNumber) + 1: 0; + await getLogs(startBlock, parameter.blockNumber, selectedContracts, selectedCallers, processLogs); + // } + console.log(now() + " INFO dataModule:actions.syncStealthTransfers END"); + }, + + async syncStealthTransfersData(context, parameter) { + console.log(now() + " INFO dataModule:actions.syncStealthTransfersData: " + JSON.stringify(parameter)); + const db = new Dexie(context.state.db.name); + db.version(context.state.db.version).stores(context.state.db.schemaDefinition); + const provider = new ethers.providers.Web3Provider(window.ethereum); + let total = 0; + let done = false; + do { + let data = await db.announcements.where('[chainId+blockNumber+logIndex]').between([parameter.chainId, Dexie.minKey, Dexie.minKey],[parameter.chainId, Dexie.maxKey, Dexie.maxKey]).offset(total).limit(context.state.DB_PROCESSING_BATCH_SIZE).toArray(); + console.log(now() + " INFO dataModule:actions.syncStealthTransfersData - data.length: " + data.length + ", first[0..9]: " + JSON.stringify(data.slice(0, 10).map(e => e.blockNumber + '.' + e.logIndex ))); + total = parseInt(total) + data.length; + done = data.length < context.state.DB_PROCESSING_BATCH_SIZE; + } while (!done); + console.log(now() + " INFO dataModule:actions.syncStealthTransfersData - total: " + total); + context.commit('setSyncSection', { section: 'Stealth Transfer Data', total }); + let rows = 0; + do { + let data = await db.announcements.where('[chainId+blockNumber+logIndex]').between([parameter.chainId, Dexie.minKey, Dexie.minKey],[parameter.chainId, Dexie.maxKey, Dexie.maxKey]).offset(rows).limit(context.state.DB_PROCESSING_BATCH_SIZE).toArray(); + console.log(now() + " INFO dataModule:actions.syncStealthTransfersData - data.length: " + data.length + ", first[0..9]: " + JSON.stringify(data.slice(0, 10).map(e => e.blockNumber + '.' + e.logIndex ))); + const records = []; + for (const item of data) { + if (item.timestamp == null) { + const block = await provider.getBlock(item.blockNumber); + item.timestamp = block.timestamp; + const tx = await provider.getTransaction(item.txHash); + const txReceipt = await provider.getTransactionReceipt(item.txHash); + item.tx = { + type: tx.type, + blockHash: tx.blockHash, + from: tx.from, + gasPrice: ethers.BigNumber.from(tx.gasPrice).toString(), + gasLimit: ethers.BigNumber.from(tx.gasLimit).toString(), + to: tx.to, + value: ethers.BigNumber.from(tx.value).toString(), + nonce: tx.nonce, + data: tx.to && tx.data || null, // Remove contract creation data to reduce memory footprint + chainId: tx.chainId, + contractAddress: txReceipt.contractAddress, + transactionIndex: txReceipt.transactionIndex, + gasUsed: ethers.BigNumber.from(txReceipt.gasUsed).toString(), + blockHash: txReceipt.blockHash, + logs: txReceipt.logs, + cumulativeGasUsed: ethers.BigNumber.from(txReceipt.cumulativeGasUsed).toString(), + effectiveGasPrice: ethers.BigNumber.from(txReceipt.effectiveGasPrice).toString(), + status: txReceipt.status, + type: txReceipt.type, + }; + records.push(item); + } + rows++; + context.commit('setSyncCompleted', rows); + } + if (records.length > 0) { + await db.announcements.bulkPut(records).then(function() { + }).catch(function(error) { + console.log(now() + " INFO dataModule:actions.syncStealthTransfersData.bulkPut error: " + error); + }); + } + done = data.length < context.state.DB_PROCESSING_BATCH_SIZE; + } while (!done); + + console.log(now() + " INFO dataModule:actions.syncStealthTransfersData END"); + }, + + async identifyMyStealthTransfers(context, parameter) { + + function checkStealthAddress(stealthAddress, ephemeralPublicKey, viewingPrivateKey, spendingPublicKey) { + const result = {}; + // console.log(now() + " INFO dataModule:actions.syncStealthTransfersData.checkStealthAddress - stealthAddress: " + stealthAddress + ", ephemeralPublicKey: " + ephemeralPublicKey + ", viewingPrivateKey: " + viewingPrivateKey + ", spendingPublicKey: " + spendingPublicKey); + result.sharedSecret = nobleCurves.secp256k1.getSharedSecret(viewingPrivateKey.substring(2), ephemeralPublicKey.substring(2), false); + result.hashedSharedSecret = ethers.utils.keccak256(result.sharedSecret.slice(1)); + result.hashedSharedSecretPoint = nobleCurves.secp256k1.ProjectivePoint.fromPrivateKey(result.hashedSharedSecret.substring(2)); + result.stealthPublicKey = nobleCurves.secp256k1.ProjectivePoint.fromHex(spendingPublicKey.substring(2)).add(result.hashedSharedSecretPoint); + result.stealthAddress = ethers.utils.computeAddress("0x" + result.stealthPublicKey.toHex(false)); + result.match = result.stealthAddress == stealthAddress; + return result; + } + + console.log(now() + " INFO dataModule:actions.identifyMyStealthTransfers: " + JSON.stringify(parameter)); + const db = new Dexie(context.state.db.name); + db.version(context.state.db.version).stores(context.state.db.schemaDefinition); + const provider = new ethers.providers.Web3Provider(window.ethereum); + + // const accounts = store.getters['data/accounts']; + const addresses = context.state.addresses; + // console.log(now() + " INFO dataModule:actions.identifyMyStealthTransfers addresses BEFORE: " + JSON.stringify(addresses, null, 2)); + const checkAddresses = []; + for (const [address, addressData] of Object.entries(addresses)) { + if (addressData.type == "stealthMetaAddress" && addressData.mine && addressData.viewingPrivateKey) { + checkAddresses.push({ address, ...addressData }); + } + } + // console.log(now() + " INFO dataModule:actions.identifyMyStealthTransfers - checkAddresses: " + JSON.stringify(checkAddresses.map(e => e.address))); + + let rows = 0; + let done = false; + do { + let data = await db.announcements.where('[chainId+blockNumber+logIndex]').between([parameter.chainId, Dexie.minKey, Dexie.minKey],[parameter.chainId, Dexie.maxKey, Dexie.maxKey]).offset(rows).limit(context.state.DB_PROCESSING_BATCH_SIZE).toArray(); + console.log(now() + " INFO dataModule:actions.identifyMyStealthTransfers - data.length: " + data.length + ", first[0..9]: " + JSON.stringify(data.slice(0, 10).map(e => e.blockNumber + '.' + e.logIndex ))); + const writeRecords = []; + for (const item of data) { + if (item.schemeId == ONLY_SUPPORTED_SCHEME_ID) { + const sender = item.tx && item.tx.from || null; + const senderData = sender && addresses[sender] || {}; + // console.log("sender: " + sender + " => " + JSON.stringify(senderData)); + item.iSent = senderData.mine || false; + item.iReceived = false; + delete item.linkedTo; + const stealthAddress = item.stealthAddress; + // const stealthAddressData = this.addresses[stealthAddress]; + const ephemeralPublicKey = item.ephemeralPublicKey; + for (const account of checkAddresses) { + const viewingPrivateKey = account.viewingPrivateKey; + const viewingPublicKey = account.viewingPublicKey; + const spendingPublicKey = account.spendingPublicKey; + try { + const status = checkStealthAddress(stealthAddress, ephemeralPublicKey, viewingPrivateKey, spendingPublicKey); + if (status && status.match) { + console.log(now() + " INFO dataModule:actions.identifyMyStealthTransfers - found stealthAddress: " + stealthAddress); + item.linkedTo = { stealthMetaAddress: account.address, address: account.linkedToAddress }; + item.iReceived = true; + if (stealthAddress in addresses) { + if (addresses[stealthAddress].type != "stealthAddress") { + context.commit('updateToStealthAddress', { + stealthAddress, + type: "stealthAddress", + linkedTo: { + stealthMetaAddress: account.address, + address: account.linkedToAddress, + }, + junk: false, + mine: true, + watch: true, + sendFrom: false, + sendTo: false, + }); + } + } else { + context.commit('addNewStealthAddress', { + stealthAddress, + type: "stealthAddress", + linkedTo: { + stealthMetaAddress: account.address, + address: account.linkedToAddress, + }, + source: "announcer", + junk: false, + mine: true, + watch: true, + sendFrom: false, + sendTo: false, + name: null, + notes: null, + check: [], + }); + } + break; + } + } catch (e) { + console.log("ERROR: " + e.message); + } + } + writeRecords.push(item); + } + } + if (writeRecords.length > 0) { + await db.announcements.bulkPut(writeRecords).then(function() { + }).catch(function(error) { + console.log(now() + " INFO dataModule:actions.identifyMyStealthTransfers bulkPut error: " + error); + }); + } + rows = parseInt(rows) + data.length; + done = data.length < context.state.DB_PROCESSING_BATCH_SIZE; + } while (!done); + // console.log(now() + " INFO dataModule:actions.identifyMyStealthTransfers addresses END: " + JSON.stringify(addresses, null, 2)); + context.commit('setState', { name: 'addresses', data: addresses }); + await context.dispatch('saveData', ['addresses']); + console.log(now() + " INFO dataModule:actions.identifyMyStealthTransfers END"); + }, + + async collateStealthTransfers(context, parameter) { + console.log(now() + " INFO dataModule:actions.collateStealthTransfers: " + JSON.stringify(parameter)); + const db = new Dexie(context.state.db.name); + db.version(context.state.db.version).stores(context.state.db.schemaDefinition); + const provider = new ethers.providers.Web3Provider(window.ethereum); + + let rows = 0; + let done = false; + do { + let data = await db.announcements.where('[chainId+blockNumber+logIndex]').between([parameter.chainId, Dexie.minKey, Dexie.minKey],[parameter.chainId, Dexie.maxKey, Dexie.maxKey]).offset(rows).limit(context.state.DB_PROCESSING_BATCH_SIZE).toArray(); + console.log(now() + " INFO dataModule:actions.collateStealthTransfers - data.length: " + data.length + ", first[0..9]: " + JSON.stringify(data.slice(0, 10).map(e => e.blockNumber + '.' + e.logIndex ))); + for (const item of data) { + if (item.schemeId == ONLY_SUPPORTED_SCHEME_ID) { + context.commit('addStealthTransfer', item); + } + } + rows = parseInt(rows) + data.length; + done = data.length < context.state.DB_PROCESSING_BATCH_SIZE; + } while (!done); + await context.dispatch('saveData', ['stealthTransfers']); + console.log(now() + " INFO dataModule:actions.collateStealthTransfers END"); + }, + + async syncRegistrations(context, parameter) { + console.log(now() + " INFO dataModule:actions.syncRegistrations BEGIN: " + JSON.stringify(parameter)); + const db = new Dexie(context.state.db.name); + db.version(context.state.db.version).stores(context.state.db.schemaDefinition); + const provider = new ethers.providers.Web3Provider(window.ethereum); + + // StealthMetaAddressSet (index_topic_1 address registrant, index_topic_2 uint256 schemeId, bytes stealthMetaAddress) + // 0x4e739a47dfa4fd3cfa92f8fe760cebe125565927e5c422cb28e7aa388a067af9 + const erc5564RegistryContract = new ethers.Contract(ERC6538REGISTRYADDRESS, ERC6538REGISTRYABI, provider); + let total = 0; + let t = this; + async function processLogs(fromBlock, toBlock, logs) { + total = parseInt(total) + logs.length; + context.commit('setSyncCompleted', total); + console.log(now() + " INFO dataModule:actions.syncRegistrations.processLogs: " + fromBlock + " - " + toBlock + " " + logs.length + " " + total); + const records = []; + for (const log of logs) { + if (!log.removed) { + try { + const logData = erc5564RegistryContract.interface.parseLog(log); + // console.log("logData: " + JSON.stringify(logData, null, 2)); + const [ contract, schemeId ] = [ log.address, parseInt(logData.args[1]) ]; + if (schemeId == ONLY_SUPPORTED_SCHEME_ID) { + records.push( { + chainId: parameter.chainId, + blockNumber: parseInt(log.blockNumber), + logIndex: parseInt(log.logIndex), + txIndex: parseInt(log.transactionIndex), + txHash: log.transactionHash, + contract, + name: logData.name, + registrant: ethers.utils.getAddress(logData.args[0]), + schemeId, + stealthMetaAddress: ethers.utils.toUtf8String(logData.args[2]), + mine: false, + confirmations: parameter.blockNumber - log.blockNumber, + timestamp: null, + tx: null, + }); + } + } catch (e) { + console.log(now() + " ERROR dataModule:actions.syncRegistrations.processLogs: " + e.message); + } + } + } + if (records.length) { + await db.registrations.bulkAdd(records).then(function(lastKey) { + console.log(now() + " INFO dataModule:actions.syncRegistrations bulkAdd lastKey: " + JSON.stringify(lastKey)); + }).catch(Dexie.BulkError, function(e) { + // console.log(now() + " INFO dataModule:actions.syncRegistrations bulkAdd error: " + JSON.stringify(e.failures, null, 2)); + }); + } + } + async function getLogs(fromBlock, toBlock, processLogs) { + console.log(now() + " INFO dataModule:actions.syncRegistrations.getLogs: " + fromBlock + " - " + toBlock); + let split = false; + const maxLogScrapingSize = NETWORKS['' + parameter.chainId].maxLogScrapingSize || null; + if (!maxLogScrapingSize || (toBlock - fromBlock) <= maxLogScrapingSize) { + try { + const filter = { + address: ERC6538REGISTRYADDRESS, + fromBlock, + toBlock, + topics: [ + '0x4e739a47dfa4fd3cfa92f8fe760cebe125565927e5c422cb28e7aa388a067af9', + null, + null + ] + }; + const eventLogs = await provider.getLogs(filter); + await processLogs(fromBlock, toBlock, eventLogs); + } catch (e) { + split = true; + } + } else { + split = true; + } + if (split) { + const mid = parseInt((fromBlock + toBlock) / 2); + await getLogs(fromBlock, mid, processLogs); + await getLogs(parseInt(mid) + 1, toBlock, processLogs); + } + } + console.log(now() + " INFO dataModule:actions.syncRegistrations BEGIN"); + context.commit('setSyncSection', { section: 'Stealth Meta-Address Registry', total: null }); + const deleteCall = await db.registrations.where("confirmations").below(parameter.confirmations).delete(); + const latest = await db.registrations.where('[chainId+blockNumber+logIndex]').between([parameter.chainId, Dexie.minKey, Dexie.minKey],[parameter.chainId, Dexie.maxKey, Dexie.maxKey]).last(); + // TODO: Handle incrementalSync? + const startBlock = (parameter.incrementalSync && latest) ? parseInt(latest.blockNumber) + 1: 0; + await getLogs(startBlock, parameter.blockNumber, processLogs); + console.log(now() + " INFO dataModule:actions.syncRegistrations END"); + }, + + async syncRegistrationsData(context, parameter) { + console.log(now() + " INFO dataModule:actions.syncRegistrationsData: " + JSON.stringify(parameter)); + const db = new Dexie(context.state.db.name); + db.version(context.state.db.version).stores(context.state.db.schemaDefinition); + const provider = new ethers.providers.Web3Provider(window.ethereum); + let total = 0; + let done = false; + do { + let data = await db.registrations.where('[chainId+blockNumber+logIndex]').between([parameter.chainId, Dexie.minKey, Dexie.minKey],[parameter.chainId, Dexie.maxKey, Dexie.maxKey]).offset(total).limit(context.state.DB_PROCESSING_BATCH_SIZE).toArray(); + console.log(now() + " INFO dataModule:actions.syncRegistrationsData - data.length: " + data.length + ", first[0..9]: " + JSON.stringify(data.slice(0, 10).map(e => e.blockNumber + '.' + e.logIndex ))); + total = parseInt(total) + data.length; + done = data.length < context.state.DB_PROCESSING_BATCH_SIZE; + } while (!done); + console.log(now() + " INFO dataModule:actions.syncRegistrationsData - total: " + total); + context.commit('setSyncSection', { section: 'Stealth Meta-Address Registry Data', total }); + let rows = 0; + do { + let data = await db.registrations.where('[chainId+blockNumber+logIndex]').between([parameter.chainId, Dexie.minKey, Dexie.minKey],[parameter.chainId, Dexie.maxKey, Dexie.maxKey]).offset(rows).limit(context.state.DB_PROCESSING_BATCH_SIZE).toArray(); + console.log(now() + " INFO dataModule:actions.syncRegistrationsData - data.length: " + data.length + ", first[0..9]: " + JSON.stringify(data.slice(0, 10).map(e => e.blockNumber + '.' + e.logIndex ))); + const records = []; + for (const item of data) { + if (item.timestamp == null) { + const block = await provider.getBlock(item.blockNumber); + item.timestamp = block.timestamp; + const tx = await provider.getTransaction(item.txHash); + const txReceipt = await provider.getTransactionReceipt(item.txHash); + item.tx = { + type: tx.type, + blockHash: tx.blockHash, + from: tx.from, + gasPrice: ethers.BigNumber.from(tx.gasPrice).toString(), + gasLimit: ethers.BigNumber.from(tx.gasLimit).toString(), + to: tx.to, + value: ethers.BigNumber.from(tx.value).toString(), + nonce: tx.nonce, + data: tx.to && tx.data || null, // Remove contract creation data to reduce memory footprint + chainId: tx.chainId, + contractAddress: txReceipt.contractAddress, + transactionIndex: txReceipt.transactionIndex, + gasUsed: ethers.BigNumber.from(txReceipt.gasUsed).toString(), + blockHash: txReceipt.blockHash, + logs: txReceipt.logs, + cumulativeGasUsed: ethers.BigNumber.from(txReceipt.cumulativeGasUsed).toString(), + effectiveGasPrice: ethers.BigNumber.from(txReceipt.effectiveGasPrice).toString(), + status: txReceipt.status, + type: txReceipt.type, + }; + records.push(item); + } + } + if (records.length > 0) { + await db.registrations.bulkPut(records).then(function() { + }).catch(function(error) { + // console.log(now() + " ERROR dataModule:actions.syncRegistrationsData.bulkPut: " + error); + }); + } + rows = parseInt(rows) + data.length; + context.commit('setSyncCompleted', rows); + done = data.length < context.state.DB_PROCESSING_BATCH_SIZE; + } while (!done); + console.log(now() + " INFO dataModule:actions.syncRegistrationsData END"); + }, + + async collateRegistrations(context, parameter) { + console.log(now() + " INFO dataModule:actions.collateRegistrations: " + JSON.stringify(parameter)); + const db = new Dexie(context.state.db.name); + db.version(context.state.db.version).stores(context.state.db.schemaDefinition); + const provider = new ethers.providers.Web3Provider(window.ethereum); + + const registry = context.state.registry; + if (!(parameter.chainId in registry)) { + registry[parameter.chainId] = {}; + } + // console.log("registry BEFORE: " + JSON.stringify(registry, null, 2)); + let rows = 0; + let done = false; + do { + let data = await db.registrations.where('[chainId+blockNumber+logIndex]').between([parameter.chainId, Dexie.minKey, Dexie.minKey],[parameter.chainId, Dexie.maxKey, Dexie.maxKey]).offset(rows).limit(context.state.DB_PROCESSING_BATCH_SIZE).toArray(); + console.log(now() + " INFO dataModule:actions.collateRegistrations - data.length: " + data.length + ", first[0..9]: " + JSON.stringify(data.slice(0, 10).map(e => e.blockNumber + '.' + e.logIndex ))); + for (const item of data) { + if (item.schemeId == ONLY_SUPPORTED_SCHEME_ID) { + // console.log(now() + " INFO dataModule:actions.collateRegistrations - processing: " + JSON.stringify(item, null, 2)); + const stealthMetaAddress = item.stealthMetaAddress.match(/^st:eth:0x[0-9a-fA-F]{132}$/) ? item.stealthMetaAddress : STEALTHMETAADDRESS0; + registry[parameter.chainId][item.registrant] = stealthMetaAddress; + } + } + rows = parseInt(rows) + data.length; + done = data.length < context.state.DB_PROCESSING_BATCH_SIZE; + } while (!done); + context.commit('setState', { name: 'registry', data: registry }); + await context.dispatch('saveData', ['registry']); + console.log(now() + " INFO dataModule:actions.collateRegistrations END"); + }, + + async syncTokenEvents(context, parameter) { + console.log(now() + " INFO dataModule:actions.syncTokenEvents: " + JSON.stringify(parameter)); + const db = new Dexie(context.state.db.name); + db.version(context.state.db.version).stores(context.state.db.schemaDefinition); + const provider = new ethers.providers.Web3Provider(window.ethereum); + const erc1155Interface = new ethers.utils.Interface(ERC1155ABI); + + // ERC-20 & ERC-721 Transfer (index_topic_1 address from, index_topic_2 address to, index_topic_3 uint256 id) + // [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', accountAs32Bytes, null ], + // [ '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', null, accountAs32Bytes ], + + // ERC-1155 TransferSingle (index_topic_1 address operator, index_topic_2 address from, index_topic_3 address to, uint256 id, uint256 value) + // [ '0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62', null, accountAs32Bytes, null ], + // [ '0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62', null, null, accountAs32Bytes ], + + // ERC-1155 TransferBatch (index_topic_1 address operator, index_topic_2 address from, index_topic_3 address to, uint256[] ids, uint256[] values) + // [ '0x4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb', null, accountAs32Bytes, null ], + // [ '0x4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb', null, null, accountAs32Bytes ], + + // ENS:ETH Registrar Controller NameRenewed (string name, index_topic_1 bytes32 label, uint256 cost, uint256 expires) + // [ '0x3da24c024582931cfaf8267d8ed24d13a82a8068d5bd337d30ec45cea4e506ae', [tokenIds] ], + + // WETH Deposit (index_topic_1 address dst, uint256 wad) + // 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c + // WETH Withdrawal (index_topic_1 address src, uint256 wad) + // 0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65 + + // CryptoPunks 0x6Ba6f2207e343923BA692e5Cae646Fb0F566DB8D & 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB + // CryptoCats 0x9508008227b6b3391959334604677d60169EF540 0x19c320b43744254ebdBcb1F1BD0e2a3dc08E01dc 0x088C6Ad962812b5Aa905BA6F3c5c145f9D4C079f + // Assign (index_topic_1 address to, uint256 punkIndex) + // 0x8a0e37b73a0d9c82e205d4d1a3ff3d0b57ce5f4d7bccf6bac03336dc101cb7ba + + // MoonCats 0x60cd862c9C687A9dE49aecdC3A99b74A4fc54aB6 + // CatRescued (index_topic_1 address to, index_topic_2 bytes5 catId) + // 0x80d2c1a6c75f471130a64fd71b80dc7208f721037766fb7decf53e10f82211cd + + // ERC-20 Approval (index_topic_1 address owner, index_topic_2 address spender, uint256 value) + // 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 + // ERC-721 Approval (index_topic_1 address owner, index_topic_2 address approved, index_topic_3 uint256 tokenId) + // 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 + // ERC-721 ApprovalForAll (index_topic_1 address owner, index_topic_2 address operator, bool approved) + // 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31 + // ERC-1155 ApprovalForAll (index_topic_1 address account, index_topic_2 address operator, bool approved) + // 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31 + let total = 0; + async function getLogs(fromBlock, toBlock, section, selectedAddresses) { + console.log(now() + " INFO dataModule:actions.syncTokenEvents.getLogs - fromBlock: " + fromBlock + ", toBlock: " + toBlock + ", section: " + section); + let split = false; + const maxLogScrapingSize = NETWORKS['' + parameter.chainId].maxLogScrapingSize || null; + if (!maxLogScrapingSize || (toBlock - fromBlock) <= maxLogScrapingSize) { + const address = parameter.selectedContract; + try { + let topics = null; + if (section == 0) { + topics = [[ + '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', + '0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c', + '0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65', + '0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925', + '0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31', + '0x8a0e37b73a0d9c82e205d4d1a3ff3d0b57ce5f4d7bccf6bac03336dc101cb7ba', + '0x80d2c1a6c75f471130a64fd71b80dc7208f721037766fb7decf53e10f82211cd', + ], + selectedAddresses, + null + ]; + } else if (section == 1) { + topics = [[ + '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef' + ], + null, + selectedAddresses + ]; + } else if (section == 2) { + topics = [[ + '0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62', + '0x4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb', + ], + null, + selectedAddresses + ]; + } else if (section == 3) { + topics = [ [ + '0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62', + '0x4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb', + ], + null, + null, + selectedAddresses + ]; + } + const logs = await provider.getLogs({ address, fromBlock, toBlock, topics }); + total = parseInt(total) + logs.length; + context.commit('setSyncCompleted', toBlock); + console.log(now() + " INFO dataModule:actions.syncTokenEvents - fromBlock: " + fromBlock + ", toBlock: " + toBlock + ", section: " + section + ", logs.length: " + logs.length + ", total: " + total); + const records = parseEventLogs(logs, parameter.chainId, parameter.blockNumber); + if (records.length) { + await db.tokenEvents.bulkAdd(records).then(function(lastKey) { + console.log(now() + " INFO dataModule:actions.syncTokenEvents.bulkAdd lastKey: " + JSON.stringify(lastKey)); + }).catch(Dexie.BulkError, function(e) { + // console.log(now() + " INFO dataModule:actions.syncTokenEvents.bulkAdd BulkError: " + JSON.stringify(e.failures, null, 2)); + }); + } + } catch (e) { + split = true; + } + } else { + split = true; + } + if (split) { + const mid = parseInt((fromBlock + toBlock) / 2); + await getLogs(fromBlock, mid, section, selectedAddresses); + await getLogs(parseInt(mid) + 1, toBlock, section, selectedAddresses); + } + } + console.log(now() + " INFO dataModule:actions.syncTokenEvents BEGIN"); + const selectedAddresses = []; + for (const [address, addressData] of Object.entries(context.state.addresses)) { + if (address.substring(0, 2) == "0x" && !addressData.junk && addressData.watch) { + selectedAddresses.push('0x000000000000000000000000' + address.substring(2, 42).toLowerCase()); + } + } + // console.log("selectedAddresses: " + JSON.stringify(selectedAddresses)); + if (selectedAddresses.length > 0) { + const deleteCall = await db.tokenEvents.where("confirmations").below(parameter.confirmations).delete(); + const latest = await db.tokenEvents.where('[chainId+blockNumber+logIndex]').between([parameter.chainId, Dexie.minKey, Dexie.minKey],[parameter.chainId, Dexie.maxKey, Dexie.maxKey]).last(); + // const startBlock = (parameter.incrementalSync && latest) ? parseInt(latest.blockNumber) + 1: 0; + const startBlock = 0; + for (let section = 0; section < 4; section++) { + context.commit('setSyncSection', { section: 'Token Events #' + (section + 1), total: parameter.blockNumber }); + context.commit('setSyncCompleted', startBlock); + await getLogs(startBlock, parameter.blockNumber, section, selectedAddresses); + } + } + console.log(now() + " INFO dataModule:actions.syncTokenEvents END"); + }, + + async syncTokenEventTimestamps(context, parameter) { + console.log(now() + " INFO dataModule:actions.syncTokenEventTimestamps: " + JSON.stringify(parameter)); + const db = new Dexie(context.state.db.name); + db.version(context.state.db.version).stores(context.state.db.schemaDefinition); + const provider = new ethers.providers.Web3Provider(window.ethereum); + let rows = 0; + let done = false; + const existingTimestamps = context.state.timestamps[parameter.chainId] || {}; + const newBlocks = {}; + do { + let data = await db.tokenEvents.where('[chainId+blockNumber+logIndex]').between([parameter.chainId, Dexie.minKey, Dexie.minKey],[parameter.chainId, Dexie.maxKey, Dexie.maxKey]).offset(rows).limit(context.state.DB_PROCESSING_BATCH_SIZE).toArray(); + console.log(now() + " INFO dataModule:actions.syncTokenEventTimestamps - data.length: " + data.length + ", first[0..9]: " + JSON.stringify(data.slice(0, 10).map(e => e.blockNumber + '.' + e.logIndex ))); + for (const item of data) { + if (!(item.blockNumber in existingTimestamps) && !(item.blockNumber in newBlocks)) { + newBlocks[item.blockNumber] = true; + } + } + rows += data.length; + done = data.length < context.state.DB_PROCESSING_BATCH_SIZE; + } while (!done); + const total = Object.keys(newBlocks).length; + console.log(now() + " INFO dataModule:actions.syncTokenEventTimestamps - total: " + total); + context.commit('setSyncSection', { section: 'Token Event Timestamps', total }); + let completed = 0; + for (let blockNumber of Object.keys(newBlocks)) { + const block = await provider.getBlock(parseInt(blockNumber)); + context.commit('addTimestamp', { + chainId: parameter.chainId, + blockNumber, + timestamp: block.timestamp, + }); + completed++; + context.commit('setSyncCompleted', completed); + if (context.state.sync.halt) { + break; + } + } + // console.log("context.state.timestamps: " + JSON.stringify(context.state.timestamps, null, 2)); + await context.dispatch('saveData', ['timestamps']); + console.log(now() + " INFO dataModule:actions.syncTokenEventTimestamps END"); + }, + + async syncTokenEventTxData(context, parameter) { + console.log(now() + " INFO dataModule:actions.syncTokenEventTxData: " + JSON.stringify(parameter)); + const db = new Dexie(context.state.db.name); + db.version(context.state.db.version).stores(context.state.db.schemaDefinition); + const provider = new ethers.providers.Web3Provider(window.ethereum); + let rows = 0; + let done = false; + const existingTxs = context.state.txs[parameter.chainId] || {}; + const newTxs = {}; + do { + let data = await db.tokenEvents.where('[chainId+blockNumber+logIndex]').between([parameter.chainId, Dexie.minKey, Dexie.minKey],[parameter.chainId, Dexie.maxKey, Dexie.maxKey]).offset(rows).limit(context.state.DB_PROCESSING_BATCH_SIZE).toArray(); + console.log(now() + " INFO dataModule:actions.syncTokenEventTxData - data.length: " + data.length + ", first[0..9]: " + JSON.stringify(data.slice(0, 10).map(e => e.blockNumber + '.' + e.logIndex ))); + for (const item of data) { + if (!(item.txHash in existingTxs) && !(item.txHash in newTxs)) { + newTxs[item.txHash] = true; + } + } + rows += data.length; + done = data.length < context.state.DB_PROCESSING_BATCH_SIZE; + } while (!done); + const total = Object.keys(newTxs).length; + console.log(now() + " INFO dataModule:actions.syncTokenEventTxData - total: " + total); + context.commit('setSyncSection', { section: 'Token Event Transaction Data', total }); + let completed = 0; + for (let txHash of Object.keys(newTxs)) { + const tx = await provider.getTransaction(txHash); + const txReceipt = await provider.getTransactionReceipt(txHash); + context.commit('addTx', { + chainId: parameter.chainId, + txHash, + type: tx.type, + blockHash: tx.blockHash, + from: tx.from, + gasPrice: ethers.BigNumber.from(tx.gasPrice).toString(), + gasLimit: ethers.BigNumber.from(tx.gasLimit).toString(), + to: tx.to, + value: ethers.BigNumber.from(tx.value).toString(), + nonce: tx.nonce, + data: tx.to && tx.data || null, // Remove contract creation data to reduce memory footprint + contractAddress: txReceipt.contractAddress, + transactionIndex: txReceipt.transactionIndex, + gasUsed: ethers.BigNumber.from(txReceipt.gasUsed).toString(), + blockHash: txReceipt.blockHash, + logs: txReceipt.logs, + cumulativeGasUsed: ethers.BigNumber.from(txReceipt.cumulativeGasUsed).toString(), + effectiveGasPrice: ethers.BigNumber.from(txReceipt.effectiveGasPrice).toString(), + status: txReceipt.status, + type: txReceipt.type, + }); + completed++; + context.commit('setSyncCompleted', completed); + if (context.state.sync.halt) { + break; + } + } + // console.log("context.state.txs: " + JSON.stringify(context.state.txs, null, 2)); + await context.dispatch('saveData', ['txs']); + console.log(now() + " INFO dataModule:actions.syncTokenEventTxData END"); + }, + + async computeBalances(context, parameter) { + console.log(now() + " INFO dataModule:actions.computeBalances: " + JSON.stringify(parameter)); + const db = new Dexie(context.state.db.name); + db.version(context.state.db.version).stores(context.state.db.schemaDefinition); + const provider = new ethers.providers.Web3Provider(window.ethereum); + console.log(now() + " INFO dataModule:actions.computeBalances BEGIN"); + const selectedAddressesMap = {}; + for (const [address, addressData] of Object.entries(context.state.addresses)) { + if (address.substring(0, 2) == "0x" && !addressData.junk && addressData.watch) { + selectedAddressesMap[address] = true; + } + } + // console.log("selectedAddressesMap: " + Object.keys(selectedAddressesMap)); + let rows = 0; + let done = false; + const collator = {}; + do { + let data = await db.tokenEvents.where('[chainId+blockNumber+logIndex]').between([parameter.chainId, Dexie.minKey, Dexie.minKey],[parameter.chainId, Dexie.maxKey, Dexie.maxKey]).offset(rows).limit(context.state.DB_PROCESSING_BATCH_SIZE).toArray(); + console.log(now() + " INFO dataModule:actions.computeBalances - data.length: " + data.length + ", first[0..9]: " + JSON.stringify(data.slice(0, 10).map(e => e.blockNumber + '.' + e.logIndex ))); + for (const item of data) { + const contract = item.contract; + if (item.type == "Transfer" || item.type == "TransferSingle" || item.type == "TransferBatch") { + if (!(contract in collator)) { + if (item.eventType == "erc20") { + collator[contract] = { + type: item.eventType, + balances: {}, + }; + } else { + collator[contract] = { + type: item.eventType, + tokens: {}, + }; + } + } + if (item.eventType == "erc20" && item.type == "Transfer") { + if (item.from in selectedAddressesMap) { + if (!(item.from in collator[contract].balances)) { + collator[contract].balances[item.from] = "0"; + } + collator[contract].balances[item.from] = ethers.BigNumber.from(collator[contract].balances[item.from]).sub(item.tokens).toString(); + } + if (item.to in selectedAddressesMap) { + if (!(item.to in collator[contract].balances)) { + collator[contract].balances[item.to] = "0"; + } + collator[contract].balances[item.to] = ethers.BigNumber.from(collator[contract].balances[item.to]).add(item.tokens).toString(); + } + } else if (item.eventType == "erc721" && item.type == "Transfer") { + if (item.from in selectedAddressesMap || item.to in selectedAddressesMap) { + collator[contract].tokens[item.tokenId] = item.to; + } + } else if (item.eventType == "erc1155" && item.type == "TransferSingle") { + if (item.from in selectedAddressesMap) { + if (!(item.tokenId in collator[contract].tokens)) { + collator[contract].tokens[item.tokenId] = {}; + } + if (item.from in collator[contract].tokens[item.tokenId]) { + collator[contract].tokens[item.tokenId][item.from] = ethers.BigNumber.from(collator[contract].tokens[item.tokenId][item.from]).sub(item.value).toString(); + if (collator[contract].tokens[item.tokenId][item.from] == "0") { + delete collator[contract].tokens[item.tokenId][item.from]; + } + } + } + if (item.to in selectedAddressesMap) { + if (!(item.tokenId in collator[contract].tokens)) { + collator[contract].tokens[item.tokenId] = {}; + } + if (!(item.to in collator[contract].tokens[item.tokenId])) { + collator[contract].tokens[item.tokenId][item.to] = "0"; + } + collator[contract].tokens[item.tokenId][item.to] = ethers.BigNumber.from(collator[contract].tokens[item.tokenId][item.to]).add(item.value).toString(); + } + } else if (item.eventType == "erc1155" && item.type == "TransferBatch") { + for (const [index, tokenId] of item.tokenIds.entries()) { + if (item.from in selectedAddressesMap) { + if (!(tokenId in collator[contract].tokens)) { + collator[contract].tokens[tokenId] = {}; + } + if (item.from in collator[contract].tokens[tokenId]) { + collator[contract].tokens[tokenId][item.from] = ethers.BigNumber.from(collator[contract].tokens[tokenId][item.from]).sub(item.values[index]).toString(); + if (collator[contract].tokens[tokenId][item.from] == "0") { + delete collator[contract].tokens[tokenId][item.from]; + } + } + } + if (item.to in selectedAddressesMap) { + if (!(tokenId in collator[contract].tokens)) { + collator[contract].tokens[tokenId] = {}; + } + if (!(item.to in collator[contract].tokens[tokenId])) { + collator[contract].tokens[tokenId][item.to] = "0"; + } + collator[contract].tokens[tokenId][item.to] = ethers.BigNumber.from(collator[contract].tokens[tokenId][item.to]).add(item.values[index]).toString(); + } + } + } + } + } + rows = parseInt(rows) + data.length; + done = data.length < context.state.DB_PROCESSING_BATCH_SIZE; + } while (!done); + // console.log("collator: " + JSON.stringify(collator, null, 2)); + context.commit('updateBalances', { chainId: parameter.chainId, balances: collator }); + await context.dispatch('saveData', ['balances']); + console.log(now() + " INFO dataModule:actions.computeBalances END"); + }, + + async computeApprovals(context, parameter) { + console.log(now() + " INFO dataModule:actions.computeApprovals: " + JSON.stringify(parameter)); + const db = new Dexie(context.state.db.name); + db.version(context.state.db.version).stores(context.state.db.schemaDefinition); + const provider = new ethers.providers.Web3Provider(window.ethereum); + console.log(now() + " INFO dataModule:actions.computeApprovals BEGIN"); + const selectedAddressesMap = {}; + for (const [address, addressData] of Object.entries(context.state.addresses)) { + if (address.substring(0, 2) == "0x" && !addressData.junk && addressData.watch) { + selectedAddressesMap[address] = true; + } + } + let rows = 0; + let done = false; + const collator = {}; + do { + let data = await db.tokenEvents.where('[chainId+blockNumber+logIndex]').between([parameter.chainId, Dexie.minKey, Dexie.minKey],[parameter.chainId, Dexie.maxKey, Dexie.maxKey]).offset(rows).limit(context.state.DB_PROCESSING_BATCH_SIZE).toArray(); + console.log(now() + " INFO dataModule:actions.computeApprovals - data.length: " + data.length + ", first[0..9]: " + JSON.stringify(data.slice(0, 10).map(e => e.blockNumber + '.' + e.logIndex ))); + for (const item of data) { + if ((item.type == "Approval" || item.type == "ApprovalForAll") && item.owner in selectedAddressesMap) { + const [ eventType, type, contract, owner, spender ] = [ item.eventType, item.type, item.contract, item.owner, item.spender ]; + const tokenType = context.state.tokens[parameter.chainId] && context.state.tokens[parameter.chainId][contract] && context.state.tokens[parameter.chainId][contract].type || null; + if (!(owner in collator)) { + collator[owner] = {}; + } + if (!(contract in collator[owner])) { + if (eventType == "erc20") { + collator[owner][contract] = {}; + } else { + collator[owner][contract] = { + tokens: {}, + approvalForAll: {}, + }; + } + } + if (eventType == "erc20") { + collator[owner][contract][spender] = item.tokens; + } else if (eventType == "erc721" && type == "Approval") { + // TODO + const testing = false; + if (item.approved == ADDRESS0 && !testing) { + if (item.tokenId in collator[owner][contract].tokens) { + delete collator[owner][contract].tokens[item.tokenId]; + } + } else { + collator[owner][contract].tokens[item.tokenId] = item.approved; + } + } else if (type == "ApprovalForAll") { + // TODO: Can remove !! after new db change + collator[owner][contract].approvalForAll[item.operator] = !!item.approved; + } + } + } + rows = parseInt(rows) + data.length; + done = data.length < context.state.DB_PROCESSING_BATCH_SIZE; + } while (!done); + // console.log("collator: " + JSON.stringify(collator, null, 2)); + context.commit('updateApprovals', { chainId: parameter.chainId, approvals: collator }); + await context.dispatch('saveData', ['approvals']); + console.log(now() + " INFO dataModule:actions.computeApprovals END"); + }, + + async syncENSEvents(context, parameter) { + console.log(now() + " INFO dataModule:actions.syncENSEvents: " + JSON.stringify(parameter)); + const db = new Dexie(context.state.db.name); + db.version(context.state.db.version).stores(context.state.db.schemaDefinition); + const provider = new ethers.providers.Web3Provider(window.ethereum); + const oldETHRegistarControllerInterface = new ethers.utils.Interface(ENS_OLDETHREGISTRARCONTROLLER_ABI); + const ethRegistarControllerInterface = new ethers.utils.Interface(ENS_ETHREGISTRARCONTROLLER_ABI); + const nameWrapperInterface = new ethers.utils.Interface(ENS_NAMEWRAPPER_ABI); + + const mapERC721ToERC1155 = {}; + let total = 0; + let t = this; + async function processLogs(logs) { + total = parseInt(total) + logs.length; + context.commit('setSyncCompleted', total); + console.log(now() + " INFO dataModule:actions.syncENSEvents.processLogs - logs.length: " + logs.length + ", total: " + total); + const records = []; + for (const log of logs) { + if (!log.removed) { + // TODO console.log(JSON.stringify(log)); + const contract = log.address; + let eventRecord = null; + if (log.topics[0] == "0xca6abbe9d7f11422cb6ca7629fbf6fe9efb1c621f71ce8f02b9f2a230097404f" && ((contract == ENS_OLDETHREGISTRARCONTROLLER_ADDRESS || contract == ENS_OLDETHREGISTRARCONTROLLER1_ADDRESS || contract == ENS_OLDETHREGISTRARCONTROLLER2_ADDRESS) || contract == ENS_OLDETHREGISTRARCONTROLLER1_ADDRESS || contract == ENS_OLDETHREGISTRARCONTROLLER2_ADDRESS)) { + // ERC-721 NameRegistered (string name, index_topic_1 bytes32 label, index_topic_2 address owner, uint256 cost, uint256 expires) + const logData = oldETHRegistarControllerInterface.parseLog(log); + const [name, label, owner, cost, expires] = logData.args; + const labelhashDecimals = ethers.BigNumber.from(label).toString(); + eventRecord = { contract: ENS_ERC721_ADDRESS, type: "NameRegistered", name, label, tokenId: labelhashDecimals, owner, cost: cost.toString(), expiry: parseInt(expires) }; + } else if (log.topics[0] == "0x3da24c024582931cfaf8267d8ed24d13a82a8068d5bd337d30ec45cea4e506ae" && (contract == ENS_OLDETHREGISTRARCONTROLLER_ADDRESS || contract == ENS_OLDETHREGISTRARCONTROLLER1_ADDRESS || contract == ENS_OLDETHREGISTRARCONTROLLER2_ADDRESS)) { + // NameRenewed (string name, index_topic_1 bytes32 label, uint256 cost, uint256 expires) + const logData = oldETHRegistarControllerInterface.parseLog(log); + const [name, label, cost, expires] = logData.args; + const labelhashDecimals = ethers.BigNumber.from(label).toString(); + eventRecord = { contract: ENS_ERC721_ADDRESS, type: "NameRenewed", name, label, tokenId: labelhashDecimals, cost: cost.toString(), expiry: parseInt(expires) }; + } else if (log.topics[0] == "0x3da24c024582931cfaf8267d8ed24d13a82a8068d5bd337d30ec45cea4e506ae" && contract == ENS_ETHREGISTRARCONTROLLER_ADDRESS) { + // NameRenewed (string name, index_topic_1 bytes32 label, uint256 cost, uint256 expires) + const logData = ethRegistarControllerInterface.parseLog(log); + const [name, label, cost, expires] = logData.args; + const labelhashDecimals = ethers.BigNumber.from(label).toString(); + eventRecord = { contract: ENS_ERC721_ADDRESS, type: "NameRenewed", name, label, tokenId: labelhashDecimals, cost: cost.toString(), expiry: parseInt(expires) }; + } else if (log.topics[0] == "0x8ce7013e8abebc55c3890a68f5a27c67c3f7efa64e584de5fb22363c606fd340" && contract == ENS_NAMEWRAPPER_ADDRESS) { + // NameWrapped (index_topic_1 bytes32 node, bytes name, address owner, uint32 fuses, uint64 expiry) + const logData = nameWrapperInterface.parseLog(log); + const [node, name, owner, fuses, expiry] = logData.args; + let parts = decodeNameWrapperBytes(name); + let nameString = parts.join("."); + let label = null; + let labelhash = null; + let labelhashDecimals = null; + if (parts.length >= 2 && parts[parts.length - 1] == "eth") { + label = parts[parts.length - 2]; + labelhash = ethers.utils.solidityKeccak256(["string"], [label]); + labelhashDecimals = ethers.BigNumber.from(labelhash).toString(); + } + const namehashDecimals = ethers.BigNumber.from(node).toString(); + const subdomain = parts.length >= 3 && parts[parts.length - 3] || null; + eventRecord = { contract, type: "NameWrapped", namehash: node, tokenId: namehashDecimals, name: nameString, label, labelhash, subdomain, owner, fuses, expiry: parseInt(expiry), expirym90: moment.unix(parseInt(expiry)).subtract(90, 'days').unix() }; + if (!subdomain) { + ens721TokenIds.push(labelhashDecimals); + mapERC721ToERC1155[labelhashDecimals] = namehashDecimals; + } + } else { + console.log(now() + " INFO dataModule:actions.syncENSEvents.processLogs - NOT HANDLED: " + JSON.stringify(log)); + } + if (eventRecord) { + let remapToERC1155 = null; + if (eventRecord.type == "NameRegistered" || eventRecord.type == "NameRenewed") { + if (eventRecord.tokenId in mapERC721ToERC1155) { + remapToERC1155 = mapERC721ToERC1155[eventRecord.tokenId]; + console.log(now() + " INFO dataModule:actions.syncENSEvents.processLogs - Remapping ERC-721 to ERC-1155: " + eventRecord.tokenId + " to " + remapToERC1155); + } + } + if (remapToERC1155) { + context.commit('addExpiry', { + chainId: parameter.chainId, + ...eventRecord, + contract: ENS_ERC1155_ADDRESS, + tokenId: remapToERC1155, + }); + } + context.commit('addExpiry', { + chainId: parameter.chainId, + ...eventRecord, + }); + } + } + } + } + + console.log(now() + " INFO dataModule:actions.syncENSEvents BEGIN"); + const ens721TokenIds = []; + const ens1155TokenIds = []; + for (const [contract, contractData] of Object.entries(context.state.balances[parameter.chainId] || {})) { + if (contract == ENS_ERC721_ADDRESS || contract == ENS_ERC1155_ADDRESS) { + for (const [tokenId, tokenData] of Object.entries(contractData.tokens)) { + // if (tokenId == "27727362303445643037535452095569739813950020376856883309402147522300287323280") { + // console.log(tokenId + " => " + JSON.stringify(tokenData)); + // const tokenMetadata = context.state.tokens[parameter.chainId] && context.state.tokens[parameter.chainId][contract] && context.state.tokens[parameter.chainId][contract].tokens[tokenId] || {}; + // console.log(" tokenMetadata: " + JSON.stringify(tokenMetadata, null, 2)); + if (contract == ENS_ERC721_ADDRESS) { + ens721TokenIds.push(tokenId); + } else { + ens1155TokenIds.push(tokenId); + } + // } + } + } + } + // TODO console.log("ens721TokenIds: " + JSON.stringify(ens721TokenIds)); + // console.log("ens1155TokenIds: " + JSON.stringify(ens1155TokenIds)); + // return; + const BATCHSIZE = 100; + context.commit('setSyncSection', { section: 'ENS Events', total: null }); + context.commit('setSyncCompleted', 0); + + // ERC-1155 portraits.eth 27727362303445643037535452095569739813950020376856883309402147522300287323280 + // ERC-1155 yourmum.lovesyou.eth 57229065116737680790555199455465332171886850449809000367294662727325932836690 + // - ENS: Name Wrapper 0xD4416b13d2b3a9aBae7AcD5D6C2BbDBE25686401 NameWrapped (index_topic_1 bytes32 node, bytes name, address owner, uint32 fuses, uint64 expiry) 0x8ce7013e8abebc55c3890a68f5a27c67c3f7efa64e584de5fb22363c606fd340 + // [ '0x8ce7013e8abebc55c3890a68f5a27c67c3f7efa64e584de5fb22363c606fd340', namehash, null ], + for (let i = 0; i < ens1155TokenIds.length && !context.state.sync.halt; i += BATCHSIZE) { + const tokenIds = ens1155TokenIds.slice(i, parseInt(i) + BATCHSIZE).map(e => "0x" + ethers.BigNumber.from(e).toHexString().slice(2).padStart(64, '0')); + try { + let topics = null; + topics = [[ + '0x8ce7013e8abebc55c3890a68f5a27c67c3f7efa64e584de5fb22363c606fd340', + ], + tokenIds, + null, + ]; + const logs = await provider.getLogs({ address: null, fromBlock: 0, toBlock: parameter.blockNumber, topics }); + await processLogs(logs); + } catch (e) { + console.log(now() + " INFO dataModule:actions.syncENSEvents - getLogs ERROR: " + e.message); + } + } + + // console.log("ens721TokenIds: " + JSON.stringify(ens721TokenIds)); + // 925.eth ERC-721 0x57f1887a8bf19b14fc0df6fd9b2acc9af147ea85:53835211818918528779359817553631021141919078878710948845228773628660104698081 + // - ENS: Old ETH Registrar Controller 0x283Af0B28c62C092C9727F1Ee09c02CA627EB7F5 NameRegistered (string name, index_topic_1 bytes32 label, index_topic_2 address owner, uint256 cost, uint256 expires) 0xca6abbe9d7f11422cb6ca7629fbf6fe9efb1c621f71ce8f02b9f2a230097404f + // [ '0xca6abbe9d7f11422cb6ca7629fbf6fe9efb1c621f71ce8f02b9f2a230097404f', namehash, null ], + // - ENS: Old ETH Registrar Controller 0x283Af0B28c62C092C9727F1Ee09c02CA627EB7F5 NameRenewed (string name, index_topic_1 bytes32 label, uint256 cost, uint256 expires) 0x3da24c024582931cfaf8267d8ed24d13a82a8068d5bd337d30ec45cea4e506ae + // [ '0x3da24c024582931cfaf8267d8ed24d13a82a8068d5bd337d30ec45cea4e506ae', namehash, null ], + for (let i = 0; i < ens721TokenIds.length && !context.state.sync.halt; i += BATCHSIZE) { + const tokenIds = ens721TokenIds.slice(i, parseInt(i) + BATCHSIZE).map(e => "0x" + ethers.BigNumber.from(e).toHexString().slice(2).padStart(64, '0')); + try { + let topics = [[ + '0xca6abbe9d7f11422cb6ca7629fbf6fe9efb1c621f71ce8f02b9f2a230097404f', + '0x3da24c024582931cfaf8267d8ed24d13a82a8068d5bd337d30ec45cea4e506ae', + ], + tokenIds, + null, + ]; + const logs = await provider.getLogs({ address: null, fromBlock: 0, toBlock: parameter.blockNumber, topics }); + await processLogs(logs); + } catch (e) { + console.log(now() + " INFO dataModule:actions.syncENSEvents - getLogs ERROR: " + e.message); + } + } + + await context.dispatch('saveData', ['expiries']); + console.log(now() + " INFO dataModule:actions.syncENSEvents END"); + }, + + async syncFungiblesMetadata(context, parameter) { + console.log(now() + " INFO dataModule:actions.syncFungiblesMetadata: " + JSON.stringify(parameter)); + const db = new Dexie(context.state.db.name); + db.version(context.state.db.version).stores(context.state.db.schemaDefinition); + const provider = new ethers.providers.Web3Provider(window.ethereum); + console.log(now() + " INFO dataModule:actions.syncFungiblesMetadata BEGIN"); + const contractsToProcess = {}; + for (const [contract, contractData] of Object.entries(context.state.balances[parameter.chainId] || {})) { + if (contractData.type == "erc20") { + if (!context.state.tokens[parameter.chainId] || !context.state.tokens[parameter.chainId][contract]) { + contractsToProcess[contract] = contractData; + } + } + } + context.commit('setSyncSection', { section: 'Fungibles Metadata', total: Object.keys(contractsToProcess).length }); + let completed = 0; + for (const [contract, contractData] of Object.entries(contractsToProcess)) { + context.commit('setSyncCompleted', completed); + const interface = new ethers.Contract(contract, ERC20ABI, provider); + let symbol = null; + let name = null; + let decimals = null; + let totalSupply = null; + try { + symbol = await interface.symbol(); + } catch (e) { + } + try { + name = await interface.name(); + } catch (e) { + } + try { + decimals = await interface.decimals(); + } catch (e) { + } + try { + totalSupply = await interface.totalSupply(); + } catch (e) { + } + await delay(1000); + const erc20Logos = NETWORKS['' + parameter.chainId].erc20Logos || []; + let image = null; + for (let i = 0; i < erc20Logos.length && !image; i++) { + const url = erc20Logos[i].replace(/\${contract}/, contract); + image = await imageUrlToBase64(url); + } + console.log(now() + " INFO dataModule:actions.syncFungiblesMetadata: " + contract + " " + contractData.type + " " + symbol + " " + name + " " + decimals + " " + totalSupply); + context.commit('addFungibleMetadata', { + chainId: parameter.chainId, + contract, + symbol: symbol && symbol.trim() || null, + name: name && name.trim() || null, + decimals: decimals, + totalSupply: totalSupply && totalSupply.toString() || null, + image, + ...contractData, + }); + completed++; + if ((completed % 10) == 0) { + await context.dispatch('saveData', ['tokens']); + } + if (context.state.sync.halt) { + break; + } + } + await context.dispatch('saveData', ['tokens']); + console.log(now() + " INFO dataModule:actions.syncFungiblesMetadata END"); + }, + + async syncNonFungiblesMetadata(context, parameter) { + console.log(now() + " INFO dataModule:actions.syncNonFungiblesMetadata: " + JSON.stringify(parameter)); + const db = new Dexie(context.state.db.name); + db.version(context.state.db.version).stores(context.state.db.schemaDefinition); + const provider = new ethers.providers.Web3Provider(window.ethereum); + console.log(now() + " INFO dataModule:actions.syncNonFungiblesMetadata BEGIN"); + const FETCH_TIMEOUT_MILLIS = 15000; + const contractsToProcess = {}; + const tokensToProcess = {}; + let totalTokensToProcess = 0; + for (const [contract, balance] of Object.entries(context.state.balances[parameter.chainId] || {})) { + if (balance.type == "erc721" || balance.type == "erc1155") { + if (!context.state.tokens[parameter.chainId] || !context.state.tokens[parameter.chainId][contract]) { + contractsToProcess[contract] = balance; + } + for (const [tokenId, tokenData] of Object.entries(balance.tokens)) { + if (!context.state.tokens[parameter.chainId] || !context.state.tokens[parameter.chainId][contract] || !context.state.tokens[parameter.chainId][contract].tokens[tokenId] || !context.state.tokens[parameter.chainId][contract].tokens[tokenId].name) { + if (!(contract in tokensToProcess)) { + tokensToProcess[contract] = {}; + } + tokensToProcess[contract][tokenId] = tokenData; + totalTokensToProcess++; + } + } + } + } + context.commit('setSyncSection', { section: 'Non-Fungibles Contract Metadata', total: Object.keys(contractsToProcess).length }); + let completed = 0; + for (const [contract, contractData] of Object.entries(contractsToProcess)) { + console.log("Processing: " + contract + " => " + JSON.stringify(contractData)); + context.commit('setSyncCompleted', completed); + const interface = new ethers.Contract(contract, ERC721ABI, provider); + let symbol = null; + let name = null; + if (contractData.type == "erc721") { + try { + symbol = await interface.symbol(); + } catch (e) { + } + try { + name = await interface.name(); + } catch (e) { + } + } + console.log(now() + " INFO dataModule:actions.syncNonFungiblesMetadata: " + contract + " " + contractData.type + " " + symbol + " " + name); + context.commit('addNonFungibleContractMetadata', { + chainId: parameter.chainId, + contract, + symbol, + name, + ...contractData, + }); + completed++; + if ((completed % 10) == 0) { + await context.dispatch('saveData', ['tokens']); + } + if (context.state.sync.halt) { + break; + } + } + await context.dispatch('saveData', ['tokens']); + + completed = 0; + context.commit('setSyncSection', { section: 'Non-Fungible Token Metadata', total: totalTokensToProcess }); + context.commit('setSyncCompleted', 0); + // data:application/json;base64, 0x72A94e6c51CB06453B84c049Ce1E1312f7c05e2c Wiiides + // https:// -> ipfs:// 0x31385d3520bCED94f77AaE104b406994D8F2168C BGANPUNKV2 + // data:application/json;base64, 0x1C60841b70821dcA733c9B1a26dBe1a33338bD43 GLICPIXXXVER002 + // IPFS data in another contract 0xC2C747E0F7004F9E8817Db2ca4997657a7746928 Hashmask + // No tokenURI 0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85 ENS + // TODO ? 0xd4416b13d2b3a9abae7acd5d6c2bbdbe25686401 ENS Name Wrapper + // IPFS retrieval failure 0xbe9371326F91345777b04394448c23E2BFEaa826 OSP Gemesis + + for (const [contract, contractData] of Object.entries(tokensToProcess)) { + const contractType = context.state.balances[parameter.chainId][contract].type; + console.log(contract + " => " + contractType); + for (const [tokenId, tokenData] of Object.entries(contractData)) { + context.commit('setSyncCompleted', completed); + try { + let tokenURIResult = null; + if (contract == ENS_ERC721_ADDRESS || contract == ENS_ERC1155_ADDRESS) { + tokenURIResult = "https://metadata.ens.domains/mainnet/" + contract + "/" + tokenId; + // } else if (contract == HASHMASK) { + // // Cannot access to server CORS configuration tokenURIResult = "https://hashmap.azurewebsites.net/getMask/" + tokenId; + // tokenURIResult = "https://api.reservoir.tools/tokens/v7?tokens=" + contract + "%3A" + tokenId + "&includeAttributes=true"; + } else { + if (contractType == "erc721") { + const interface = new ethers.Contract(contract, ERC721ABI, provider); + tokenURIResult = await interface.tokenURI(tokenId); + } else if (contractType == "erc1155") { + const interface = new ethers.Contract(contract, ERC1155ABI, provider); + tokenURIResult = await interface.uri(tokenId); + // console.log("ERC-1155 tokenURIResult: " + tokenURIResult); + } + } + // console.log("FIRST: " + contract + "/" + tokenId + " => " + JSON.stringify(tokenURIResult)); + let name = null; + let description = null; + let attributes = null; + let imageSource = null; + let image = null; + let expiry = null; + let expired = false; + if (tokenURIResult && tokenURIResult.substring(0, 29) == "data:application/json;base64,") { + const decodedJSON = atob(tokenURIResult.substring(29)); + const data = JSON.parse(decodedJSON); + name = data.name || undefined; + description = data.description || undefined; + attributes = data.attributes || {}; + image = data.image || undefined; + context.commit('addNonFungibleMetadata', { + chainId: parameter.chainId, + contract, + tokenId, + name, + description, + image, + attributes, + }); + } else if (tokenURIResult && (tokenURIResult.substring(0, 7) == "ipfs://" || tokenURIResult.substring(0, 8) == "https://")) { + let metadataFile = null; + if (tokenURIResult.substring(0, 12) == "ipfs://ipfs/") { + metadataFile = "https://ipfs.io/" + tokenURIResult.substring(7) + } else if (tokenURIResult.substring(0, 7) == "ipfs://") { + metadataFile = "https://ipfs.io/ipfs/" + tokenURIResult.substring(7); + } else { + metadataFile = tokenURIResult; + } + // let metadataFile = tokenURIResult.substring(0, 7) == "ipfs://" ? ("https://ipfs.io/ipfs/" + tokenURIResult.substring(7)) : tokenURIResult; + // console.log("tokenURIResult: " + tokenURIResult + ", metadataFile: " + metadataFile); + + // console.log("metadataFile: " + JSON.stringify(metadataFile, null, 2)); + if (contractType == "erc1155") { + // console.log("ERC-1155 metadataFile BEFORE: " + JSON.stringify(metadataFile, null, 2)); + metadataFile = metadataFile.replace(/0x{id}/, tokenId).replace(/{id}/, tokenId); + // console.log("ERC-1155 metadataFile AFTER: " + JSON.stringify(metadataFile, null, 2)); + } + try { + const metadataFileContent = await fetch(metadataFile, { mode: 'cors', signal: AbortSignal.timeout(FETCH_TIMEOUT_MILLIS) }).then(response => response.json()); + // console.log("metadataFile: " + metadataFile + " => " + JSON.stringify(metadataFileContent, null, 2)); + + if (contract == ENS_ERC721_ADDRESS || contract == ENS_ERC1155_ADDRESS) { + if (metadataFileContent && metadataFileContent.message) { + // metadataFileContent: { + // "message": "'©god.eth' is already been expired at Fri, 29 Sep 2023 06:31:14 GMT." + // } + // console.log("EXPIRED: " + metadataFileContent.message); + let inputString; + [inputString, name, expiryString] = metadataFileContent.message.match(/'(.*)'.*at\s(.*)\./) || [null, null, null] + expiry = moment.utc(expiryString).unix(); + console.log("EXPIRED - name: '" + name + "', expiryString: '" + expiryString + "', expiry: " + expiry); + expired = true; + context.commit('addNonFungibleMetadata', { + chainId: parameter.chainId, + contract, + tokenId, + created: null, + registration: null, + expiry, + name: name, + description: "Expired '" + name + "'", + image: null, + attributes: [], + }); + } else { // if (metadataFileContent && metadataFileContent.attributes) { + if (contract == ENS_ERC721_ADDRESS) { + const createdRecord = metadataFileContent.attributes.filter(e => e.trait_type == "Created Date"); + created = createdRecord.length == 1 && createdRecord[0].value / 1000 || null; + const registrationRecord = metadataFileContent.attributes.filter(e => e.trait_type == "Registration Date"); + registration = registrationRecord.length == 1 && registrationRecord[0].value / 1000 || null; + const expiryRecord = metadataFileContent.attributes.filter(e => e.trait_type == "Expiration Date"); + expiry = expiryRecord.length == 1 && expiryRecord[0].value / 1000 || null; + const attributes = metadataFileContent.attributes || []; + attributes.sort((a, b) => { + return ('' + a.trait_type).localeCompare(b.trait_type); + }); + context.commit('addNonFungibleMetadata', { + chainId: parameter.chainId, + contract, + tokenId, + created, + registration, + expiry, + name: metadataFileContent.name || null, + description: metadataFileContent.name || null, + image: metadataFileContent.image || null, + attributes, + }); + } else if (contract == ENS_ERC1155_ADDRESS) { + const createdRecord = metadataFileContent.attributes.filter(e => e.trait_type == "Created Date"); + created = createdRecord.length == 1 && createdRecord[0].value / 1000 || null; + const expiryRecord = metadataFileContent.attributes.filter(e => e.trait_type == "Namewrapper Expiry Date"); + expiry = expiryRecord.length == 1 && expiryRecord[0].value / 1000 || null; + const attributes = metadataFileContent.attributes || []; + attributes.sort((a, b) => { + return ('' + a.trait_type).localeCompare(b.trait_type); + }); + context.commit('addNonFungibleMetadata', { + chainId: parameter.chainId, + contract, + tokenId, + created, + expiry, + name: metadataFileContent.name || null, + description: metadataFileContent.name || null, + image: metadataFileContent.image || null, + attributes, + }); + } + } + } else { + console.log("NON-ENS"); + const attributes = metadataFileContent.attributes || []; + attributes.sort((a, b) => { + return ('' + a.trait_type).localeCompare(b.trait_type); + }); + const image = metadataFileContent.image || null; + console.log(contract + "/" + tokenId + " => " + image); + context.commit('addNonFungibleMetadata', { + chainId: parameter.chainId, + contract, + tokenId, + name: metadataFileContent.name || null, + description: metadataFileContent.name || null, + image: metadataFileContent.image || null, + attributes, + }); + } + } catch (e1) { + if (e1.name === 'AbortError') { + console.error("TIMEOUT: " + e1.message); + } else { + console.error("ERROR: " + e1.message); + } + } + } + } catch (e) { + console.error(e.message); + } + completed++; + if ((completed % 10) == 0) { + await context.dispatch('saveData', ['tokens']); + } + if (context.state.sync.halt) { + break; + } + } + if (context.state.sync.halt) { + break; + } + // console.log("context.state.tokens: " + JSON.stringify(context.state.tokens, null, 2)); + } + await context.dispatch('saveData', ['tokens']); + console.log(now() + " INFO dataModule:actions.syncNonFungiblesMetadata END"); + }, + + async syncNonFungiblesMetadataFromReservoir(context, parameter) { + console.log(now() + " INFO dataModule:actions.syncNonFungiblesMetadataFromReservoir: " + JSON.stringify(parameter)); + const db = new Dexie(context.state.db.name); + db.version(context.state.db.version).stores(context.state.db.schemaDefinition); + const provider = new ethers.providers.Web3Provider(window.ethereum); + const FETCH_TIMEOUT_MILLIS = 15000; + const tokensToProcess = {}; + let totalTokensToProcess = 0; + for (const [contract, balance] of Object.entries(context.state.balances[parameter.chainId] || {})) { + if (balance.type == "erc721" || balance.type == "erc1155") { + for (const [tokenId, tokenData] of Object.entries(balance.tokens)) { + if (!context.state.tokens[parameter.chainId] || !context.state.tokens[parameter.chainId][contract] || !context.state.tokens[parameter.chainId][contract].tokens[tokenId] || !context.state.tokens[parameter.chainId][contract].tokens[tokenId].name) { + if (!(contract in tokensToProcess)) { + tokensToProcess[contract] = {}; + } + tokensToProcess[contract][tokenId] = tokenData; + totalTokensToProcess++; + } + } + } + } + let completed = 0; + context.commit('setSyncSection', { section: 'Non-Fungible Token Metadata', total: totalTokensToProcess }); + context.commit('setSyncCompleted', 0); + const tokens = []; + for (const [contract, contractData] of Object.entries(tokensToProcess)) { + for (const [tokenId, tokenData] of Object.entries(contractData)) { + tokens.push({ contract, tokenId }); + } + } + const reservoirPrefix = NETWORKS[parameter.chainId] && NETWORKS[parameter.chainId].reservoir || null; + if (reservoirPrefix) { + const BATCHSIZE = 40; // 50 causes the Reservoir API to fail for some fetches + const DELAYINMILLIS = 2500; + for (let i = 0; i < tokens.length && !context.state.sync.halt; i += BATCHSIZE) { + const batch = tokens.slice(i, parseInt(i) + BATCHSIZE); + let continuation = null; + do { + if (continuation) { + await delay(DELAYINMILLIS); + } + let url = reservoirPrefix + "tokens/v7?" + batch.map(e => 'tokens=' + e.contract + ':' + e.tokenId).join("&"); + url = url + (continuation != null ? "&continuation=" + continuation : ''); + url = url + "&limit=50&includeAttributes=true&includeTopBid=true&includeLastSale=true"; + console.log(url); + const data = await fetch(url).then(response => response.json()); + continuation = data.continuation; + if (data.tokens) { + for (let record of data.tokens) { + const token = parseReservoirTokenData(record); + context.commit('addNonFungibleMetadata', token); + completed++; + if ((completed % 250) == 0) { + await context.dispatch('saveData', ['tokens']); + } + } + } + } while (continuation != null); + context.commit('setSyncCompleted', completed); + } + } + await context.dispatch('saveData', ['tokens']); + console.log(now() + " INFO dataModule:actions.syncNonFungiblesMetadataFromReservoir END"); + }, + + async syncReverseENS(context, parameter) { + console.log(now() + " INFO dataModule:actions.syncReverseENS BEGIN: " + JSON.stringify(parameter)); + const db = new Dexie(context.state.db.name); + db.version(context.state.db.version).stores(context.state.db.schemaDefinition); + const provider = new ethers.providers.Web3Provider(window.ethereum); + const owners = {}; + for (const [address, addressData] of Object.entries(context.state.addresses)) { + if (addressData.type == "address" && !addressData.junk) { + owners[address] = true; + } + } + console.log(now() + " INFO dataModule:actions.syncReverseENS - owners: " + JSON.stringify(owners)); + context.commit('setSyncSection', { section: "ENS", total: Object.keys(owners).length }); + let completed = 0; + const ensReverseRecordsContract = new ethers.Contract(ENSREVERSERECORDSADDRESS, ENSREVERSERECORDSABI, provider); + const addresses = Object.keys(owners); + const ENSOWNERBATCHSIZE = 25; // Can do 200, but incorrectly misconfigured reverse ENS causes the whole call to fail + for (let i = 0; i < addresses.length; i += ENSOWNERBATCHSIZE) { + const batch = addresses.slice(i, parseInt(i) + ENSOWNERBATCHSIZE); + try { + const allnames = await ensReverseRecordsContract.getNames(batch); + for (let j = 0; j < batch.length; j++) { + const address = batch[j]; + const name = allnames[j] && ethers.utils.isValidName(allnames[j]) && allnames[j] || null; + // const imageUrl = name && ("https://metadata.ens.domains/mainnet/avatar/" + name) || null; + // console.log("imageUrl: " + JSON.stringify(imageUrl)); + // const image = name && imageUrlToBase64(imageUrl) || null; + // console.log("image: " + JSON.stringify(image)); + context.commit('setENS', { address, name }); + } + } catch (e) { + for (let j = 0; j < batch.length; j++) { + try { + const address = batch[j]; + const allnames = await ensReverseRecordsContract.getNames([address]); + const name = allnames[0] && ethers.utils.isValidName(allnames[0]) && allnames[0] || null; + context.commit('setENS', { address, name }); + } catch (e1) { + console.log("Error - address: " + batch[j] + ", message: " + e1.message); + } + } + } + completed += batch.length; + context.commit('setSyncCompleted', completed); + } + context.dispatch('saveData', ['ens']); + }, + + async collateNames(context, parameter) { + console.log(now() + " INFO dataModule:actions.collateNames BEGIN: " + JSON.stringify(parameter)); + for (const [address, addressData] of Object.entries(CONTRACTS)) { + if (!(address in context.state.names)) { + context.commit('updateName', { address, name: addressData.name }); + } + } + for (const [contract, contractData] of Object.entries(context.state.tokens[parameter.chainId] || {})) { + if (contractData.name && !(contract in context.state.names)) { + context.commit('updateName', { address: contract, name: contractData.name }); + } + } + for (const [address, addressData] of Object.entries(context.state.addresses)) { + if (address.substring(0, 2) == "0x") { + if (addressData.name && addressData.name.length > 0 && !(address in context.state.names)) { + context.commit('updateName', { address, name: addressData.name }); + } + } + } + for (const [address, name] of Object.entries(context.state.ens)) { + if (!(address in context.state.names)) { + context.commit('updateName', { address, name }); + } + } + // console.log(now() + " INFO dataModule:actions.collateNames - context.state.names: " + JSON.stringify(context.state.names, null, 2)); + context.dispatch('saveData', ['names']); + }, + + async syncImportExchangeRates(context, parameter) { + const reportingCurrency = store.getters['config/settings'].reportingCurrency; + console.log(now() + " INFO dataModule:actions.syncImportExchangeRates - reportingCurrency: " + reportingCurrency); + const MAXDAYS = 2000; + const MINDATE = moment("2015-07-30"); + let toTs = moment(); + const results = {}; + while (toTs.year() >= 2015) { + let days = toTs.diff(MINDATE, 'days'); + if (days > MAXDAYS) { + days = MAXDAYS; + } + let url = "https://min-api.cryptocompare.com/data/v2/histoday?fsym=ETH&tsym=" + reportingCurrency + "&toTs=" + toTs.unix() + "&limit=" + days; + if (parameter.cryptoCompareAPIKey) { + url = url + "&api_key=" + parameter.cryptoCompareAPIKey; + } + console.log(url); + const data = await fetch(url) + .then(response => response.json()) + .catch(function(e) { + console.log("error: " + e); + }); + for (day of data.Data.Data) { + results[moment.unix(day.time).format("YYYYMMDD")] = day.close; + } + toTs = moment(toTs).subtract(MAXDAYS, 'days'); + } + context.commit('setExchangeRates', results); + context.dispatch('saveData', ['exchangeRates']); + }, + + async addTimestamp(context, info) { + // console.log(now() + " INFO dataModule:actions.addTimestamp - info: " + JSON.stringify(info, null, 2)); + context.commit('addTimestamp', info); + // await context.dispatch('saveData', ['timestamps']); + }, + async saveTimestamps(context) { + console.log(now() + " INFO dataModule:actions.saveTimestamps"); + await context.dispatch('saveData', ['timestamps']); + }, + + // async syncRefreshENS(context, parameter) { + // const provider = new ethers.providers.Web3Provider(window.ethereum); + // const ensReverseRecordsContract = new ethers.Contract(ENSREVERSERECORDSADDRESS, ENSREVERSERECORDSABI, provider); + // const addresses = Object.keys(context.state.accounts); + // const ENSOWNERBATCHSIZE = 200; // Can do 200, but incorrectly misconfigured reverse ENS causes the whole call to fail + // for (let i = 0; i < addresses.length; i += ENSOWNERBATCHSIZE) { + // const batch = addresses.slice(i, parseInt(i) + ENSOWNERBATCHSIZE); + // const allnames = await ensReverseRecordsContract.getNames(batch); + // for (let j = 0; j < batch.length; j++) { + // const account = batch[j]; + // const name = allnames[j]; + // // const normalized = normalize(account); + // // console.log(account + " => " + name); + // context.commit('addENSName', { account, name }); + // } + // } + // context.dispatch('saveData', ['ensMap']); + // }, + // Called by Connection.execWeb3() + async execWeb3({ state, commit, rootState }, { count, listenersInstalled }) { + console.log(now() + " INFO dataModule:execWeb3() start[" + count + ", " + listenersInstalled + ", " + JSON.stringify(rootState.route.params) + "]"); + }, + }, +}; diff --git a/docs/deploymentData.js b/docs/deploymentData.js new file mode 100644 index 0000000..373ab30 --- /dev/null +++ b/docs/deploymentData.js @@ -0,0 +1,90 @@ +const ENS_ERC721_ADDRESS = "0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85"; +const ENS_ERC1155_ADDRESS = "0xD4416b13d2b3a9aBae7AcD5D6C2BbDBE25686401"; + +// Same as ENS_ERC721_ADDRESS above +const ENS_BASEREGISTRARIMPLEMENTATION_ADDRESS = "0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85"; +const ENS_BASEREGISTRARIMPLEMENTATION_ABI = [{"inputs":[{"internalType":"contract ENS","name":"_ens","type":"address"},{"internalType":"bytes32","name":"_baseNode","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"controller","type":"address"}],"name":"ControllerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"controller","type":"address"}],"name":"ControllerRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"expires","type":"uint256"}],"name":"NameMigrated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"expires","type":"uint256"}],"name":"NameRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"expires","type":"uint256"}],"name":"NameRenewed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[],"name":"GRACE_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"controller","type":"address"}],"name":"addController","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"available","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"baseNode","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"controllers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ens","outputs":[{"internalType":"contract ENS","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"nameExpires","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"name":"reclaim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"register","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"registerOnly","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"controller","type":"address"}],"name":"removeController","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"renew","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"resolver","type":"address"}],"name":"setResolver","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]; + +const ENS_REGISTRYWITHFALLBACK_ADDRESS = "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"; +const ENS_REGISTRYWITHFALLBACK_ABI = [{"inputs":[{"internalType":"contract ENS","name":"_old","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"label","type":"bytes32"},{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"NewOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"address","name":"resolver","type":"address"}],"name":"NewResolver","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"uint64","name":"ttl","type":"uint64"}],"name":"NewTTL","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"old","outputs":[{"internalType":"contract ENS","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"recordExists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"resolver","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"address","name":"owner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"resolver","type":"address"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"name":"setRecord","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"address","name":"resolver","type":"address"}],"name":"setResolver","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"bytes32","name":"label","type":"bytes32"},{"internalType":"address","name":"owner","type":"address"}],"name":"setSubnodeOwner","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"bytes32","name":"label","type":"bytes32"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"resolver","type":"address"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"name":"setSubnodeRecord","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"name":"setTTL","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"ttl","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"}]; + +// ENS: Public Resolver 1 deployed May-04-2017 10:14:49 AM +UTC +const ENS_PUBLICRESOLVER1_ADDRESS = "0x1da022710dF5002339274AaDEe8D58218e9D6AB5"; +const ENS_PUBLICRESOLVER1_ABI = [{"constant":true,"inputs":[{"name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"node","type":"bytes32"},{"name":"contentTypes","type":"uint256"}],"name":"ABI","outputs":[{"name":"contentType","type":"uint256"},{"name":"data","type":"bytes"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"x","type":"bytes32"},{"name":"y","type":"bytes32"}],"name":"setPubkey","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"node","type":"bytes32"}],"name":"content","outputs":[{"name":"ret","type":"bytes32"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"node","type":"bytes32"}],"name":"addr","outputs":[{"name":"ret","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"contentType","type":"uint256"},{"name":"data","type":"bytes"}],"name":"setABI","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"node","type":"bytes32"}],"name":"name","outputs":[{"name":"ret","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"name","type":"string"}],"name":"setName","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"hash","type":"bytes32"}],"name":"setContent","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"node","type":"bytes32"}],"name":"pubkey","outputs":[{"name":"x","type":"bytes32"},{"name":"y","type":"bytes32"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"node","type":"bytes32"},{"name":"addr","type":"address"}],"name":"setAddr","outputs":[],"payable":false,"type":"function"},{"inputs":[{"name":"ensAddr","type":"address"}],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":false,"name":"a","type":"address"}],"name":"AddrChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":false,"name":"hash","type":"bytes32"}],"name":"ContentChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":false,"name":"name","type":"string"}],"name":"NameChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":true,"name":"contentType","type":"uint256"}],"name":"ABIChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"node","type":"bytes32"},{"indexed":false,"name":"x","type":"bytes32"},{"indexed":false,"name":"y","type":"bytes32"}],"name":"PubkeyChanged","type":"event"}]; + +// ENS: Public Resolver 2 deployed Feb-03-2020 11:36:20 PM +UTC +const ENS_PUBLICRESOLVER2_ADDRESS = "0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41"; +const ENS_PUBLICRESOLVER2_ABI = [{"inputs":[{"internalType":"contract ENS","name":"_ens","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":true,"internalType":"uint256","name":"contentType","type":"uint256"}],"name":"ABIChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"address","name":"a","type":"address"}],"name":"AddrChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"coinType","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"newAddress","type":"bytes"}],"name":"AddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"bool","name":"isAuthorised","type":"bool"}],"name":"AuthorisationChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"hash","type":"bytes"}],"name":"ContenthashChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"name","type":"bytes"},{"indexed":false,"internalType":"uint16","name":"resource","type":"uint16"},{"indexed":false,"internalType":"bytes","name":"record","type":"bytes"}],"name":"DNSRecordChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"name","type":"bytes"},{"indexed":false,"internalType":"uint16","name":"resource","type":"uint16"}],"name":"DNSRecordDeleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"DNSZoneCleared","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":true,"internalType":"bytes4","name":"interfaceID","type":"bytes4"},{"indexed":false,"internalType":"address","name":"implementer","type":"address"}],"name":"InterfaceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"string","name":"name","type":"string"}],"name":"NameChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"x","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"y","type":"bytes32"}],"name":"PubkeyChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":true,"internalType":"string","name":"indexedKey","type":"string"},{"indexed":false,"internalType":"string","name":"key","type":"string"}],"name":"TextChanged","type":"event"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"uint256","name":"contentTypes","type":"uint256"}],"name":"ABI","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"addr","outputs":[{"internalType":"address payable","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"uint256","name":"coinType","type":"uint256"}],"name":"addr","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"authorisations","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"clearDNSZone","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"contenthash","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"bytes32","name":"name","type":"bytes32"},{"internalType":"uint16","name":"resource","type":"uint16"}],"name":"dnsRecord","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"bytes32","name":"name","type":"bytes32"}],"name":"hasDNSRecords","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"interfaceImplementer","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"pubkey","outputs":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bytes32","name":"y","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"uint256","name":"contentType","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"setABI","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"uint256","name":"coinType","type":"uint256"},{"internalType":"bytes","name":"a","type":"bytes"}],"name":"setAddr","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"address","name":"a","type":"address"}],"name":"setAddr","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"isAuthorised","type":"bool"}],"name":"setAuthorisation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"bytes","name":"hash","type":"bytes"}],"name":"setContenthash","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"setDNSRecords","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"bytes4","name":"interfaceID","type":"bytes4"},{"internalType":"address","name":"implementer","type":"address"}],"name":"setInterface","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"string","name":"name","type":"string"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bytes32","name":"y","type":"bytes32"}],"name":"setPubkey","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"value","type":"string"}],"name":"setText","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"string","name":"key","type":"string"}],"name":"text","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"}]; + +// ENS: Public Resolver deployed Mar-28-2023 11:45:11 AM +UTC +const ENS_PUBLICRESOLVER_ADDRESS = "0x231b0Ee14048e9dCcD1d247744d114a4EB5E8E63"; +const ENS_PUBLICRESOLVER_ABI = [{"inputs":[{"internalType":"contract ENS","name":"_ens","type":"address"},{"internalType":"contract INameWrapper","name":"wrapperAddress","type":"address"},{"internalType":"address","name":"_trustedETHController","type":"address"},{"internalType":"address","name":"_trustedReverseRegistrar","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":true,"internalType":"uint256","name":"contentType","type":"uint256"}],"name":"ABIChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"address","name":"a","type":"address"}],"name":"AddrChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"coinType","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"newAddress","type":"bytes"}],"name":"AddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":true,"internalType":"bool","name":"approved","type":"bool"}],"name":"Approved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"hash","type":"bytes"}],"name":"ContenthashChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"name","type":"bytes"},{"indexed":false,"internalType":"uint16","name":"resource","type":"uint16"},{"indexed":false,"internalType":"bytes","name":"record","type":"bytes"}],"name":"DNSRecordChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"name","type":"bytes"},{"indexed":false,"internalType":"uint16","name":"resource","type":"uint16"}],"name":"DNSRecordDeleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"lastzonehash","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"zonehash","type":"bytes"}],"name":"DNSZonehashChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":true,"internalType":"bytes4","name":"interfaceID","type":"bytes4"},{"indexed":false,"internalType":"address","name":"implementer","type":"address"}],"name":"InterfaceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"string","name":"name","type":"string"}],"name":"NameChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"x","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"y","type":"bytes32"}],"name":"PubkeyChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":true,"internalType":"string","name":"indexedKey","type":"string"},{"indexed":false,"internalType":"string","name":"key","type":"string"},{"indexed":false,"internalType":"string","name":"value","type":"string"}],"name":"TextChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"uint64","name":"newVersion","type":"uint64"}],"name":"VersionChanged","type":"event"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"uint256","name":"contentTypes","type":"uint256"}],"name":"ABI","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"addr","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"uint256","name":"coinType","type":"uint256"}],"name":"addr","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"address","name":"delegate","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"clearRecords","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"contenthash","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"bytes32","name":"name","type":"bytes32"},{"internalType":"uint16","name":"resource","type":"uint16"}],"name":"dnsRecord","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"bytes32","name":"name","type":"bytes32"}],"name":"hasDNSRecords","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"interfaceImplementer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"address","name":"delegate","type":"address"}],"name":"isApprovedFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"nodehash","type":"bytes32"},{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicallWithNodeCheck","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"pubkey","outputs":[{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bytes32","name":"y","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"recordVersions","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"uint256","name":"contentType","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"setABI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"uint256","name":"coinType","type":"uint256"},{"internalType":"bytes","name":"a","type":"bytes"}],"name":"setAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"address","name":"a","type":"address"}],"name":"setAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"bytes","name":"hash","type":"bytes"}],"name":"setContenthash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"setDNSRecords","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"bytes4","name":"interfaceID","type":"bytes4"},{"internalType":"address","name":"implementer","type":"address"}],"name":"setInterface","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"string","name":"newName","type":"string"}],"name":"setName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"bytes32","name":"x","type":"bytes32"},{"internalType":"bytes32","name":"y","type":"bytes32"}],"name":"setPubkey","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"string","name":"key","type":"string"},{"internalType":"string","name":"value","type":"string"}],"name":"setText","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"bytes","name":"hash","type":"bytes"}],"name":"setZonehash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"string","name":"key","type":"string"}],"name":"text","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"zonehash","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"}]; + +// ENS: Old ETH Registrar Controller 1 deployed Apr-30-2019 03:54:13 AM +UTC @ #7666495 +const ENS_OLDETHREGISTRARCONTROLLER1_ADDRESS = "0xF0AD5cAd05e10572EfcEB849f6Ff0c68f9700455"; +const ENS_OLDETHREGISTRARCONTROLLER1_ABI = [{"constant":true,"inputs":[{"name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_prices","type":"address"}],"name":"setPriceOracle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_minCommitmentAge","type":"uint256"},{"name":"_maxCommitmentAge","type":"uint256"}],"name":"setCommitmentAges","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"commitments","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"name","type":"string"},{"name":"duration","type":"uint256"}],"name":"rentPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"owner","type":"address"},{"name":"duration","type":"uint256"},{"name":"secret","type":"bytes32"}],"name":"register","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"MIN_REGISTRATION_DURATION","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minCommitmentAge","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"name","type":"string"}],"name":"valid","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"name","type":"string"},{"name":"duration","type":"uint256"}],"name":"renew","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"name","type":"string"}],"name":"available","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxCommitmentAge","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"commitment","type":"bytes32"}],"name":"commit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"name","type":"string"},{"name":"owner","type":"address"},{"name":"secret","type":"bytes32"}],"name":"makeCommitment","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"inputs":[{"name":"_base","type":"address"},{"name":"_prices","type":"address"},{"name":"_minCommitmentAge","type":"uint256"},{"name":"_maxCommitmentAge","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"name","type":"string"},{"indexed":true,"name":"label","type":"bytes32"},{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"cost","type":"uint256"},{"indexed":false,"name":"expires","type":"uint256"}],"name":"NameRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"name","type":"string"},{"indexed":true,"name":"label","type":"bytes32"},{"indexed":false,"name":"cost","type":"uint256"},{"indexed":false,"name":"expires","type":"uint256"}],"name":"NameRenewed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"oracle","type":"address"}],"name":"NewPriceOracle","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]; +const ENS_OLDETHREGISTRARCONTROLLER1_DEPLOYMENTBLOCKNUMBER = 7666495; + +// ENS: Old ETH Registrar Controller 2 deployed Nov-04-2019 12:43:55 AM +UTC +const ENS_OLDETHREGISTRARCONTROLLER2_ADDRESS = "0xB22c1C159d12461EA124b0deb4b5b93020E6Ad16"; +const ENS_OLDETHREGISTRARCONTROLLER2_ABI = [{"constant":true,"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes32","name":"secret","type":"bytes32"},{"internalType":"address","name":"resolver","type":"address"},{"internalType":"address","name":"addr","type":"address"}],"name":"makeCommitmentWithConfig","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"internalType":"contract PriceOracle","name":"_prices","type":"address"}],"name":"setPriceOracle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_minCommitmentAge","type":"uint256"},{"internalType":"uint256","name":"_maxCommitmentAge","type":"uint256"}],"name":"setCommitmentAges","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"commitments","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"rentPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"bytes32","name":"secret","type":"bytes32"}],"name":"register","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"MIN_REGISTRATION_DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minCommitmentAge","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"valid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"renew","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"available","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxCommitmentAge","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"commitment","type":"bytes32"}],"name":"commit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes32","name":"secret","type":"bytes32"}],"name":"makeCommitment","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"bytes32","name":"secret","type":"bytes32"},{"internalType":"address","name":"resolver","type":"address"},{"internalType":"address","name":"addr","type":"address"}],"name":"registerWithConfig","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract BaseRegistrar","name":"_base","type":"address"},{"internalType":"contract PriceOracle","name":"_prices","type":"address"},{"internalType":"uint256","name":"_minCommitmentAge","type":"uint256"},{"internalType":"uint256","name":"_maxCommitmentAge","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":true,"internalType":"bytes32","name":"label","type":"bytes32"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"cost","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"expires","type":"uint256"}],"name":"NameRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":true,"internalType":"bytes32","name":"label","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"cost","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"expires","type":"uint256"}],"name":"NameRenewed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oracle","type":"address"}],"name":"NewPriceOracle","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]; +const ENS_OLDETHREGISTRARCONTROLLER2_DEPLOYMENTBLOCKNUMBER = 8868362; + +// ENS: Old ETH Registrar Controller deployed Jan-30-2020 12:56:38 AM +UTC +const ENS_OLDETHREGISTRARCONTROLLER_ADDRESS = "0x283Af0B28c62C092C9727F1Ee09c02CA627EB7F5"; +const ENS_OLDETHREGISTRARCONTROLLER_ABI = [{"inputs":[{"internalType":"contract BaseRegistrar","name":"_base","type":"address"},{"internalType":"contract PriceOracle","name":"_prices","type":"address"},{"internalType":"uint256","name":"_minCommitmentAge","type":"uint256"},{"internalType":"uint256","name":"_maxCommitmentAge","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":true,"internalType":"bytes32","name":"label","type":"bytes32"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"cost","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"expires","type":"uint256"}],"name":"NameRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":true,"internalType":"bytes32","name":"label","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"cost","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"expires","type":"uint256"}],"name":"NameRenewed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oracle","type":"address"}],"name":"NewPriceOracle","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"constant":true,"inputs":[],"name":"MIN_REGISTRATION_DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"available","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"commitment","type":"bytes32"}],"name":"commit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"commitments","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes32","name":"secret","type":"bytes32"}],"name":"makeCommitment","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"bytes32","name":"secret","type":"bytes32"},{"internalType":"address","name":"resolver","type":"address"},{"internalType":"address","name":"addr","type":"address"}],"name":"makeCommitmentWithConfig","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"maxCommitmentAge","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minCommitmentAge","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"bytes32","name":"secret","type":"bytes32"}],"name":"register","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"bytes32","name":"secret","type":"bytes32"},{"internalType":"address","name":"resolver","type":"address"},{"internalType":"address","name":"addr","type":"address"}],"name":"registerWithConfig","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"renew","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"rentPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_minCommitmentAge","type":"uint256"},{"internalType":"uint256","name":"_maxCommitmentAge","type":"uint256"}],"name":"setCommitmentAges","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract PriceOracle","name":"_prices","type":"address"}],"name":"setPriceOracle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"valid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]; +const ENS_OLDETHREGISTRARCONTROLLER_DEPLOYMENTBLOCKNUMBER = 9380471; + +// ENS: ETH Registrar Controller deployed Mar-28-2023 11:44:59 AM +UTC +const ENS_ETHREGISTRARCONTROLLER_ADDRESS = "0x253553366Da8546fC250F225fe3d25d0C782303b"; +const ENS_ETHREGISTRARCONTROLLER_ABI = [{"inputs":[{"internalType":"contract BaseRegistrarImplementation","name":"_base","type":"address"},{"internalType":"contract IPriceOracle","name":"_prices","type":"address"},{"internalType":"uint256","name":"_minCommitmentAge","type":"uint256"},{"internalType":"uint256","name":"_maxCommitmentAge","type":"uint256"},{"internalType":"contract ReverseRegistrar","name":"_reverseRegistrar","type":"address"},{"internalType":"contract INameWrapper","name":"_nameWrapper","type":"address"},{"internalType":"contract ENS","name":"_ens","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes32","name":"commitment","type":"bytes32"}],"name":"CommitmentTooNew","type":"error"},{"inputs":[{"internalType":"bytes32","name":"commitment","type":"bytes32"}],"name":"CommitmentTooOld","type":"error"},{"inputs":[{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"DurationTooShort","type":"error"},{"inputs":[],"name":"InsufficientValue","type":"error"},{"inputs":[],"name":"MaxCommitmentAgeTooHigh","type":"error"},{"inputs":[],"name":"MaxCommitmentAgeTooLow","type":"error"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"NameNotAvailable","type":"error"},{"inputs":[],"name":"ResolverRequiredWhenDataSupplied","type":"error"},{"inputs":[{"internalType":"bytes32","name":"commitment","type":"bytes32"}],"name":"UnexpiredCommitmentExists","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":true,"internalType":"bytes32","name":"label","type":"bytes32"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"baseCost","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"premium","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"expires","type":"uint256"}],"name":"NameRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":true,"internalType":"bytes32","name":"label","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"cost","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"expires","type":"uint256"}],"name":"NameRenewed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"MIN_REGISTRATION_DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"available","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"commitment","type":"bytes32"}],"name":"commit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"commitments","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"bytes32","name":"secret","type":"bytes32"},{"internalType":"address","name":"resolver","type":"address"},{"internalType":"bytes[]","name":"data","type":"bytes[]"},{"internalType":"bool","name":"reverseRecord","type":"bool"},{"internalType":"uint16","name":"ownerControlledFuses","type":"uint16"}],"name":"makeCommitment","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"maxCommitmentAge","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minCommitmentAge","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nameWrapper","outputs":[{"internalType":"contract INameWrapper","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prices","outputs":[{"internalType":"contract IPriceOracle","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"recoverFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"bytes32","name":"secret","type":"bytes32"},{"internalType":"address","name":"resolver","type":"address"},{"internalType":"bytes[]","name":"data","type":"bytes[]"},{"internalType":"bool","name":"reverseRecord","type":"bool"},{"internalType":"uint16","name":"ownerControlledFuses","type":"uint16"}],"name":"register","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"renew","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"rentPrice","outputs":[{"components":[{"internalType":"uint256","name":"base","type":"uint256"},{"internalType":"uint256","name":"premium","type":"uint256"}],"internalType":"struct IPriceOracle.Price","name":"price","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reverseRegistrar","outputs":[{"internalType":"contract ReverseRegistrar","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"valid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]; +const ENS_ETHREGISTRARCONTROLLER_DEPLOYMENTBLOCKNUMBER = 16925618; + +// NameWrapper Mar-28-2023 11:42:59 AM +UTC +const ENS_NAMEWRAPPER_ADDRESS = "0xD4416b13d2b3a9aBae7AcD5D6C2BbDBE25686401"; +const ENS_NAMEWRAPPER_ABI = [{"inputs":[{"internalType":"contract ENS","name":"_ens","type":"address"},{"internalType":"contract IBaseRegistrar","name":"_registrar","type":"address"},{"internalType":"contract IMetadataService","name":"_metadataService","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"CannotUpgrade","type":"error"},{"inputs":[],"name":"IncompatibleParent","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"IncorrectTargetOwner","type":"error"},{"inputs":[],"name":"IncorrectTokenType","type":"error"},{"inputs":[{"internalType":"bytes32","name":"labelHash","type":"bytes32"},{"internalType":"bytes32","name":"expectedLabelhash","type":"bytes32"}],"name":"LabelMismatch","type":"error"},{"inputs":[{"internalType":"string","name":"label","type":"string"}],"name":"LabelTooLong","type":"error"},{"inputs":[],"name":"LabelTooShort","type":"error"},{"inputs":[],"name":"NameIsNotWrapped","type":"error"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"OperationProhibited","type":"error"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"address","name":"addr","type":"address"}],"name":"Unauthorised","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"controller","type":"address"},{"indexed":false,"internalType":"bool","name":"active","type":"bool"}],"name":"ControllerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"uint64","name":"expiry","type":"uint64"}],"name":"ExpiryExtended","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"uint32","name":"fuses","type":"uint32"}],"name":"FusesSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"NameUnwrapped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"node","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"name","type":"bytes"},{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint32","name":"fuses","type":"uint32"},{"indexed":false,"internalType":"uint64","name":"expiry","type":"uint64"}],"name":"NameWrapped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_tokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"uint32","name":"fuseMask","type":"uint32"}],"name":"allFusesBurned","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"address","name":"addr","type":"address"}],"name":"canExtendSubnames","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"address","name":"addr","type":"address"}],"name":"canModifyName","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"controllers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ens","outputs":[{"internalType":"contract ENS","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"parentNode","type":"bytes32"},{"internalType":"bytes32","name":"labelhash","type":"bytes32"},{"internalType":"uint64","name":"expiry","type":"uint64"}],"name":"extendExpiry","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getData","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint32","name":"fuses","type":"uint32"},{"internalType":"uint64","name":"expiry","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"parentNode","type":"bytes32"},{"internalType":"bytes32","name":"labelhash","type":"bytes32"}],"name":"isWrapped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"name":"isWrapped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"metadataService","outputs":[{"internalType":"contract IMetadataService","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"names","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"recoverFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"label","type":"string"},{"internalType":"address","name":"wrappedOwner","type":"address"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"address","name":"resolver","type":"address"},{"internalType":"uint16","name":"ownerControlledFuses","type":"uint16"}],"name":"registerAndWrapETH2LD","outputs":[{"internalType":"uint256","name":"registrarExpiry","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"registrar","outputs":[{"internalType":"contract IBaseRegistrar","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"renew","outputs":[{"internalType":"uint256","name":"expires","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"parentNode","type":"bytes32"},{"internalType":"bytes32","name":"labelhash","type":"bytes32"},{"internalType":"uint32","name":"fuses","type":"uint32"},{"internalType":"uint64","name":"expiry","type":"uint64"}],"name":"setChildFuses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"controller","type":"address"},{"internalType":"bool","name":"active","type":"bool"}],"name":"setController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"uint16","name":"ownerControlledFuses","type":"uint16"}],"name":"setFuses","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IMetadataService","name":"_metadataService","type":"address"}],"name":"setMetadataService","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"resolver","type":"address"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"name":"setRecord","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"address","name":"resolver","type":"address"}],"name":"setResolver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"parentNode","type":"bytes32"},{"internalType":"string","name":"label","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint32","name":"fuses","type":"uint32"},{"internalType":"uint64","name":"expiry","type":"uint64"}],"name":"setSubnodeOwner","outputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"parentNode","type":"bytes32"},{"internalType":"string","name":"label","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"resolver","type":"address"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint32","name":"fuses","type":"uint32"},{"internalType":"uint64","name":"expiry","type":"uint64"}],"name":"setSubnodeRecord","outputs":[{"internalType":"bytes32","name":"node","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"uint64","name":"ttl","type":"uint64"}],"name":"setTTL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract INameWrapperUpgrade","name":"_upgradeAddress","type":"address"}],"name":"setUpgradeContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"parentNode","type":"bytes32"},{"internalType":"bytes32","name":"labelhash","type":"bytes32"},{"internalType":"address","name":"controller","type":"address"}],"name":"unwrap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"labelhash","type":"bytes32"},{"internalType":"address","name":"registrant","type":"address"},{"internalType":"address","name":"controller","type":"address"}],"name":"unwrapETH2LD","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"name","type":"bytes"},{"internalType":"bytes","name":"extraData","type":"bytes"}],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"upgradeContract","outputs":[{"internalType":"contract INameWrapperUpgrade","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"name","type":"bytes"},{"internalType":"address","name":"wrappedOwner","type":"address"},{"internalType":"address","name":"resolver","type":"address"}],"name":"wrap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"label","type":"string"},{"internalType":"address","name":"wrappedOwner","type":"address"},{"internalType":"uint16","name":"ownerControlledFuses","type":"uint16"},{"internalType":"address","name":"resolver","type":"address"}],"name":"wrapETH2LD","outputs":[{"internalType":"uint64","name":"expiry","type":"uint64"}],"stateMutability":"nonpayable","type":"function"}]; +const ENS_NAMEWRAPPER_DEPLOYMENTBLOCKNUMBER = 16925608; + +const ENSREVERSERECORDSADDRESS = "0x3671aE578E63FdF66ad4F3E12CC0c0d71Ac7510C"; +const ENSREVERSERECORDSABI = [{"inputs":[{"internalType":"contract ENS","name":"_ens","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"getNames","outputs":[{"internalType":"string[]","name":"r","type":"string[]"}],"stateMutability":"view","type":"function"}]; + + + +const WETHADDRESS = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"; +// const WETHADDRESS_RINKEBY="0xD0000DE5A8A759EAD912F89d2E6f1ae59063a61A"; +const WETHABI = [{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"guy","type":"address"},{"name":"wad","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"src","type":"address"},{"name":"dst","type":"address"},{"name":"wad","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"wad","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"dst","type":"address"},{"name":"wad","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"src","type":"address"},{"indexed":true,"name":"guy","type":"address"},{"indexed":false,"name":"wad","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"src","type":"address"},{"indexed":true,"name":"dst","type":"address"},{"indexed":false,"name":"wad","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"dst","type":"address"},{"indexed":false,"name":"wad","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"src","type":"address"},{"indexed":false,"name":"wad","type":"uint256"}],"name":"Withdrawal","type":"event"}]; + + +const ERC721ABI = [{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_BASTARDS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"METADATA_PROVENANCE_HASH","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numBastards","type":"uint256"}],"name":"adoptBASTARD","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"calculatePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"calculatePriceTest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasSaleStarted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pauseDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_hash","type":"string"}],"name":"setProvenanceHash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"payable","type":"function"}]; + + +const ERC20ABI = [{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"tokens","type":"uint256"}],"name":"recoverTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"init","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenOwner","type":"address"},{"name":"symbol","type":"string"},{"name":"name","type":"string"},{"name":"decimals","type":"uint8"},{"name":"fixedSupply","type":"uint256"}],"name":"init","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"},{"name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenOwner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Approval","type":"event"}]; + + +const ERC1155ABI = [{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"FurnitureAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"string","name":"_furnitureUri","type":"string"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"bool","name":"_isPaidWithEther","type":"bool"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_saveFirstBuyerMaxTimestampAllowed","type":"uint256"}],"name":"addFurniture","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCountOfFurnituresBought","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getMaxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalFurnitures","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"isPaidWithEther","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"mintBatchFurnitures","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintFurniture","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tilesAddress","type":"address"}],"name":"setTilesInstance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]; + + +const CHAINID_MAINNET = 1; +const CHAINID_SEPOLIA = 11155111; + +// Sepolia +const STEALTHTRANSACTIONHELPERADDRESS = "0x054Aa0E0b4C92142a583fDfa9369FF3558F8dea4"; +const STEALTHTRANSACTIONHELPERABI = [{"inputs":[{"internalType":"address payable","name":"messengerAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"bytes","name":"ephemeralPubKey","type":"bytes"},{"internalType":"bytes","name":"metadata","type":"bytes"}],"name":"transferAndAnnounce","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"bytes","name":"ephemeralPubKey","type":"bytes"},{"internalType":"bytes","name":"metadata","type":"bytes"}],"name":"transferAndStakeAndAnnounce","outputs":[],"stateMutability":"payable","type":"function"}]; + + +const ERC5564ANNOUNCERADDRESS = "0x55649E01B5Df198D18D95b5cc5051630cfD45564"; +const ERC5564ANNOUNCERABI = [{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"schemeId","type":"uint256"},{"indexed":true,"internalType":"address","name":"stealthAddress","type":"address"},{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"bytes","name":"ephemeralPubKey","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"metadata","type":"bytes"}],"name":"Announcement","type":"event"},{"inputs":[{"internalType":"uint256","name":"schemeId","type":"uint256"},{"internalType":"address","name":"stealthAddress","type":"address"},{"internalType":"bytes","name":"ephemeralPubKey","type":"bytes"},{"internalType":"bytes","name":"metadata","type":"bytes"}],"name":"announce","outputs":[],"stateMutability":"nonpayable","type":"function"}]; + + +const ERC6538REGISTRYADDRESS = "0x6538E6bf4B0eBd30A8Ea093027Ac2422ce5d6538"; +const ERC6538REGISTRYABI = [{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ERC6538Registry__InvalidSignature","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"registrant","type":"address"},{"indexed":false,"internalType":"uint256","name":"newNonce","type":"uint256"}],"name":"NonceIncremented","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"registrant","type":"address"},{"indexed":true,"internalType":"uint256","name":"schemeId","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"stealthMetaAddress","type":"bytes"}],"name":"StealthMetaAddressSet","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ERC6538REGISTRY_ENTRY_TYPE_HASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"incrementNonce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"}],"name":"nonceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"schemeId","type":"uint256"},{"internalType":"bytes","name":"stealthMetaAddress","type":"bytes"}],"name":"registerKeys","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"uint256","name":"schemeId","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"stealthMetaAddress","type":"bytes"}],"name":"registerKeysOnBehalf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"registrant","type":"address"},{"internalType":"uint256","name":"schemeId","type":"uint256"}],"name":"stealthMetaAddressOf","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"}]; + + +const MAGICALINTERNETMONEYADDRESS_SEPOLIA = "0xAd4EFaB0A1c32184c6254e07eb6D26A3AaEB0Ae2"; +const MAGICALINTERNETMONEYABI_SEPOLIA = [{"inputs":[{"internalType":"address payable","name":"_announcer","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InsufficientERC20Allowance","type":"error"},{"inputs":[],"name":"NotERC721TokenOwner","type":"error"},{"inputs":[],"name":"NothingToTransfer","type":"error"},{"inputs":[],"name":"TransferFailure","type":"error"},{"inputs":[{"internalType":"uint256","name":"schemeId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"bytes","name":"ephemeralPubKey","type":"bytes"},{"internalType":"uint8","name":"viewTag","type":"uint8"},{"components":[{"internalType":"bool","name":"isERC721","type":"bool"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"internalType":"struct TokenInfo[]","name":"tokenInfo","type":"tuple[]"}],"name":"transferAndAnnounce","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"schemeId","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"bytes","name":"ephemeralPubKey","type":"bytes"},{"internalType":"uint8","name":"viewTag","type":"uint8"}],"name":"transferEthAndAnnounce","outputs":[],"stateMutability":"payable","type":"function"}]; + +const ONLY_SUPPORTED_SCHEME_ID = 1; + +const TESTTOADZABI = [{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressToNumOwned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devMintLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockDevMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxMintsPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"specialIds","type":"uint256[]"}],"name":"mintSpecial","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numAvailableTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_serialId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]; + +const HASHMASK = "0xC2C747E0F7004F9E8817Db2ca4997657a7746928"; diff --git a/docs/faucets.js b/docs/faucets.js new file mode 100644 index 0000000..2b20313 --- /dev/null +++ b/docs/faucets.js @@ -0,0 +1,81 @@ +const FAUCETS = { + "1": [{ + address: "0x2823589Ae095D99bD64dEeA80B4690313e2fB519", + symbol: "WEENUS", + name: "Weenus 💪", + decimals: 18, + type: "erc20", + drip: "1000", + }, { + address: "0xeEf5E2d8255E973d587217f9509B416b41CA5870", + symbol: "XEENUS", + name: "Xeenus 💪", + decimals: 18, + type: "erc20", + drip: "1000", + }, { + address: "0x187E63F9eBA692A0ac98d3edE6fEb870AF0079e1", + symbol: "YEENUS", + name: "Yeenus 💪", + decimals: 8, + type: "erc20", + drip: "1000", + }, { + address: "0x0693c3a780A0a757E803a4BD76bCf43d438f8806", + symbol: "ZEENUS", + name: "Zeenus 💪", + decimals: 0, + type: "erc20", + drip: "1000", + // }, { + // address: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + // symbol: "WETH9", + // name: "Wrapped Ether", + // decimals: 18, + // type: "erc20", + }, + ], + "11155111": [{ + address: "0x7439E9Bb6D8a84dd3A23fe621A30F95403F87fB9", + symbol: "WEENUS", + name: "Weenus 💪", + decimals: 18, + type: "erc20", + drip: "1000", + }, { + address: "0xc21d97673B9E0B3AA53a06439F71fDc1facE393B", + symbol: "XEENUS", + name: "Xeenus 💪", + decimals: 18, + type: "erc20", + drip: "1000", + }, { + address: "0x93fCA4c6E2525C09c95269055B46f16b1459BF9d", + symbol: "YEENUS", + name: "Yeenus 💪", + decimals: 8, + type: "erc20", + drip: "1000", + }, { + address: "0xe9EF74A6568E9f0e42a587C9363C9BcC582dcC6c", + symbol: "ZEENUS", + name: "Zeenus 💪", + decimals: 0, + type: "erc20", + drip: "1000", + // }, { + // address: "0x07391dbE03e7a0DEa0fce6699500da081537B6c3", + // symbol: "WETH9", + // name: "Wrapped Ether", + // decimals: 18, + // type: "erc20", + // drip: "sendeth", + }, { + address: "0x8b73448426797099b6b9a96c4343f528bbAfc55e", + symbol: "TESTTOADZ", + name: "TestToadz", + type: "erc721", + drip: "3", + }, + ], +}; diff --git a/docs/functions.js b/docs/functions.js new file mode 100644 index 0000000..a2bc4fc --- /dev/null +++ b/docs/functions.js @@ -0,0 +1,465 @@ +var ADDRESS0 = "0x0000000000000000000000000000000000000000"; +var STEALTHMETAADDRESS0 = "st:eth:0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; +const ADDRESS_ETHEREUMS = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"; +const SECP256K1_N = "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141"; + +var MILLISPERDAY = 60 * 60 * 24 * 1000; +var DEFAULTEXPIRYUTCHOUR = 8; +var DEFAULTEXPIRYUTCDAYOFWEEK = 5; // Friday moment.js +var DEFAULTTYPE = 0xff; +var DEFAULTDECIMAL = 0xff; + +function formatNumber(n) { + return n == null ? "" : n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); +} + +var logLevel = 1; +// 0 = NONE, 1 = INFO (default), 2 = DEBUG +function setLogLevel(_logLevel) { + logLevel = _logLevel; +} + +function logDebug(s, t) { + if (logLevel > 1) { + console.log(new Date().toLocaleTimeString() + " DEBUG " + s + ":" + t); + } +} + +function logInfo(s, t) { + if (logLevel > 0) { + console.log(new Date().toLocaleTimeString() + " INFO " + s + ":" + t); + } +} + +function logError(s, t) { + console.error(new Date().toLocaleTimeString() + " ERROR " + s + ":" + t); +} + +function toHexString(byteArray) { + return Array.from(byteArray, function(byte) { + return ('0' + (byte & 0xFF).toString(16)).slice(-2); + }).join('') +} + +// https://stackoverflow.com/questions/33702838/how-to-append-bytes-multi-bytes-and-buffer-to-arraybuffer-in-javascript +function concatTypedArrays(a, b) { // a, b TypedArray of same type + var c = new (a.constructor)(a.length + b.length); + c.set(a, 0); + c.set(b, a.length); + return c; +} +function concatBuffers(a, b) { + return concatTypedArrays( + new Uint8Array(a.buffer || a), + new Uint8Array(b.buffer || b) + ).buffer; +} +function concatBytesOld(ui8a, byte) { + var b = new Uint8Array(1); + b[0] = byte; + return concatTypedArrays(ui8a, b); +} + +function concatByte(ui8a, byte) { + var view = new Uint8Array(ui8a); + var result = new Uint8Array(view.length + 1); + var i; + for (i = 0; i < view.length; i++) { + result[i] = view[i]; + } + result[view.length] = byte; + return result; +} + +function concatBytes(ui8a, ui8b) { + var viewa = new Uint8Array(ui8a); + var viewb = new Uint8Array(ui8b); + var result = new Uint8Array(viewa.length + viewb.length); + var i; + var offset = 0; + for (i = 0; i < viewa.length; i++) { + result[offset++] = viewa[i]; + } + for (i = 0; i < viewb.length; i++) { + result[offset++] = viewb[i]; + } + return result; +} + +function ethereumSignedMessageHashOfText(text) { + var hashOfText = keccak256.array(text); + return ethereumSignedMessageHashOfHash(hashOfText); +} + +function ethereumSignedMessageHashOfHash(hash) { + // https://github.com/emn178/js-sha3 + var data = new Uint8Array(""); + var data1 = concatByte(data, 0x19); + var ethereumSignedMessageBytes = new TextEncoder("utf-8").encode("Ethereum Signed Message:\n32"); + var data2 = concatBytes(data1, ethereumSignedMessageBytes); + var data3 = concatBytes(data2, hash); + return "0x" + toHexString(keccak256.array(data3)); +} + +function parseToText(item) { + if (item == null) { + return "(null)"; + } else if (Array.isArray(item)) { + return JSON.stringify(item); + } else if (typeof item === "object") { + return JSON.stringify(item); + } else { + return item; + } +} + +// function escapeJSON(j) { +// +// } + +// https://stackoverflow.com/questions/14438187/javascript-filereader-parsing-long-file-in-chunks +// with my addition of the finalised variable in the callback +function parseFile(file, callback) { + var fileSize = file.size; + var chunkSize = 64 * 1024; // bytes + // var chunkSize = 1; // bytes + var offset = 0; + var self = this; // we need a reference to the current object + var chunkReaderBlock = null; + + var readEventHandler = function(evt) { + if (evt.target.error == null) { + offset += evt.target.result.byteLength; + callback(evt.target.result, offset <= chunkSize, false); // callback for handling read chunk + } else { + console.log("Read error: " + evt.target.error); + return; + } + if (offset >= fileSize) { + callback("", false, true); + return; + } + + // of to the next chunk + chunkReaderBlock(offset, chunkSize, file); + } + + chunkReaderBlock = function(_offset, length, _file) { + var r = new FileReader(); + var blob = _file.slice(_offset, length + _offset); + r.onload = readEventHandler; + r.readAsArrayBuffer(blob); + } + + // now let's start the read with the first block + chunkReaderBlock(offset, chunkSize, file); +} + +// baseUrl: http://x.y.z/media/list +// filter : { a: 1, b: 2, c: 3 } +// fields: [ "a", "b", "c" ] +function buildFilterUrl(baseUrl, filter, fields) { + var url = baseUrl; + var separator = "?"; + fields.forEach(function(f) { + if (filter[f] !== undefined && filter[f] !== null && filter[f] !== "") { + url = url + separator + f + "=" + filter[f]; + separator = "&"; + } + }) + return encodeURI(url); +} + + +function getTermFromSeconds(term) { + if (term > 0) { + var secs = parseInt(term); + var mins = parseInt(secs / 60); + secs = secs % 60; + var hours = parseInt(mins / 60); + mins = mins % 60; + var days = parseInt(hours / 24); + hours = hours % 24; + var s = ""; + if (days > 0) { + s += days + "d "; + } + if (hours > 0) { + s += hours + "h "; + } + if (mins > 0) { + s += mins + "m "; + } + if (secs > 0) { + s += secs + "s"; + } + return s; + } else { + return ""; + } +} + + +// ----------------------------------------------------------------------------- +// Next 2 functions +// +// callPut, decimals0 and rateDecimals must be parseInt(...)-ed +// strike, bound, spot and baseTokens must be BigNumber()s, converted to the +// appropriate decimals +// ----------------------------------------------------------------------------- + +// function shiftRightThenLeft(uint amount, uint right, uint left) internal pure returns (uint _result) { +// if (right == left) { +// return amount; +// } else if (right > left) { +// return amount.mul(10 ** (right - left)); +// } else { +// return amount.div(10 ** (left - right)); +// } +// } +function shiftRightThenLeft(amount, right, left) { + if (right == left) { + return amount; + } else if (right > left) { + return amount.shift(right - left); + } else { + return amount.shift(-(left - right)); + } +} + +// https://ourcodeworld.com/articles/read/278/how-to-split-an-array-into-chunks-of-the-same-size-easily-in-javascript +function chunkArray(myArray, chunk_size) { + var results = []; + while (myArray.length) { + results.push(myArray.splice(0, chunk_size)); + } + return results; +} + +const generateRange = (start, stop, step) => Array.from({ length: (stop - start) / step + 1}, (_, i) => start + (i * step)); + +function handleErrors(response) { + if (!response.ok) { + throw Error(response.statusText); + } + return response; +} + +const now = () => moment().format("HH:mm:ss"); + +function sleep(milliseconds) { + const date = Date.now(); + let currentDate = null; + do { + currentDate = Date.now(); + } while (currentDate - date < milliseconds); +} + +const delay = ms => new Promise(res => setTimeout(res, ms)); + +function getExchangeRate(date, exchangeRates) { + for (let lookback = 0; lookback < 10; lookback++) { + const searchDate = moment(date).subtract(lookback, 'days').format("YYYYMMDD"); + if (searchDate in exchangeRates) { + return { date: searchDate, rate: exchangeRates[searchDate] }; + } + } + return { date: null, rate: null }; +} + +const imageUrlToBase64 = async url => { + const response = await fetch(url); + if (response.ok) { + const blob = await response.blob(); + return new Promise((onSuccess, onError) => { + try { + const reader = new FileReader() ; + reader.onload = function(){ onSuccess(this.result) } ; + reader.readAsDataURL(blob) ; + } catch(e) { + onError(e); + } + }); + } else { + return null; + } +}; + +// https://stackoverflow.com/questions/36280818/how-to-convert-file-to-base64-in-javascript/36281449#36281449 +const toBase64 = file => new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.readAsDataURL(file); + reader.onload = () => resolve(reader.result); + reader.onerror = reject; +}); + +function getTimeDiff(ts) { + if (ts > 0) { + var secs = parseInt(new Date() / 1000 - ts); + var mins = parseInt(secs / 60); + secs = secs % 60; + var hours = parseInt(mins / 60); + mins = mins % 60; + var days = parseInt(hours / 24); + hours = hours % 24; + var s = ""; + if (days > 0) { + s += days + "d "; + } + if (hours > 0) { + s += hours + "h "; + } + if (mins > 0) { + s += mins + "m "; + } + if (secs > 0) { + s += secs + "s"; + } + return "-" + s; + } else { + return ""; + } +} + +const promisify = (inner) => + new Promise((resolve, reject) => + inner((err, res) => { + if (err) { + reject(err); + } else { + resolve(res); + } + }) + ); + +function parseReservoirTokenData(info) { + // console.log("info: " + JSON.stringify(info, null, 2)); + const result = {}; + const token = info.token; + const market = info.market; + result.chainId = token.chainId; + result.contract = ethers.utils.getAddress(token.contract); + result.type = token.kind; + result.tokenId = token.tokenId; + try { + result.owner = ethers.utils.getAddress(token.owner); + } catch (e) { + console.log("parseReservoirTokenData - ERROR: name: " + name + ", owner: " + token.owner + ", error: " + e.message + " info: " + JSON.stringify(info, null, 2)); + result.owner = ADDRESS0; + } + result.slug = token.collection && token.collection.slug || null; + result.collectionSymbol = token.collection && token.collection.symbol || null; + result.collectionName = token.collection && token.collection.name || null; + result.name = token.name; + result.description = token.description; + // if (token.image == null && token.metadata && token.metadata.tokenURI) { + // result.image = token.metadata.tokenURI; + // } else { + result.image = token.image; + // } + result.attributes = []; + if (token.attributes) { + for (const attribute of token.attributes) { + result.attributes.push({ trait_type: attribute.key, value: attribute.value }); + } + } + // const createdRecord = token.attributes.filter(e => e.key == "Created Date"); + // result.created = createdRecord.length == 1 && createdRecord[0].value && parseInt(createdRecord[0].value) || null; + // if (result.contract == ENS_BASEREGISTRARIMPLEMENTATION_ADDRESS) { + // const registrationRecord = token.attributes.filter(e => e.key == "Registration Date"); + // result.registration = registrationRecord.length == 1 && registrationRecord[0].value && parseInt(registrationRecord[0].value) || null; + // } else { + // result.registration = result.created; + // } + // if (result.contract == ENS_BASEREGISTRARIMPLEMENTATION_ADDRESS) { + // const expiryRecord = token.attributes.filter(e => e.key == "Expiration Date"); + // result.expiry = expiryRecord.length == 1 && expiryRecord[0].value && parseInt(expiryRecord[0].value) || null; + // } else { + // const expiryRecord = token.attributes.filter(e => e.key == "Namewrapper Expiry Date"); + // result.expiry = expiryRecord.length == 1 && expiryRecord[0].value && parseInt(expiryRecord[0].value) || null; + // } + // const characterSetRecord = token.attributes.filter(e => e.key == "Character Set"); + // result.characterSet = characterSetRecord.length == 1 && characterSetRecord[0].value || null; + // const lengthRecord = token.attributes.filter(e => e.key == "Length"); + // result.length = lengthRecord.length == 1 && lengthRecord[0].value && parseInt(lengthRecord[0].value) || null; + // const segmentLengthRecord = token.attributes.filter(e => e.key == "Segment Length"); + // result.segmentLength = segmentLengthRecord.length == 1 && segmentLengthRecord[0].value && parseInt(segmentLengthRecord[0].value) || null; + const lastSaleTimestamp = token.lastSale && token.lastSale.timestamp || null; + const lastSaleCurrency = token.lastSale && token.lastSale.price && token.lastSale.price.currency && token.lastSale.price.currency.symbol || null; + const lastSaleAmount = token.lastSale && token.lastSale.price && token.lastSale.price.amount && token.lastSale.price.amount.native || null; + const lastSaleAmountUSD = token.lastSale && token.lastSale.price && token.lastSale.price.amount && token.lastSale.price.amount.usd || null; + if (lastSaleAmount) { + result.lastSale = { + timestamp: lastSaleTimestamp, + currency: lastSaleCurrency, + amount: lastSaleAmount, + amountUSD: lastSaleAmountUSD, + }; + } else { + result.lastSale = null; + } + const priceExpiry = market.floorAsk && market.floorAsk.validUntil && parseInt(market.floorAsk.validUntil) || null; + const priceSource = market.floorAsk && market.floorAsk.source && market.floorAsk.source.domain || null; + const priceCurrency = market.floorAsk && market.floorAsk.price && market.floorAsk.price.currency && market.floorAsk.price.currency.symbol || null; + const priceAmount = market.floorAsk && market.floorAsk.price && market.floorAsk.price.amount && market.floorAsk.price.amount.native || null; + const priceAmountUSD = market.floorAsk && market.floorAsk.price && market.floorAsk.price.amount && market.floorAsk.price.amount.usd || null; + if (priceAmount) { + result.price = { + source: priceSource, + expiry: priceExpiry, + currency: priceCurrency, + amount: priceAmount, + amountUSD: priceAmountUSD, + }; + } else { + result.price = null; + } + const topBidCurrency = market.topBid && market.topBid.price && market.topBid.price.currency && market.topBid.price.currency.symbol || null; + const topBidAmount = market.topBid && market.topBid.price && market.topBid.price.amount && market.topBid.price.amount.native || null; + const topBidAmountUSD = market.topBid && market.topBid.price && market.topBid.price.amount && market.topBid.price.amount.usd || null; + const topBidNetAmount = market.topBid && market.topBid.price && market.topBid.price.netAmount && market.topBid.price.netAmount.native || null; + const topBidNetAmountUSD = market.topBid && market.topBid.price && market.topBid.price.netAmount && market.topBid.price.netAmount.usd || null; + if (topBidNetAmount) { + result.topBid = { + currency: topBidCurrency, + amount: topBidAmount, + amountUSD: topBidAmountUSD, + netAmount: topBidNetAmount, + netAmountUSD: topBidNetAmountUSD, + }; + } else { + result.topBid = null; + } + // console.log("result: " + JSON.stringify(result, null, 2)); + return result; +} + +// scientific.collections.eth +// 1 2 3 4 5 +// 012345678901234567890123456789012345678901234567890123456789 +// 0x0a736369656e74696669630b636f6c6c656374696f6e730365746800 +// +// 0a 10 +// 736369656e7469666963 scientific +// 0b 11 +// 636f6c6c656374696f6e73 collections +// 03 3 +// 657468 eth +// 00 0 +// const results = decodeNameWrapperBytes("0x0a736369656e74696669630b636f6c6c656374696f6e730365746800"); +// console.log("results: " + JSON.stringify(results)); // results: ["scientific","collections","eth"] +function decodeNameWrapperBytes(b) { + let start = 4; + let len = ethers.BigNumber.from("0x" + b.substring(2, 4)); + const parts = []; + while (len > 0) { + const str = b.substring(start, start + len * 2); + let strUtf8 = ethers.utils.toUtf8String("0x" + str); + parts.push(strUtf8); + const s = b.substring(start + len * 2, start + len * 2 + 2); + const newStart = start + len * 2 + 2; + len = ethers.BigNumber.from("0x" + b.substring(start + len * 2, start + len * 2 + 2)); + start = newStart; + } + return parts; +} diff --git a/docs/fungibles.js b/docs/fungibles.js new file mode 100644 index 0000000..0e9d4ee --- /dev/null +++ b/docs/fungibles.js @@ -0,0 +1,547 @@ +const Fungibles = { + template: ` +
+ + + + + + + Drip {{ modalFaucet.selectedFaucet && faucets.filter(e => e.address == modalFaucet.selectedFaucet)[0] ? (faucets.filter(e => e.address == modalFaucet.selectedFaucet)[0].drip + ' Tokens') : '' }} + + +
+
+ +
+
+ + + + + + + + Exclude Junk + + + + + + + Include Junk + + + + + + Junk + + +
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+ + + {{ sync.total == null ? (sync.completed + ' ' + sync.section) : (sync.completed + '/' + sync.total + ' ' + ((sync.completed / sync.total) * 100).toFixed(0) + '% ' + sync.section) }} + + +
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+ {{ filteredSortedItems.length + '/' + totalERC20Contracts }} +
+
+ +
+
+ +
+
+ + + + + + + + + + + + + + +
+
+ `, + data: function () { + return { + count: 0, + reschedule: true, + settings: { + filter: null, + junkFilter: null, + activeOnly: false, + currentPage: 1, + pageSize: 10, + sortOption: 'symbolasc', + version: 1, + }, + transfer: { + item: null, + stealthPrivateKey: null, + }, + modalFaucet: { + selectedFaucet: null, + }, + sortOptions: [ + { value: 'contractasc', text: '▲ Contract' }, + { value: 'contractdsc', text: '▼ Contract' }, + { value: 'symbolasc', text: '▲ Symbol, ▲ Contract' }, + { value: 'symboldsc', text: '▼ Symbol, ▲ Contract' }, + { value: 'nameasc', text: '▲ Name, ▲ Contract' }, + { value: 'namedsc', text: '▼ Name, ▲ Contract' }, + ], + fields: [ + { key: 'number', label: '#', sortable: false, thStyle: 'width: 4%;', tdClass: 'text-truncate' }, + { key: 'active', label: '', sortable: false, thStyle: 'width: 4%;', thClass: 'text-right', tdClass: 'text-right' }, + { key: 'contract', label: 'Contract', sortable: false, thStyle: 'width: 10%;', thClass: 'text-left', tdClass: 'text-truncate' }, + { key: 'logo', label: 'Logo', sortable: false, thStyle: 'width: 5%;', thClass: 'text-left', tdClass: 'text-truncate' }, + { key: 'symbolname', label: 'Symbol / Name', sortable: false, thStyle: 'width: 13%;', thClass: 'text-left', tdClass: 'text-truncate' }, + { key: 'decimals', label: 'Decimals', sortable: false, thStyle: 'width: 10%;', thClass: 'text-right', tdClass: 'text-right' }, + { key: 'balances', label: 'Balances', sortable: false, thStyle: 'width: 25%;', thClass: 'text-left', tdClass: 'text-left' }, + { key: 'totalSupply', label: 'Total Supply', sortable: false, thStyle: 'width: 15%;', thClass: 'text-right', tdClass: 'text-right' }, + ], + } + }, + computed: { + chainId() { + return store.getters['connection/chainId']; + }, + networkSupported() { + return store.getters['connection/networkSupported']; + }, + transferHelper() { + return store.getters['connection/transferHelper']; + }, + explorer() { + return store.getters['connection/explorer']; + }, + addresses() { + return store.getters['data/addresses']; + }, + balances() { + return store.getters['data/balances']; + }, + tokens() { + return store.getters['data/tokens']; + }, + names() { + return store.getters['data/names']; + }, + sync() { + return store.getters['data/sync']; + }, + pageSizes() { + return store.getters['config/pageSizes']; + }, + faucets() { + return FAUCETS && FAUCETS[this.chainId]; + }, + faucetsOptions() { + const results = []; + if (FAUCETS && FAUCETS[this.chainId]) { + results.push({ value: null, text: '(select a faucet)' }); + for (const item of FAUCETS[this.chainId]) { + if (item.type == "erc20") { + results.push({ + value: item.address, + text: item.drip + " x " + (item.type == "erc20" ? "ERC-20 " : "ERC-721 ") + item.symbol + ' ' + item.name + (item.type == "erc20" ? " (" + item.decimals + " dp)" : "") + ' @ ' + item.address.substring(0, this.ADDRESS_SEGMENT_LENGTH + 2) + '...' + item.address.slice(-this.ADDRESS_SEGMENT_LENGTH), + }); + } + } + } + return results; + }, + + totalERC20Contracts() { + let result = (store.getters['data/forceRefresh'] % 2) == 0 ? 0 : 0; + for (const [address, data] of Object.entries(this.balances[this.chainId] || {})) { + if (data.type == "erc20") { + result++; + } + } + return result; + }, + filteredItems() { + const results = (store.getters['data/forceRefresh'] % 2) == 0 ? [] : []; + let regex = null; + if (this.settings.filter != null && this.settings.filter.length > 0) { + try { + regex = new RegExp(this.settings.filter, 'i'); + } catch (e) { + console.log("filteredItems - regex error: " + e.message); + regex = new RegExp(/thequickbrowndogjumpsoverthelazyfox/, 'i'); + } + } + for (const [contract, contractData] of Object.entries(this.balances[this.chainId] || {})) { + if (contractData.type == "erc20") { + const metadata = this.tokens[this.chainId] && this.tokens[this.chainId][contract] || {}; + let include = true; + if (this.settings.junkFilter) { + if (this.settings.junkFilter == 'junk' && !metadata.junk) { + include = false; + } else if (this.settings.junkFilter == 'excludejunk' && metadata.junk) { + include = false; + } + } + if (include && this.settings.activeOnly && (!metadata.active || metadata.junk)) { + include = false; + } + if (include && regex) { + if (!(regex.test(metadata.symbol) || regex.test(metadata.name) || regex.test(contract))) { + include = false; + } + } + const unsupported = CONTRACTS[contract] && !!CONTRACTS[contract].unsupported || false; + const balances = []; + for (const [address, balance] of Object.entries(contractData.balances)) { + balances.push({ address, balance }); + } + if (include) { + results.push({ chainId: this.chainId, contract, ...contractData, ...metadata, balances, unsupported }); + } + } + } + return results; + }, + filteredSortedItems() { + const results = this.filteredItems; + if (this.settings.sortOption == 'contractasc') { + results.sort((a, b) => { + return ('' + a.contract).localeCompare(b.contract); + }); + } else if (this.settings.sortOption == 'contractdsc') { + results.sort((a, b) => { + return ('' + b.contract).localeCompare(a.contract); + }); + } else if (this.settings.sortOption == 'symbolasc') { + results.sort((a, b) => { + if (('' + a.symbol).localeCompare(b.symbol) == 0) { + return ('' + a.contract).localeCompare(b.contract); + } else { + return ('' + a.symbol).localeCompare(b.symbol); + } + }); + } else if (this.settings.sortOption == 'symboldsc') { + results.sort((a, b) => { + if (('' + a.symbol).localeCompare(b.symbol) == 0) { + return ('' + a.contract).localeCompare(b.contract); + } else { + return ('' + b.symbol).localeCompare(a.symbol); + } + }); + } else if (this.settings.sortOption == 'nameasc') { + results.sort((a, b) => { + if (('' + a.name).localeCompare(b.name) == 0) { + return ('' + a.contract).localeCompare(b.contract); + } else { + return ('' + a.name).localeCompare(b.name); + } + }); + } else if (this.settings.sortOption == 'namedsc') { + results.sort((a, b) => { + if (('' + a.name).localeCompare(b.name) == 0) { + return ('' + a.contract).localeCompare(b.contract); + } else { + return ('' + b.name).localeCompare(a.name); + } + }); + } + return results; + }, + pagedFilteredSortedItems() { + // console.log(now() + " INFO Fungibles:computed.pagedFilteredSortedItems - results[0..1]: " + JSON.stringify(this.filteredSortedItems.slice(0, 2), null, 2)); + return this.filteredSortedItems.slice((this.settings.currentPage - 1) * this.settings.pageSize, this.settings.currentPage * this.settings.pageSize); + }, + + }, + methods: { + viewFaucets() { + console.log(now() + " INFO Fungibles:methods.viewFaucets"); + this.$bvModal.show('modal-faucets'); + }, + async drip() { + console.log(now() + " INFO Fungibles:methods.drip BEGIN: " + JSON.stringify(this.modalFaucet, null, 2)); + const provider = new ethers.providers.Web3Provider(window.ethereum); + const signer = provider.getSigner(); + const faucetInfo = FAUCETS[this.chainId] && FAUCETS[this.chainId].filter(e => e.address == this.modalFaucet.selectedFaucet)[0] || null; + if (faucetInfo) { + console.log(now() + " INFO Fungibles:methods.drip - faucetInfo: " + JSON.stringify(faucetInfo, null, 2)); + if (faucetInfo.type == "erc20") { + try { + const tx = await signer.sendTransaction({ to: faucetInfo.address, value: "0" }); + console.log(now() + " INFO Fungibles:methods.drip ERC-20 - tx: " + JSON.stringify(tx)); + } catch (e) { + console.log(now() + " ERROR Fungibles:methods.drip ERC-20: " + JSON.stringify(e)); + } + } else { + const testToadzContract = new ethers.Contract(faucetInfo.address, TESTTOADZABI, provider); + const testToadzContractWithSigner = testToadzContract.connect(provider.getSigner()); + try { + const tx = await testToadzContractWithSigner.mint(3); + console.log(now() + " INFO Fungibles:methods.drip ERC-721 - tx: " + JSON.stringify(tx)); + } catch (e) { + console.log(now() + " ERROR Fungibles:methods.drip ERC-721: " + JSON.stringify(e)); + } + } + } + }, + + toggleFungibleJunk(item) { + console.log(now() + " INFO Fungibles:methods.toggleFungibleJunk - item: " + JSON.stringify(item)); + store.dispatch('data/toggleFungibleJunk', item); + }, + toggleFungibleActive(item) { + console.log(now() + " INFO Fungibles:methods.toggleFungibleActive - item: " + JSON.stringify(item)); + store.dispatch('data/toggleFungibleActive', item); + }, + copyToClipboard(str) { + navigator.clipboard.writeText(str); + }, + formatETH(e, precision = 0) { + try { + if (precision == 0) { + return e ? ethers.utils.formatEther(e).replace(/\B(? 1000000000000n) { + ts = ts / 1000; + } + if (store.getters['config/settings'].reportingDateTime) { + return moment.unix(ts).utc().format("YYYY-MM-DD HH:mm:ss"); + } else { + return moment.unix(ts).format("YYYY-MM-DD HH:mm:ss"); + } + } + return null; + }, + commify0(n) { + if (n != null) { + return Number(n).toLocaleString(undefined, { minimumFractionDigits: 0, maximumFractionDigits: 0 }); + } + return null; + }, + rowSelected(item) { + console.log(now() + " INFO Fungibles:methods.rowSelected BEGIN: " + JSON.stringify(item, null, 2)); + if (item && item.length > 0) { + store.dispatch('viewTokenContract/viewTokenContract', { contract: item[0].contract }); + store.dispatch('data/updateFungibleTotalSupply', { chainId: this.chainId, contract: item[0].contract }); + this.$refs.tokenContractsTable.clearSelected(); + } + }, + + async timeoutCallback() { + // console.log(now() + " DEBUG Fungibles:methods.timeoutCallback - count: " + this.count); + this.count++; + var t = this; + if (this.reschedule) { + setTimeout(function() { + t.timeoutCallback(); + }, 15000); + } + }, + }, + beforeDestroy() { + // console.log(now() + " DEBUG Fungibles:beforeDestroy"); + }, + mounted() { + // console.log(now() + " DEBUG Fungibles:mounted - $route: " + JSON.stringify(this.$route.params)); + store.dispatch('data/restoreState'); + if ('fungiblesSettings' in localStorage) { + const tempSettings = JSON.parse(localStorage.fungiblesSettings); + if ('version' in tempSettings && tempSettings.version == this.settings.version) { + this.settings = tempSettings; + this.settings.currentPage = 1; + } + } + this.reschedule = true; + // console.log(now() + " DEBUG Fungibles:mounted - calling timeoutCallback()"); + this.timeoutCallback(); + }, + destroyed() { + this.reschedule = false; + }, +}; + +const fungiblesModule = { + namespaced: true, + state: { + }, + getters: { + }, + mutations: { + }, + actions: { + }, +}; diff --git a/docs/images/381114e-opensea-logomark-flat-colored-blue.png b/docs/images/381114e-opensea-logomark-flat-colored-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..376f07b38486d2b10da1c878f7a67a203ab761c4 GIT binary patch literal 13589 zcmV+wHR{TVP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3>vk{r2mt^Z>cS_0-_Ihfo`JJ9m=9b}TtW>anN z$wb~}6_Z(!2)O$h93I!*|N2jJ|G}?5Ms&HfUPrB-UwPyaC*O4c`Stl4e13nvUoC(C zE&Tm;_wyejFD1UF&tL2PzJKz1`R9eg`uppy?eBH^_d?%)_;JCcPmX-^eP91xD87t-Ww=FgBCZwjgK z{g2nfpZCuF{Pwra`}y5(d*|o(_4N0xaG%9$-M{V8_w`WzymxPheqB-c>y!WX4}Qex zfBp5#-kF_lc0YGFb7iNh``*-#TY2B{#>G~q_hXgcjsFVYxA%MSyK{@1h#jK2_`O{i zA+p;RayVfI3-^89VY9>>Z)Ce;jGMjIYn|;Mack2F2fu^GmPR@*b>gv!TH@vSb1mV0 z?s%WKL+6uE;GHpWvA|FKwlyQk&t z@B8h3$s7MmU=tB6Z<{+eIQ{xuVwLb$ZlxFJ#QTcR&VNcHwDY|HTf}D<784Q?@Rh_4 zHTV`|3xR#?#AmYdm~vc1Ae0hMa7JuWssyJ;eKtSS!h3Hl@$)j!LLf@2sS%oyCc(F*%$jPhrPkW2Flx5cax1O2)_NOl_SADPz4q37AAOEE5)f8K z9nB5kZOqAsPA)z9>B&3hTydq9S6Own)z?^alRi7|vg>ZU@3H5JCmqWF)YIJQXPkM% zC6#Wz<<{G7zvE6L*DP7KV%3^;8#aGN?Hkpduc+~IYdUxqrs(4^cbwF-m#?QWa`XeKLTJH_h1jA9(zSuW1&M4jaiz zZ)6FU_vS_q8?r-MY$E^YsJ(Pjx>j~(4L6;2)&_mb=mw&tu~Xl3S-Ur^v)fJOuyMYW zx$2&Kt(8Vyt`br1lV3K%9fYNwx@u3Ug_is-X63|8BJI0IJ9+Ikd>Qu^inGs~$fE%F zU*BeJ2?T6In>bTjt(hr*Lu+X-eXncPYPZ(8N}DUUI6Lv2{oXc4Y00tll?l{tWwm5% zULi478^PAtZ1tL_-*#ALtj$8YisbxLY$+#3WVwY9;ZJrS1{S3a+nuE)+F{XNT-0$?RT=!|xWahrq~R>tro4 ztndYqViQxjP!Hb)QYwYwZY2_S62)OBt}>6^=<6I|X~VA#wgMcOw^=OnW^#2`G}TPW zlq6@SKIU=Z%)G7mlkA1#u(AYxQrhM-@%HS~^z+W@NsP?iu=(BEnw{zgd=4FuvN|JdO3(C}< z61Py3!^T*RSf9#TP*MHWlbcd~s;Phf3J{cW8WoX&0*ZOhwD(0Oq&P_1?(WXr$|O%? zNuxz>>x@L2vbTeE@6P@Vg`u;5hvZMZb~4y`{kTN-tUC&7ARFsB zV|SmczhQtz>`yCu*R|%Qk`|Su-Rv7Z+0rcz^a4pkgGNE9eri5#onH2eQc(r$Bx`^^ zF2b9*H3Ma}HtLAmLZXw2x4Ahs<++8A?1e$Ulzz7q)&e)!(=65cZ-Djr>b~C$`1)od zJ8J0zY@L?DAzKA}CtZtilY{cLl{1XDpp#G`ffnNSZ7fGlVI4r^AT$`Vb#k129s$!Y^y;ia#-up?% zIb7_2&OZS5)W|w4^HHrPK4XW%En1||MnEAG(;PiD3zWHgfv-JsjF;sPUxg%v91Hc8 zT_-!<0<1((xgGsd{!QPJn2*Whap!ckQ1Xb%L@CliAF5RwY%LxPVi z9jSx$>%b&7>kijnLRQMT%5DA=f@671KcENv6diuAD0@q1BlGi!R&?4@g|?el0%tX z;|4x40)MF*f$UI6!we#@f# zE>y0JBWWRj;M(5E%(gRZB4_ zlk`RPk=Z9as<~k!QXtv5?_KbK0imRnZXZ3NDB^U7_Na;11|<<;!9BF|aX@96v}A`S zFcKO#T?cAo@Z)tyYQN0QkCzW1Er7taAK=74i$0rfX7_QSDD)&O?kj2-?!LIkqs(E0 z4m4ngnP12Y466Y=peN*kbSvgi+fuv$43|j| zq1pxDOD51C$VR)oZ}_1svj;JgBB}1fMlYl?U)8PYY{N|yVMWxX0*k@rrLV;@XF=`w zjrvCp@mCMKz}#rWW!yTciG(2=QpX(2LVF~}+^8&cuGDxY!zZb=Ai%h{WF9+0oaW}% z@Y^6uHi!?D{i1|pM+m$AGPA5-L?=?kk@a7MTy3N{WnYPDELa@41dhmTd#+nF4YC1~=|3>rqfuCR9`=;Q1Aq+$dsktX&A@;0VYa3FKxL8BDGYv;j0;RS9WpZz# z)1WA5!ogxY!<}t#nZ^zely%V-%5d-pH3=mkKydPu=)^U2NxD1{V-o+EKVaFRzwq*- zR0#m+29JX+;PcYO(Jw9zx(*9?#sncjVKH&5#v;%kfE{_cLf49jo2LYyZGfOMd(8e% z)`s3^(;#!;nw1o!6`D*81=#!~R*V`iyR!zH11L2>Cnv9_4q(Kh`1|4$;WBVi5+f}U zrsM_Lh7Z~)SCSGL6>fKAzNDK3#sLB$iRw|sHYtUR&=KGx`?y?KL$sKmx+^*r_xnHMy0b0RrRB9alw ziP$Cqge=ew%1Qp8{D#(nM{>Nv(-#tb=C4DNz#j^Qt(XquLNrj8{3w{mN0OFlBY6`< zgbuu|-idd&itZM!!aE;%IC}l54!z5xQqYpU*vkp5QivTi?zK%5LA-{mp#=qMD7 zbViG+g-|yMGkKx8gjj`QYhbC+zM6ygNc{B>vG$@eLn(p8Ay~PY2&4Wsdj-mF1jW1U zcpRvjB1laVLnvI4IDffe_jJlX1+1JN!gGcu?*VcW!_-|+Df@&+V~fBSAcCmnhEK;g z^AET~#2Z2jX$dC)IIt^Xx3D278Pb2CO{!xrxoJwOp(+~GPnAZrK77pQRJkyOOb08& z1h2@B4TEQl5whdnNLT^u8Y3+`oE#-{JFK8!hmN^|h}kY| zAfjFFcnAQLeK20;MyU9QQToXjdGog8;I;IMq(osU!e1)Ezvmt~DwZcZG+I7+IEX7Ifl)ND!Pf zWOUmAVeQTkOk3@jDej<*;o1q1A!d<}ByPhA$-k*Rz}h<-Wf7rB+Dp8|YT*4s)xt#3 zZWgu~{_?d{@L1I(6%jj?^64a|2k)?TSqcK80{|{ba3#?IQEm+%zlN|jvX=P>86aVVSpmy^eNmm`*qG-*?r5g^z-DEq4IfETt}B&HS&h)hrbnbu^TMS%od zs+}d}nw`|CXX8^sOGHHq6uCK5S<-~kk5mk`#cIGX_7Uu;!qU;ll+X31hJ?$=9~PnG zvMX9b8ulUsMio;HDlr@c;6^^4A5QoeBRokl;toMhIWLqkJG#Q-VA2|%fT_{vzX%!h z3u}MZsc3{i?g9;bPYl>2v<>g?)S^1yN^B;iG&K*fRw$_a%K0~EhR)3o1mK1SRnPdkAlw`rRMj~577fZ_I z*NPh*JfK=wbL(E!vnv01d`ctn<4ySs`m*1MUV+b^4kqhZJk(#2%z?fqfP~0_omddS z6`DuIk_@HWZQ?(N zBf!wLA!~->K$-#2C|d-<=aVgNotc3WE1PhhlTr; zJG+sU8j6`mj9@Qg=v+jNt0t+yOKSTN7-)_3LV7?~K^^JPQu7rV2m@^$b*~0~n2sCv z=qtsZpnbIu!0(p=jw?`8IJ`A$$7CbZKrfwJA~TB41Nfv#Jlf6B>`^0{xHm&3UyM5@ z19gHt7R8XhSshoUPtn22V?JR{eRz%WAG`w%13BQ75J5>22{%A$cBu$7Bo~IBcj!8H znd$~(g>Xd|elbK2_@g1)cZE|DbFvdVJo4_#q3lq_07p0;#>U8#P%scuq|CeTg5i^gcd)Xk z<8~6Hlj=k)r?2|$P@s1|RWDW+xeL>(je*L*+J$~2o*Nx92Pg#xKuUA%)ePkhcC$`4n;hv&eddKLYwVpCfeDRB zaO(vreTP~U2+;^MA$AaKuZrP`TeJSff}?x^6rHOToh+$C3{rHeo@MnCKl=#`Y@M=n zO02Ysw!wXcjGMOZUXi$AVghgB>@z`MzY4l0fk#apD$QMZ!qTNsOQ z&sW=S*9Q3akB)!>P0oYuDw)<=M5cR~3o+jS8#ZP_YGbNm(&p{l8d?FJDyiw!q(h_@ zStK;9A;ghf>U*cu=jSf*2YuOj$8mSGXLqENg^K8jh4=*hoMi*U;d`L9xM&dPT&rzghGXmC|!>}8fs?+9oC?# zTR~S>o%}W*DFe&VgD2U4_~Zh`KGZ6I9pXLe6?OH+@nWu+I))3mgwID58kTiFI0+wg z#~fo3s|;XEn^ZpRW)TOo2m99k)V)rQLEcuC(vT6akd5zfpA7@yw%qodE=}OU@c2_AW4)Yw)~!uH2&013r?Pb7-Ep~IHod^ zw<@qGL`gnlNyr9rsx*k2V4Z}%1fcrytE!Dt(W7}ej}RUewQ3mSV2lXikIDbT?GKc^GQZT`OlsU2n z@6D}ZK6L7g5+F7|DwsHLvP*5Y`=lK-K@^tC4UkFc%OST67qH0o7Mp4Su0m3VP8_F5c-!;Q<5b{5Xt0j-SFf0o{M+ypBK>c3ck%;%} zdUGacbR?_GfH%>1Go$*V&bsIKBpLh8F6W63(x4Wf3Ejv{ja5jHtg}itpk|OPD%42g z`Oz{6s={s~;lewb9T&&3ck+i%Gm02>!mWe_$-iFDa>(9J^;7X_BApBrm_^-*r81W3 zMs~IY(hm|~A*s-j*cGIAI(rl^)H#|!2)avL0~P(wT#PUHUX|pS@CoHa?b&Vi%9VR= zUy$hy`Zz(pMu$*w8dk+?UZkjbVrU?pjZyBJg@LxzHDa4%QbRBc7j!VNbo2(09?V}| z)pf}n3V~#n(^G>Up^b*-^7r&N785sCjWk0mNl=ubi56@C&T3t430Bf|WDp(<<^}`? z8V75fbnsj8^M*<%;?gI^dRuJP*&oWaXY^?ks!lpC%}QLIeL_cQgslukL)A^{ z0*oEuMWT1Sx17i|;q!z`683u{w5S}-g4qCNh0Np;MT3e}b_NY;oH>&HwW6(Q729YU z?~x^?2fdI#DX_(s=+)_W_`2JBIV+gM9gPh4m7-DEs*=3YnmPRyi3@S$$m@~dHT zu_k0Wn4bB}g&osT03<2G#7j-sAE>SPXA}WBh$3!kXudXx%qxq{H%73Xywd*alvo3W z9X1<&<&_zXqD%bBt<9u6; zo=jx3`vmi*lQ~6T9S8=;{u8DN)vo?yqqbKWWKBO2^RJ9Rn<-?Z^)W1W#bv*C#Y+nS zaHw6ep3Q>H@*BbV*sP>R1R58P(#R7KKnf7Uaf(;1#UuyrS@52c%DORiJjoj!5<^uw z-a+6XT__ZEZctOfANa=Z9&$ouy;|F{aXKD)`KmZ9fC?dcyY_EnY)qZ6XzTaBOCn=Y zM%xJNlp4rRz31u?U$D`U1fjaIENYua%pJE8))b$j7>-U>aNI+OvCs>U@Q&Fve(1yo zSBFVcWH3PxHWxEnHK~BTno=#;p%{kFut=TSxB9a~!cTgWh z)U%>$REvyls$?#SeM$8lA9_vImP?d0YzwNSgD-1%TXAKDi@bX08j@hkr0yq%5GbPz zA(67lcI@y5UXVz`Z5`Y|>FBF`*wB$!^Q~d^%-%|=>sWH*0Vi+3qX3vX&uW9B#@8Rj+K5M)@;WB2u+2Cvw>kK#y5K z-dP%Jq0Tfbkt2JH4A~m>lynDt3&F>s$VxSsBLJtE4|6(OK6B1HAu!^NwFv~@>zF`0 z1LQ%_l&tAcc+P{9Cut)vyC%w613U#rCLv2+{&OJ9dgjAFDI?UyMi_^ekyICXB;A9q z)mi_O9-w;Wq8i?=P8}vV6Cj&9<*gtoiVg^bCz=l5p4Fp%54efm+f{<|g7RIQrv@4& zH=~n`(dm)~4l>Bru#S?On&lcgdN6?Vh zxj`4yf((6HSdpL;6p{fN!nnihb2<2$j01LX=NiTwLhz0VqH57%7=^A=p{S97bSs7U z&V(pTQvY)f!YZp~zdwg-yQ6tf!6Xj?Q^OTmAcv?#ZgB_dp;Wcm(Qi|O z9l5I)qN8!OHL1a!!#mwOKt%F)btgZB#$Y$Wh)j5=&cG)UGUPe8Qa5WJB2z(ABZs7o z8qmQ*eBgr`#>o8PE_FF!hf_30uki$E9kH)IB$NOyY5v$cG7Ub*PI8k%?z26W5p?)M zhI1i&$a-_XfFuUUG(^8UISaRd{v5tN4@-O63g^mRZbmC1+fR7!?Ho!_&$ z8q~ki$z>gAhAHp?D?viGL*1pQ`7g}|B0d1O_-Qe$b!LP3%jQJ$M!R}!5!0jSQaR!NN3QejeMyslA8jfeAzeqtnJ zMl^NSgM?Pg_H`_R(-GxXduJsbm#Sf^hYmDiQ#32Xl5*pM5F#};Dl!MzzTxaOH8v2b z0X&RuP0A2pr--H~iu^HZnEfm|3JDtbM>SO z5$z$9xfk`L(USoKBMB7M&(bJ40f~475{}COB9asf+Kmw8Zbw)suZFII3)GW+VhT)2 z1mG$@#8e|hCfL&$(PwUp(t=%dKH@BGFdu;h!;b|WSJ09$;Hgm1ln%s*6-49pQFQ{- z3+$aWJJWS^;x$KgebrQbTe4+{89m2h=%mk~gjKDi`m)c`>gyJJHoK!RK;= zli;{FWU&s;{$q<9+V}r?WGl@j@*lZghuc=)0^Y2F{NOXP9#GiQ*%~i+-D90Qle6>L zt_timSc%ev{187&^Cr%ZqJ;Y(34EhoD3y6M?2@p){16KK0WNS0L4c@5bNu3kDCQYb zs==WjNL3h|``K7j1a4GEFa@m@(-?~SybDcG22>|aq=P+m{wgFFByg!Cr^RL+St0wt zhtDul)+xjrMk;TJN<%PY7oyR>p*m>6S3O$rCWoRx$b}m;h*IC=Q0@r7&zbg5$%!az zfLRMu{nkVB0+7Gu;p~vInj$ym=`u4#RJstEv={BM{X83K|Q=A~l#CyA?1=6Y8s3kM#8c!d%xic!@7L zZD{=FPeXIRe=X{lvUalTNoKKWb~+%|=u*2Zoub6Cg5srS97Es@7Q!wQe$uSz6o$n1 zo?6r&ihV%j@Ls2p5Q49PB5LT4nbjYSgy_Odq!(C-f_%b(WhZqDF*`Nm$>CIqB<>d$ z*+D17>b~HXCFUT(0)m}|!bVDh3mpO0i;gK;h_9-b#;ck-shEqtSM}Z@>8sjX<#C8< zehd-}8mIp`1@t;qsA>whbBmbM^AYPiH#haH4j@a?>d*z@iU3pcgH$1a zc;Tz(4Byb-xW}7df)CkiJw&@v@|tE(MnY)1U&lq77)HZ=hG?^zE!cHEZ{C`+0u0pbq#t!-;Uh zK`q{Z<;fc3R;Bm===E2KxNKl(muQ3@NC@q!n2lt+J*$*GmV%PRsfZ^H;AnnDJ+1YaQA%E&@oY_RR|(gsey&)-C2Sv zEfG4A)zwf15TkBbe@`ru#zRkXfq9VovgKd5u96ejoKNOic6G>+WA#H61gY5>sB3C9 zD!rn5CA%WrLYSZC6cwb0t_a95iXYkrr<(gV4>brFa9>S{SK=1k5nF`4Kx4w`IqGl$ zh$=;Qt;6RZjYl%hT=4MvK;#w`L%qU`Y#Kn)v^6`DGbpQY=;F|f2C15CYR<^nzx&hB>)8&&_jRXe#CzF8s3WNz7L@-f74$Bnc}sAU)IABxOQ$v z2RN{*Bp^nO3$okO#f>4-$ZLd+R`$e?3{*7-k}O0 zfIHH&q($>;T?5f@6{Yq=>iwA2|J$Li4i+3Fqmdvzj-jTbRGS`*)!`1T-hX_`2g>j} zka~(_ltx1$y7j1re)bL90p(ve??)~(KMs)R1l!ij|03~3Efg^K6^8=Ys z_0XdpD?&rA=ex58DF}!j_&6A_E8k}t+Pm)oh*8PA{e2>hT#lfu!v1+8ZNVZs@06=) zUOfqv=QDI$qumRyCkVJ2`qG0eK*pUq51PyWHm`~~{_TZ7ef^i72R`m-EUq|YBB9ZY zenAj@p1C80(_PhpUTI@XTq{U24R1iYRs(QzrtSv$rLJ8-)^4_vin5iMHKYv|UXQ6dfhqtf+! zeUvL}r9ioQ^3?y}IEdcs89z;@YFuPNvmHf7_!qbOFZuV6uh^>31C<+1rvq(`NNOgs z2R+p7;hzxSlNWLl@BHUR4L5n^(v((2W1=@Tr5v0dF1VjbD?RG;Rr)$AoJqo6jdsun z;y+arq9g^^P|G>i*XMvb5_IiQ1&E;5G|2h!cK`=joUou%m0=cTEP}KZ`ytgM+NcD}zXvi9<<9)CMctwX%Y$PD6KB%ov zeraL`Bu8DsEqu(JUJq#Np~CgKK`e_ojR;_FmbC(nVA?f4y32dEx=<;QAur)VgIZ>K zhU|5AxTNX9V?tFlJVW)b^hQ85WrFO$o|2mE?1r6p^%_+qQ!Q(Hcuc~953PE#gPmk` z+^=b*ySmV{*`6dhLTH_a3_Y2Qv@M|V&|p@2EGp@ z51pI6NA6LyYE^DM5TqPXdlwSGm=y6ZrOGa-&@>>omIhZQo6R5C_|n=%+kJ;kem;`? zhbNHD?4V5De*@!-COy)oAw>WH00v@9M??Ss0LTCUX8(ML00009a7bBm000&x000&x z0ZCFM@Bjb+2XskIMF-^s5d{?i(E*~u000f_NklB#)d$G z2&zOeiRBVyoS4B?Ch}+l6Cp=Vq})tyoSV&2Vkavi9IV*Hli=CJRH0g;QK70KLLz{f z!QC8c9lQ;smIdhS_xg~~pHLL=)b#iM`w}Rn=vC5mN^@EnnX?jdY8j{MZS`xp^78_P zrr$pJJHPC~xFkT92>gl%KE?Rz!Q6xhSrUX^eJ4UM0eW;^qN$T2GG`^EP726rWlKIM zFd@RPco3TQA~ZdOxd~Ai0LqC2kIqZjeUr!DvEGo|>>$75L1=0S&u1lkH6sZFK)a-a zY>_$*Vl$E@g5?=6UOXGY!qkv30JH@+CJwK$eR$(K5Lba4y|(?jsd9$^3|fSg*U ziNhQ0rt>`mWFrdC4qQQKW0 zTLIlW*6HRSmzKF3Zq>2j`C*~20L`goy75XwDqFx~Bs;~h<$xyBdAj-fvaiLfo4D07 zKsBAxt^F%(A6{cXf74oU1hK_&%XF(HfacUPjqO}K8eM6ITjQ%wED^zk_kjo5B8_Z+ z7=YRO!XvtKfz(NXx|%~1hc|TdwKhPk3tC?qM*{VN*ZzZxK9(r1k=j&T81 z>?bf~Nq|rBz^`~9dkK6BX=JS7Qm4piWoY^>GG`^npS$|*C=XD@UIkN@1Oz6BurM`* zz=VjoNfAE9W9qETSqVqyl^km&&wAUlpfZVEyTOzt0n0PP2+vChOb$V|C^eZmE8!qp zL^6G2I|s9hU( zLepMX7%$0m9`QdfZ2>m^?GuEiy@KU{+7UEx8<0)_D@y{lBOiAieCP^LO{X-HcyAe) zeuZG;YsIxdHWI~F=5zgu2Z^xj<&w-F&}2GKH(sfank!pKF2wh*kg({oZ>-1&&yREjD(O(X(DN>Dcy@lj%I=t@vY$V_07rM?X?vQpDEkQ|_RqvPJB@)hQF8nohZk+SuY4qKjkb zXYwl^OF-TH?@#oiSrEgiw}&toLa__LsbgV#W8OBbT@s|(BdVH{2d+?n)YIi!N)yR&=}^(P zED7AykEYXx7ViT?*fGt|tCviMZyXtp!K8 zS-kahr|NI-xWM7|Ib#TEIz{-`cksysvP2M=6swhiBD8}0=14?>qg;AqD|09)HIm?B z9hj8$aKAzjo*#Df)*CKYqt->E1;GGXmI%I@^*V9^?>{fgMb4ZRYj#0RtEjOcG4 z906691iauN(e{q@yMSiSOU%~o@{HFN28S7uujv%)|M|<2u;5oS>@Jk1QyiU@XbsQ< z4&1ps>kiA-nEKT%<Z}N>6DUoFQ*dw@tjs1g?FAKf30!7nr*+;|K5s=TR<*rAwIx(7t`CT&VeNCqz zz3`9r+Zb~zsV4y4eKP>GZvbsnEZwQa=d=iP1W?wXu%=Usxzk)FVvYl#at}@lAhMUu zN@ew9+ks+MfAT0P@hPIMV6aLRzv5vRxoX}z4rOV};E^q1$*Vfy_l|o7h(5)`)TMo@ zl`YG*grY=gq{!ww9J zWQ?oJq{5*r#H;+V+dzQq6`H2Unoe<$E#i;2`KF&6 z`=Yy!bE6wK$OaX|_73jGL(~<6HmI+_)YdnH|64fyk==PPIxN(r)pjaY}@QroBjh zKT#X)7F!%^+1HxWZjm}E;OMM$XQN_ZLd51b=11J|$m~=^uFM`ktnaNbtF}B1I!v{Ikntzg`TEU@S6F{vlo_!{xpIh zq$+;})*$`fTb=3emmTgc?cRvuGflMH(wb(MYi?2$YJeJk9h*`wGU-xT61a3>*+snK zygW*4>O+*IKGelZtesnKX-RAw1eqV^qC3r$*0c+xka{16S?nGcn5@o9{FL+rpgf4j z2)@d;slTmJQuhOaN5c$D=N8X#FIEw+!Bs4|-d45;;eGR1JGUaiQSOtVdD6z$ifg#D z5oY2&Uq+B6!aUyQ$KO@c6T4(dz~+l5Sl_*X?;{bh&qr&E>oR90Bo43d+-zAA5DAXf z!giWYD^pJHZ9clct*MifdtSAW254Q$X(fQ$^fJnobepI8D1* zMFnXhE(M;xmK*k5yFt|QTA9*}JDUOu@SW-E)RZnafyuMQzg4{xX<^g|yqx@;TE-8_ zzbvn^cOxYZZ@_#1O{*ob#4abllDquys6b7o^IQ!>ze3v1@h5GZd|{pAzLCcSYBHS% z?|rM$#qqY=e%rF&@~kBAOlujS_Onh+9NusTGdw^1Ac$ZJP$MG2GYevrj`Sm_Th+nJ zJjt(+jtjp@X9s$O^)LDEF3YK9tR>#}O?S4YQ>^d)#nk|+7qzVnp{@Z1fbg>sA;NjF zj#1;YwSU#qU>;iV$Aix9%PI7>35a;Zt{9C1EHpQ=a@O(zX zcb|jTwLv zegd|#OMAq~3OU-HtIfl%ZF+S*p!JkFE75~&u`*0iEnC*rR>`?~5ttOQFg1ig zb*NJ>P)`Bc$OX!rRrb2%)LWdYx3#I6mpW}YK3$fCTG6;q@xU*8;8RFt8rQ^-(c<5; bZRh_7YRS&ATa1Sp00000NkvXXu0mjfloZY_ literal 0 HcmV?d00001 diff --git a/docs/images/LarvaChad_1532.png b/docs/images/LarvaChad_1532.png new file mode 100644 index 0000000000000000000000000000000000000000..8458213b1bff7932766a5842c290537df3a4f0a6 GIT binary patch literal 2027 zcmeAS@N?(olHy`uVBq!ia0y~yU zE{-7;bKc%v*q@p%dEnvPGGQ%)&=p=hZ0?g+En{kDy4Z8eWaUDhlUH=K!$Nto)r4;; zo#styUhv=Ppi`)?U`y8`gM_SA%hvgtRqsown^S#m=Xbk)+nwe6?(F{gR{LJf_cx!? z%B%Sstg92>GBe0%F|u~Bh$sjJG0@$VLUg6#d@Z~N8e*Z!S--u&~t4XJ8a z%*ys*Pk8xt!NvQxFI7kNCgoyLvuN|_*>~UGYPV4P9dSJ|?%Mnr-JF;XJ0W%1Eu#LG z-D`iF(=1#9oEi=)3m7IgFu5>+IZxc5GHJUnUs?D5+Wfxh*!1W6aBuo|Wb+yeSu|Ns7a zo-N-fIs;4Ct}$ed-nH^&^ZI);{@QNde$DQ{EW0^>W$*9%e(=rvlY4xSy#@8-wHZyi zcaMEp{l0!uT=@0*|NdOR`($(d|IhX>ZR3AFbHGlaocfVSFZ{8F6`Tw#%-Ms33`G5HT)D3c9ek{Ih`~2(C!za_9 z_s=`?@B0pGY{6x^Y-aAuWy_ZS{qkq)$@F@eI}Kk>+3^_{Xgp8(jok-nVfk5ARi?F{ z{q`1S%G>>ZbotvM@#XS=zjy0jj*g3e!{)zyKCk_G+c}dTr!rxtO{?8|Zr)v2+YuZX zKJ{MB*Xfhb|NFB2{(pP-M-IJVJN`VlQ-sahyyRIo?eapU)@t>J&3RR=_jd1gyO`e` z_pAO~w9b})7`^!Yx2l5MBBu=-VF?M5s&@8jT1=5|kiL28*X8^6KXvxLQ_ufX@oe&& zG8R{EI%e`vB5dlnM0st?#iq-2*J|ZveqFukk%>OGK$M?qU9foTl-f1X zSEtUo$aP`%`fHbUvR{@isjb<*_Hxu z9#35yTP6G12#ZJNev!I7EyDYu-nWg9o-A9o+Zc-)*}qbk7v9;yA|r>*wu|cxb33J{ zM>OH^wpEv@nz2eGCYJ2i_sDG7s&(;ilK;M(va>hS za`E{$Q?5_c!scyYAaCR?eR^V*P&T$OLob66Ne7F}#hXvhzAJm{EHim|IKTS*xu5zM z#Kyn5^xAFyO}l%aC3@_pe|GnuW_^MaTNvJr|IHxNzst@z>aWyFZNJ6o$M-!tf}^B} zxSMhG<*!9+E#4;Qa?Qh*m4JzK^R7vc#TGpOtekQFdHdsS2eFoDoz@%enD1lD8d&^? zD2nk013_hAuTCq!UvKd9&96rfpKJyO%eR7Am!DSOV8aqe6HS+~_J(=5tyW(=RrKAt z?+0SA6$9zh&3E74%75_2<<&2*&eFB~HoLBdA8S35(#xrUEf3W)iz`OlIC>#-JFxa< N@O1TaS?83{1OQi{`Xm4V literal 0 HcmV?d00001 diff --git a/docs/images/LarvaChad_1532_zoomed.png b/docs/images/LarvaChad_1532_zoomed.png new file mode 100644 index 0000000000000000000000000000000000000000..e7ac79456ab1866ab18bc6ce13efbe8ffd8747c2 GIT binary patch literal 14761 zcmeHt1yq#j+xL(nozgO(h%gK}!~jDh9STy4FigPEF{Cu8l%fct(n^b<2uO#LDgpvh zN_R>~$2;Key6d;^F8hApf6x2vSYk*BXv9gK>y0yz!-Z0?g4aiaYSS6P(ZAg6AFm(#GnBH&%UmQCN8I;(aQVI z;m{z&v0K3x(;S5wlQZQBBak9bp5$1`UXMX4mt6%AU+Odn6q>ExFKY2$x@+fjrtb0u z?df5jPCc_xZLbAgY5#e;_k$~LW!0xAS!m70@l`=rekKG=C-V*y45*qUG5B6+X(%W?c?BhKOP<3OU(T zZa$91xz_HMb!(z^?>c{1mo3lTrLyNs{S^DcQQI=EXY)N4X1^BOm!0rksoI-|y_K~^ zGk{NDPP`J~EjV5=TKb;;VHuN_rtX9}GStTpRDCV?WZJ9KvC`GA4QENZi)(fI=Za@5 zD5ZsjOHh|5Zo0nSbbY=tm&1BxiEOK=A7#F~dd>3|-P+LS8{jpqOUdx}cGn(cj-R(; z*5dv0(!XVJw`PEk$ToR-7&Pai^S*&xMaSPOGPGyc#YTqGZ{KhK{ACzTnHuOCxdR>S}TmNTKkAL;NOp?wRRWqV8Qz_<7bv*2Ym8FYB8kK>u9 zgVw`(=rgl7)ru$2GqT4~bmNJ3#p=q^#m}(Tl5$4NLFrwxR5+9(h3nZgbDwi3D~9u? zClH2%x7oCALB|s`^GX@a6~nk=FKc9{Uo?WHFx%#o-ZQneeb>uWx-{KD@YJo_mkRbU z$$KHadw_Ua^i}Aon=)^*9&1bN63U?;dfhXzy5xRG1C(3x;mwoWvaCDv#S+qUB^~d} z=gRt3JFmcZ$JZT|TdE#S=%lS$?1i!zx%yGTiFnQnpR&NxXx6<@lvk9lpW_uL%xvOC z>k{qxV40X1USJr6xtQ*`Irn?aMV8ZC9NT+b@_?Dr(637d=IflMEUpE?8R;)uGmTbuU&;CI?n_cmrIAE>l0_gy?9&_*=7;+%)8xo;)6GnP-7dN4@}v< zKCm7CxF6n(=6G9oxvF=^*>_NK*KXBjn$pH^?+aUpSl-v(-8C>iJ9|oR9zTm>f4wEJ zr~no#_1gM#fI9sd1#;<9u~>QM7%e)f($$?VBZO^T=vG}pe-Td<#*x(T@)&JQz*vQc zJXg6%{hI5%7QyYE^`(&&tUWFREv*VVI|+H;}QJ{(cZ#HDs^0L0OqFfh0ztllx z;zW(n$|a6B19D;#nx;&=Rq^rtVtfu%d*#*SY7-Qa$wLzX6c^pV zo5S82q{adzuF;oxpPlWyyZ%&Qed_tvY0G``hD?8x1wAuoit?E1;@eM?2-n^6*=8pw z?TSNCZ?L5E@BJF^&euNyN9p8L21m;$?K9cv55~N`Qu~~5u0E*}c9sS0r`Gz3-AVWY z|8};-@v)eD365sOM%7_*-2jayy-DKOfKJ{RgKd)Hlw$~H|sXqr@Bye1s zFE_J=wxn|>1s*q$|1yDnbbG|{-CL3KYx#7aT!L6fUq|wLrV&Ezg|R*&FP}8Zh1}H< zEerDZG0I=mYG&PfL0IH|?gabs5j)Y^V2|Y}Qzf3wm#pl@?wM5cgb0%LN~B=^#O{Qg z*F3Y~C59m4ly!xuH?}P_YaJl+Om+i`_YJ6HWfMK<>HP7BJW_AD&Jdq*Oque1O*|mkXEpL>o-+YGcy~KsU}SXnCpF)N zcfQ_)y?k`!Q7x;HgqdCPx_ZG=(rfMA%i}&{FexI>1}lpEhSf&$2}F1+T>@KFeLvr` zkpf>}j_C2GtS5AD^NDp_<*xWu<0hmNTz=x0$~K<#*6)ZW3oS_mw=hQduMaOT$`IYy z=~`Gc+)svHE&uwatUh3IOt|`OgQ^nIPjjIz;k+C5D?bt)HVEm%`;>x>YWa!{%-c;9F~oq zkvUficE%UTF7Tc<*U%)xQ;SNiC+H!EMrb>CDLr`9^WnAe ze9+Bi$URyw;zyk3Nx8oK36kD@j(|^s%SOD~l6V5D9p}|(9Q0Odtb0^N`z%s0zy@n( z_7bJt4C|Ms7SegdeAgaGGN2!0bVia&9-Vo7Y^46hu@Mg$&6D9TBTh?kR9LiRbKf>0 z3%FRUE4M?huE?=wD~*+TJv*8bkwO}}I~Qhcs($H)yM1L#7=Ffzp=@eHPDPZCgWhC) zYi3HGn?31{QotpH@+6-Gg`II)m(^Yo&R#d9*L_}bd)nKDn9%dm=zLdWNXM<~N$wT5 zrn{)-y>1Syi|wF%vf*V3X|uu4u8;-9!z~ba`~|1pr8I6cg}G%a653tX=w!Vm^*S}Z z*h5dXqWPJper0uCwt&i2OvIfb)kJcQ#&lMQnEhtu#Tthp#kFDsYyY3ay?5`LttbfNA)!9=c+ za3_!1^b~eSiun$((D&IZUW-NWN2^2~-yZ#CSaa-YwwGw6~9)tAsvkt`EVYm7< zCdR$KoTUi0xf>-CGOeuH=@t_PRLqmxd!SZ+ww=;GuTsKLmh#bLN{`TLR)=V8^>nuh zJ&6J{r8Uak6Ut=Fs&))D;7Dw^&fA1<2(lzmy_hJs^xP=jZ>cn#=@_qQ?f^nX>7^t&v zT&TTY>G93A+`3rtdjpD?I2qq6ryYtKFW#-%AUr`A#fk=_=c8>!5P9rHO@@~1LofE+ zo91b(nWRMp5=nq0_~dZuSdBFDW}_Q(ofde*$Mi`EMQ8S9cZrXqxRTC#b@@n4b-s22 zUt6v)R^ug=LDwckw2=TG}J$((V$c23#XZ59mz#JfuFh zIv$8xmzxpg6i=k>Zr8MV_$*ZKlV@QTDZ-+ZqD1zhn#*m~ignGHDAN+8BeYNN0TY13 zf$FwQ`TLVOUrbNFwN$>DhELfPt+T*_M}ZvAPLs5|Z5q!N;3}!?gp=Wl4g-kbu?t%%px{D+hL5gUDUZ%f1>fQ|1=R~mRDaTs zrr*(d6XYq#M+mbvjCX7a1>LyG+6HS2l?8NWDvX!Ehj3V)uBh8YaBVizTS>gf)1O$f zavHe~W1fk85NF%&7EUo2+!oBMm1rZ2Pmm97EL#qqQmcO~pF*;Od3=1Pz+QMeZ@fZExq1 zr0Fr!Y^pEEarT|#&_ZfH@_9%gFASNKzY|>#iS(>Z=8HE)$@1^mHcC3|v`0icaLvug zn@}|Mn7ho!nH74kmHXdcEVzE3uglO>ZkzZi?D}m>=|Ij3cW?5fH~sq)5sUTV(MqwRbMR_3xF-y>n$_N9k|!Zvx_*M zW>#(Wu^cN55I2B7s_8W92m)^>rNq-2RZE2g%r{cDxAr;XpDB0VrMWiP*PRwW+9TY^ zKdfM)L=ySf4F#@FqDz)Vg2|8B#V0luvgn}Ilmw@6s0m_ifZ=3u=ujk+GSga(kXi;kjz_BIJX z6mdI0;v=e-|FPEk=fO9%q}KyIa#l|{U(_0+XyTRvtitP(uqU5smSqTOG8Z~?nIsU=D) z)hTS4pWDzIl1Gy1p&res+1d9jGWzz$RfT?3YcNi+kJ-{`*^RBBR%oi?Dq$p&u7uIh z3oif}ga*mQ=WDnl%W0RWo-x%&m=#u@ih zmNtPIvW&5qYd#4;3wCnJTfB))_dPs7A?B2#gO0gULZ-=SH*RNR*w1W8-P-YsHM~x? zRlDat7WBYRgS$h;WV%*Bc73ekf_x8NZx1-k`7?QH+m(;bE4C{ac{<2#b1he7+2t)I zOTa`F#~deTu`3Br)TTU>uO-!2uhXWKL8OhZ21>UTXi7KgB~srxhmFVxe99;uK2WvJ zdFey5P@Uj0n-;DxB8Exhycv*i5GgwF=}gJn*MT9NeR7v86YWpA?GN339GJdV;9!*~ zdT$4wm`XNMQS-raAO-EYXAlDkn74~hId9Y4ikEpb1hN<|)Q;rBr$ zCf+*V$(sFI^be=FHJlQ@ew)hyq7kyMiL8Z zwjqKK_EQGvOJDe^-JLFc=U$~${~{<7YHl@Jw5Kqv#$I;4C-3e$C2fX0E z<2DNTorz* zf=9}TDyBU(*zDy^uVhfX*}!1)hM%SfByv~$P3AE<_Nn;6PaBw!K`r;i`*KC6+`=+P zKLzutY>i1Vx}6?$NK!^&ZQr;#_yobsiR7*Ayr0(5(pTeG$`O5;k(G>fZ!dajt*c0? zX7NZ+J-BC8dez(2uu)$x#|NpRveUy>1j^Jtp&7q2hI*t$p`~v=;4C>L6Jw_R@ESEI~<0aZ|QiTyO$6<|dsn!2-r`!@&fB+Nq#|eGB<( zNYwoE=(>`(sV^qe-b#10UyHGFXYQ8WdLv%|94{+Gf4x-r3X~}#tHq{$nx6-9nq`QM zvUMTaAXhxohl)yG2sly6%P436=IJ$|1&HgjT=9THy&1iQVAbO?iq48wZ*Eaxtr*T< z>?x)zTkUhbdcNxxqu*6;yS*jmeOp1IDE97C-EqZVUVVijA1mJa3hr0s*;y;AD$KCg z+S$@FPkvK-)7?OFcW<5z|>yL zv(=mHr*kpTNQX)yvjj}38Js)$=u;K57);%SN>|AqLQeAv+zPU-t&OVB366M?N0}D{ z+`t=|8A+Ss;@%VFEeu^6D&bgMfGrH*DOSFNJVCIvVf(eXM=Z~j^Ig9}bB;q1a1MoL zc8!h+S==a74aoNpP8#=LXl;Ky!B0%6JYs^rFTO;)w3=b>G{AG~*`r+AWV)yaScMVQ zJkZH%XMqy_FYiJh=(NzOhSn>xg6!XgXPlE!VY?`nxO^?Lk#7?G-n8`1!}T#i^2ya$ zR9*+0B7TH%5Frg|&e>FQR$)`O3;b!;atosz*j?IEdY9Omrsn~qkfuD29V$N$+i@PA ziZmy-DIe#AC^)c?3}SO@#dl8fCLM5t{PHx|Kb`WOPxKXAO#7)657v?r2h5w3PNf9o zGRy_M(X$xsPDWR+}YThm=eQzBDgtsjMisX`$C6)1%!WpnfVc|eedpieL zDNh*JpL5CMpQ5Lm?%<1WG_OA3^6L87HDD4+Yu z1nw7%%NmPyk`fg3@bD1u5EXEAu@V%9LZN~}B7!0!V4MWl)yn}3_XIn*o;on`&4x0{ z72$$$!eSg9fCo0=mX2;%7#A1rJ@DuF?47i=e=+ai`V$H`JOn-APJ+S$LW1`8g1^>q z#j3dDjQkYP?`pUj;O^)JFQ8l<-CPhT6?c>a_SCOUAQ8XlJGr^o9j1ds2%_vz_Bc^j zoLAxBxKvfw*84@{00JwFz0;u<4(#7ZVln9NVErbxgExoi{5lYv`Y(2WBmHykhr&21 zZEY!KM}*r!cW=^{K|x`3kJtZxZSU#IxvOAnUWBd6tR@Fgn)&F#l^r7B+e)tf|dkJic7$SA(Em{ zlqKZQ6cQnI&e6pljw>g|9&UvabaJpdd~pD{l!Bf*j7vn|Ti}NydUkLu8m9o`(uN~| zy87Q`4KVg7eJuO{PGJclQCt9$BH~aHAt+SjyO1Hu#T7@z1Ea!10;1mxAJjz(mkkbC z_yJLI1`aiF$w(==px{_X7XwE}I~dnN1i%B$Lw*BgzEwpHxH2uMpO72P+h=!GB`Z&*PZisg@;L6e5I{6a@=O zh#nLiB?^{Ah#ExJ+@`;23n64e;zYEO~z$jE6Pq z04O05QLr$M1P}vZ5h*cIDTp{oSXfF(h)eLNj0F$+`sb8o1pg0EWDW&>H4)(SzK!7~ z7~Fg%_{)U#6KDrG{s;elD#m}%1J3lnPW}?U|HAbzTz?6Hza;!GyZ(jiFCp-kg#TsN z|1-EqzaM!}4!CWQ2kt=Q+Y!ixI}8z9YN{$99*Y2*O6C5zr{hj)CawSg8QsAL5AZO7 z2{(8QtFEnbY?7P_PfTEHzBnBKV0f;stYF~TH{YA@$ZEw@<2;CNCOD-;$;&Uy`yxG+ z*TT-4!0`4(OkE;ReI277ggV~1J%PnNGw@A#u|FqkQG}vHifQe24e<*uQw=;O+s@j{ zpEg%E$xg!Z2Un|n?{-Aw+Tj5J@~Yj9t{fP-NG0RRvHIQVZOJaXI@ z{y~t0Lce)Bipmelf2{Jm{{CB)|31XuQ~8sueo#3I5Z_h4KOM!(A&N&<`40RatNgFU zP9AFy3fP)?cQthq^x+dH)Ep2XRB^zrqhNJdhd)mISJXTd{LjGq&C3sLChRT_LeKu3 z+2-!B&(b7fJ?zluGI_Q$09RSO+;y7}FH_+u|e#`aL~NBY!qXEK^Fd)2(Jn2Z4cQaHmQF9{cJ z{=+&AAphhduGJv-{~3Ax$z1U_cEz8x>k(KV;NMn^A8=oGYfV)XKr+>uFZYr#i}#<> zTtyKODwu`UfU5?D`{r5?twnO9A%MC=6lDEO@KW5pHj66~CCy|Js}rWa}{j zyEHW5^L4n0+ra4{RlbekN&Z!z>T2)N+kBp1p0RpY3Cc1nsGnOF!F?lm$9LN~3 z6P0Z%zD9m0ysM^d##9YzJ3i8BT0b+tvd7|GwL)dN&oQG*RsMW&(RICh*UkU4IhUyp zI(1SSdPy>k^dGZnTX=W17(m^Y$-{9YX>r@gQL%NsMwbMaG0_I=Kd7N!UL(Dd(5l!f zVRn;^cFuWaE1lb5$!~6H&vQ3kG{*wk9Hh&1wd%|MURiZb;PO9Z_v7MyC-%-UA7@#z z%9?2#dhe=X3pVen7WerR_<)+~!UW_YokNmZ$qo*)#}xj*KZ(rnPrH|+#_%$q+|jpr zHf&*coWZWxRxpiHQ5-yb9K9La1lrMF*_P>*+Y`E5gzR1kGv`SlNI!b zY52%1#i8I2%0F)XepsEqFD_Xxkj`SDr+70MNv2DRMDg=|v@CWWzKG)tt5F;#_#3ic zd~5uR4@$mrK<^rbzvk@+zkia`QO`w(o1!Db{=;54KuYt3(Tfi(0ZI_INN{RUi#xk_ z)#tC;Q=40jQ9GeEgOkBK+vMxbhvYtL{QuKn{$zW1SjPV=+Q>UKkJuQR60D=3%|Fj$ z!nnNgN*E4m{l#}?d)3er4|hrRCzSbKy6;a%QTd+|^C(_^s1AvM$>kOeTkE{>(`2wg zteA@$05G(@r*oLz5b!XP@67)b2Y(9}|62Lw6N{dvJp5I1ZPe}6i;vgu93FKjgAT45 nk5ZDq`#k+81pZ#d&R%n#xLT9h8Il0p!U9lN(NWG*v{e^BA|dEL6HoSBqJb_ z5kztZk^B$1yZZU>-F5GG?^kuVcBp20=8?7bs>2mnwt`05$C>p;AKE-0k6og)J1?&E?0BE0Ra0RZpefh1!Ti|9Rt zW7i1L5Ex$cb^RCNsw|zR%?|{$ zXbR~L7jM(9Au)(vBwo! zA8#B-?O4MZR!2A9Ngr$*>mOp$4z|{HpWC+guT9Ha zW^Sx^9r=y<-7#<}R6Y=9&$%DZmbHjJG#sWE#?a(W{x;QajvQ%Pi z&@0z4FkhCtqthjxx~P`%B(lDA3x1>+);jxg!?bllmQzjV)uy;(S+t82-BM|%b7j|J z5f=G%(`LlDh;Xv>`N-~P6(1;T(=98_KM!bHhEIt=NXGr&L%U12X+Cur-1jkI@JOhS z!wlRXJQyQcD$ptV%)waGz&-oXu|wJDSm0D1i-o;(H4=w+{P zhGj;TNzHUg5+w^H(XfOi)+BRwG&M|;3~2vO`QcJ*O8dL1R=FVB>^y5RvLbNBt-IXb zY2oUwNlAC$*BCr{U58vQ@LoLE%bs>iefzf64bnGh^aP^)nRl3)??a;+oyR9JyC)KW>*W!1V1@Ojec>T4t`g$SaXv> zT~l)BtpoD<77e8Ft`Y;Hzc>3~KnNp$r$l>x38+%#F{Oc--Hg70d4H?t$ioYsqjt0A zo@2`w?F);JHui-xtu3|P*mZn)0~K!PiPqjM3W?3VPsUpj&N^kx1k6Z*ex{%c(fvqK zl7ks2B^DJGF;p5sO-9&WQNAqh**q4`i8|IERU@{X`gCOXF-mSn_~MSkXh6iUV@}E* zIg@@y@}Bq8!hKTEZP6jwzPBT@eR;b9AJS@$0_ns1hZ=J1XWPWZ^NzPEKXdaJ=)tx=)=Vd3J{D%3^4GY#W>Js6K~o7dNJ)PKL+(sU(Z$?jPxr5|WyRcW$gEeTR- zGZ)X|bh(0I^u0ERtOe0qcAvq#_Q=eQYxy-MFZj#pO*`Q}EAeZyd~=%xH_c<0-SRWu zKqvZxR$)AB?^t~LtDQEbErsQR$1W(AOm%rQRgu5ah~5TAL>)N@JzQ1l=0o`{sDYyQ zI?7Osflcs|I|wNEgyT_p4Kg`E$hXWLPf$A0J9?gWaBnGKpDH+-xX00uiYQ|l3XU-u zO1+W-DRr)6A&3QrrHm$BNf)`2jh|xXd$f@ETo9_@4;@+_j%_Iw#*yYm;a`zKjf(^C zj^#u5Uwx)6*^OV%6>Mv`#*PeYEf!dFcu?G*Dy<~Pf zJDImzK!R9JOM2*McH^0bYQ^Zx(nQj}SH9pxXXi34vp^ z(*{0-*bPq`>FJ={seuG#_JMI(RbY1@Vc8R88=`R1i1IVEdz^uSh+jI(W`($%nuALI zrN%Qamr&y9SC6+3O{2OH34*CKBT;oh>K~P&14{3z`BE90vbRcX;ohjdgRc~`ae?w( zpEbUjeLzpq)zv}MuIP3Db>UBl2bcB-@tsBMZ?8j?s3dekl3!4ZNj(@Dm}YEH&7m=` zm#)bh^veE7bZ8u6B7QM48r${7gUNdFUFCv|*n^SV#9WnqH$6kZq5BraiH4g2n`u>_ z3G)gFWU+eo)0Jn+KAqX0rwr>Oeu`@|U5sV!=2)^di0ULyL6DJS#R_X})j)2!HQY3k zEGT1JySc^fb(nXVrUjM zBS5#*6jXG<5G%exEt#OCSAgAB(@ZgSCXBwyr#HC%htlp z&s9pR`?N=VHT}Hi8gI8{jS6w?uQ$Fo-@EIlbd z#uwu?E$tAK6EUS?%f0P0a~P}KvbuZ*j`p zcO0%l*&Ah=2KP+X1+g{-Ql>%1W3?>vINO^-gX46U8S#4Ev>d5@`{y6DO>8Z45rn1_ z;+67=SJ4yZ6J=fJTNTF2+oynI_dr}m4PA~r<&{;ZB+{L3np>4T39 zPcM8-%X!a_(rA*on)HB?T|iwz%8u`ySLDjHao^dqQ38oZzT#t%ndKWRb!QqLVQr;y z1Edkm;g|DE*q2{D8Qb=7e7qx{8Nb7T=OB(<-||R5OM-JpQwLc5Y`7V0^|CuSH^IjC zx)0l%%lx|ce3ykA7X)H4Jqbf}NUrON(^PXmzkSc~Q8cYhnZmn!3;pCojcXDM=2@$n zI-82rR?X8o_yQQl%@Q4VVk2g8=X!M zy&2a13E zd`2KDg(gu0n-m)(tSIFQt4`R*Jb6$1qM)_w9M~Z=+kt5T*F*WpG~=r5Yv|k;Ams@S zgmqYP!MOM+ec|eus>IX}+5^*sNe+7YN+Sc^02W5waGqg9)v=dQQnsL&m&|%3Ike0o zSVCV^5B3_D)4$w*?z~ zsEBmcOYAHQCV+!aRNsltz@eCAQ!t7%_`zil8C<-yM`yd6xoBf4U*I@-P5b#A#^~){ z&>4KY7FHkPX;GYURrf*XLR^>Vb0I#@x2o5*>KcM|WbC`0*H}<{ z8+FC|jN1=LA8OoMoMRPKH&VFdEMcN|16(wUYnH~zBHDU!e4n*V8Dv)clHMs-jWCGh zC7w#ExebZFH|P!moT;RPfd^M*_qrW~TfCvCLocKPlKV*UB!_ZcUWI&HC$P?y0&9#i zf<*ihN@!|WRBe~aGDS~=M3G5&^|>sH!@nn9b{GS;D5|HWO}-`DLQxPumH5zdg+rAf zfE^)Qb)GVWK_IX5rFCQc>t>=k23rM2z(Qa8hPh1=3HY4F)B*VJ0X(9FZZ?Qx^9#R- z>+4iPkLHf{vN^FP+|ROe^%U6}f{ekzgUK-SU0L_6DQ%z@_EBjsw#U$mjC1w1E9Y(f z^@_##rDCs!;heA6tHT$?J3q)lnU~+Wn86L=;nkr;Lr+AnvTBb1_NXF36+>*D z+^Fyamfdzzr$;1g#jM&=ofzrVNp9&XZ=keFRg;?W>IHm^R7Yhndf}rvMO9%kPmlC` zT=){ttIzG+CX)MO(j8vL@@m*T_4eBO1;H8b9p5a}DR;S9tSuTasv66-?+`=`+SHTW? z0B#*rTr9Rq(9YgpLC#p=ysi`1-@9AR$+m|3@!SQ#9xqf=jKt`1p$xTe0}&)L%AViz z(=2cLO}=WD7@MHb0Cz;R$n6kPvkydb_a(*FIX?_4hxi0e;rg9h+m_*b>j{e@R+CxU zztnz%=_&T1j2Olxu_FM|Es%J<%Ua5w-BP4^=Hu>7@w+um65_o~s^Sp4R|%pbSzRei zQ@{hBi+-0}fW9pi!pf1aqpJx z<|IBGxg1e#V19mdtRApKOQ>2x&5v2duND*|@TOEiB1tp!rt5wZD{@-0y;NK<$;w zuW=5o0>x4FYSNGI&1dFsS)EV2hO*!QE(JL*B{Y^hhiTdJESB$~i)1}YiUeztvJvDI+U&}n{LVk7K1>2#=DX?6PaFvS{ihXtO&eAC& zC-!4N^Kj~^M65FFyNw|cZd``j@zk<7C3OZKqcb058c3HJpN)6DxLXmp_NKQ^=bG`$ zk}jI7M@3ydH*O(vIoM2S32>4GLV2GQ*lBYFUuk1>*dd1Xs|i=>pULveyRor+g_ zp1DoE)KH`}x?y5<%-UTyDyySZ?^bGNHU1itM#Fo%DVMPk%?Fq zuLdeOue%)HoLt}$cPQD0Ei)BKS=u-0K@A$;s`AlI`lO$^u-S8s6Ngi>U(`CvimUYE ze5Bqj%oQkdv6q1%p?)q|Mf9>$tIDR#HlE%AgNt}jIBOl|myvw&%fVp%%D4i*iaa{6 zEWw7vjzBGB#ORPz)*E*dYw?MUDP!5@p0?!iI#?sDBdwA z;2CRYf-MOHvr;{t9aMG4cXF?;!u@I=i_Y`G$7e3y*ko{?^ZPS zxvt2@Gy9`bBE{|@g*7wzDgN zEWEvmS+b6M7ksNl^QJj2=}Q%7G6y(D56AbhMLzEI+2GU8#?5}h<0|4`pUdS$pr%Ma za~8nC`l~E3i{s^FP49eW3WDjKWAzqh;ku93-Tmm`mIU*P0 zn>JpmoCXhdYi{BJsYy4-<08|9X5PtBdnJh)8PLg?T=KZIQ~wB?AwwjCAJKwWQ4*2M z={SOK?z{Y|I@iACY^|iE(D9e3!}p+HF$9)Ot~QKp1w(7GzR{YOMZ=$OA3vN zR=f0PE}!+K{ z%Fiw{)Vgw)bFFoRKhWqTR}OEIqr2?X5s|GVp-8VUn6hyrs)chF)MfIjEotW?58>=q zJmOg&y&PtwQ3y5}!P83_gmhpN4;`*7Tj`Z)M)$*WuP9LQb*;~X2n1T6F&>Zvcsb0l zvsY!g(9ij~Cf|VoOV0|}M{oKsiQFa!ejzlQ2L(PR?(n;3;b7N$G2M%b&YM@(5cy6<-uW*H=Ri=Ia0xg)>V_5lDE8p#hu_?hv52lcTen zn71VJDXtj${iK&N1_lw0d4_qUXY@wrh&RaD?cxco<)P3T*70Tu!ynWdDn#yPfqnvi`-klb%y|zBdG|{u}PUNdM~lsW4hf zU0qB83G+BHPgOyZ`DA=CI1*+D7dw50fx*Jo5HJ`d#3uv=35f6tfgn(RI0%e@2n&kB z1o#C7M81Pkb#`-yIKvPpP-t*&J2VcIPZ%yNEGPux6BZNz2_PU~kO+bo20}o=P$*1P zPyhJf_b_5zxJHOMGWl?npwz6 zqM`v#VbRWr$)gYucO*&=iFA}?KCuaSqIsI%K#8wWQL%GFOZc3m{4Ytbi*Wt=>+2kF zv^(tr0#EZ+3HMgu}pakPy@w z9dIZD4iW|PqT>&T2nh>|TEk!hUn%|#-3@8&?gc?1WNpx%qP;<9(5W}TOJBL<_*Y}R zY!N3!@$&J5z|CxAKzs#Sd5pKndcXec~0i_uP#gQ{C}iKoCn8vt;Y{N#%P zNJ^$gH{!Xgsw?8n5>jIbQq`>zi=+R(Gp(v1tLHtuJd|CDx;~g=841X8DSTE0Ib3b%E3jnNkK`nQca8_>6S)oJr)7kJJ48k90$LR$57Pp{D z9dn@}S^&U`nrfeO2(v2nZ{yb%#$xfCXnX)54D!729>|5u`7hOmpAPM*;2)Fz%Kgc|(S%j1o zx@drj21{N)W<@Wz%^zG;Uhtazt>#xyfUjqHX((~Pkw3X_O|9h%;wRVf7^yO5_ovny znS27)56<=c&D=KVQ8yP7-SCtCs42gStV#Mp<|=TWM4CWyqEPyf%(n(PapzFFe?saS zg>TJB?a>ygZ-8WNswJjLmr%y6!-&CakIBDBB?6Xjp6+8BH{T>O-b`I>NpzaqW%z>s zVR!og^C0r?vO?aYbl0U&jFy=26LeJpRF%y*!tjrdLUt@=oJQ=+iAPVi+do}}eyB%( zvda9IRquDp@RITIe*=b9??IbAw_} z-TmoW`XBV-kLmr6HUET&%+|Yj$%Skhc6H5*p<1(KxLpT65dc6h8LWy5gdd%&j zJDU`$=D}{nV+`%r`M>zR^9(vK|HN#-xh?ql0ZOCYt?&p>~aHi PtpTViYA8IDvkLitAiHW@ literal 0 HcmV?d00001 diff --git a/docs/images/android-chrome-192x192.png b/docs/images/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..4ea57a06d60516b6d83f94399505b182072f914b GIT binary patch literal 10793 zcma)i1yEeew)P&}-Q5y`Gq^Lj1$TlI+}&Z&;1EJ^hoC`2fZ$GW2$tZ%-CcjqIrpA> z-(Tldy{XyVRsDTmueG{+PxqSYNEIa+bQBU4007YCWF^&}>yAGjB!uTuZNUx^06@Oh z5)vxbW@Z5J>b?JaVcBj7S+9}$CmMWg!3e&$C9HZ__|8*|czNO__J zLoT%&Y*!1;#f^0DK4 z4HSjzdnM&PW`L*d20eXCp%dA*pL1rs2~`~`mrdN6|2|(VF4Z-f{tipvCyZggL_=Ha z3EEsw(#A#y>p=>qZ?I@W#I+2~Y6(RNW3We-=ZdE?a7nwLXM@U2R!tEAd|mGZzppqb1!QP0I&+0PS2qsyY-f|LG_=DYUd!aJMgStClX_PM_1YwKJNL*Cme zUYo|MN+<0LcP)N6$Cm?pza5{( zyd0%BPexfBAG(c>j1asY&iZ&A_#Oo)y^h=Bg^HLCxrs1t29zm9@uTZsql=21D`Xo7}_L z)M==3m~<=rY|HfImnLt^D&e_p!%*Ap4yq~{{eEXN=9~SrdXetTUnrc)Lj|K8scI{Z zPwDMOPG9OQguxsu%ro71RA0KWD8hvPpHq1ZD_SQULOcbri~Dds=}+9!bAmzuXVd+h+Jlh+_P%7_Obk=w7epVUb$Znn~w5iCe_DU z&*$c;{H2MU3*XBSyVva$<*f9-<{abLvm0Vnvkt@8*7N?TNyuHhcxmyD+;h%5#lZ6} zVvgzaa=?@H)IO8Vp`<+KW_*b=_tq7bmJ<#>CyX>rOx5j2i}kktgW?j!uX)Zi9_1=Z z{zB8U{t?N2nftlcI|pYw(|)bT%0^G37?Qhoztz9GZe(RmKi#7Erle_=fh`GVx!h-W ztx|IQoYD|E}vMB zZ-D8rUy?*sg|PFXWp8>zO7%uq%ZO#3SU;}9qE_fi{@RuJ{AQ-Ra^RAGX8di9qfN(E z4I!>=qR{SA{Y_34XP;6L-dlc7Y`^zleJgfsFsA-nWZ( z)7oGC9N-i-o^c+#4ez#a#e~)(mXow7=RXtO5__#+6k!*#X@~2UD zJzis+FgdJlB?rY9Dr7GvLzP&C123k3l7RC?YW6)22F&I%f+-2V!M&j3KO#@~?x0ok zpzj;|>wfUML@Atv_2;^_r?>LwAtTnFiBy8+mUmuDu>1O^dgWczy5^s8e?~bR$c4|E ze?dfsCk9V4%?D_eL_77tZP?*fX=9=RB4iOI!jPH{b8l;@T1w{LeNNZ_3JdH zyv1K*d{kv#UpFS?zIv+Qd_Swo+1DmKia^d?#JWrzB*s9GQT-v*(+~X^7Cz4uQewWW2bCALa zCW*(+gU`?}a2xAmUkfv?`IA5=3wHA=f&-4 zQcIqwf{Lx>+llv7qdd4mUi42T+-`}1%@aZ9p10#l?BPz!3YVugOOB5twqw14sj-d(PL9UGx53ArfcR!CpAj_=Kgf0OX%xzUa?V)r!+$L?;= zsWxo!H%hj4qp5sMRBX`<7K8ipU%mI7IqWBdAtP)APlw$bqTVPNH;ac=T2DFrzReed zO})^gb#VJopNuSjmvzc$(`1CC8E@?-y}Sino?8|x(XvUS&cMn!Qg5kS9^WSvgHu8& z((!tW-GIoK5|p4C0+3U8Ei`h>Y5Mo*rB~=}{IC+W`a@|!8Oim})qPj=x3@uA{jdbT zNOC{;G?aXWzu!1SRb!wtl2|%KGl1w$g~Vpd#Sg!_mr|q z`C3Q6Uy;c|lkflJY~+auR$3t6l7e!QT}@cdymx=a>B}u170CYd_0E&{u?S%~E$Csy zU7|0F@k4!up_+~)N^xuEc$^S+CC`UROq!st5>;e9_3#KGIF^OB;WJ3&qLY2y$iD@c zLwz1{LnDm!nG#`_J4$t zC=VQyB>IAB@Q#A9SXe32sNOFQMh(pO)RE|hUxZQav$1B7R1~#jTcIZCvHJ-;@1pX} z27KVop*T`M*H_iWe;|aja2Zh6*ozN*`GZxyP9nqhDE4D~$Tt5g9yHZ4QEH*nQAAy;np?_#`-0a=Iw>LKM=| zDCxNrg+#15W;~-0*K{XQQDeALbbJICqw^b24?B>$3SiH(Spm^!Z!jLkx(_2eTuS>IMxjmT)#x(ipe5QQG&yQ1BF*-$-htw zUoV&Nu&IU~hcLhe6JG@81cZcgU@IrJ*tC(l?V2uX;hn)AhRtfoT9dwT+X7s1 zUsrCk)ze0HlScV#csM+M$c3nMbOotFY{ndp>0EA4J8JJJFVe6wlp^=GUvMkxNWO9q z($fe7S1%yw=P=Uof2Uo#dod`(qF>uUW?%9e4T{--D4T6yiK*$u5^oO9msSHIzLlf* zjD;f9o@%I(@yN1>uj7>##;$El)b~xj~F5*XF3chmTS)Jp5eS>3^rJ;l=Ma_Fu zBj&>3KmJi{4rI2+uc4xfdoI?GSMhO`jW_UHF&)EoRucS)p$3xA_-CHwbZl)5Qr=wO zTx@@!L^)*8Gs{|}N7gIytY7l<1H-68CT!90+Sp1Dx-Z8RF(=z>{vICbPsBV#^;Cgr zKR5(K*EshL#EJJ&GC>gR>q%+cDf9VodAO%0$MM^ex9%2xFH_J^S%XWVxGos1mFkRI zx*2D3{^L4+Fq>%HzcKBK`rY2(j#gu~K2G+7e?kqT9av2Wx~Q>f>pDPO-;$oET!g@C!X zAny}_SBVl4ae4L zqpDdEl=staz&^IL3LlzjtQfQqk0xasT6h)-?_o#YY7o>}JPPgIM#JbuqUcKfoX*NG z86c5GJMw0V#=QvtXS|Gi#HoLuM5Jm1?(us(|0Eg6turCXb*f;FJTBIxH%hfqN)fTGudBxd?d2m zh+Mqm((K)~`%?T-=X{ZzB$3Vsvtx@UFas!F*ckYn_KL;?>JiN5-g#i0dD4Te6hh;`oGb) zQ-uXi7=O>o1bYXrBKYAPUqCp1c$mdtyoT)Gy&4LmE`xi32!LJ*JOYlcffy&F79uwE z?M^X61810?H2%@v9{Cc99$i0NSX`ZCvjio2#I7A_{a!gy)xwu>sJheD^Xy+mx9uw! zN!rqxF^}`e`xkFMer&-K``$*=NC+?3DvXT>KBU5DUq<7`d(XU$MW1XHUFYJ*j}vH| zlukU!vphL!g)3nl z!I&{z!KmB+F$&h8mn_6y%(ph)3yaNfIP(9V?8bq1G8CluMb=cTmp{4uRz4;-Sl75* z;PBLm$|T|vQ`^yUUUpIRdfm#nwDt46?pDl;Kpo5Nt{#plJX{v^Fc?J=@zklAx{@Tw ziw(?1AI}k;X8bX#h3p_Rc0)_1H<`}tN%vPHgw%u=Iwk#bvGLta!>cqs^6pK;sRJTU zou%8N?;10>VitEYwkfT6Q={9YAS}iKKctc}tg4)>$iv!~n@6^bh~(0&OL2syd~sJK zGDA6w(N`**J#E{J4iRtV%FqKl{n_xjU=oPyzvJ!1b&g^Pr`6h;n2y+iCC7- zTfEiNH#PHj&&GWj;TeUe_$^|Lnd@kGqBSC64ow~RCMYP9JGV1s`I+p$%br0l5H;>8 zoCKi}FFIhZ=RXTF1%Wl2lPdh0%1J#7xw}$^163TO7Ji8o4!G%A2rlQX>WcMcR((0q zd&+ex#4wPsn_;ZMq8Vg`w~UG%P9m_sIk7~9d4#|kAdgl}+VDwz>X;*GwLIZyI0;X97sg2ojxk{&Aw?WFxgL0 z6%oGPfh^x|_9@feTh#jY-MX5`u56X^#ZiO6;QGsv^b{@U&1QTN$PQN9pk-oQ?cXdh;J2^U znaiYS!!@@tPQS%@H%S;X_@k&pqerz3a7ske$Ju&B@d>@gKj+{3ZeBEvb$;F=X*5ZQ zOjOn~yXl53O_=n62+K&vWE=mHuFn7?OPJnZDJ_n*Q0U80?iK><$QcY{*Nant5!57{CU(9z?PGjM@pgTSN;uOFCZ8MK2rR4ZLRLW66#!>7GnMt zR2ZiA&V^D)eg!)US3upvFITWUqO7YvYy8t}_Iz}iN6Yd2q}f^g*tL-_gV%l|#kaP) zFv7|sYEpcc&yK%D1b#QnUVP%VH(Q;xti?Hr98OPeL)XrP@@(sJb>+8{|3?fUI>jMY!}tC^Sp0mdZ%q3;>wA za*|>iUULUoWAStYn*Hr;jC-E$7jE&M&-=PPhK}ra99gQ6(3lpaP8TBN0ntZbY-9*~ zfa%8A^$lI6^s2D}nF$sltufnYpaP07D?&_dHc(&f;j<-kb?&C^scqhSM$J_2+k7gc zX<=#kw*Tsj;M_s!=x{{Iy>yQ+n;{$oi8>TZ{Qp!aQM(i7zH(fC0st7mH~Ps&d{G>@ z1G+r3{YFdgaCwn-Ss`+lfDpp5K%&w36XLNsAnJPlSZI;X3MGId0wQUr-&h0sr|&+b zgWU}36r!R%n_{B9VbJo%K#Ca71wa!u*Fn^$+ABc)XpB#ycN~GrPy&Qi_1}GW&R>aM zYe-#H&c(NlK4d7RU7C=Ypu+%9S`)41mjzX>PetlQ{zNi5Apk^^wxemR>PP&N+h9HB z8WR6M^#_9H5VTy@lGg4tD=cUc$$X~KIC!Xd9P|mE~jaJ0dPGw<27B*-4 zv8`bLXDok=(`P@R@`~PkAc~d`oBsPC;)+k8TJmSUU|i?msXw7vh#^_tB_GKCuYn~& z`H$TXA2B;F9t&-3;&I<@z&f>xmZs0G!3`r)xvTkRLV19b|0e(c1Nm(Hzv1o!rPFam zUa3p8i6#XV6cj4d0`@n>Q0vPSePS(RqYGeuK`9tURs!B)53jrGk$!kIl(th-(gYKM z@8;04ivoj05Jv^jB?|kM*0HaY|8ZwMxKY&VdRrE>o`=(VPX?;YZOB*LhNt;^MyDKL zzxTbvTrwW$fk;x({Jc--c@t+m!PEEqh&@Md46!bx$0Q*Y)iE|3;NnAop-*cQZ?bnqL9I?v(_SH{|J?1chvP1myP zb~Zf2o&r?-n?9$K-zG3Wr1=5CYm)RPYik*bteYiV!(C{tz2IR7>GLSNq&*T>Sfz%nJR zlehJrb=>X-M-As+tFOp~lxj>+eIb?wieEyIu~w!DIoqoC9*rH|dvWJ#zy;M?Y-F_UoC0u}XmrVu@f1V~~z#;})`m)Xvt zpZ%ah9B1%w!N?dV*=-@XLT`wXHG(EC0nGMWgnEzgFrSm4(G&a!@!t@gs`+lK<{Unh zUWcBXhh-5Z`YooTc$l9ADGQ!QFgT1n4;*q?$VFLSI%iXm_~j5g}Ii)Z;%-xnqRh8AxA7a-7^v%?BdJm$8;RFKv}5K`qw& zk;2;iCJV{~p-A71n%Q`l=xl#5`K~CX-PGYrBl1AlzkW&?>|tfgBJnGpR22=Ya5p~Z zUmARce_zwMW7={(4E@Ys+ryIN6sSAdn%XuWEG}s*X&fWR5;(WKtZ`#dtRVvJ72@mu zogHR?od|KV$u{FV?5vZX=xP`uWMZEq?x@?fm4;_WEgpJWh67=RyAER)vG!+6fYHZH zCggSO2!sXqzRfVcta@2}24|~*e_$MC*@;>gGHQd4myq1)R8ELo7=Fqd)O7=pqg}M0 zXjeT|wcY(ReWdz**Xgv-eI$I#jppf7Zaag|Uh#^$sB&?n%PE{P@VuZ)I1Q%SCXXQx zqPntO;4j;EVZx`-rUmyw8`tkh@aXroacwP$Az?di-JGgpTdko{%~#HzZW*JF?NN5{ zMdjcrZ`iZZtII%1vxCi= z{G#2IZ%$TD9w|bYy7Ev`J2GB9XeJF5HRuwU-gH%MM~72kjKxrmSPXjY2ZsAf`X)}C z4eRf1p{N=?fw#E*_>5^aFtL$*X+3IO;h^z1+0sWo1%nHt6b;b+!9j0M|J|eCXSlMm zRUcCMeOia7PRI9e6~<3m(Hw_ms|@1yDmH<^?NO^f9mSt(vBT8M7 zf7xsDm$lT_H(}L=;@Zy%5(-OXem z{aiAKUOWxco;Bf~hAC-YZb6s((fhq(`X&dnw|bGY#u5m=zP^#o;-A;H#?Cn3d`*2F z&&JvqgEU%%doB>NF_tkN$`|~VfSyg+q#|Q$o5YNL;m|T0tU^x{9N>#Yi+qCy6Pk5u z*fZ=JEZFL?zoqKAA4wih8-b)`n7!)w zw3_4O=Cr>cn@d7oee$WQHS*-}`!^-YyzPc}*9T+wAcU-m!8_`{m4SE4$Fm24z zC4Sl+jQPzC8}D127aDBR&}mE%&^k)RuaqDIyNWcUM@CMzcKqx82bhSVZANJ{ge=w7 zJ8Eh6Z8C`-h&UCWh zzEBf1&imuI!2bInDdtn_bFnwTxd!)*ke4{?5z8R~I*$RrF&qxa$*8KJgaOCu6QfKQU1n+OLbqj9@J@UaOB_D6{Az3A|(# zXU8wM+WQ-`D;|X6-^kLQ2t+yY`RG995{;k{Rnr*n<7vD)FJ`5W@VAKES&AeZD$6w_ zm`vrO>&H9Mj$iA3YbiP)wLHr9QQ@@`<5PwcT5Scs#I09wTeO$$||wHuZ@FBe(d zZnFk0Bs2rsbp!783D7-wvR2mbUpd3!0|kO1=R;>_@IUOK8TnRY^GST-nWIfNNS@e% zkz3ysX@}x-WbPlB?V)vEY6E^CpP>I7%40=n_h)*rxpu1DT)S&v%Ffp;Ycuas82t|0 z#A68{lWRydIilW^q*BGRh7onE;lr)@GR+NBdPfP)wrb%4ji=%W>Hn19KhZd$CExvp(c5xCUcKu56sG zItSa>Lxn_HS?z!nqw{^nCVqiM0*hniHsG+%j4&46?ow$rQ`P2#LZm5%*Fh<0yx+?I9b3PEF4@K>|gbd0R6yV^HQnucECgc81mU=d-Y+>PQ?goJQ*`ZJ&GANUfE_D(M5uCCUO4gk-Mxs&!YkK!MA{~ZPgH;;-F zJM1%){C{Kq70@#=0^#;~qXu6615sW@N=DAX&D_Pz%EZCaT-wpa-oy>y|g2B1KS;NbfxmdJTvIiWKR+NEM{_5(0vB2)#Gy zASCnv3FO6n-aYT`@%A0#o_qEiFC)py_~$pX=3H~GwZ1j~vvxf+w(k;bL=!A-CD*50}jzHF1U*-FnLW1n|_-iq17A?j7p1Q6;da?!sHoz1JU>tT8~P z687T>J(pwu$NZ<#$_%eW(huH$>f+qs83Z--rl42($Tp7RElWoko?Hok{g&v~jiSfd zWb^_ccWv%m8#&|(v)je(hC7h>*6xbH8^YbC%vj0*Py01?_U2q?hD|@0v?x=SYEogl z$V2}f@dzrGQ!;}s9%vp#zh8`zz3nh-mM49Ey_0P(lXC+hnKWG`N0WARel&s*WqqWs zpM|5@G&=OLN3I+ZsOsqT&@V0Byvw0=(uinkn(@V;pI5<|#W)~Q_o(RG@zG#0SJhSr z0DK++0D1AsL0N4bLr|3i2BwXJuy4+yAUqRT_W|vRDd3w%JxLgiA!B!^G)=%~^EyERcZ=|LabeC#y@lYtE3toB&nfIG>HW+Eb zzzcFQc8in7%wF)B&Zbk_EI}i&^D;5J`m$0#y6$;ezVM@f7UH6^pynpA9s59!#N%Ah z!N$WQcVpvBxYJVRaOU1g&##|g9Ks9ybbWu22Yk_Pj4~$nx;X3FWziGEIyYP}?k=Gds$yUR75L)cv)DIudD-hJ~7s~bS7FQfV% z$mtmnS~78~)G;`{cG_{$o6*C>%(<_=pME3caKmhW`juGoGVPIlU0=)j7U>HH_MNsS z$~Qa7wX*GL(>H`P`*H>aleCw>xD+@h2=?m6gzQ?o-qc!JS_Iw4w9A9Lw<<7eV_po{ z%Zu}zdY=b(*DT{ze^gvh4Clb^>pnZBvOxrYo_rH5ikJk{hka%3e62|omU2A&2xGBP zStDL~Gb?1PC|QHZ;ggeDF6jchnNC{%I_q?XilLi+AbU2kfCw zC~7v%!vyk^%s+_KuIi`?wIRC-3a9#!ZfvVp#->wKG9=*m;t z3MFYSBDQLs{tPok=Z|S-Coh)}DxsfW2&C%XVts3>Ph02THCRvoLK$iNV_sosHIPUz0Z(_1;k$^Srq_F$s)-yjVzIrJOdh1BczCirXU%f=t<6GuXyXSLdJf3PN z!g@0|S`v0WS)HxC2FmA!j-JKTQX5h_?G(nblo4;mHvbx5Q+{zKqif7FOJ@*SVpS=P zes=0gcXT$ z;f{eBsQCMReamlDQy-mnfgzKYRV3H1(g}=m%?9WehC6o>tvOJY>D?p^g}!!L$e%@# zHW!~&CZ%|yflDHjCEasZPVEAIDNbVw)*mtJWf$wj@OnyM>eeqA?FaN+U7Mc%*lmNN z6A5~n2{x$a7|OGYN*~G@AYKymUG>y}a9yQQ_C07BUt^Nd%~aaSY&$*T>tih9Dm6_! zn53y3k6mg(#+%R21q~#WKTp=ko}WgDvlMyNtPKNeJhg6jAC_f{9;-L(P%{*NH`u&jnx$fa8(HJ0N+3pun za_BV?>;l!L23h(_dK>PeEOyZT6ixzo4KhhaguF3?DYb&{oQX>o<)z+ zD0Z>CHu+!`#kYiWxK6t~kIx6=nzQB9wCt@dhCj0mic(2?vEvFw++v_j!$Fpw=R+F& zA|nXT~j_u}RtqlEW4JAgZ0Ao#%=gQ9HRJ zGQW;%r89`?Ww&mXlR;~r9+ssYx@R#Ot#i)+-EkdR#$TRR?%ck{&96n9A<5#=y6UD$ zn!G9^rkyF}n#rV4+e_4LE+oU+W-Bs8HO6ut>3>w?C&BC;r9qIfuisuQa3K(Umb83G z#NK7TUwh+Qy#sUD_VX)(+uI!ndV~cH%zSX;u`iUQx8zcJ46()2Kd?fX{QI=Q1AH_% zWc!+&_YI1(d1RR`E>ps{>A1J?M<8ld0N&TBqAKy-HgT|VG)&1{ta6?GnH5pCTRQLE zMbrA%JxfQ|etdPy7SFq3ctER6KU8bA9q{3iA~Qh+4S{oeW#9*d^Z3uf6R&sYQT-bC zbuPZ<6x}S?$5^j;k#AE6GLb4J=6s(lPHmNAtFfF>|K(8*$?}gXl4Vb6HKvbs;cSx3 z%_ak1A4cnw2EMA*l*8TuK4CtwmvWPC|Fx18o^>PaV&{Vm2>2${!x1*{;Y$9Yu55N^ zQFD}rlh(!$L_t=myWuF~kivf4V&X1h2wIxQ{ua#~Tz|w{yrEisr#*R`x2&z#m zW9X>8N*sLKI@dmA;u@peXlMKNpOW0~d@i!yg_#&|#SkvGe(i{G+dUiFsMZmoS$M+K z{}yQ9x%R?Rm1Bz2>|Mww9I#wNn?t=$DR2ArXL2{^&DMP}7`*QCN$1-3!G{~*it3e| z#(M#KI!tdcOG6(@`p6}PJvPs7D^_1K?FVu%Sck!Q6rCO%X_a&X<&*?|&dS zs*<^Z&A2&nO-o%@6&7ep9A$ARbXjMyCdi``@Sx9RGOt`-@i_ntnU4zQRupl!;8` zk~XyU;_I4KSFo#0MU1PN1ye#0jUV!ADap+2!s^npwt^F$;m8&JQBu-R!ileaq~^oF z)E^*QuYJ!UJj&n&$ll&qrnC&qt z@{T>}ZNprYruL!oU6alg?d!q>0`t24VH(e+1ah~52EMn^a*5wj`9dh|Yn<;OE7a9O zpUn^F=ne)PQ@zZ&#g)<-Z4)>ta&KLE^Olr#@d~Zuo9AS%a+8mqcn!ThBH;O6DLbIg z!L65?LT$GTN!r}a9)9YpyZnq^4V+!AmLY2_eo4I4eCNWXEs$2?zR^nYl*=aQ9!q0U z-bX9NJ$d7_XPw8}t8bmjV2tvx!pFPwLSuIxduqzMT3+5ntOLq*-3K9Y+Azn03PVX7qsbb!Imo z1xD9Bcu84s?}0d>=qV6;-m#l?npEMmU;TFe-G2P;%#UK;A*9Lmr%f~aN=2IlJ90aO zG~+8;eOG(q0 zP+7;|SooYQkg|?MHN()F@|71)l%>Fzr`iN07C?5-h(O}XgO}P2qN+SkR_}Z*px#$h zr8?Gzwz}LQoTvUsDfJj4x;!KC{Oq=I`b!N;<@;i&3Izy<|4_Wb41xJCiI-Y0sE!o6 z?v%tY^NB$l3fMSK)8nr08@;^dGxSY#G3AyX1-)37Z`Lh;K%r)EuV=cgY=^4Xhr=$V zgIJD1r!>O+{uRVh2f44{7@ZK`=hLA<%#5wcnL>GLfH@4*6Yf zZ>R>#DPfnRolzeC`J&w&aM~vyIjU!yBhbrn)O3p6yMcrCrR0OY{eajD#nuZXbr$1r zs|$}{0-dRSbm_HRExKE0z=Op5Gf$bHTc~~UOCgjO5Z;jg9P>l?lUG|NXDY~2mK!@6 z=`wekL;G-EX=*&E@?LbsB4l@#7bJt3m+SY`SA0&y*Jk(PRY_3xltYhW#Md(Fz%&!} zpt&eAW&3xzhaawbI55HtgW3uP1AlCiQT({Z^gZcY3a^AxfMPo9z?-oL?)lVHQ7Z0X z2mYOkA70c^?R~!EAEzRJ?m~O-G)XG+8P&~E?;GVBiDd$Dx}DQ4DQvNutfrpai8SSr zW&)#zb+<9|V>3|`I>!Ev5riOl`Xc@pCfmifZ3+IGLjxa*jTxV`o|uPjTJMSz#Lm}W zhJ6R`+K&vl>?D~d>}7qsPt-ZwSeamq_@J4!{)O6JVdm{o`d5)!*cU|=ZyNk0-%OH`+~@o`sq)qvx=ieM zd+%6YaKyv>6UB4+9n9mt_xFp4F61Q%9!p*Vz^+h={Xr{PJ9fD9r@o#;O3w%W;ocr! z6k|NTk3e`_omJDN6gw17!K{9domncc77D&_XR8(6L5H{Os2MBSvzc=bi9Yi$Sig*K zzNygN@}QpfsuWD-)*S&P3pM{DnaG{b+?zMq6Kuk(A$}6Kp(b%DtPccGiJg}oBI6>T zaz08b!GA@Q?8Z&(+HOk!ymY>#Ik<9?gHsPc-y;K7-4(jhEc84uTDYfLSUiN4KMuaz z_5gqUeJ5SnYw%6}R?&3}!4%P%w1%}XFtBon;6c>2psm`hbjnQP^O)pUMi^}DH)8Qxp{L{{TwIR!C8SDc1Le^V3n_qz6eG<`9}rwR70 z`xbVf(CaOctZ<{e_@8eB%HfO+Ci$7#J#H^_eagcTG7@EXZhFXzdZ?Khh$%jQMgO32uU9`+Y&6DpfOu9})@0=g&T6z124Ti5{2z_n6`MpDM><$$V`THyC_nst;O;i`g$v<49toQL8c-=&e zV42GZGUqq4=6aLn!XJl4576GHJ$_x-1&oMlZ|q-w(DBT@u|KIt7T5N5Q!cbVRru5V zR_Z3RjaX86i?TeANx+D5T&hi(vkl{W_+rz*X8v7ZvhCN~GRnSGONwdlgbK))N?bhc zTa1w;=fEOzXq!JDweXc_y4vnLTan+{1Lbe=@P2$k|3o25YkOS1>KE<)!l#ftBMn!& z0cO7t*>{lK4>`*BDHKRr%tW?ycEdW;O5EcvWO|9@m&2*6N0;31@+=%Rd+VgEzxuL$ zIONNDl~ZO+!s?R=cQxx)_{$GhkY?at!%R#GZJTMT5?qems)zE&BrmZ{&QgJ44_mLC z&VG~P3KDqL6j$QcSWNGkEAlr6EE34WE;j)}_DGU`I zCO9i@KIrAWYW*>yKaR%nY~PyX%B4J^;q}3?Q9E(vyw;g}FdI@o-FGn&s5J8rt7(yS z1CqV_SEZN}jrDTwOgu;+(SPwpz?cl0o8exHo!eFXuySyz(K-31F~@W#@rA6+>6ZK= zcD+-R6>C-L+lBqg_*G4saf9h4#|ZmmLm}&##~~YM&KsRl*A=RrGfu!0^HKYU30bGq zn-?5`dg!*V)#0TuW#8M{@>i(*f%iJ{7qcf*t0XhtYOk?!aV~eQ7aB@9R=%D|W9Or? zv@=OLza2VC`>A&%zx8Fuixz-$44J|0jmsN8?@pU=8xYzI%-xj9;LlbU)U$_ z@c{Z6rd55u?soktZQKP3AtxJ`eN;SKry)hU47=e%awKoAbX8yd$*>-A%vFxbJdxtX zFVsd7@%yIBHV;fCvhNQAHk`dY5_8RJB-VVr0B;EdQ0fh*wmMEc?_3I!gDqZ0Vqj_(3)ci0Cacb<#;k8rG)X-A>p0*Tq zpPm}>4LmI?`Lk~FI8VgUe0kEk^7j6R{*;6ka=kP{@%&pMuhyKOSzd#M=U7`7Ti^@Q z9Qt|38+W6lKYmvs8`MzpyPkjuDzD7aBXAuExUP#Hqg}w!N>AR`PU2*50s!c0fJzE4 zy=Hc2-}GBr`!DVPd?Jczu*mhjoVq9?^K)#K&!P97wdK=dt< zzAMj4UMfG!HHu3u3euGsTF-r2qEzU-{9-2Xjq0^^3p=4&g02iYM6(deNRw|t;3lWE z&f2t*F9LU1(HWYmf~%R_YMNNk_+5hi|Mr;pG9Uvu6nEWrh}mIlkm?ZxGFQ8)9h9&o zGD&&*AP1^10CKGmBtg>nJTO3}$DhuZ5K98Q9G#=L#t;PX6KKt9#Q0W02^qG!=jg34 z1V*!FNCH6MWG24!{FVq`EoK7%vRDWJfUDQ>HwRP!0C@%c?SmWm8nagPzW^CqXENcn z)<{>6k&3~tuz5b(3QlkW21xX*M5Rl~pskF+7?kEgM-4Rc$SbDIs*13RT_R=v8yBI8yW~1%4XzD zvW_)oP7%<*l+1<#9()31JuoKtACB6ejQP{p4+-`Nxl+0i`o!b_kx9Ncm+~uOR~OhW z`oC5=B2A4H)efG;faN@pM{`xqRQiv+5p#-jfiO0?)K$H8CZc-Vx%Ab^DyaYTD&X~_ zGc@q>=UlL}tG+B=p%YHhHSA|(P-do^No@cjfgUs#C4@p*XH4W?)K(v+GfueQ5V613X;EX`y(?tNg3 zLdXzJZgBlOS^3xF3wm^Rx+LNo!>oDGI!8~^`U^SCRxDI7h$I7nKd%-8nV>s!TMc!) z`6EyHyzut3oxP5sM8I4Cb9ZDjR#~r@aR0vu_yIn&Xi6jeybwf(5IB#D$E>#CjjC1n zRm0{BG*Yef`NJwOO&^;k86MW)iX^w2E z@AltrrZ(nDMd|HH1x{NayfPLhCz~ALZjH1}`T)qvUl@rr>>19)v~xSb*#L!k4@bjQAeWgJ z7U$tAvFk*IssODwV2l_JX%FDsiuA@_y9wa@d&~z7%CruA%^Q%pGC6#Lv%^5mqFw;| zE-RqBe0HEm-d1}lGCk?Q$bOiMYr~xJpb>AEx@GXOMMY!UWdWb{FdvG!MoU>OKk)=& zdOYy_VsCDgKh`n^{X5EM<7{$5=+1%cytNNp%maxhvhm6u>rA1{g%6u_X5<#tX=KbI zKt6&sN2EC3WSSSPB0S9aePNS65T84bdh&k9J`vL=v6zYYF25*Vw_W%DLTV5sPr0t+vAH)v9AM_Y?5j z#KqL_%v9M}C~v^?oWs_|!PLYkr_+I&H3(Ef)8Nd87o8YOp5dO7-+aLc9w5ODYFb<9 zs26ka`Tu&NTinw21`d7BC<) ze8W-)U{a`VfA5Vs^XB}7gu{z7Y!nwfAtO-?b4C1k&J|_oy+{(^H>G2uR#_*u)=&VC zA72ngKWaHSL1&oPG4vRs7bJHs>uh-Vq;b30F6c$7L?)>#c-bBdzcBW}_tSFab#MlU zOsfA2TifKy-XWDDk(B(5@ddk0`=#-PxN*Dqal0z?D^!nNP4B{j-BgN>z5ebr?gZzt z1D$A(0ucNS8}J{i?b;k+zvJh0HXb}lFzXXmUrBfqn~`voFkWQ6tpl2wW4(|s9*>hP z*&uW*$*ZZDm9;!VqU@#8bc;Fg*MBS_OpZRC;Cvj~FRlF(fU>gan_?!<4oqTHRCpT` z=cQ8-7JN1GX1g zPHLigKt%#tfQ<^;q3XVF807mQvt!$tczjV3kR2`AQ}kjYm#?1aIeGN&q$*Ri@9E<+ zYF?SV+yY~J?Bp*P<{R zg~xXhmj#t;c-n%>^bMmgPh5>`2whqq0YNsq+fZ1{HJP4qWk|)t(L#xWjQRBRiyw5I zmj#WMG3@J1%fv@)DjQ61Q&lx7m}H|p;V8ab%I5Og1iy>3#KZXTCPix*x7lF^=!INf zYT^Z@{-fy-F#x}TJx^#P6GM{~h?hY!I$TfJJak^ao`B2>r<1-2(3)MEEV>xKifNtf zHM%H`y3jPesP zP7-N3W!S{tfEqyOYRDT$t*ke_E@3PabF z{BOFx=3*@mp{G4^y+X!5yp94$VpnHx{w|8l?n0^>^lEp7qW6)aTncL!1vz=&2qv?n z(htAe;~7xL@tprbDcdygAUtPc2ey$w*mV$#I)5YKg4xg3yyCxY?^{{8-MbLKlYyI< zGoMQmkv7;ZjS1hFidq7g~DqkAI0sAOH8{1#jRTGnBA0tA}*b#|+* zb5jRlN4~K$MCXgB-rl0~T&ObiIf)9g70Ihfnf&#W!1-Xchs|5KCm0xFa5aCtx)BwM z^gfzs()dJQjb@N@kp{~iPvBeb93+mXhm>}3Z5i43AQ0l?gM@Bc#N_gbo}Qw5ewv3u zmX;tmxySh%t!t`yN7YB#MvFw_7t_b-DS41{!gaq7ZM-15$ z>{YNaGu5nDryO)|g&t%Zd*RAmYYH|t+g8rDR02d*C>fbO$!&U8jIrr{YpKTFU(Q0_ zzXjDk3Q%b|GsloY55PU(fTP$m>@=Tch0xJCZl8^rjuG%?pIRQWdpXyYUM_RdWPeQN zOFiXtD6QZ~h+uzRFibF2X*dauD*XGFkfXOS^iRc;h1mVRe18PIdf`%9&42NW3{ca! zYp7i=SYdWxrpC(HG1%RJP(RAC{%P4Le(Yn>Q3mDc1-_FopM5YfS zub4Kptf}ht`eqvyy?>k2WG&Pa6+=2fQ}1KRm&j|BU{7Dlj$dt^DHs?o9e$XU)G!z^ z4ScCFr5ghEK`LZ00m-W$+U!r5F-uKIzs=CaB-?w36(>gw;`IzZId-SQ~4+)(I%uMbRXF<{A@+f*gf_e{T{rYT&_b@JB@2y$dIh>dQ3WNDLfTs^C z6byaCid~`pKjvs=(ZnXrEl}6_BlaZ=tmhJJ7m9;#!3n&M#VAvy?k|>!zzL`P1`8dB z;Ty&whQ)ObXz-=f4Sc zv$0=t3Yhp=x>5ky8Tvpjch$#(rf<%5xn+ktVS2Sm%|5)@`EnZD(|{8}KdySs4Qja@ zYrwX#*O_B9Vf&?N^)<*dTu5D7ucPO@wg+a>XPdDB)8W76pW+)gIaHZ)a)3Rvu1YzH zQJ}ob(-W&Hn`{l=cc5|XCq0<}8J%{9YvL}!(Dl)hnrzJ{eRY`uHmg3s7+FV^i*J3T z8}QE?2stVA-N|9sqoohchY_fO;b8X4ErMt^V{x=aj~D@rT_uva*B{(sJ?3r~(f$bR z-4)z`8QV?%Xhg_qjKi-KvM$C<&A%M!nE_=65}AmA3-n=c{2`sU+5AaoPQyh|XlO}Y zRaN&!hSzow8|A0VI|-w9v7RFyc8=}FIBT5JJk)S}6jME1wnNhsV*GppH9q-~zB#qU z9Hg#al3yv-w(XNSf{C*YMocGM*c;pPl<DqzN6!Q7qiBL*=s)?PL!M0;<;!KmJGpaqS$wiK%;tRURqD%h12jpvx@E# zPX>gU_1up}b_uuBrMXlOovkeikIjTRf9%-P%)BxUOm95t*#RjuO&y-UgESmmaC2Wl zj4t>(H5_^|Nn9lSOq3(gnu>?bW83tgo=AbxVl)Tk!f`G3v>obLRmK4viRpr$N;Np2 z<^8OYojGXLVDg)#hwSaO{nSjH-LGzB^g%UXPQOZ@?~&9lpW=>aacY+vlb60To$#yO zor~DmTuqrjvKgny9$Ll&_&EEKiiHQLc78cJ^vK>n7XJJUdR(s$4%UO~Plv3?O%6^v z*4H}3x~CPSX4(K+o&P80v;TWX>}w#Yr>jX|bKEPEfgxa)hu+7mj{Zj*jgbnzF&P=3 zrM?wV$^v{)-p5(@q`1s?nKfr2Sn%mPsK=aWz|8Q*mgMz7k$N{5F}<>#JaS2DA0G+^ zgY~^(MOW~Q!%04@xzg7ZDd5ySXqKEqqDj_NUp-OjYY{)|)Zo9FMnb{VJ>1R?*;^tY zC~xyYP3v>lt)DKYo~$$d3_1F`vHV_bYjnySw^tFY&omYJ#va3tJ4sACBdnP?Fvbm_ z*1|K-Kr~Y3PJq#(jh~({4(Ra))S-AAlAHcRFf<{wc3JfJ_d1P)?FMCI>{9Y~3=PTC zD%nfcT7%X=8E@|v)FgnhTch3wIB5a&pUJ8Z0F)v4`Y3vZIZEx+gX=)`uIfz%uPTs)BjDdToCeLuML zHkek<&pj6bN3wfYhGH1>5zP*@6EutdgymODM7IYv8jtZVs+Fy-(ehcnBt&Nzzyt-y zCe;An6leMRKbHm8t)_vB9qY@FJa#cN!*BxU9NuDo6c|vu#4yF_h!cCWvhen}WJd9C zX0@*NCFDl@KusUi7K~EA5}ol$|Kp^x+Q^9D>C~4(k6p_4V+)+1%;uHZ*y;;RZ?~@+ z!UsuUNtji$I`U)Q?_BJXKamd^DFyd|9H@J)@u2)n<^;xn&#cq(EE9ha=yG)~)_eU& znT=?O4UiX^K^sSSyx@8|)rK8I!10Ont<%4f#~W$C*sqi6?=vNnho32OZi1))+-#_d z{4_unRBANcM=N(&lLp=YUJm*N+rW3iB8OcFtpcgH=kLM_G@UqRm);*Pb{}qJru&jP zJ>W6Vd<;w=N$@^3q@*ycs!1r2#kgIfQBVOXDf1Rn=&|fU4hm|4Q*Z4?m~7g;$04NVWUI0&cssHF%E1XWaG(N zN*q)G+@Oq$-ovwjr~t@RL?e1NVK!?Vep zu6EVT`ZFTapA){%CnteaI8G_K7Pva&QAg(cD)Z<<852O}Wk#}uC_%xm->t>-63t6R z6cqEj680|_{QopKe=1%7aogaMPpoUfjYj0t4F1l^LpSBuZWg9)mXhWWOMC+m!S&CP<_q&JRzi^j) zV(aFrWeL$Sb#!*H1c-C9{C?ivm1W1HZv7Lb2zCHNbev7iEdc_QsaJq_;r)LKmGCCM zv~~Q4nUVs6l7hl4_;(Q@NkKtnP1|31Fx5Z7%J@z-t*l%v-2eg-{Ldo~zvIPs{wW4J znp#^vw{)_0vjIqm@;@9}l=_qUA96igi+_kuz9DMy;{W4~4%o`g(-dL}PywoIu?X@C z@be1sGn3W@<56t??8ME+-Ot`EYhws0u^S?(|M4Vqt4?;7ESLOT*RV^E^8`#m(4PtBlN3VFd-Avv7 z@cTCP$9s4!mcP*YM;iT3C@otrO9z0^&&dH09!vili~m23q&e8x8)9p1;|9=jH*>Hx zXHfz>n%X+meinFxhduZYn1!XQImFiakN*A$rJ1{}gBy>n6N{_1%9H2T3RHMB^?#rp zO`Y7WOwHZgA(oIoBL6%ix)%?i_$L5tfj8#2>KhZFB3^R+x5VAa-U;mK1Q3|H|H==4 zQSUGR2ZFc4902f2TR9-R=A!%faj#}yKX6SOK*&nUYfehVN~IQihmeXzDNwlGf{?Z9 rB}?DbSa(N%2SW!*U!ZE%GhVG-n-s? zYyGpjyJpq?cJIAwS5;TfRJf9YBr*a40ssI&mX;D%c`NJwIN!m(T?IyASpfhDFH12o zB})(p0HBHYi5HOS6(;I8P%WasM&}FTHYs7!LBn>Kp~K1(Ey31tVQIcXOlPN}Wr_*3 z?(UB5FAa*Utw5;=B)fyyJlHJUqj>+qOj{RrzR^T_dLnSL1|ix$!d?a18NSn(#NgAr7D@j~H(>U*-^uu7!43l~wD_jBSt{o_?D92bwM`M!RA?fWi`W2y!cz@Biww$EQ zbt7zQvbFq4V&4pf#E)M?+o}>*95)ViYJMfJo%@Qjr+?{bee(MXLP}M0h;U;A4Ubmo zre(afb;;}TR<5>_l#A9emH?Bm_bnS_ASo4j0KoGD0N@`C06e@^`R@S$E-V1Rfgu3E zn+gEn+Gn;X^S=pTjb$ap-^#boy;!T?TLEt`rR@X&AY%M+LQJjtKD|}KIZMk+!0jU8 zL2z<&VJUF|09bvVYFf@JMs8&Gj&^32Hl}3G9`>eWrtX$z0DwinY`V516^~Q!x&s0+ zc{S8vw^cFW-rWOH$!3-G%~NeEiMUQ}DO;_-FaybnaN4!dYx}6*d4i4ohdw+a@R!}| zxVzoQo%1n9yXRhmQv+D{=gR>uTkaQLQunitSpH)A6AnC-`yoYAA?(NoIbZ9&fRNbSr2EpFUMFcj*;es*NRFw_8 z*YwWEfOd6+Il=8-&4umE%xL_G%$Ey1^yi0llz~WR;I7h>lsuZv&F+sT6 zG$&{X_%+jMh@){+mZrM!i!5z@-9afFJ4l{mUd0+5%|l4ZCAjLITYu7WnkPA}I^KS@ zv`psn5znD8UJ~D>ZofEZV^EH5ob}LVm`TO*Gq$FVN0K@&N6qSuStzmFl1IuXx5uz0 z`tR$$uODZQ=&eq~Wl(owOB^_MZ_zaDF|gSnKjK!4^V369)v1nT8;jXTWE$V7ZH!BX z#w!CeG|(vnjkIwaeFn#x2$dyH4Ejg6&SY0sgrYN*_g>7lItGuwmdMxVIZ(KkDJl5y z&(8aVB@bjCnGl-CJe~uSejWaVuAAKl`B}-WR5H5B-mq&fA#@}kyHVPkxsO(@vR%o1X~6!3 zYI{_YNLC5EpU`$VyDg!7FQ8$-xQwqCQ*Ktne=Bq6gnxBE*IO}k!!tKwQf+6|bz6;# zY5j%&V6EXkr;;$Q>m(*$+hMoGcr9Fydhh{H;^Qkv#;9h2IX;h|OEHe5&yG&>b*FL7 z;vg$9g_+Y&Z=Fj)h_GF!B`7^dh=0&I+S*YhSIoo2rSug>DHroNHM0pD9Vbbk)s=wJ3TOMj31Ykd7Rhs%}3ZoWj*>wi_1azMmwQbBdZX&l>Nqgb3@lCF%#Xu z#<~u_$jRoBngKRY20C6<_{xvTSk5ofC%o7y{Uc3Q_8(ogEtalW(V zB9JIR^>}I4M23pjiWRw2#M@D7AavkCOd%;p1gx=A}z6 zvHlLjlC;ZfU#>y^$C@LIcML2_xY@j9u3cNsiil}j99$|nd`>weA`L&GdqHdhl--sb z6PPn(4>3Mh_1-+B9%l?ag(lS3 zW>V%(gPD9(M0BAH#!pXWi~Ub*IV|V6L8Ht#uP43RLLLYx_p2wB8m~D#Uai+ZTl)P^ zw}73)1CmlaJ(ekBEz@D*Ag-DnY8f-=Jm)MXymg}{t)Y#pcm3a-^SFx;K3(8S5Kc6h z9r%WS5F>@C#(}W!t?>^Zx1aqrcHi3LMk?|A8G-KCsN*FRxB-lVX9Z_I52vMJsHCTHlN%e`@0WA zCb#F39bkp|LX%dW8-hu4T3HI+R_U_KVnLE^$uQTFY`_AaxJm4}*rHL#kgo!k?sFP9 zwpoFt!e(|;{)Ym%&Hh@rO*ej7l8DAgDqhky!_jZ=xR05+egD8i!U_<^9D-WVijzacKgS_=2p0X5uU{Sb=6w4y)#9g zwlN&97Fo#`T}(VuX*t0dadnnq%6w*(PFn2KF(KKmZ87_^sK*}BYquOvrrzI-S~3d{ zgR1lq{WFXVK@bczlq0!=k9grOUqzv9^kilTV|aV>iW=OMB-@6n+*R8<`@S(rcv(iq zZ%Ae#$qW`b7`VX!6;_CMCH&clZYRy>;$3Liyf{Q7{8(P=AKma@iecB&0-i@*#0Dbh z5*o_&RkXwrzP4vh#PFk6a3)NnQUuhCRTA|zz`zD!m={`y%)KKPnjYwd|HaD??D?D< z9A>CT{{?Ej>sw#6^YQ(}Zk;Lz&YCF6NT9U!z_zlf6zu|?ad1e~t8|ru3axyjc+r7Y zJhHR>Ue`HSduQW|=)m^DML2?8b=~iR76RWhRTACDjfwE`VPsx**S&iTvATCgBhn0O z=3(uOVzv}liZC8*0o$fZ)r|)&S)0Yp)|&1oc^0jOBqniK@-v_yRdZ+V-TSx*R}7;> z>VjF|zO13h=Wp-EbQW3Z)KKHe!;$rC1rVOH(dOPM$!kcp`x_xgAH{KoM&yHrJfW}r zF(ekYHdRHZU_%($kG~7p!VbWzThc~kh)C!EZusKiLBcNsmA|xAfMmowiQz(QN)Z-! z80+_8ib}2kB5d6N#Nj0Zrkp`1qVh{DFjLfuSZ#ZSJC@O{afdqo&>a!Q0lIVW>RCD)bFP)l2YQWoUaRPjtc$4vgv80)a>&7 zf|jgvZjmRywWkpgqu5ilJo#25^P4VCy598^KwV`s0fgSXq5ob>ecb$Q_1eXz=vFL0 z>6Qe}nh&~rut2?#pYB#sg{-DxX#i;0I37@vY;F2_<)56 z(t2JPw?ZjBr^RfiD(~om9e-ojvBiTfSMV=J!5Qu#25#{zV#{PYltOe!-9SXjbx2&W zt{jq+(EJBc_ldwO2*#co!BK5m2F;9gY^!6()V<@p$&X$dn=*v5c6oKO*@6b#FR&YJ zSkH#t{L7GJFltKfLF$4^41k4qROf1sYfH)gr9Ar^DcxF4 z{p0fNIDm>&HH>*lQ+l=080~|9TqA`V>Q@2^ZYa(>>8FRj!aOXuRHdk{xLM^HGkzm}!5dDOv#8rC(ammE=a z0crFu!mw~T1&HGV3Dzl`mHMP8q;3Td%Wy1^&1b_ zs%fJKiDNv~oUE=>(m_gHJpn4hR^zs3RE`f9T{VxS*J)@O3gL%)?>XeP#A$5#b<{os zt5#t3a_Fddeo(GGzW*u7s8`cS1TK+7@<(lilgj>Nj;ij?7;6g5|EK~1XCh7Q7VQsP zbD^d}#3{unx`p-aEB3jV6y~*xUzYp1Uc7fwTL6F z&qR{Q5(MawM@>l?^Gak8t2}9wnai*FD;4csRwB%~zS=v_iSL~2>FAm$gj~5^x#&KC z62+jOZdsOseNyh>mxJOL3AAIjnNY^AE8I7vS>XR8x6py`f?C zonlWD5M|kLifQRG~_zp`CFl z?K7d}4Y`BF@e9?ac+goFbF2!r{bhO}*43w&^G9DNu4n{p-Ev#>?Pel2z8J%?|5#H6 z@|f2MAmLf8>-hvbmw2+vfsr*C-^eid6PB_l8y=Kdb|?ENPK<_^84!zh z-GD;(%#XPt5>}gD!g}nEt*1sEj#5F%XSv_Wp$8^gYLX4c!xeLP^0BQ&mIAM`zHv0P z>k`(vOneuN$iR$Cx^=nShSio&V&iM4LyC4_Scdst2y(mblm@xmVf*NDoDS!j){q>e zlbIwvoo+UTQPG4EzDEl@2#3{%mxA_B1OAwoIIJ;DRxW-#vD-F;>FwfEe~53Q`)~%k zg+UB>U@=zYMb#>*6vp%HK{kqvvSM@H*=5NMWo@U5GxrbnbvBLRjt)fA`-QxhD!_YA z_iJ7<(8F&N)*IvOT9|dp6%>UcCw%lsGyIvn6#7}17lMZO1z_johjKn$}!6kRS>}|-gy`YcbqtPY`Mq(>&5;B=K}Jk;8ouDmH z3CmET=BW3{O{{c6;X7g|JN1i_eg*ngbrLrl7U!r8IV)>;Rz;2r@Kj=H;i1^diu86b-}A2W@6uuLu9@eVpP#lvmoSZ@%;|5S z)E!NY0oAC*3(;5eEe#JpN9Q-5`us?CW<@$54$!HUG8XCQNiKVkiOLPsHZ0>kxv(cQ z3cEqov@>6pS{1t6vM~JC{(V_{H|o8gmib;!AL|SjCL{7^NO=O$)S0=ul0@P6+o(;R zZlhYQ*yCg?*#RIHeRF!E4t8_3cUwepqz7`cy zq_5zFKT7HyA{gvg7+xSjjv@lrVa&0wdK@;8S?-efEbtRrcry~aZhFH7k8$m)%|kVP zM?L@Ga>9!ahE8CH$1KW_p^kDtQY{?v#Mtg|l7u9=doNRphaUVx>QeX`PVI@rp3gt* zeHY~2@^?P^0HAtnV!3xq8KGMtM^DO#pORg~%A#Q5kh6{%-+JDrw#YzcW$n4nYp#7E z$|o_KIl5{zil0m{<`K~&i8$cGz+liD3al{mGglHNPdOcE)`EJ$712XFJ2S|=5<>NjE+*21qJT* zh1Z{U1{5iu%xb&_pS}@)ljSGgB~hcDqMmOqp}cp!q@pX(RjqLPjd^rW2M`5KTfa}v zy~EynruEmn?fzC5SkH=j|#YtxvfFVE+Y44`cTQ!87;{`-v^`l+yQ|Qz*G6=J4;nt#$bo9X+fs-5QU#r zLLEu@Wj4?wFnLv7y>t1>!b*D@vL=e=vzH@FUE9uCD|>X&KW zuu51tmSDOd6>p9T<5Y3Q?xTaWhUkyGhQ-jjtQLmUUmU>mle-KCyUkk-?82`$6Tx@%(4Z%0#@WaZA^D*wpabJX8cJZLn#{gHf(-^gdm@2jF+jq6#X+i z3;^#5GTflBO!<^W==JjgHQGdB%H2OB=$uE$)esR*Sw|v$okN;{r~qUksTf9fb?@GE z0+Z}JZSB@+iv5H9`5RxOkLBEMR0GpdR$y!7mIa`mumhAhjr}9LZUffMuA0~1d&GPS z!@a^dg zUAKu%XVFiuHW8s&l8ar*@)q&$N;d8av;`JLNt;e-!~VAT&4ozlZ#+4yQ0DM9mD1Az z-;QfKR3KkIgpQX(jPLkdz-+QlqQ24$R1bTGh7kRABc*?fR3hB)!d#`W@f0J0XL61j zN7_8)da6MO@`a_}7m@*UfwtB$msXdu{L`H5veo_{E!-4(f`5nHt8Z?)i$BP8I6X`& z46^8F``gREZ*ENVxJU7_$bHH_wwVUzV16u7K~ngg238kC`BzAP!xUqJOU(KumOSsH zBznMQ+L|fR@87E4mykRh#WYBzVddNWRXHWNR2#Ooun$X%DV7Q57(S?}wm|wTU;oiw zeT$Nk>S*eTG@GTvW>x~~k0oDV3f{h&3CzZc{qLsz+mF9<{~!0-3lt(m$8<+Z0`Pg@ ziovW(A{7|6W$JsH~vm3Y+JQ zed?3$+9TeLjHRTd(W5pl;1OKIGCwbuu^&Wl^hXbZ$1;dYV-ZYMfAw8W)3OqUU^kD1 zW@%ceC^j?-7x50N`n?PuE&Jh8*zPTGRn9hhlxH7&xAH2RxzSi$*~JIlA6=;HzxI0& z&_|n$pHemOm^&i!K&RY2Cv+G3wJtb`wNw-=AEVs5ez>!8`;_toi{PA9aM&WY{%hb} z#WLUg*7)gGJ&*YZW+|0KyuW+(50;P^(hF%iC`}dt8F5j`Cx zs2PqbjKNn~N3Jb(8OKUObugtLHrEgmTbVAJ<_K_HH7)CP@iNH3Tmj&)DZ@=xINqvJcwXp*Y@LI6ha45EG7FFI|otF(yh_2JySOHexZ0gqwW!K{hsuRoI zqTy*rUiAi0F~4j*C+WknAH#X$tquK@JgRm5;Y8W=`&vrMXuERtez;N&w1~C@hKM#<8EueFv z$jsFdlhJvW)akBvCseeJ6AL_hcqrA`MBlQ}V`uffL_JV9mB%tah6xW;HDFl&Ml6i8 z**S?wgGpVSWe-=h9Gmh&dyK1{z*bJ`QAn-FuE*Jf3dc_=L4a}v>$6wgen6H&3R9L+ zN)Fy$6KA=r(*pF&<4DuEbwz_kMg2Qj3Aq###dP0qaFm(yBQ)oVdW zZU?Dg)bGk%dfFWEkFLDG)a9c&+MG_fo-T?StBr3c2Rw*whbVOq75^M%c90aOV~J+kjC=ntxhdq7-i_ z8qYt>DGW1HN=ks!f9pJdJPfmsN3Z9l$S;dJx^A}>n*yf2t`1t{dQx(c9R~;fZICdm z-IjY<7484ZjN|?_^G(&;=iX#5w`$e$d~z1Cu65Cb=mR`DxAPT%|9rG>8?p~RG=}8I zA+h?0-DOKRYuuO1UeXFZyOljldrBO4d~QPZO+z)*=XYlXRmgKX3jE%r_3g9dlf391 z9o}Dl5BsqshH?rQH23r$l1?6QM%E9=poG11BNgb%t0b0c_7kL?U>KXn>m9YeUh>)% z^5xt?L*XW@2R@hC!HXj7hNwDGpv0HN^+GSZz3AZJ;Ez;vu!Zp&fC9(tGb8hYME~`4 z4U5YA4NIU~@1KtB=Xc+`wt3bbBozTPB8U4@oO(=m;18@JnbDw==vUIw(c#5v=;oRK zw4nN_&b7&G#saYX^lUm+rctD24P@t^hVlT=>nWy0;A3?spx1I7%QS(ogMOZ*e0F zfhk6kcX?dyehJS=2U{YQmGf5moKcjOdm4F)TO-?bI0n4BpLZfqlEmj?o!G;6D`(_yXEbufcimQae9s8=gbv84siY50~)!^lvmE@#RJpy9FM7g=T%V7d2pv#$P02 z`0csR#Wf*taLO2tNc5e&zH`EljE%GK3DrKMBKA!6u*xFBsggdHD~=;Sj~HrcYyZ02 zr}Q>8^|RP@I-ZK2KFxmBN={A|Wp>`@^CMu|dyyET@LN1-aKD|(plT0*R5Noum%R03 zmU^UG;8I;K?OJ>0_|qtte^{0GIK;`z!3z?RTL7Ws^0X)g10&Ja-D>a6hO!pO{czf; z?Ru#BM-B2IDG!FHTU349O|3!J&eP!6f*1n=jz=o`FCl~wj=DeMzq|dIYe>KOg(`}T zYt_rhD!LL?Xz^ea!U2nUE-0dRmsQ^sKQHy~izJ`}_7gG^LrFNRi9}U74vV-#LeU;> z5^_CUtl?2!Q=g)C2Db>G!}o@R_5@ioo1eoCR#8SRdI+y_=*2SMG$BbMX$W^|#EI~F zj=L!1~W#5e=g#iwlaom?g`+|4tYxuh_j`q=*KV)oTf$HZzQS+}c4#i+ z2{Gzr^dH>~blor8i>z$5+h>(`dZO_bgu8pg=z6gqo!%$048pIP?F_#qP~0|$TjXmy zS@W{SV~%zeH}A+m^JjY2JFh`%?Wihvi{yV>xjIJXMMuYU)UZmJn(K0KJ82+Xu$genjI2qT zL^kgI8g$FbW}v{~zvdu9h%{P{)9Jkrw$(2~y|ozY#$4Z;m~U8*%qjxUGGH$6;}(KQ zSf&PeA`;u{fM-LGDelMSojnVqvM=!U?dm7b19>xoC*Gnl-Ns*f*`$a#9kRAeNVB5B z99GEp`8C*t<{Eg`EORLGA!zVR3B|jo1^+(J{a^}-DH*Ut3i?dZi`&S&cKB;;zp%C( zCsEIuPC`rgv9aUr{|oDFnnz)?z!;slRY0_^wHnS2?CV+>Cj6%;0Xvmt4aA?^oMR4Q zwf+c7+NlK&*5I?#Wk2$Xfe}6DB@RrHLB=0zc2{YqLQEe*0G;;&j~sQ81f*4OBUNHOH^b}v)0d6+Mwb?U z(nJ6Iv+mCo2F#2WVV^WPV&bi4>NWXwkx5qwc0_1YWV==AfDXeiOs{Ep&tRCkS3Xn$ z7uLdVB**Z6Jw4GOL~^OcY+fe@9nG#XApug4D7C<~2$-w9uL>6v3Dj_kv&YD%X-(?m zKR~sFK$`yo$|y-lO4~Y{I)W^WY|TwS+Bt%aoB?dC+$n>HdqVl7*eK9oW>_(Gv8h)wi&njhz3C8v{Gyk3K~9U$p+}Mt^iDB};cx8vxs{ z`B9xWmhcbuZQCa=$j;uw(bC+)8KC51Y-0%`6So5!S=u(l19jgpioY=vQzww4rTw4w z{!FE@i=~Y-qopmGlZvFMoVf_*8;$)p4K}iMF*5==yEvLU{+W5X?6{wA0LnjroynUs zf2isjN{hWo;Qx@g*jn4#x!D4MOXTX_Z(Tp1?70WP}pg(yeT Qn+brlgo1d5sA1s$14ops6951J literal 0 HcmV?d00001 diff --git a/docs/images/browserconfig.xml b/docs/images/browserconfig.xml new file mode 100644 index 0000000..35157e2 --- /dev/null +++ b/docs/images/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #da532c + + + diff --git a/docs/images/etherscan-logo-circle.svg b/docs/images/etherscan-logo-circle.svg new file mode 100644 index 0000000..e1a21aa --- /dev/null +++ b/docs/images/etherscan-logo-circle.svg @@ -0,0 +1,4 @@ + + + + diff --git a/docs/images/favicon-16x16.png b/docs/images/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..d007e06c49ea8ab0a988d6d5cec4ce50909c2151 GIT binary patch literal 7665 zcmcJUbx>SQmxl*WaCeswoWU8~-JK9@7+}x=26qh(A-H?6-~obLAUFgF!3hMnV1W>1 zC-1l4ySr8IR_#AK)%SK!pXYbaIo&-~bGu`-HI;BMDKP;60FH{Xye^`~|8qS-LEN8n z;pqVYNd8bcIc+EyjOchB_*z1FK$`lagS_40I?JZ@vkvwsa{@&=S%4zMmckz3|nJOtS_!1EFenCg3D|w)pF4GxN)~}{uqzW(wrbtivB1|#o;_2TdpXsKy4tH zcODr(%)ZMtY5HL_`}#W%_U>gGq;{5C7CFv143z-0>Uj}170}dEm$TGf>ST)!eoy#; z*gdWHQ$q-*z^7WeJG>xo$8A>D&QcilUVvL}k`;Y3mViUzMc|Q00ulWUw%I;ca2f7+ zK#I8|bcU(Wo2sqN1v*L#`+$NiPSMELp_^QuJcV*;V9t zya2#~B>(`*1OUijx$QdQh$-9AR@YZR06yfSzU1SMq)n8#Oo;aXcR~32%Uv_VBcefp z!-VjQXtkA~UYBGQ~dVrBh zX|S@or_eXaIXu@ZwLT)XKC-wiJ+jy{qQt`jt`ARy#8i7F*9I4TNNpOZZW*d=9j;BT z3l1rCMGTH_8Z^4n+b-xubd^_ZwQp>-w@<3Qrnw?w7^PFff)JGiTvrqEV?}&W@zIcR zx#`kei_FE4LQ7{GE+5u;FaxH4Z^en!+^wk{PE&5s-EGhXOkcx8KbImKudT=(-{(DW zH@H+FiQuz0POxW#X1W^t-&p6gUv6pmo@j{$ z9}`WkU-0J-_tZYPuLi8Z%szMg?s;4K+hKjdg3hOBX{h4{TF7TEd|M~%&{kI)K=Emn zj3@3gs2jbiF0`{l_{cHDE90uv^n91)($m7CpvPsSV5Z>5&ymA#u8&hbu8KQnlU%O% z0~V(i=sx!sL&7d1449Iy*-e$(KwYF)=A*vD z9(im6p1{oX{PCVo_`mK9gRo2_lp|Hxy@Ou8`$ACb9G=&*=)B-d<7H_L8*3Y<+Ksx{ zwLV)k5boS0yL4%QH`(xGNO>g&LJag@~}Igq=E$*(n5GRc>zyW#qn-Sa!N%K-C> z|#ms`HWw3x5- z5^g4BhA|#3e>q}jtry5-%piZx`brk}{T?_PSe^-v5p4OcrwlAheIwlfDF`0{zRmR* z5p3O5d)`o*qQ>^V`Jf6z0IVUnpzG+IAWFp~EV=4a`2M8*v`A@IZ>sBZX_-Dyk=(8H zwGxGA^L}~3#;`j76yKrK7`HAolElc=H_d=duyOUL?JFAZCEtvf-oK-lIBM2|9u?<~ zI2=yoRq=L`D%=Ejukj6Gge3gPiewG);vA^V&3fbc)^f1eT8y?glhZH31BA~!~_YHiIx@%e?o==7o7 zqeAHZ@x}gpK-Ui~i$^J3`2(kKdhb29^YZ2&Z!!HdvJ9($c4P|zo(ub`0k%ACVm4HE ziNDW)Y2OYxmN2{1kG+{-wmuW}tNfR$DJ>)~@m!87Qt9i^ z_uq6L&TlK|{E{%V;990IOMGYBD1NPa<3Vxx>&rmx$WPHP(>4vR4!ze6WJHcB;s2hO6({^B|XbYl>&E6KV0=#H!cqI0W)}n zg3Z>2HKnM!Oxwe=3#7z{;R%j`UOjV-FcvKoG|k6=urH4+!uVEfi%*Iv`e%?U0+mH%OYhqrH?d*=B??@fkvv} zf8IU6O)FtoAb(WQcXP=zMpMO6Yn5@nK-xI}W~2Kg4ZOM%I+0$lo~2o|x;Q05U*+?D zdq(BGw>IIYi@GAAD~%6FB-GXY=0}Um;l)-vuP(<|k;s@nTJL=sxx!7H?gO?qcL&GK zd>C&W;s@stkk`koe40rTN>Q2GbT~xKdbL*g;~LoaM7O)R-*1UCRBZx}(rf?TZ)_3R z&HXUc$w>rx1od&TwgDx_KZPl&CeM<}4YPW5_}$5g>&mGoWA0`~9>X)kU1pr-me){H)iS-5M zRwBoR4lp5Zv1!3!A+=zx1@RdZQXr7m7e(QeDqVy%AbNh*)DbyY`P6-(r~N#PI#lm? zY2HSa8RWo+(<2k$t~~T==vGcM>8Mmt;_#|PJRh}9a-X0cJGe#hqAvHsvyjGohjU5A z^Kr1yqFAx${+^Zh@Fb0j*5SDCz*1UxKL*DmYCvM}M0b zc=qKiIIN9H>?7(6#ZdHaEmr^jNh z7!Qj;Du?UkUG?I}JN^RRGqUgr9@58?fo&;YOx$0qCv}F81)}~PSEKD8Lr%W~d&Y*8 zltufY8I$d^(ehy7#vN8wThtNt{ftoI(lM8vF-;p1XD|5F^=zh7# z$FS&WtBh`}qF1H^oCa`g&IA{e-97P%QhKmUrg5 z#`2hNyK<)!#R+PK-pt}LhQ61pqaJKQLk}mkD|L+e@`Ofec4*+~HxOrp-+f_3w51tG z3d(wK{xE+9VTe%z?x8?BF81zmj9U2(40COXh+5 zYL+sQl}{#37x~!r@m@2;;Fvc_VBY29e|e&f_%GZQVuh1%lq~crwirC(hk6-8sPOgs zrk?C)^e8TY;~EJU^r5E)P`20{8I|I#mK0xKT5(mB;-&8;*jAt!LQfh9V|4OiQt-3S z+^WrTIgY0ZX-VOGqR)k}B@Qmtw_R^NNzr7rqfktH|YS~$ItO6S1l2E=c z-f<^eCbL*r@d6pfeqyU}#ck&&y-)f}P%iVi0aA!)IBJ?$k3UqdUU@o|UCR}xUDIMX zilO!mml%|avtMiJ(l^#F4FN4%r$Q^z?d-#SpN(+v>!tV|3lAO$yg~ND4%5X8*B7Jc z;%-PtaVklqw0kfACFNj_2xstz_`%E4Q!U*K1#-)wE#0RANWfLY@n}tTF<|L|ikUy* zwNys`X*vI??i2P1_brlU{@37(6^io-=Num}r-*zW4K$q{x0C?+MHm*-Ix?B_3w3M{ zsfA~Amk`pFuoJKj>Bo4>!nR~}YGm8F(o2pc5u0_pi`H~hQ59k}6#P^nc zA!MQq=3CWY-S$i=>D#NyVr}Jqm;{S`|M^59K93?p6BQp7DXKnCl|?t|d$pXGLw(4P za5mI1imTv)pzsJj0qsH?GG&^#)-vBLmp@L=Bv&3>_QsE(GJ*L$f$M zrO`18O0cGeI4R$dw4gbAZw2_?C+q*B(OvlbBdRaV%e+JPso|_Y>K;fS@%_eazFyYE zLF%MvgAkwBXO(d6-u_TsX@@D7AI$Ez=e>=;>8`Tyb2MWP_gDlqjOCxZh@0w10_#`M z%?j9=ML#jE{bm_e;xcP&rFO1R#}2`3#Zb z%n}m#P*h)Ahv-sfnD|}VCXaCNhqugZH+iXOXXg4({HAM!*0TwWaH)g~{R;^K0To)| zquzN?$w6hGn2TZg^EYghF1aY><6Bc3gE;0nak9vADx3Lx|jQxoh><4NY<`R05}s z1CV#H1;61rl@G&T5KY$Obv?`uC3yvw3w;{wA(M?|YhLb5xZX@9p^)P|4w-DL#hLUU z2fVqL>%BiADWsX{b>reor?7HNu6wIVaxFDNSCX(593x6EV$i&tXu4j8_Pw19`M8IT`|$~Fe`ZZKx2SxOTprWJ zi#bNma+0q}N}kc@fkSdJI;})MUK0nVDoNkEkx|}ciWR65;m`VF)@x?e0aFc!7Q3^V z-|R72d2?ov)+bs6XJ57w{$8D1O8TN_5$K$NVk%8l#j9g^Pz~)%57e5Th^e-qk?s8n zezj+JEQ0iAwe2Cg-}Tt>^Mu<`COG{^VGRT7&`f({y2VtCR^d)DiKEO?*kxX&U`y8v zs%FpW8p+rkqU5w|&x>tz6OA-}u`YJ(1UJrQw3aP~4KKxgdV z7L>w#gE!Fw2!C8j^L_RL$K$F?AN_tl7RgYBdM^z^dJcL3xOxQRo=w_HISiV z@VprV<9xk}NqE<>1&LpC?%}hh+s8G#2Z#~|Tc&0+F#=CB zh90~G=LO?SVnOmfhshYnsb7wvd*a_7U=O6{$UjRSHG-}wu~nML`H?&M)kBg6Mw$gg zqL_G7dye}U5wE`y;*FzbHPQrCPi^?Jg_d$ZY)8AQG)^NiCOrw=Zz;^fD?qlMU}Hp@zC;@9J%QxB(V+KhK}ko30>j9*h# zY`4NEu%IdG3S{TXXxGrik1AWWCK&#@r?1Z2-yCS=@(=OBs?g`v4<{P-p zN1rEw`mFM$1gphR%frZo;?~o^Pw8+z?6a{@(&RT7d0+Q&B;2UR`W$1_JHANwlzq+Ye< z2*j`M=j_qh3unf4D@b!$27OjY&9Se8+0#V!tanW8m6NMvK`RL*6#R)chU-{Ne% zbMtoWwm8AKRjI-W?hE805kO9+X!%6EpV-eDB2B=>9V<&EE0d&sFt5>cNOrasA5~_q z=|M3;7Z4>G;a(b3qQHPFgVAj*xUY8{J(T;-Gxc6#6jgdNj-+{Z!;_qA?XuHXFMG$J z_~2sNpB;@|VouaH-jcJKX+KUs2KmI=^>BukHob2zS6P(9`IGX6^c9Bw9W6{OB$}lc z`DVFBj3X3i(2@EspuL*PyHv10V?0>fHFjlDvUCJ)YAd#0v}qzUlv~$yX8KqNE5&^& z=k$fW0iSV{8_g~@VLX-8`PZ2p2J(Y6%FCydb+Zm43T3@ZlwI~%0frGN38%T>nD4oX ztrMWpGc+-}3=5+Y;xCNp7$!Q!Knv{P(tOX_yOm?Pn62{%&7p-C?Il)689I^@H~Z4- zcRNE`On0`8{=;{bG?i-NG`qC=Y@b;dK2$LM^15JVFL|L?>#;?2^ot!J3!ZgkNiV!1 z*}G>8F}m)nY>un#Qt&6#l}08CRG}O!UoTq7X#(Yk>25P|ux}3URJ;^*ZZuxXW#u7) zI9O)i626)xiy!@5-m5>T(+z;7V4D%{K4AJq+>l&~9)5z9&*NWScFJ4Kl0BuW7?bv5 z41V3E-F&+Pf2v59dXIs^&dlMMl*T;t5;sqR_2pVtB6q2H(^%Wj86)%*G`58@!Rqy5 z5_8eCGpkK|Mk~=Gh8e&v%*QLE)cU>Xw!aS`3<-Fu@!%vu;pfh-L!LE_;EM`1Ay&K0U7e%C;Aj)7HrV4q|6<1;hskZT%yJa&e zyV@mBPLAzY!k*NW4|tkB6qZijU{z#$Y8A#^a&u38B|lS2mW{A2(bv3{%p@E{eUHc=KqE(s=nj^(creRG_w!aP!Sh4mF}%sq1} zVSSA?oyCn+?d2`Cl66&mquE964V53t-oNWAX{vtrzGFCwp{}(qxPMUP&0F<65OnF1 zf}g_nY9c>PnAP=UWoW2V^kRnxad>bcH;P;IWC@Wr3tYh%Zes<9fWYn$LTi9 z@^SGA=<@}pndc<9jAH>I}panfdz(jw;3J9lKwzeJ+H~=WhtDbn#k1!MeZB}u%vV*8YTgnmI_MhK4fAGrUX2A`mi zHjMYrK_1QjM*b@y1Q?BeON;=Y{{yJ1t)Qgh0*APR?X6twAd0T;&Q@>$Kc7g(@V7pM zhUfpP`Onc66yX&%awlCtNZJ2Es%`HIcXfuq-J#&Wydu(uTfzUzn~)^-&l;lt2i3op z(VqpS4fTOI0r=Fcah55Qe?d;(IZBJ__D41T})!7Q_(()Sk0)a99 z8?%9UfZd_6zx@3*mDZk6CpZ_>h2BF~NmkuXh6q8E{F`>Ra`Cja0>eGsA?|<8yn24} zC<4I!8*sHj1oKDw!cs*JVR`z;;_2e(;_B@J04^~Y1Ry$%{_*q#5d|1=f|t8>j{U^V z@cHvmt+8>HZCwBg6BaiZi-?Ix?F}&s5xsnfz<>=3Qbx>SOyY2^fclQu94DJvlFt}R?HViQ60E4@P;1=9HL4pSe?u6h0f=eK{yTf7c z@1A|{soJONu3D?Rs-NGp-uLb9f7a><4K)QEOiD}u0DuEhl+$|d>Hm7rQJ-5^Z|`#e z0Ko?;E2{wog8_h-34RF@iapZQeWu#Qj3fkN;lh@mxsC8ioTu1{^JPAh7`gF$JIBi4 zXJ+G$4Yup*it8&2iK?r_tqi8WMp)ZjE81pcd3?oIAAYjhM0a#3akz{i(>Bas4yGQ5 zFQ~ArS-far4>KWnLni}x1F@oTO-u?sx^7kotnvWnYy=#RO%!f&q9V(!8Csde$!_(D9h!n#6WT-eCh9gVfh|5#!3S^(Y zj~-y(;uhIvxCh@Efs9 za_9G&KurGcm2~%b{vLK4tgNj?FzRhz=d3t$`g$yW+t@R|ec>1)`fF_C9j<_4++p8D z6FcYxQ=SJ^Q9)z4x833TIfA0L{vg%r zDn2=z#%1$ZOUt~^-IYpR2b~a`OB^K;RnK2*0#?*g1pvHX004oZ0Ko0@P~bKI;Kl<0 z?3w`pqGYmnGjtnDNh+yN*vqceX1trgWYi^ZhN?&^%rf zq1!4U+oq~YUyAQbWUr#m{o7H?s)AZug!b(M-BT}$j83;$&fQE+b2}VYb0>0-F9-L2 zJ3WngI=$IE8Rc?%=rKJqMfH3*>lbnqeiWtiJZ_H@FX1>8AjiEKRHu_7iE2>6k&--D z){$JE%dN_+n!r4~2!C4pbAEEW?gm~@rFsO@UU_Y5m>exu%`7zR7@a?|1>7(Ar1BF!|v%;F`_G?*>du$rBn=Z|G5q4*xe?&1I8%P)dThmh=sIfof9 z8h0}b*ih3j)mGTqmc_}Ou2Ab5*|}ZgQ2Xr;mL@gpepd_L+x_$g$)2n^Og{CY!cpEd ztyQO|jE=jYHeJkLk{dnxvm04iF%*$mkEi4WHFq0Rp49h`54VL)-i+iMkYvTang`s8 z!ZrpyrE4Oav5Ql@?bb>#4ji-{L^mRq%7g=_Ki!gk8i)sXF@9W9Em zmRT*dvr0CZ=5iF?!Hort(T2n2&Ihe6wEdV2801b_Kgi&I-3EsPOVYp*0u6t(6@kS` zAEj#`xgmqVPg$;m0*!0RFKdbtmD#@5@0OwQgH;7)wCo&WM5vgAB$qt%z8*FoCMzWhwY)965eLqXJ>(}D||f|AqgMi8?qWXaSmkWdhOvH3t3oXmc^yc z>X^cZ1WjP39syIZxglAj-@s@Sm8SfmY2V17W97v~shBLy?MJIW?E?p&KC6DscV=`i z*HH5lpPumxPwCIv&x7t9ob62ewjHaRK1t!q?b`p={_47sojv_@i|Lb^u2%-MCY#}R zo7qwFwR+VgW=Ulodv^j%{=N4Dxqf;F9AK-mSjFX`e95mrkJ+Ab;K2m5@*JsN;yYJL zY#@1u=eYkliM|ST=VR;M^oG3Vjf9>l*8+uc>=&zA@hhckSBmqSUpjFNlykG_YOdc}|_cke_R=}PMd&t;^2V+*75ZU#e01<`Dz;{hma z22zKHfkFYC`Q%`3|Yo|Z1wjU;gmllIYQmR$b z)$*6-#)Rq1Jil&CfWCTY5Pm|qAa^CS3unS$Qy`bBBo-;^! z1dq~v=fQhu4%p89*x$-Y1bGte;$m$AN)CSyR#1wcB$XXtb#3v!mlfXOFXXr$@VK}g zO=``TQr57uwwy?y9~C4L_hfzgEC5doXqgCtc-)Sw@r1!vlrK+hmz^F*?8d6+%kcRD zZFt@~CU&vaxhCeq2YI$IL2j{efdN6~0InJF2}4pKkjD#2{)j3?nAJCYdeX=aF+lOi zWu~L~G?+R_`(S?BQi)mAmKUevwXcg}|A+otS+%(RA_0lLiw5x=R9Q21cbD5#awe~UpM?f?g8^j zFm*u%#)+orZ)5$=zxs;MdBv$A z{e8MHiB%y~Z7rv%;6)+YT3;R7nuoYDZDeBld78-yOMZz;FD z4>T%aRUsQ&X`tBI)B_Euwn(!jAIL|2HDUcL!R;lVkAO^M0MFCcI}eJ-64aISpobAR z+5SlOj}2c;v<&1hKec6z$BGkF3Vxi#V+{H#TSeX5fPxxAXkBC%_6waxYO=ovW!sv~TZL$0NQB;fV6PZ{HBg)}xyb zgE*J1!`rxI9U0HnQM~wqHXs@`jl0d+YbD?8^gR#rZCZ+GE#rw*r@$fF)^OpioA^j~ zLh~fn!fD`+vf1nRrRbwZbG+<2cnJ&OCGHW!^BbfbYV zhR5&41-$sltyC|YX?GNp92c@J@=_36V)tBS!|B$I6h%fO49O^+#snAj7wXT~=~tOS z(|(w>fzy%X-I}^v>c0EBr5)GC^2p{=X-T?X%V_@OewyWTQR|ad&Pb77F&ucXgWRYMDH#{I?v$-NIhr6QBlWw@U3*|!p*+; zO12>RiWbdI47qEdP`5~&{YqVnzP56{A86J%7W6sA+9t&7#UKZtcB1!zQ134PM?`n* zU@g259WjbF?wXiH`@&dC>#uUZ5_hMFaC(o$ci$BqscW6dlbiLgYhmys0GITJ!_`#8 zfJM6?V;{mRsnqVH622oXboNk}b&`6%1n}7+#p#GcrYD$FST36en!=7-M1c4<7>j8I zk<8((3bw1%%nKRM@!)d=uI^gN5kodk{mcv!+XI)h?SuS@H$Hl6N>s{D`Sr>*ce~+eVc1&1J=rRc6pI-Vz{V@0>p-PvSBrNh z5X~Nx&fzAFik4f5HP+8b`H`dn#ld6U*Xto(=Y~dW=I3!(SFpQDix!67q!048D1YqN z)!Q8H^pV}9QIQ%!UiY7%5RK06AT4RzF~?(Om)q0M+B>?7bo@-Uh`ntV0aXLJmyY5_ zI`4tii>SuA?93wHnU?QZekgDm*EUi+d{)5@#A`%T%z0;xr|ZcT2LTqm(LzA81hIO= z1ftfS>S$35DssvEAujzyaw4lpbfFc{=}e5YL=uT7_R>XgZC*s>hR`%yM-5M&LFlOF zwF{fyc=GFc1n{1Sj)o@D`Rf7VFUf1KgaW>OVrIL}PC_{`(LwhfuMk|xAkfF963X+* zBk%)!RuB2%kqwpXRrHKF8<0Ew$TsSjg;X-UKDOG6iuA{SilN^N#M z!^|^~-?)J<;wHAhZ#?^w0r*>@(Q3T5$I1RUcfS(B@4X#lGLdZc3#~C%Ye^&&vYZEj zqfM1Kqdvocj}Nk)4~HaqG!vc9T)Zh1=63Ow=tUY71UI15REGICbSjq01-=4d~S{%FsxT=q;Oh$QFzOswhoP(r@~bXe zP2Dd+`Lp(e4l$)wB!O9GszHl!*z$IvMQ0Hx?)Efo?}EBMjRy8@W8?Or({`s-WN?ef z`O9WAjl7*=bSoj5jZ<(7KlSUEjnHf)I!++=OHz=&bta>{P7}*jBEp~a!mL(HtpX@*yExD1om_y@iP`U8p?yz z((Y!^TPEKhtu=)+zYM2h!4KYzKsCfrL=H>`exH%wt2Il}EV(;$+Au@u=@iqwO=x0& zag6$hkOpweW1%jJXHZ-vP43-|V;&W4%jdqi#gq4ew~aa8Ixy594v7_x3C1`6jkBF5 zA$r38dqyGHD_{-Pm+<&Pn)jzWI2u<)djIa_(0hh5=o&Nn6$q zSoF}~8J-8DUzC@7fo!6C_fHotSD0e9m~8LsYbPe(moWNTl+V1HZp;mW`&Uuz`^u(r zcFbVTaX}@&Pn(a)t@y9Mw=*`8p@_9f5D)_o=}CB2umy+{IJfaxQ*5H@U3^6d1I&^# zm>7Xasr`@c0@DJ~g^{9i9eeR;2T8vUpxffVA7PKAr-+w@PpbY`l-Qs;az4aXK9#_D z{=s^F;V>qiq>h6w#^=x9Q1RLy#ud^8Wf+#c8G`d!-!{UXK(*rtjB)5eI}Lf+c)6&z zi5Lc>)PjcoQxA+V91dxKKqsAwAu6Y~%J{V}zIJZZk9rwNHT-H^RO*2wHOt|a7LxA9 zp5ZI1a@^=&tUC;rwniT?+GCkIOp23#2m4od(0ns1$<-Q!YwCGdM~z8{R1xF5OAERy zTNn$;zN}AmTfCq5ogU=xp)8+mRY!{_$8}VG-P5&jBf2EM#ZD-?Y@Kg?a@2+SAd-YH@tE}Zv>s+2NmQ@`pzCrPtx z;5B)Bj2N_#jL|RV1c7->tU2ChIrAjlUyYD4kX;yj9stF}^)wH!G4?9CH4mo^NVt;%MF z@_oWt{o?Fl*KT@i#t+=O6GN(#_qIg-5%M= za&%a+iJB|L2%T@3WT;C~M4>zb?rXGm3xOT&gYf>WFK$T>5zQ_D<%8 z!~(-vIuWlID#SQ~fVwS7UwoU(sXU4Vx>JV(G@K$A=Ol{;;YLQ0QF z@?b@{?_}+NvDe@;{@_Njj*J;jB6YYqu|`9Dlty}oF`r`yej4stwzmWJBV+xv~W&zL?JD@1Xt@3{HKsI9i^ii#U=52GK`F^UV zq{Q`(^veBazdF;sRjtp!eJM?;vN+8atq$8y)|qdgnQq+AnAr>8YFE0h6Ybxy17yIH zb}T7**Cg8yY=Qb$U8VI=m2L7qgj&*wM1CO3-jbF4nan!ToM5dDCJy$sfz8kFL>y`j z=CfE|5kYLtGHwY!Op-2g9JH4%kv zrdXhSrGUglB>BXA&4$rjB%fgdum$sUPc5?eDzf3@2?$029;tr2hH5)nnH zJz3=u0~Lu&h0~m*=@Y;-ZE#XPTa7Icyj(!%Ba0x+}?gmT=g5DNYXbma1 z^qjh7Gc3N?B9D)c>{h@YRg?3@NEr*NuFca&a2@f-(7T!hQzCh5LF%n_bnrfGPKE;e>2q_srfTW=1IH%X)S~9mJDp zPZ@M`d_P&=R*e%GllVM#t$boiT6WzX*@7vq9|aBhnu-3*?(f86XH0yg+FCr0+W5rx z-&uRCtIiYlVktDwr;G4y-EReqrq>+@+|WhY6s1M<0^s!6MS&x?H?Q#I-J8ozA$J(n9vtJV)NK(i-$cUZ7$4IMe(ym!gq@H`O zKpvt9zafetQNUIZ`f)|wvLZ2z(i7<=V$~T%HRq8zA zpQgAK7Uk%+%@Uq|j+eClX~on09L-pbum%hbrQatz`x4^AKW$6YUX{tx@5&xmkac*? zN%FPLpB`S7w2N~#ql#*ry7OW%%yMoTs0@byWcf4+#rLQT8v2T{j)-#Ae@;wv!>YDJD3fJ z+gOLQCv`zf5-TD%BTN=9$596Eb4?2yT`8A(*z7u($R*~9${TE(%KJ8W$E%8D*$*^| zZ`XeE8#nL84qtgnL`UO9^x^5hSXai#ErD9Y8G3I*)T7_Od4bAPf%w$)DC$%2aX&(> z7Ha9WcWZcBY#hU&I+@ne+&f2Rt*NBBrvQ7Nb9Yto(4^W;2%=A7l_ekIJA=@H1-pR14r16dZO;sFWJ#xl2MQmOY z<04Ig!1js-`(hnYDYI5GSb~~@i8|b3o<&m4S9&GL9rwqHY)xIN>9_(NjT}ff86GTm zNoto4X+3-qJi-7^rRsPk9dO4jo$&q3s-58{YhjtZFUgh5xJDuVNoSnwY|xYXpUd+Y z==bda%=au@q#s?8eKN>-Z*N_9WIDJHj4}Y2B8Av}RVSANWEx5nlY*V?%RK<&cm5yb zCQl-3bi(YuA6eLIEw-D0|FI7Tt? zmPtE$XHAtp#g0m7B ztSz$)=i(dZdU|U#Nu`V!Qb+5az8~@e7?5}5Qr=&s0+j_NdI-ExnP%O7my#O|Em|Z) z4qqTTqwzV$jgGfVy6lLTe&y8XHc=>FeB6u?uBkh6K8^quApI80n$fPnIH)u&Jp5E- z@szL>O1C&@_iFgmsT-1>GDK=f{(L6J0+%;{TbjcmqF@)ua|ht%;pO83@^bO=>+k?Y z1^7h;1UYzkM0t41=zB~4hrz+g5^Cl3zZ(|(d?}v|lz&C|>qJdd1`2o8fVgOzJHYHA z0AWu0ziz?6xVY z-^l+I^bCfh-V#59FaHHp(vVjGIl>_>U>kEsYsecX7YB1VfR9%=b>Mf`v**?Sujl{F zu7EI)kiHA)%(IpKU#uE7PH-m&2;2n<{yXY(*>H3C-*pp`MENs_pKbKlhSGp~ zLhJ#2zh_2_o>{8D*yr=cn;chMvm%mqDB`5yJGl2UK z;AHun%wN{GW+2&T1>-Np&C$-$$-@x#Ei4vC>ph^%Zkw#pQ7!$>1+Gxg@XiTCVH{wK%W)VS9k;R2YMG%al z;=V)_R6r3SF6o|$#3e3hYmd?Nbk7*l?eU!HK66f=(>>FFX#CCny{cD!^-+Zd>ZIo! zIp^p7-gfWr-FM&nUVZOrv9z+Zw!H9yMWo%b|ECs9e~ZOpw>#4vEtVUS*HI+PKY7w( zSs@joq>ePPOcO9){Y5y0@!zzHl_1h93ov{0B6N-HhOXVaAz{m6WE?0|WxCGagCr+% z3y+FGfPa9CANeP4U4q^NUO=yx`(Q@lTqJJGMC$%LSDhc5Ke><-x%KKFqxxXvq{}~$ z@}4jCk-o&J`svLWht!IEv;;;To}S5p+{uaD*awb-xvse$`{L_3WXKpUtzL)ahl`s9 zwqaW{7oGOzS8ws%sJ@I9V~a7Sb!w@7y`Vf_aldfwSGfMW-{9KszV!*L%Qox-b!dHB zzbmeV1O4u+KV9P>?HFsG_#6Gbta?3GAKi}n>z8rux8LH*H@{Z+=C{|I><9U?4ck%& z$Idt&nm;-8CJ%`rU*lPggZQ1?`AnZ^|Cs%4#cC|C@g7gcep831 z@mR1==BJbkH+DZDWeod%y{-fqgO03-*=sNUtZx_;wpt)0#w|a$Lir!qF+< zd2|Z&$MaTySVKC)78>LN(-AS<)f%qHLHo{=-!6T71$AGaMC{K7aer_##2z{*FfcI0 z*@v6#lV0a_d%d2R=>%AdN-amzL8#Hl(&M@P%P!M{Pc zhjAaoKCmww563txQR@Z$e)0Mhuj`uT>q#;u*au_0a7>I~nK6Dm>Ct)gC)cpF&vFsb zGZMnN!D_WC{?0xG%Q&2oKHQovm=AzW` z*4~)!c%LqD#C=r6E#ZGg_y_BKsGqfC>ox%$Y}T&9v37~A=z)E~KCsX1yHQtjpV_5{sDzsP9xj(x%7zCr6J$6con zV(+^)zL(lga4uH2?jdioG{ovBj&Q}aRkFn4=4ifcZ@_AmCK?CfE$^|gLV7ylkV zZ4~!T|GW50KW<&JW!yPxOGK}LuCPaSQ+=lnqfY%yzmxlc`s3Jp>M-{F%OR{U+lS)4 z<)}D&OqH>YsxPsUd8i2c&VP=B7r(&1`_&ijKJpI{-bAn<_M$E0=I6Eq^a>RIJ%s<3 zMM#r(UMgc%z`m&dh$J8So!qll^*rHiHFi3T~gZrGb4o8Z-xW zQ5iVda}iGUT#SQJNr<+0hb_$U9_=OjamI4xg`?Q8ZyVO_-XbW&hW!NMGGkhC}cu9z|NXPWb%DO|K>;8fHi6c(&N&NkU|Z*3XamO7}5I!!hkB;6wZ zp890YJ0FyeuevWpUC##tbx@aCzoZ!>kBmR<)mtA9JaA`!9yxz6c0KvBC3#Kp_d0(c zF(+U8aa%a>-E>Ca+VA_a{{J0tXaD$48YJi}Q2Tu&_om)oQr{Q#$i-{CYu;K)UAO(Sq}}#Gl73V%V$`esO)g;q?#VpH zyXLK>)cY~`x7gpBx0b@+?f0Xk-S*LvHu~vdJ-683nzxoF{>FL0eh@k?A7p+!G=FQ} zS_(hLn-PpBuDM*32tMl=<8w>q$3yeC=G~MOj+{Sdop8PPB+Y()FZe-V9v4sJ)$H}8 zDPF#o3AZN&>;vIi2jrRj8DpNt#XMfdF?G}9E02d=Pk4J97mxW5+x~;<6aL=D#bf@1 z+I!sou?HS|;IRjq?SaXzi>Fn{i@r5HMXB;J@Y4%73K8nxGFziW=|z|Jo#1m)P_ z0n9IwI=a5L!Mh5R7JZ0UCcLgVc)G7b-sC`}mESu@TzueD*WIP#7f;~oZ?56;)hoFA zZ`Z)PG)C}_(6Rb2UG>?P=QKR8j2`%+;=ulDUS^rJGaH1?C#TK7EW=f?LzL7V!2E4F zn3gH`V9MnljOkt#?-%SkQR%ABw#pa#^A!jBLFtzMG4{;ymMUY+v;0gsBRg{8pYi48 z)2KQB3zxrhYc}A+bqg>mVFD&*&P3vlOotxn6Z^&XgN|1>u}=o8I*oir8qI}$aiX9B3^uLAo`Ao#fa%|W9-~1 zc*luZ8#C0Inj=Q@Ra@$yF8VI1Xc30TjlLmg>t!+r8s1Kf`zvFQdU*%qc>M`=U+DZd zmsDDhgO)ryn~?DVg6v%!-|;D(U>?gn-9e-7bKhJ<+?4mwsZ*y?Ict7GV7Etftr|LE zBytX|RpsQ!y2krf+P0SS_AI}54`HL6iAkRo<^%A+51kpZp)guB4FJ5@%ABie;yx)csXk@$0TF1;OJHq z9NUWAs`Y|($Um}K?hzDX%EGGx*W1PudfxFK?*C~#+ z`6u?j6WoyR_U^JbW#y4A zsF3r*G7sfO`*PlTSMI48?c2qEmrJ&VNn-zQAKI5Wq2h<@k3id}?X0|INLz9Sh1>o^ z&f05T=kVm`t(@)2f&CZzKbY+A6Z?DWZRw{@+ETF27Khyf=b~mz4oXI+Vc3Xah#CGe zrlx+3igQP>W=Am!HdSFuRULMHS&3oeUq{Tarpx=jIsh;JV=Vd(AMmHJ2>TqFcVQ0i zEC16z#{h(!lVg{hXRdhe9i(-99k#Ze@YK^!p-=z5NM4?XkLJf?X3|H9&zOUc(h?A8 zwc_cYJcXE-rF>cA@&KC^&ph)C+O%myGzeU_o#WqC>>kqg&kKjC&kY98^&*UCdhI(S zykii8<=ztKx|;i(^I`YSb6t7PwSaZQJG!0QH9D^oyZjdLS8bp2m)2zSIhi^;;~Cog zymZIBS96~8-V0Tch(fqh0;XGcJyU@vMvKbD;}ycw{CHj>+-~tjjhAU5(Dm zv`t@SeW08t1^5W5Ytl@wnT7N|*3CPuxE?@I* zOZ%HntQGl$K)qwlc6D0H$@7Nbj{73>yN3%FKt9_X(jnXNg+)Cx?abr*ZKxot!O{wnjlamJjlWs4fHd{-!tEb^r{HG^ zyTJ9G!tD(q1@f0Bd&qZFrsBQKk7ZBl*iY);2mD<@aF4C`?W#=DpA@I#wfEmr`_K9E zyM#JET%DrsJ!VxEq4fRZPgDkgZk}=jEtN#DQVh`4M$6)o!r@$ z{WO28QYP)p!jz@)82#~h^&8Cb`)4Im%5pLGlga-s``uS%-;z@pGU;C@e*7L%4&quABV2X^>s9EFx78%nch2tk{#{toCXJ6n< zyx(asdUpuLh(SX!dh%GjHu)`t^@_mYH-}-=dt>qXgfZyRxhwCpHFRqqr1neFUcCpt zvd%|!;4IY2U9JP6@hF&>jNIvSkvC&LR!pC#o|$(rEP;F02C3)PUVdk|?JMhpGH}5J z<~jGESA=tr<}Vz0me$m}$XIqm>W&tu^;zU%!4-kAj`^AIZ@xnd1+fCx+AhyIf>Oa% z!C`^kv+H;7caq2VV2q$GIUD~Zk9&dkfFj(NSXKZVJmU?_IbQJuA j(p>(3k>W%BO(C=1QH^B;+pwp&HR`j^W(dBopsjT=R9YZyY}8^@7MS5>9e!)vH}1Ac8GzF zIRNn2`9Fi@EQ9j6cCVN*op#eS(F6c$6W9(N&oI7)5C-NZ06?%901){c0N7`cA}IjC zqq_jWssjL^lnDTEBXbF6DvX7*PDc7VfRjIO0kJfNL19KgOmvx-&t3gXPEq5sLm>cg zWdWk2Y590^eP+s!e;GsCn%e>4RbCYhi1~bd=WU~=7jJ6z^L<&0P*t9o2Kn^u$9RwD{nSWgpg51l1O&y4DwlBs>h&)XSqulzcXH9j=)PExXQ(&&>L z=-E>4I(<)kUGwzVhWQ+aP>xamKwtcB*pIM$%rej44B7tuPk~Y8gmNV9TGkuITPp=3 zlE*zF{gC|*i_-I?So&EAhXKL2{~$r_(dsWUJVNeVV?Xol9!|&MS~qFT?GD07YEv%m{-MQiPwUsjVR$EUY*UMElX>-<(dh!0 z)8_#ah_}PK`Xz3iBI{;8mk2^0yJZ$pZ0l84h~!;{JT_zd-9Aty6`qP6^i+cJ;7_ZN zlU>jXl_ADUSP+w)-pIXukz_nGd#1x5Ash6R_Z|AKwpzM2vO@ znGBcXT2rZ^83}y*{7*LrTNIJL4&D)tL^4l2&*u7B}M|(R>B~?4Z<=N_)~umfKWl1u$>pDAJRu zO%$S@f-;LsXa(l^hW|4`Dlkl?vK5ca@~wwd|K@4E_v=e8#ozhBGHOCzYz09)zVE}D zEZ`aNRVO!7t}6T|D-$K~k9mZV0Cyh5&^ZS450jsrKr4&9)6=^0{ApAPmu00(khvng zE{E$#lz~*6%Gb4{s~Q!_$G;dR%wMC$7huj=0qSGh{-w|<*h}FNaKACYX!Idih50ok zn9@ZxE<$yBV3)GRM`JgHkWZgc#zlp94IwFf*%LqM ziJM;eLjN)nb}eIlUAD%kLFINKnl=U;Z6SXfbZ2@ZJcY1Q&nS1eDjN|UIw2= zFAG25f!;h|Nct3WWco#g|7i*Vk}DVU?^;E%?$GuMP4oo?Ibh(@?jX>cXovqhEK;QO z=9Oi!$Ih_)8%S^KkFvX;*LXiH+srTydfI(4$hd=U`;P7$kojcCmMA}&a83T zaj{%I@@~7Q>;5&eQQa+ec!J_jjeJBj!>!4KZ4$pTjk8p}-(>xEQT*t2TT&IaBN}_j zejB4JIx~gHaISWCglm^(oZVbCMB0BqTK9&VZ~wI}?GwPz{Tk5PTbi*|wdqhcFCnl4 z?3t12JV&_0x8W4IdZSh5&ch!zu%qaakWZg}2C zW-7UVII@(k*{+>|v?_MH+KfPw7rTb`oH|Mz6qiC_Huk5Wsqz@B>+-41PCoEs(;uL* zFh6s5koqO9`z+A#bl071>*c$jDbYzl@jvXU5FOF>)lyR>rm>+mXY8%9ZH}z_{i}4U z-a-g_;Ps8_b>+sD!Q=gehA@&GrnZ4#6tkH>(X;J&lx}15WEd8k@5faV>mfHbmW%=`s@Z$N4&QQDqiBLMtez)GY9jkgpGaGZ5S(mHFz^`q?j#( z5AAKoJ0)E-BkwKA%)(ZJPbp0kpagz9K> zUapg2?Ll!Sv8f^Y*SS$tnmkWGP3n|BhYUDM*r1=?B05eQQk1M^KC)=wWXu<+*KX=$ znf%!>K{z|PTqv;v3xp(Rw_QxpkrK;l=LCXsL?DXy-?#7s$oUlJQ|>&f@zw9XiB7DJ z1O>WTWOO5fpu*G`z$e8_vWhMe(Nj_>uWuHF@N`n^k^;eM@_6*!w8NQ z4?>7Ocw=AMrHYR4w=z->E-@T1#pKRnvRZZdSDe_$(|eT6@VAt-m+I2#6U+i?Z}Y~bXq%bP$wNm88@ST)n=WOJLE@v*+%E5^Dh z_N`}S(Ghy~Z9>HELSr&^Lm*x-@90~1(}2pAr)ky~M2;MSf_C@Pp|5}!6r@!cNoFG3 zW}}N5TPB7)EwQRf{CQHM^P+z1y^Nwe_p1f{Nb&MFl|jbhYg+sv7v+*u7KmY2WDiI)QX}6TOR^n^s?V9$J<#< z`ModVZg|&HK63L%Ooru%M(v0(`iF^fsIBXmpU}D2oP)5qWn1|5YK?h{c*^b4`)b#kp9ZX$xRIr6cyaazKTnsDU=dcX#TT_P ze$F0|FlD>4=Jl&fWFRqx(7Q+YYbY9xPj7tVJ5}D8e{3fym-UQ(my%IFp5zJh^H#)r6W77%nsmF2mOw2Mw|vMYSa{GLc za|p3!tPkhYEEcU^TKG|vGg)V|6E|($U%ay@d@Vs>kLCq3J!ZebmNqMV`&boQ$s^$^udXrdz8V9^+*06^xs%v{w z8($cg(Q{(;+#%YvW8G@^;3X?YP$)g`opiBU8i$@**X(f&2W(+MA8E-mHzD z+-CCe_(&ZZOUtR;;0gDMK=_zydL8>#IiwGO?CVxm!)l#sN;bwN@*HgkLcfgNqQu5A z@=Qo`)(dM?_(3$t8z}p+pg=1el42|N-8wNm^mj}=O5tFYowJ81Tzfh8<3 zCEr8V#?04Bb}vzc>-n+neAg~){FH5d>91=i!x@sE$9_ia(s~oKQ$cHi4}asdK&gCI zESifch->SZE36g4AshWA17s2h@O~&ynZN!7`5MG6% zqFvv)Qlc^)2&;zid_pa37lre@l=cG9g~21#V^tITb&AW(Q1F3=;z(K3Apd9@{fa1W zOGNY=VI=BRb8iX^w74w5iLgXLmtL>Q4Ygl^WYHA&J0_3LNwW%}FLav$B(NlM5p22A zsywy9+9SG&GX*;~@`-54kG)t|A^mr`d0EBO)HZ=s1GIe*7>bR0Lb=V(dP@IgSy|c5 z3V3kWi|N9I>F}xFN7!~~b1+{o~@;?ef+!4W+h8oCLNhW-dLDf!y5m~F2@ z9-DV`RSH?n4VMk9Z%(j7d7wgd7!C}Ii(PIGE*tGb?QBfRDiVnNceGf70|V|2_ueS3 z^=J6;L;HgmrYK)=F)bjw&pNxe7=z2xaLnPdc*CU(87b*9)7c#xlUQRpZ{?51H6MWe zAb!6?783hAhv10aT=?%@Wp?=oL8h`I|8vbi7F<(IqbWlTj3h>UC4Q+gK{|j&gnS6Yd#fIw&h@d z&#m`*QKWY3sk(X=3!*PMA4CKg$`x%Kb5EIDow@dR28W}sjdueY{Enf7HO6M8~bUJVzrtCngrw)SaBH|&H~`pD6x zYzfGSynA4_{Z?pv+U3`4n@uZ?+6N6`^zpvZp@}(YaRX#>Uf@yt?olvxm&94=Z%?6^ zsVnZ==c&-|^|xBYnn7Zhgq=U4enLr$;JHK1ODQmL7CI-03m12H-k< zBl~R>VSm3jr&59Hp`Ms!oDO~wJM+$=XX$AG-p;T39xPZTo3$lC^vx~H(k)}z1~V;C z*Kn)^{sWhPo7|IlnFUvCX$NjmX>E^()5q$WjQg=-#lGLsnM!lq7vkYOg*GwaG>CIG zw`~%Sb*^cs*THL;|8VnO2=smDWCUe;g7wR?W&;wCn6ibT&OVgKQc>sj;?hK1Z zY&Qt(?#esBQLI_Eik``gky28rwsSwUiWQK}?OprSV;~%-In%Vc*K5mJ`_eSyA8KVC-Cu5}b z0l>L}!#;xVZT845<={f?y~6l6dC$&-A?NgER56Hl0M8u?br_<0vJZ~l?u5q8Ji`Bz zi+Qc2H$gj~Q+6VDK6B=;2p+HIEA8^g3!l;#v^BA=Pqy=IxxdAxo-R0%o&=F4Ogp;r z3iKG+jA=ygSZ!l5aj`$Vm@nB=$O-2YJbJsF+ZB0THJ3qe#$Kcqmn8T0pYMM8GLUhh zChu`HbYE21x3gwKTKL2Zdj%Mzu(wi2n}TkJHsBO$E4Mz#=P$ZrcD~C$=(I{RaS}H1 z@OftP@W6^lNo+VVR#=s!Dg+CSXBFa;ATBHH_EKSAl6XzHfU{1%`0d6%V|-#oUe1C! z=-h2LJSyFVd$8-H7G^+q5!~8jsVbq@>eO0AeQW4_^~s{RG}s>2f)i9bDguGv;&QVn z-UH$M{elwurU$+yuN#H`r!osM$X#PB^SIThx$)i#dh-y~zr)2y9{ZGaZm&t3t}`aa z@#v#?>x?zxUK5Hs>J?X`)LY*YTvq0&8(V#X+2G6zT|;3`u+1B4p&IB23P3yMyb#jP z<;B?3*}eXd2MU4k;)Ce`ZN;!(=#95wzXI5jVM9MZHD~qeqSq&tiuusf=3wHqh)4MV zA0c=4F68x1rQlWBYx(LWiC-5z-$8#=r}*WK=hP5w!@uR;tX}h*m8h!@DyZf;9WTIg z{nmH!xVEQ0k1x#i&D0h*dsnPk8W3|dR>Z}`V$kn=Dd*=J@*5t<_Nty&Y)}1HxFU30 zjvRsdTVkcS*0fT?BWME9%-Ji@G7GYo*ruV$7_5BQT6_vtdB*Ab=%~Dn?e@ifMvebE z%Ol)Z)2{{fGy3^5BmToN3oG|sNRLuxPEO@`1Z_Qshtb`R$gn#;^+vtRN)Mo8eJJ_@ zlgB+o|F7@*gDsZFUuPN+o;e$#^IR{bByJ#4jAX|}8*zJho4d;&?K34?C>go}o^13g zD%t9+Kw_=%0l}AFk5)X!MVmHmI?S__G^?Wu#JFr&_Q_z$75$Sv^F4gy8=Y(K(fJ$i zBTlR^=Q>=q<|$%Et)B}Y_m($%z7!`atd+XZ<;rPqk{%7juY)&wx~t z26vlAA&Gq5wZW}sc*!~e-r{1r{dPl*%EF$OziG>#{#j(5X7f+|u&p32?ChB**vrP* z`L;uc(@q$*msuVQKQS`_^x1ETBE*Y6p#k37XF|vVXb;k;+)VK1hwZd#^MREwHKwU< zTSbbY&y0_S4syzm=6qupcqhi*uJEiwZ*czVQC<}!z#|}RrA^avoHA?eN*ye z;OQSQrS*7eua9-}t?oSKLPE93>m?m`-C7brg0ubGMI@MYZPyYkYInMe3 literal 0 HcmV?d00001 diff --git a/docs/images/opensea.svg b/docs/images/opensea.svg new file mode 100644 index 0000000..dcdf963 --- /dev/null +++ b/docs/images/opensea.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/images/safari-pinned-tab.svg b/docs/images/safari-pinned-tab.svg new file mode 100644 index 0000000..f70a1d4 --- /dev/null +++ b/docs/images/safari-pinned-tab.svg @@ -0,0 +1,15 @@ + + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + diff --git a/docs/images/site.webmanifest b/docs/images/site.webmanifest new file mode 100644 index 0000000..58a5576 --- /dev/null +++ b/docs/images/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/images/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/images/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..c25facc --- /dev/null +++ b/docs/index.html @@ -0,0 +1,192 @@ + + + + + Magical Internet Money + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + Magical Internet Money + + + + Addresses + Fungibles + Non-Fungibles + Approvals + Registry + Stealth Transfers + Config + + + + + + + + +
+ +
+
+
+
+
+
+
+
+ + + + Please install the MetaMask extension, connect to one of the supported networks and refresh this page. Then click on the top right and refresh again.
Stealth Transfers only supported on Sepolia; ENS names can be synced by connecting to the Ethereum mainnet (TODO). +
+
+
+
+ + + + + + + +
+ +
+
+ + +
+
+ + + + {{ names[coinbase] || (coinbase.substring(0, 8) + '...' + coinbase.slice(-6)) }} + + @ + + + {{ networkName }} + + + {{ '#' + commify0(blockNumber) }} + + + {{ formatTimeDiff(timestamp) }} + + +
+
+
+
+ gm, and enjoy! Magical Internet Money © Bok Consulting Pty Ltd 2024 +
+
+
+
+
+
+
+ + + diff --git a/docs/index.js b/docs/index.js new file mode 100644 index 0000000..914f3fc --- /dev/null +++ b/docs/index.js @@ -0,0 +1,273 @@ +// const JSONDATA = require("data.json"); + +Vue.use(Vuex); +// Vue.use(VueApexCharts); + +// Vue.component('apexchart', VueApexCharts); +Vue.component('connection', Connection); +Vue.component('coredata', Data); +Vue.component('new-address', NewAddress); +Vue.component('new-transfer', NewTransfer); +Vue.component('sync-options', SyncOptions); +Vue.component('view-address', ViewAddress); +Vue.component('view-stealthmetaddress', ViewStealthMetaAddress); +Vue.component('view-tokencontract', ViewTokenContract); +Vue.component('view-nonfungible', ViewNonFungible); +// Vue.component('flat-pickr', VueFlatpickr); + +// hljs.registerLanguage('solidity', window.hljsDefineSolidity); +// hljs.initHighlightingOnLoad(); + +const router = new VueRouter({ + // mode: 'history', // https://stackoverflow.com/questions/45201014/how-to-handle-anchors-bookmarks-with-vue-router + routes: routes, +}); + +const storeVersion = 1; +const store = new Vuex.Store({ + strict: false, // TODO Set to true to test, false to disable _showDetails & vuex mutations + // state: { + // username: 'Jack', + // phrases: ['Welcome back', 'Have a nice day'], + // }, + // getters: { + // getMessage(state) { + // return state.route.name === 'top' ? + // `${state.phrases[0]}, ${state.username}` : + // `${state.phrases[1]}, ${state.username}`; + // }, + // }, + mutations: { + initialiseStore(state) { + // TODO: Restore to IndexedDB here? + // // Check if the store exists + // if (localStorage.getItem('store')) { + // let store = JSON.parse(localStorage.getItem('store')); + // + // // Check the version stored against current. If different, don't + // // load the cached version + // if(store.version == storeVersion) { + // // logDebug("store.initialiseStore BEFORE", JSON.stringify(state, null, 4)); + // this.replaceState( + // Object.assign(state, store.state) + // ); + // // logDebug("store.initialiseStore AFTER", JSON.stringify(state, null, 4)); + // } else { + // state.version = storeVersion; + // } + // } + } + }, + modules: { + connection: connectionModule, + welcome: welcomeModule, + registry: registryModule, + stealthTransfers: stealthTransfersModule, + approvals: approvalsModule, + fungibles: fungiblesModule, + nonFungibles: nonFungiblesModule, + newTransfer: newTransferModule, + newAddress: newAddressModule, + syncOptions: syncOptionsModule, + viewAddress: viewAddressModule, + viewStealthMetaAddress: viewStealthMetaAddressModule, + viewTokenContract: viewTokenContractModule, + viewNonFungible: viewNonFungibleModule, + config: configModule, + // mappings: mappingsModule, + data: dataModule, + // account: accountModule, + addresses: addressesModule, + // assets: assetsModule, + // report: reportModule, + // transactions: transactionsModule, + } +}); + +// Subscribe to store updates +store.subscribe((mutation, state) => { + let store = { + version: storeVersion, + state: state, + }; + // console.log("store.subscribe - mutation.type: " + mutation.type); + // console.log("store.subscribe - mutation.payload: " + mutation.payload); + // logDebug("store.updated", JSON.stringify(store, null, 4)); + // TODO: Save to IndexedDB here? localStorage.setItem('store', JSON.stringify(store)); +}); + +// sync store and router by using `vuex-router-sync` +sync(store, router); + +const app = new Vue({ + router, + store, + beforeCreate() { + setLogLevel(1); // 0 = NONE, 1 = INFO (default), 2 = DEBUG + logDebug("index.js", "app:beforeCreate()"); + this.$store.commit('initialiseStore'); + }, + data() { + return { + // connected: false, + count: 0, + spinnerVariant: "success", + statusSidebar: false, + lastBlockTimeDiff: null, + reschedule: false, + jsonData: null, + selectedId: null, + + name: 'BootstrapVue', + show: true, + }; + }, + computed: { + powerOn() { + return store.getters['connection/powerOn']; + }, + networkSupported() { + return store.getters['connection/networkSupported']; + }, + networkName() { + return store.getters['connection/networkName']; + }, + explorer() { + return store.getters['connection/explorer']; + }, + coinbase() { + return store.getters['connection/coinbase']; + }, + blockNumber() { + return store.getters['connection/block'] == null ? 0 : store.getters['connection/block'].number; + }, + timestamp() { + return store.getters['connection/block'] == null ? 0 : store.getters['connection/block'].timestamp; + }, + addresses() { + return store.getters['data/addresses']; + }, + names() { + return store.getters['data/names']; + }, + spinnerVariant1() { + var sv = store.getters['connection/spinnerVariant']; + logInfo("index.js - computed.spinnerVariant", sv); + return sv; + // return "danger"; + }, + moduleName () { + return this.$route.name; + }, + }, + mounted() { + console.log(now() + " INFO app:mounted"); + // this.loadNFTData("config.json"); + // logInfo("app", "mounted() $route: " + JSON.stringify(this.$route.params)); + if (this.$route.params["id"] != null) { + // function pad3Zeroes(s) { + // var o = s.toString(); + // while (o.length < 3) { + // o = "0" + o; + // } + // return o; + // } + // this.selectedId = pad3Zeroes(this.$route.params["id"]); + // const descEl = document.querySelector('head'); + // logInfo("app", "descEl " + JSON.stringify(descEl)); + store.dispatch('tokens/updateSelectedId', parseInt(this.$route.params["id"])); + } + + if (localStorage.getItem('powerOn')) { + var c = localStorage.getItem('powerOn'); + store.dispatch('connection/setPowerOn', c == 'true' || c === true); + } + this.reschedule = true; + this.timeoutCallback(); + }, + destroyed() { + // logInfo("app", "destroyed() Called"); + this.reschedule = false; + }, + methods: { + // loadNFTData(url) { + // var req = new XMLHttpRequest(); + // req.overrideMimeType("application/json"); + // req.open('GET', url, true); + // req.onload = function() { + // var nftData = JSON.parse(req.responseText); + // store.dispatch('tokens/updateNFTData', nftData); + // }; + // req.send(null); + // }, + setPowerOn() { + store.dispatch('connection/setPowerOn', true); + localStorage.setItem('powerOn', true); + var t = this; + setTimeout(function() { + t.statusSidebar = true; + }, 1500); + }, + setPowerOff() { + store.dispatch('connection/setPowerOn', false); + localStorage.setItem('powerOn', false); + var t = this; + setTimeout(function() { + t.statusSidebar = false; + }, 1500); + }, + commify0(n) { + if (n != null) { + return Number(n).toLocaleString(undefined, { minimumFractionDigits: 0, maximumFractionDigits: 0 }); + } + return null; + }, + formatTimestamp(ts) { + if (ts != null) { + // TODO + // if (this.settings.reportingDateTime == 1) { + // return moment.unix(ts).utc().format("YYYY-MM-DD HH:mm:ss"); + // } else { + return moment.unix(ts).format("YYYY-MM-DD HH:mm:ss"); + // } + } + return null; + }, + formatTimeDiff(unixtime) { + if (!unixtime) { + return ""; + } else { + return moment.unix(unixtime).fromNow(); + } + }, + timeoutCallback() { + // logInfo("app", "timeoutCallback() Called"); + + if (store.getters['connection/block'] != null) { + this.lastBlockTimeDiff = getTimeDiff(store.getters['connection/block'].timestamp); + var secs = parseInt(new Date() / 1000 - store.getters['connection/block'].timestamp); + if (secs > 90) { + this.spinnerVariant = "danger"; + } else if (secs > 60) { + this.spinnerVariant = "warning"; + } else { + this.spinnerVariant = "success"; + } + } else { + this.spinnerVariant = "danger"; + } + + if (this.reschedule) { + var t = this; + setTimeout(function() { + t.timeoutCallback(); + }, 1000); + } + } + }, + components: { + // OptinoFactory + // "network": Network, + // "account": Account, + }, +}).$mount('#app'); diff --git a/docs/js/apexcharts.js b/docs/js/apexcharts.js new file mode 100644 index 0000000..1932863 --- /dev/null +++ b/docs/js/apexcharts.js @@ -0,0 +1,14 @@ +/*! + * ApexCharts v3.18.1 + * (c) 2018-2020 Juned Chhipa + * Released under the MIT License. + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).ApexCharts=e()}(this,(function(){"use strict";function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}function e(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){for(var i=0;i>16,n=i>>8&255,o=255&i;return"#"+(16777216+65536*(Math.round((a-r)*s)+r)+256*(Math.round((a-n)*s)+n)+(Math.round((a-o)*s)+o)).toString(16).slice(1)}},{key:"shadeColor",value:function(t,e){return i.isColorHex(e)?this.shadeHexColor(t,e):this.shadeRGBColor(t,e)}}],[{key:"bind",value:function(t,e){return function(){return t.apply(e,arguments)}}},{key:"isObject",value:function(e){return e&&"object"===t(e)&&!Array.isArray(e)&&null!=e}},{key:"listToArray",value:function(t){var e,i=[];for(e=0;ee.length?t:e}))),t.length>e.length?t:e}),0)}},{key:"hexToRgba",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"#999999",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.6;"#"!==t.substring(0,1)&&(t="#999999");var i=t.replace("#","");i=i.match(new RegExp("(.{"+i.length/3+"})","g"));for(var a=0;a1&&void 0!==arguments[1]?arguments[1]:"x",i=t.toString().slice();return i=i.replace(/[` ~!@#$%^&*()_|+\-=?;:'",.<>{}[\]\\/]/gi,e)}},{key:"negToZero",value:function(t){return t<0?0:t}},{key:"moveIndexInArray",value:function(t,e,i){if(i>=t.length)for(var a=i-t.length+1;a--;)t.push(void 0);return t.splice(i,0,t.splice(e,1)[0]),t}},{key:"extractNumber",value:function(t){return parseFloat(t.replace(/[^\d.]*/g,""))}},{key:"findAncestor",value:function(t,e){for(;(t=t.parentElement)&&!t.classList.contains(e););return t}},{key:"setELstyles",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t.style.key=e[i])}},{key:"isNumber",value:function(t){return!isNaN(t)&&parseFloat(Number(t))===t&&!isNaN(parseInt(t,10))}},{key:"isFloat",value:function(t){return Number(t)===t&&t%1!=0}},{key:"isSafari",value:function(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}},{key:"isFirefox",value:function(){return navigator.userAgent.toLowerCase().indexOf("firefox")>-1}},{key:"isIE11",value:function(){if(-1!==window.navigator.userAgent.indexOf("MSIE")||window.navigator.appVersion.indexOf("Trident/")>-1)return!0}},{key:"isIE",value:function(){var t=window.navigator.userAgent,e=t.indexOf("MSIE ");if(e>0)return parseInt(t.substring(e+5,t.indexOf(".",e)),10);if(t.indexOf("Trident/")>0){var i=t.indexOf("rv:");return parseInt(t.substring(i+3,t.indexOf(".",i)),10)}var a=t.indexOf("Edge/");return a>0&&parseInt(t.substring(a+5,t.indexOf(".",a)),10)}}]),i}(),u=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return a(t,[{key:"getDefaultFilter",value:function(t,e){var i=this.w;t.unfilter(!0),(new window.SVG.Filter).size("120%","180%","-5%","-40%"),"none"!==i.config.states.normal.filter?this.applyFilter(t,e,i.config.states.normal.filter.type,i.config.states.normal.filter.value):i.config.chart.dropShadow.enabled&&this.dropShadow(t,i.config.chart.dropShadow,e)}},{key:"addNormalFilter",value:function(t,e){var i=this.w;i.config.chart.dropShadow.enabled&&!t.node.classList.contains("apexcharts-marker")&&this.dropShadow(t,i.config.chart.dropShadow,e)}},{key:"addLightenFilter",value:function(t,e,i){var a=this,s=this.w,r=i.intensity;if(!g.isFirefox()){t.unfilter(!0);new window.SVG.Filter;t.filter((function(t){var i=s.config.chart.dropShadow;(i.enabled?a.addShadow(t,e,i):t).componentTransfer({rgb:{type:"linear",slope:1.5,intercept:r}})})),t.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(t.filterer.node)}}},{key:"addDarkenFilter",value:function(t,e,i){var a=this,s=this.w,r=i.intensity;if(!g.isFirefox()){t.unfilter(!0);new window.SVG.Filter;t.filter((function(t){var i=s.config.chart.dropShadow;(i.enabled?a.addShadow(t,e,i):t).componentTransfer({rgb:{type:"linear",slope:r}})})),t.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(t.filterer.node)}}},{key:"applyFilter",value:function(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:.5;switch(i){case"none":this.addNormalFilter(t,e);break;case"lighten":this.addLightenFilter(t,e,{intensity:a});break;case"darken":this.addDarkenFilter(t,e,{intensity:a})}}},{key:"addShadow",value:function(t,e,i){var a=i.blur,s=i.top,r=i.left,n=i.color,o=i.opacity,l=t.flood(Array.isArray(n)?n[e]:n,o).composite(t.sourceAlpha,"in").offset(r,s).gaussianBlur(a).merge(t.source);return t.blend(t.source,l)}},{key:"dropShadow",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,a=e.top,s=e.left,r=e.blur,n=e.color,o=e.opacity,l=e.noUserSpaceOnUse,h=this.w;return t.unfilter(!0),g.isIE()&&"radialBar"===h.config.chart.type?t:(n=Array.isArray(n)?n[i]:n,t.filter((function(t){var e=null;e=g.isSafari()||g.isFirefox()||g.isIE()?t.flood(n,o).composite(t.sourceAlpha,"in").offset(s,a).gaussianBlur(r):t.flood(n,o).composite(t.sourceAlpha,"in").offset(s,a).gaussianBlur(r).merge(t.source),t.blend(t.source,e)})),l||t.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(t.filterer.node),t)}},{key:"setSelectionFilter",value:function(t,e,i){var a=this.w;if(void 0!==a.globals.selectedDataPoints[e]&&a.globals.selectedDataPoints[e].indexOf(i)>-1){t.node.setAttribute("selected",!0);var s=a.config.states.active.filter;"none"!==s&&this.applyFilter(t,e,s.type,s.value)}}},{key:"_scaleFilterSize",value:function(t){!function(e){for(var i in e)e.hasOwnProperty(i)&&t.setAttribute(i,e[i])}({width:"200%",height:"200%",x:"-50%",y:"-50%"})}}]),t}(),f=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.setEasingFunctions()}return a(t,[{key:"setEasingFunctions",value:function(){var t;if(!this.w.globals.easing){switch(this.w.config.chart.animations.easing){case"linear":t="-";break;case"easein":t="<";break;case"easeout":t=">";break;case"easeinout":t="<>";break;case"swing":t=function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1};break;case"bounce":t=function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375};break;case"elastic":t=function(t){return t===!!t?t:Math.pow(2,-10*t)*Math.sin((t-.075)*(2*Math.PI)/.3)+1};break;default:t="<>"}this.w.globals.easing=t}}},{key:"animateLine",value:function(t,e,i,a){t.attr(e).animate(a).attr(i)}},{key:"animateCircleRadius",value:function(t,e,i,a,s,r){e||(e=0),t.attr({r:e}).animate(a,s).attr({r:i}).afterAll((function(){r()}))}},{key:"animateCircle",value:function(t,e,i,a,s){t.attr({r:e.r,cx:e.cx,cy:e.cy}).animate(a,s).attr({r:i.r,cx:i.cx,cy:i.cy})}},{key:"animateRect",value:function(t,e,i,a,s){t.attr(e).animate(a).attr(i).afterAll((function(){return s()}))}},{key:"animatePathsGradually",value:function(t){var e=t.el,i=t.realIndex,a=t.j,s=t.fill,r=t.pathFrom,n=t.pathTo,o=t.speed,l=t.delay,h=this.w,c=0;h.config.chart.animations.animateGradually.enabled&&(c=h.config.chart.animations.animateGradually.delay),h.config.chart.animations.dynamicAnimation.enabled&&h.globals.dataChanged&&"bar"!==h.config.chart.type&&(c=0),this.morphSVG(e,i,a,"line"!==h.config.chart.type||h.globals.comboCharts?s:"stroke",r,n,o,l*c)}},{key:"showDelayedElements",value:function(){this.w.globals.delayedElements.forEach((function(t){t.el.classList.remove("apexcharts-element-hidden")}))}},{key:"animationCompleted",value:function(t){var e=this.w;e.globals.animationEnded||(e.globals.animationEnded=!0,this.showDelayedElements(),"function"==typeof e.config.chart.events.animationEnd&&e.config.chart.events.animationEnd(this.ctx,{el:t,w:e}))}},{key:"morphSVG",value:function(t,e,i,a,s,r,n,o){var l=this,h=this.w;s||(s=t.attr("pathFrom")),r||(r=t.attr("pathTo"));var c=function(t){return"radar"===h.config.chart.type&&(n=1),"M 0 ".concat(h.globals.gridHeight)};(!s||s.indexOf("undefined")>-1||s.indexOf("NaN")>-1)&&(s=c()),(r.indexOf("undefined")>-1||r.indexOf("NaN")>-1)&&(r=c()),h.globals.shouldAnimate||(n=1),t.plot(s).animate(1,h.globals.easing,o).plot(s).animate(n,h.globals.easing,o).plot(r).afterAll((function(){g.isNumber(i)?i===h.globals.series[h.globals.maxValsInArrayIndex].length-2&&h.globals.shouldAnimate&&l.animationCompleted(t):"none"!==a&&h.globals.shouldAnimate&&(!h.globals.comboCharts&&e===h.globals.series.length-1||h.globals.comboCharts)&&l.animationCompleted(t),l.showDelayedElements()}))}}]),t}(),p=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return a(t,[{key:"drawLine",value:function(t,e,i,a){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"#a8a8a8",r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,n=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,o=this.w,l=o.globals.dom.Paper.line().attr({x1:t,y1:e,x2:i,y2:a,stroke:s,"stroke-dasharray":r,"stroke-width":n});return l}},{key:"drawRect",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"#fefefe",n=arguments.length>6&&void 0!==arguments[6]?arguments[6]:1,o=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,l=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,h=arguments.length>9&&void 0!==arguments[9]?arguments[9]:0,c=this.w,d=c.globals.dom.Paper.rect();return d.attr({x:t,y:e,width:i>0?i:0,height:a>0?a:0,rx:s,ry:s,opacity:n,"stroke-width":null!==o?o:0,stroke:null!==l?l:"none","stroke-dasharray":h}),d.node.setAttribute("fill",r),d}},{key:"drawPolygon",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"#e1e1e1",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"none",s=this.w,r=s.globals.dom.Paper.polygon(t).attr({fill:a,stroke:e,"stroke-width":i});return r}},{key:"drawCircle",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.w,a=i.globals.dom.Paper.circle(2*t);return null!==e&&a.attr(e),a}},{key:"drawPath",value:function(t){var e=t.d,i=void 0===e?"":e,a=t.stroke,s=void 0===a?"#a8a8a8":a,r=t.strokeWidth,n=void 0===r?1:r,o=t.fill,l=t.fillOpacity,h=void 0===l?1:l,c=t.strokeOpacity,d=void 0===c?1:c,g=t.classes,u=t.strokeLinecap,f=void 0===u?null:u,p=t.strokeDashArray,x=void 0===p?0:p,b=this.w;return null===f&&(f=b.config.stroke.lineCap),(i.indexOf("undefined")>-1||i.indexOf("NaN")>-1)&&(i="M 0 ".concat(b.globals.gridHeight)),b.globals.dom.Paper.path(i).attr({fill:o,"fill-opacity":h,stroke:s,"stroke-opacity":d,"stroke-linecap":f,"stroke-width":n,"stroke-dasharray":x,class:g})}},{key:"group",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w,i=e.globals.dom.Paper.group();return null!==t&&i.attr(t),i}},{key:"move",value:function(t,e){var i=["M",t,e].join(" ");return i}},{key:"line",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=null;return null===i?a=["L",t,e].join(" "):"H"===i?a=["H",t].join(" "):"V"===i&&(a=["V",e].join(" ")),a}},{key:"curve",value:function(t,e,i,a,s,r){var n=["C",t,e,i,a,s,r].join(" ");return n}},{key:"quadraticCurve",value:function(t,e,i,a){return["Q",t,e,i,a].join(" ")}},{key:"arc",value:function(t,e,i,a,s,r,n){var o=arguments.length>7&&void 0!==arguments[7]&&arguments[7],l="A";o&&(l="a");var h=[l,t,e,i,a,s,r,n].join(" ");return h}},{key:"renderPaths",value:function(t){var e,i=t.j,a=t.realIndex,s=t.pathFrom,r=t.pathTo,o=t.stroke,l=t.strokeWidth,h=t.strokeLinecap,c=t.fill,d=t.animationDelay,g=t.initialSpeed,p=t.dataChangeSpeed,x=t.className,b=t.shouldClipToGrid,m=void 0===b||b,v=t.bindEventsOnPaths,y=void 0===v||v,w=t.drawShadow,k=void 0===w||w,A=this.w,S=new u(this.ctx),C=new f(this.ctx),L=this.w.config.chart.animations.enabled,P=L&&this.w.config.chart.animations.dynamicAnimation.enabled,T=!!(L&&!A.globals.resized||P&&A.globals.dataChanged&&A.globals.shouldAnimate);T?e=s:(e=r,A.globals.animationEnded=!0);var z=A.config.stroke.dashArray,I=0;I=Array.isArray(z)?z[a]:A.config.stroke.dashArray;var M=this.drawPath({d:e,stroke:o,strokeWidth:l,fill:c,fillOpacity:1,classes:x,strokeLinecap:h,strokeDashArray:I});if(M.attr("index",a),m&&M.attr({"clip-path":"url(#gridRectMask".concat(A.globals.cuid,")")}),"none"!==A.config.states.normal.filter.type)S.getDefaultFilter(M,a);else if(A.config.chart.dropShadow.enabled&&k&&(!A.config.chart.dropShadow.enabledOnSeries||A.config.chart.dropShadow.enabledOnSeries&&-1!==A.config.chart.dropShadow.enabledOnSeries.indexOf(a))){var X=A.config.chart.dropShadow;S.dropShadow(M,X,a)}y&&(M.node.addEventListener("mouseenter",this.pathMouseEnter.bind(this,M)),M.node.addEventListener("mouseleave",this.pathMouseLeave.bind(this,M)),M.node.addEventListener("mousedown",this.pathMouseDown.bind(this,M))),M.attr({pathTo:r,pathFrom:s});var E={el:M,j:i,realIndex:a,pathFrom:s,pathTo:r,fill:c,strokeWidth:l,delay:d};return!L||A.globals.resized||A.globals.dataChanged?!A.globals.resized&&A.globals.dataChanged||C.showDelayedElements():C.animatePathsGradually(n({},E,{speed:g})),A.globals.dataChanged&&P&&T&&C.animatePathsGradually(n({},E,{speed:p})),M}},{key:"drawPattern",value:function(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#a8a8a8",s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,r=this.w,n=r.globals.dom.Paper.pattern(e,i,(function(r){"horizontalLines"===t?r.line(0,0,i,0).stroke({color:a,width:s+1}):"verticalLines"===t?r.line(0,0,0,e).stroke({color:a,width:s+1}):"slantedLines"===t?r.line(0,0,e,i).stroke({color:a,width:s}):"squares"===t?r.rect(e,i).fill("none").stroke({color:a,width:s}):"circles"===t&&r.circle(e).fill("none").stroke({color:a,width:s})}));return n}},{key:"drawGradient",value:function(t,e,i,a,s){var r,n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,h=arguments.length>8&&void 0!==arguments[8]?arguments[8]:0,c=this.w;e.length<9&&0===e.indexOf("#")&&(e=g.hexToRgba(e,a)),i.length<9&&0===i.indexOf("#")&&(i=g.hexToRgba(i,s));var d=0,u=1,f=1,p=null;null!==o&&(d=void 0!==o[0]?o[0]/100:0,u=void 0!==o[1]?o[1]/100:1,f=void 0!==o[2]?o[2]/100:1,p=void 0!==o[3]?o[3]/100:null);var x=!("donut"!==c.config.chart.type&&"pie"!==c.config.chart.type&&"polarArea"!==c.config.chart.type&&"bubble"!==c.config.chart.type);if(r=null===l||0===l.length?c.globals.dom.Paper.gradient(x?"radial":"linear",(function(t){t.at(d,e,a),t.at(u,i,s),t.at(f,i,s),null!==p&&t.at(p,e,a)})):c.globals.dom.Paper.gradient(x?"radial":"linear",(function(t){(Array.isArray(l[h])?l[h]:l).forEach((function(e){t.at(e.offset/100,e.color,e.opacity)}))})),x){var b=c.globals.gridWidth/2,m=c.globals.gridHeight/2;"bubble"!==c.config.chart.type?r.attr({gradientUnits:"userSpaceOnUse",cx:b,cy:m,r:n}):r.attr({cx:.5,cy:.5,r:.8,fx:.2,fy:.2})}else"vertical"===t?r.from(0,0).to(0,1):"diagonal"===t?r.from(0,0).to(1,1):"horizontal"===t?r.from(0,1).to(1,1):"diagonal2"===t&&r.from(1,0).to(0,1);return r}},{key:"drawText",value:function(t){var e,i=t.x,a=t.y,s=t.text,r=t.textAnchor,n=t.fontSize,o=t.fontFamily,l=t.fontWeight,h=t.foreColor,c=t.opacity,d=t.cssClass,g=void 0===d?"":d,u=t.isPlainText,f=void 0===u||u,p=this.w;return void 0===s&&(s=""),r||(r="start"),h&&h.length||(h=p.config.chart.foreColor),o=o||p.config.chart.fontFamily,l=l||"regular",(e=Array.isArray(s)?p.globals.dom.Paper.text((function(t){for(var e=0;e-1){var o=i.globals.selectedDataPoints[s].indexOf(r);i.globals.selectedDataPoints[s].splice(o,1)}}else{if(!i.config.states.active.allowMultipleDataPointsSelection&&i.globals.selectedDataPoints.length>0){i.globals.selectedDataPoints=[];var l=i.globals.dom.Paper.select(".apexcharts-series path").members,h=i.globals.dom.Paper.select(".apexcharts-series circle, .apexcharts-series rect").members,c=function(t){Array.prototype.forEach.call(t,(function(t){t.node.setAttribute("selected","false"),a.getDefaultFilter(t,s)}))};c(l),c(h)}t.node.setAttribute("selected","true"),n="true",void 0===i.globals.selectedDataPoints[s]&&(i.globals.selectedDataPoints[s]=[]),i.globals.selectedDataPoints[s].push(r)}if("true"===n){var d=i.config.states.active.filter;"none"!==d&&a.applyFilter(t,s,d.type,d.value)}else"none"!==i.config.states.active.filter.type&&a.getDefaultFilter(t,s);"function"==typeof i.config.chart.events.dataPointSelection&&i.config.chart.events.dataPointSelection(e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}),e&&this.ctx.events.fireEvent("dataPointSelection",[e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}])}},{key:"rotateAroundCenter",value:function(t){var e=t.getBBox();return{x:e.x+e.width/2,y:e.y+e.height/2}}},{key:"getTextRects",value:function(t,e,i,a){var s=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],r=this.w,n=this.drawText({x:-200,y:-200,text:t,textAnchor:"start",fontSize:e,fontFamily:i,foreColor:"#fff",opacity:0});a&&n.attr("transform",a),r.globals.dom.Paper.add(n);var o=n.bbox();return s||(o=n.node.getBoundingClientRect()),n.remove(),{width:o.width,height:o.height}}},{key:"placeTextWithEllipsis",value:function(t,e,i){if("function"==typeof t.getComputedTextLength&&(t.textContent=e,e.length>0&&t.getComputedTextLength()>=i/.8)){for(var a=e.length-3;a>0;a-=3)if(t.getSubStringLength(0,a)<=i/.8)return void(t.textContent=e.substring(0,a)+"...");t.textContent="."}}}],[{key:"setAttrs",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&t.setAttribute(i,e[i])}}]),t}(),x=function(){function t(i){e(this,t),this.w=i.w,this.annoCtx=i}return a(t,[{key:"setOrientations",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.w;if("vertical"===t.label.orientation){var a=null!==e?e:0,s=i.globals.dom.baseEl.querySelector(".apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='".concat(a,"']"));if(null!==s){var r=s.getBoundingClientRect();s.setAttribute("x",parseFloat(s.getAttribute("x"))-r.height+4),"top"===t.label.position?s.setAttribute("y",parseFloat(s.getAttribute("y"))+r.width):s.setAttribute("y",parseFloat(s.getAttribute("y"))-r.width);var n=this.annoCtx.graphics.rotateAroundCenter(s),o=n.x,l=n.y;s.setAttribute("transform","rotate(-90 ".concat(o," ").concat(l,")"))}}}},{key:"addBackgroundToAnno",value:function(t,e){var i=this.w;if(!e.label.text||e.label.text&&!e.label.text.trim())return null;var a=i.globals.dom.baseEl.querySelector(".apexcharts-grid").getBoundingClientRect(),s=t.getBoundingClientRect(),r=e.label.style.padding.left,n=e.label.style.padding.right,o=e.label.style.padding.top,l=e.label.style.padding.bottom;"vertical"===e.label.orientation&&(o=e.label.style.padding.left,l=e.label.style.padding.right,r=e.label.style.padding.top,n=e.label.style.padding.bottom);var h=s.left-a.left-r,c=s.top-a.top-o,d=this.annoCtx.graphics.drawRect(h,c,s.width+r+n,s.height+o+l,0,e.label.style.background,1,e.label.borderWidth,e.label.borderColor,0);return e.id&&d.node.classList.add(e.id),d}},{key:"annotationsBackground",value:function(){var t=this,e=this.w,i=function(i,a,s){var r=e.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations .apexcharts-").concat(s,"-annotation-label[rel='").concat(a,"']"));if(r){var n=r.parentNode,o=t.addBackgroundToAnno(r,i);o&&n.insertBefore(o.node,r)}};e.config.annotations.xaxis.map((function(t,e){i(t,e,"xaxis")})),e.config.annotations.yaxis.map((function(t,e){i(t,e,"yaxis")})),e.config.annotations.points.map((function(t,e){i(t,e,"point")}))}},{key:"makeAnnotationDraggable",value:function(t,e,i){var a=this.w.config.annotations[e][i];t.draggable().on("dragend",(function(t){var e=t.target.getAttribute("x"),i=t.target.getAttribute("y"),s=t.target.getAttribute("cx"),r=t.target.getAttribute("cy");a.x=e,a.y=i,s&&r&&(a.x=s,a.y=r)})),t.node.addEventListener("mousedown",(function(e){e.stopPropagation(),t.selectize({pointSize:8,rotationPoint:!1,pointType:"rect"}),t.resize().on("resizedone",(function(t){var e=t.target.getAttribute("width"),i=t.target.getAttribute("height"),s=t.target.getAttribute("r");a.width=e,a.height=i,s&&(a.radius=s)}))}))}},{key:"getStringX",value:function(t){var e=this.w,i=t;e.config.xaxis.convertedCatToNumeric&&e.globals.categoryLabels.length&&(t=e.globals.categoryLabels.indexOf(t)+1);var a=e.globals.labels.indexOf(t),s=e.globals.dom.baseEl.querySelector(".apexcharts-xaxis-texts-g text:nth-child("+(a+1)+")");return s&&(i=parseFloat(s.getAttribute("x"))),i}}]),t}(),b=function(){function t(i){e(this,t),this.w=i.w,this.annoCtx=i,this.invertAxis=this.annoCtx.invertAxis}return a(t,[{key:"addXaxisAnnotation",value:function(t,e,i){var a=this.w,s=this.invertAxis?a.globals.minY:a.globals.minX,r=this.invertAxis?a.globals.maxY:a.globals.maxX,n=this.invertAxis?a.globals.yRange[0]:a.globals.xRange,o=(t.x-s)/(n/a.globals.gridWidth);this.annoCtx.inversedReversedAxis&&(o=(r-t.x)/(n/a.globals.gridWidth));var l=t.label.text;"category"!==a.config.xaxis.type&&!a.config.xaxis.convertedCatToNumeric||this.invertAxis||a.globals.dataFormatXNumeric||(o=this.annoCtx.helpers.getStringX(t.x));var h=t.strokeDashArray;if(g.isNumber(o)){if(null===t.x2||void 0===t.x2){var c=this.annoCtx.graphics.drawLine(o+t.offsetX,0+t.offsetY,o+t.offsetX,a.globals.gridHeight+t.offsetY,t.borderColor,h,t.borderWidth);e.appendChild(c.node),t.id&&c.node.classList.add(t.id)}else{var d=(t.x2-s)/(n/a.globals.gridWidth);if(this.annoCtx.inversedReversedAxis&&(d=(r-t.x2)/(n/a.globals.gridWidth)),"category"!==a.config.xaxis.type&&!a.config.xaxis.convertedCatToNumeric||this.invertAxis||a.globals.dataFormatXNumeric||(d=this.annoCtx.helpers.getStringX(t.x2)),d0&&void 0!==arguments[0]?arguments[0]:null;return null===t?this.w.config.series.reduce((function(t,e){return t+e}),0):this.w.globals.series[t].reduce((function(t,e){return t+e}),0)}},{key:"isSeriesNull",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return 0===(null===t?this.w.config.series.filter((function(t){return null!==t})):this.w.config.series[t].data.filter((function(t){return null!==t}))).length}},{key:"seriesHaveSameValues",value:function(t){return this.w.globals.series[t].every((function(t,e,i){return t===i[0]}))}},{key:"getCategoryLabels",value:function(t){var e=this.w,i=t.slice();return e.config.xaxis.convertedCatToNumeric&&(i=t.map((function(t){return e.config.xaxis.labels.formatter(t-e.globals.minX+1)}))),i}},{key:"getLargestSeries",value:function(){var t=this.w;t.globals.maxValsInArrayIndex=t.globals.series.map((function(t){return t.length})).indexOf(Math.max.apply(Math,t.globals.series.map((function(t){return t.length}))))}},{key:"getLargestMarkerSize",value:function(){var t=this.w,e=0;return t.globals.markers.size.forEach((function(t){e=Math.max(e,t)})),t.globals.markers.largestSize=e,e}},{key:"getSeriesTotals",value:function(){var t=this.w;t.globals.seriesTotals=t.globals.series.map((function(t,e){var i=0;if(Array.isArray(t))for(var a=0;at&&i.globals.seriesX[s][n]n){var h=n;n=a,a=h}var c=this.annoCtx.graphics.drawRect(0+t.offsetX,a+t.offsetY,s.globals.gridWidth+t.offsetX,n-a,0,t.fillColor,t.opacity,1,t.borderColor,r);c.node.classList.add("apexcharts-annotation-rect"),c.attr("clip-path","url(#gridRectMask".concat(s.globals.cuid,")")),e.appendChild(c.node),t.id&&c.node.classList.add(t.id)}var d="right"===t.label.position?s.globals.gridWidth:0,g=this.annoCtx.graphics.drawText({x:d+t.label.offsetX,y:(a||n)+t.label.offsetY-3,text:o,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,fontWeight:t.label.style.fontWeight,foreColor:t.label.style.color,cssClass:"apexcharts-yaxis-annotation-label ".concat(t.label.style.cssClass," ").concat(t.id?t.id:"")});g.attr({rel:i}),e.appendChild(g.node)}},{key:"_getY1Y2",value:function(t,e){var i,a="y1"===t?e.y:e.y2,s=this.w;if(this.annoCtx.invertAxis){var r=s.globals.labels.indexOf(a);s.config.xaxis.convertedCatToNumeric&&(r=s.globals.categoryLabels.indexOf(a));var n=s.globals.dom.baseEl.querySelector(".apexcharts-yaxis-texts-g text:nth-child("+(r+1)+")");n&&(i=parseFloat(n.getAttribute("y")))}else{var o;if(s.config.yaxis[e.yAxisIndex].logarithmic)o=(a=new m(this.annoCtx.ctx).getLogVal(a,e.yAxisIndex))/s.globals.yLogRatio[e.yAxisIndex];else o=(a-s.globals.minYArr[e.yAxisIndex])/(s.globals.yRange[e.yAxisIndex]/s.globals.gridHeight);i=s.globals.gridHeight-o,s.config.yaxis[e.yAxisIndex]&&s.config.yaxis[e.yAxisIndex].reversed&&(i=o)}return i}},{key:"drawYAxisAnnotations",value:function(){var t=this,e=this.w,i=this.annoCtx.graphics.group({class:"apexcharts-yaxis-annotations"});return e.config.annotations.yaxis.map((function(e,a){t.addYaxisAnnotation(e,i.node,a)})),i}}]),t}(),y=function(){function t(i){e(this,t),this.w=i.w,this.annoCtx=i}return a(t,[{key:"addPointAnnotation",value:function(t,e,i){var a=this.w,s=0,r=0,n=0;this.annoCtx.invertAxis&&console.warn("Point annotation is not supported in horizontal bar charts.");var o,l=parseFloat(t.y);if("string"==typeof t.x){var h=a.globals.labels.indexOf(t.x);a.config.xaxis.convertedCatToNumeric&&(h=a.globals.categoryLabels.indexOf(t.x)),s=this.annoCtx.helpers.getStringX(t.x),null===t.y&&(l=a.globals.series[t.seriesIndex][h])}else s=(t.x-a.globals.minX)/(a.globals.xRange/a.globals.gridWidth);a.config.yaxis[t.yAxisIndex].logarithmic?o=(l=new m(this.annoCtx.ctx).getLogVal(l,t.yAxisIndex))/a.globals.yLogRatio[t.yAxisIndex]:o=(l-a.globals.minYArr[t.yAxisIndex])/(a.globals.yRange[t.yAxisIndex]/a.globals.gridHeight);if(r=a.globals.gridHeight-o-parseFloat(t.label.style.fontSize)-t.marker.size,n=a.globals.gridHeight-o,a.config.yaxis[t.yAxisIndex]&&a.config.yaxis[t.yAxisIndex].reversed&&(r=o+parseFloat(t.label.style.fontSize)+t.marker.size,n=o),g.isNumber(s)){var c={pSize:t.marker.size,pWidth:t.marker.strokeWidth,pointFillColor:t.marker.fillColor,pointStrokeColor:t.marker.strokeColor,shape:t.marker.shape,pRadius:t.marker.radius,class:"apexcharts-point-annotation-marker ".concat(t.marker.cssClass," ").concat(t.id?t.id:"")},d=this.annoCtx.graphics.drawMarker(s+t.marker.offsetX,n+t.marker.offsetY,c);e.appendChild(d.node);var u=t.label.text?t.label.text:"",f=this.annoCtx.graphics.drawText({x:s+t.label.offsetX,y:r+t.label.offsetY,text:u,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,fontWeight:t.label.style.fontWeight,foreColor:t.label.style.color,cssClass:"apexcharts-point-annotation-label ".concat(t.label.style.cssClass," ").concat(t.id?t.id:"")});if(f.attr({rel:i}),e.appendChild(f.node),t.customSVG.SVG){var p=this.annoCtx.graphics.group({class:"apexcharts-point-annotations-custom-svg "+t.customSVG.cssClass});p.attr({transform:"translate(".concat(s+t.customSVG.offsetX,", ").concat(r+t.customSVG.offsetY,")")}),p.node.innerHTML=t.customSVG.SVG,e.appendChild(p.node)}if(t.image.path){var x=t.image.width?t.image.width:20,b=t.image.height?t.image.height:20;this.annoCtx.addImage({x:s+t.image.offsetX-x/2,y:r+t.image.offsetY-b/2,width:x,height:b,path:t.image.path,appendTo:".apexcharts-point-annotations"})}}}},{key:"drawPointAnnotations",value:function(){var t=this,e=this.w,i=this.annoCtx.graphics.group({class:"apexcharts-point-annotations"});return e.config.annotations.points.map((function(e,a){t.addPointAnnotation(e,i.node,a)})),i}}]),t}();var w,k,A={name:"en",options:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],toolbar:{exportToSVG:"Download SVG",exportToPNG:"Download PNG",exportToCSV:"Download CSV",menu:"Menu",selection:"Selection",selectionZoom:"Selection Zoom",zoomIn:"Zoom In",zoomOut:"Zoom Out",pan:"Panning",reset:"Reset Zoom"}}},S=function(){function t(){e(this,t),this.yAxis={show:!0,showAlways:!1,showForNullSeries:!0,seriesName:void 0,opposite:!1,reversed:!1,logarithmic:!1,tickAmount:void 0,forceNiceScale:!1,max:void 0,min:void 0,floating:!1,decimalsInFloat:void 0,labels:{show:!0,minWidth:0,maxWidth:160,offsetX:0,offsetY:0,align:void 0,rotate:0,padding:20,style:{colors:[],fontSize:"11px",fontWeight:400,fontFamily:void 0,cssClass:""},formatter:void 0},axisBorder:{show:!1,color:"#e0e0e0",width:1,offsetX:0,offsetY:0},axisTicks:{show:!1,color:"#e0e0e0",width:6,offsetX:0,offsetY:0},title:{text:void 0,rotate:90,offsetY:0,offsetX:0,style:{color:void 0,fontSize:"11px",fontWeight:900,fontFamily:void 0,cssClass:""}},tooltip:{enabled:!1,offsetX:0},crosshairs:{show:!0,position:"front",stroke:{color:"#b6b6b6",width:1,dashArray:0}}},this.pointAnnotation={x:0,y:null,yAxisIndex:0,seriesIndex:0,marker:{size:4,fillColor:"#fff",strokeWidth:2,strokeColor:"#333",shape:"circle",offsetX:0,offsetY:0,radius:2,cssClass:""},label:{borderColor:"#c2c2c2",borderWidth:1,text:void 0,textAnchor:"middle",offsetX:0,offsetY:0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}},customSVG:{SVG:void 0,cssClass:void 0,offsetX:0,offsetY:0},image:{path:void 0,width:20,height:20,offsetX:0,offsetY:0}},this.yAxisAnnotation={y:0,y2:null,strokeDashArray:1,fillColor:"#c2c2c2",borderColor:"#c2c2c2",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,yAxisIndex:0,label:{borderColor:"#c2c2c2",borderWidth:1,text:void 0,textAnchor:"end",position:"right",offsetX:0,offsetY:-3,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}}},this.xAxisAnnotation={x:0,x2:null,strokeDashArray:1,fillColor:"#c2c2c2",borderColor:"#c2c2c2",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,label:{borderColor:"#c2c2c2",borderWidth:1,text:void 0,textAnchor:"middle",orientation:"vertical",position:"top",offsetX:0,offsetY:0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}}},this.text={x:0,y:0,text:"",textAnchor:"start",foreColor:void 0,fontSize:"13px",fontFamily:void 0,fontWeight:400,appendTo:".apexcharts-annotations",backgroundColor:"transparent",borderColor:"#c2c2c2",borderRadius:0,borderWidth:0,paddingLeft:4,paddingRight:4,paddingTop:2,paddingBottom:2},this.shape={x:0,y:0,type:"rect",width:"100%",height:50,appendTo:".apexcharts-annotations",backgroundColor:"#fff",opacity:1,borderWidth:0,borderRadius:4,borderColor:"#c2c2c2"}}return a(t,[{key:"init",value:function(){return{annotations:{position:"front",yaxis:[this.yAxisAnnotation],xaxis:[this.xAxisAnnotation],points:[this.pointAnnotation],texts:[],images:[],shapes:[]},chart:{animations:{enabled:!0,easing:"easeinout",speed:800,animateGradually:{delay:150,enabled:!0},dynamicAnimation:{enabled:!0,speed:350}},background:"transparent",locales:[A],defaultLocale:"en",dropShadow:{enabled:!1,enabledOnSeries:void 0,top:2,left:2,blur:4,color:"#000",opacity:.35},events:{animationEnd:void 0,beforeMount:void 0,mounted:void 0,updated:void 0,click:void 0,mouseMove:void 0,legendClick:void 0,markerClick:void 0,selection:void 0,dataPointSelection:void 0,dataPointMouseEnter:void 0,dataPointMouseLeave:void 0,beforeZoom:void 0,zoomed:void 0,scrolled:void 0},foreColor:"#373d3f",fontFamily:"Helvetica, Arial, sans-serif",height:"auto",parentHeightOffset:15,redrawOnParentResize:!0,id:void 0,group:void 0,offsetX:0,offsetY:0,selection:{enabled:!1,type:"x",fill:{color:"#24292e",opacity:.1},stroke:{width:1,color:"#24292e",opacity:.4,dashArray:3},xaxis:{min:void 0,max:void 0},yaxis:{min:void 0,max:void 0}},sparkline:{enabled:!1},brush:{enabled:!1,autoScaleYaxis:!0,target:void 0},stacked:!1,stackType:"normal",toolbar:{show:!0,offsetX:0,offsetY:0,tools:{download:!0,selection:!0,zoom:!0,zoomin:!0,zoomout:!0,pan:!0,reset:!0,customIcons:[]},autoSelected:"zoom"},type:"line",width:"100%",zoom:{enabled:!0,type:"x",autoScaleYaxis:!1,zoomedArea:{fill:{color:"#90CAF9",opacity:.4},stroke:{color:"#0D47A1",opacity:.4,width:1}}}},plotOptions:{bar:{horizontal:!1,columnWidth:"70%",barHeight:"70%",distributed:!1,startingShape:"flat",endingShape:"flat",rangeBarOverlap:!0,colors:{ranges:[],backgroundBarColors:[],backgroundBarOpacity:1,backgroundBarRadius:0},dataLabels:{position:"top",maxItems:100,hideOverflowingLabels:!0,orientation:"horizontal"}},bubble:{minBubbleRadius:void 0,maxBubbleRadius:void 0},candlestick:{colors:{upward:"#00B746",downward:"#EF403C"},wick:{useFillColor:!0}},heatmap:{radius:2,enableShades:!0,shadeIntensity:.5,reverseNegativeShade:!1,distributed:!1,useFillColorAsStroke:!1,colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},radialBar:{inverseOrder:!1,startAngle:0,endAngle:360,offsetX:0,offsetY:0,hollow:{margin:5,size:"50%",background:"transparent",image:void 0,imageWidth:150,imageHeight:150,imageOffsetX:0,imageOffsetY:0,imageClipped:!0,position:"front",dropShadow:{enabled:!1,top:0,left:0,blur:3,color:"#000",opacity:.5}},track:{show:!0,startAngle:void 0,endAngle:void 0,background:"#f2f2f2",strokeWidth:"97%",opacity:1,margin:5,dropShadow:{enabled:!1,top:0,left:0,blur:3,color:"#000",opacity:.5}},dataLabels:{show:!0,name:{show:!0,fontSize:"16px",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:0,formatter:function(t){return t}},value:{show:!0,fontSize:"14px",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:16,formatter:function(t){return t+"%"}},total:{show:!1,label:"Total",fontSize:"16px",fontWeight:600,fontFamily:void 0,color:void 0,formatter:function(t){return t.globals.seriesTotals.reduce((function(t,e){return t+e}),0)/t.globals.series.length+"%"}}}},pie:{customScale:1,offsetX:0,offsetY:0,expandOnClick:!0,dataLabels:{offset:0,minAngleToShowLabel:10},donut:{size:"65%",background:"transparent",labels:{show:!1,name:{show:!0,fontSize:"16px",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:-10,formatter:function(t){return t}},value:{show:!0,fontSize:"20px",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:10,formatter:function(t){return t}},total:{show:!1,showAlways:!1,label:"Total",fontSize:"16px",fontWeight:400,fontFamily:void 0,color:void 0,formatter:function(t){return t.globals.seriesTotals.reduce((function(t,e){return t+e}),0)}}}}},polarArea:{rings:{strokeWidth:1,strokeColor:"#e8e8e8"}},radar:{size:void 0,offsetX:0,offsetY:0,polygons:{strokeWidth:1,strokeColors:"#e8e8e8",connectorColors:"#e8e8e8",fill:{colors:void 0}}}},colors:void 0,dataLabels:{enabled:!0,enabledOnSeries:void 0,formatter:function(t){return null!==t?t:""},textAnchor:"middle",distributed:!1,offsetX:0,offsetY:0,style:{fontSize:"12px",fontFamily:void 0,fontWeight:600,colors:void 0},background:{enabled:!0,foreColor:"#fff",borderRadius:2,padding:4,opacity:.9,borderWidth:1,borderColor:"#fff",dropShadow:{enabled:!1,top:1,left:1,blur:1,color:"#000",opacity:.45}},dropShadow:{enabled:!1,top:1,left:1,blur:1,color:"#000",opacity:.45}},fill:{type:"solid",colors:void 0,opacity:.85,gradient:{shade:"dark",type:"horizontal",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]},image:{src:[],width:void 0,height:void 0},pattern:{style:"squares",width:6,height:6,strokeWidth:2}},grid:{show:!0,borderColor:"#e0e0e0",strokeDashArray:0,position:"back",xaxis:{lines:{show:!1}},yaxis:{lines:{show:!0}},row:{colors:void 0,opacity:.5},column:{colors:void 0,opacity:.5},padding:{top:0,right:10,bottom:0,left:12}},labels:[],legend:{show:!0,showForSingleSeries:!1,showForNullSeries:!0,showForZeroSeries:!0,floating:!1,position:"bottom",horizontalAlign:"center",inverseOrder:!1,fontSize:"12px",fontFamily:void 0,fontWeight:400,width:void 0,height:void 0,formatter:void 0,tooltipHoverFormatter:void 0,offsetX:-20,offsetY:0,labels:{colors:void 0,useSeriesColors:!1},markers:{width:12,height:12,strokeWidth:0,fillColors:void 0,strokeColor:"#fff",radius:12,customHTML:void 0,offsetX:0,offsetY:0,onClick:void 0},itemMargin:{horizontal:5,vertical:0},onItemClick:{toggleDataSeries:!0},onItemHover:{highlightDataSeries:!0}},markers:{discrete:[],size:0,colors:void 0,strokeColors:"#fff",strokeWidth:2,strokeOpacity:.9,strokeDashArray:0,fillOpacity:1,shape:"circle",radius:2,offsetX:0,offsetY:0,onClick:void 0,onDblClick:void 0,showNullDataPoints:!0,hover:{size:void 0,sizeOffset:3}},noData:{text:void 0,align:"center",verticalAlign:"middle",offsetX:0,offsetY:0,style:{color:void 0,fontSize:"14px",fontFamily:void 0}},responsive:[],series:void 0,states:{normal:{filter:{type:"none",value:0}},hover:{filter:{type:"lighten",value:.15}},active:{allowMultipleDataPointsSelection:!1,filter:{type:"darken",value:.65}}},title:{text:void 0,align:"left",margin:5,offsetX:0,offsetY:0,floating:!1,style:{fontSize:"14px",fontWeight:900,fontFamily:void 0,color:void 0}},subtitle:{text:void 0,align:"left",margin:5,offsetX:0,offsetY:30,floating:!1,style:{fontSize:"12px",fontWeight:400,fontFamily:void 0,color:void 0}},stroke:{show:!0,curve:"smooth",lineCap:"butt",width:2,colors:void 0,dashArray:0},tooltip:{enabled:!0,enabledOnSeries:void 0,shared:!0,followCursor:!1,intersect:!1,inverseOrder:!1,custom:void 0,fillSeriesColor:!1,theme:"light",style:{fontSize:"12px",fontFamily:void 0},onDatasetHover:{highlightDataSeries:!1},x:{show:!0,format:"dd MMM",formatter:void 0},y:{formatter:void 0,title:{formatter:function(t){return t}}},z:{formatter:void 0,title:"Size: "},marker:{show:!0,fillColors:void 0},items:{display:"flex"},fixed:{enabled:!1,position:"topRight",offsetX:0,offsetY:0}},xaxis:{type:"category",categories:[],convertedCatToNumeric:!1,sorted:!0,offsetX:0,offsetY:0,labels:{show:!0,rotate:-45,rotateAlways:!1,hideOverlappingLabels:!0,trim:!1,minHeight:void 0,maxHeight:120,showDuplicates:!0,style:{colors:[],fontSize:"12px",fontWeight:400,fontFamily:void 0,cssClass:""},offsetX:0,offsetY:0,format:void 0,formatter:void 0,datetimeUTC:!0,datetimeFormatter:{year:"yyyy",month:"MMM 'yy",day:"dd MMM",hour:"HH:mm",minute:"HH:mm:ss"}},axisBorder:{show:!0,color:"#e0e0e0",width:"100%",height:1,offsetX:0,offsetY:0},axisTicks:{show:!0,color:"#e0e0e0",height:6,offsetX:0,offsetY:0},tickAmount:void 0,tickPlacement:"on",min:void 0,max:void 0,range:void 0,floating:!1,position:"bottom",title:{text:void 0,offsetX:0,offsetY:0,style:{color:void 0,fontSize:"12px",fontWeight:900,fontFamily:void 0,cssClass:""}},crosshairs:{show:!0,width:1,position:"back",opacity:.9,stroke:{color:"#b6b6b6",width:1,dashArray:3},fill:{type:"solid",color:"#B1B9C4",gradient:{colorFrom:"#D8E3F0",colorTo:"#BED1E6",stops:[0,100],opacityFrom:.4,opacityTo:.5}},dropShadow:{enabled:!1,left:0,top:0,blur:1,opacity:.4}},tooltip:{enabled:!0,offsetY:0,formatter:void 0,style:{fontSize:"12px",fontFamily:void 0}}},yaxis:this.yAxis,theme:{mode:"light",palette:"palette1",monochrome:{enabled:!1,color:"#008FFB",shadeTo:"light",shadeIntensity:.65}}}}}]),t}(),C=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.graphics=new p(this.ctx),this.w.globals.isBarHorizontal&&(this.invertAxis=!0),this.helpers=new x(this),this.xAxisAnnotations=new b(this),this.yAxisAnnotations=new v(this),this.pointsAnnotations=new y(this),this.w.globals.isBarHorizontal&&this.w.config.yaxis[0].reversed&&(this.inversedReversedAxis=!0),this.xDivision=this.w.globals.gridWidth/this.w.globals.dataPoints}return a(t,[{key:"drawAxesAnnotations",value:function(){var t=this.w;if(t.globals.axisCharts){for(var e=this.yAxisAnnotations.drawYAxisAnnotations(),i=this.xAxisAnnotations.drawXAxisAnnotations(),a=this.pointsAnnotations.drawPointAnnotations(),s=t.config.chart.animations.enabled,r=[e,i,a],n=[i.node,e.node,a.node],o=0;o<3;o++)t.globals.dom.elGraphical.add(r[o]),!s||t.globals.resized||t.globals.dataChanged||"scatter"!==t.config.chart.type&&"bubble"!==t.config.chart.type&&t.globals.dataPoints>1&&n[o].classList.add("apexcharts-element-hidden"),t.globals.delayedElements.push({el:n[o],index:0});this.helpers.annotationsBackground()}}},{key:"drawShapeAnnos",value:function(){var t=this;this.w.config.annotations.shapes.map((function(e,i){t.addShape(e,i)}))}},{key:"drawImageAnnos",value:function(){var t=this;this.w.config.annotations.images.map((function(e,i){t.addImage(e,i)}))}},{key:"drawTextAnnos",value:function(){var t=this;this.w.config.annotations.texts.map((function(e,i){t.addText(e,i)}))}},{key:"addXaxisAnnotation",value:function(t,e,i){this.xAxisAnnotations.addXaxisAnnotation(t,e,i)}},{key:"addYaxisAnnotation",value:function(t,e,i){this.yAxisAnnotations.addYaxisAnnotation(t,e,i)}},{key:"addPointAnnotation",value:function(t,e,i){this.pointsAnnotations.addPointAnnotation(t,e,i)}},{key:"addText",value:function(t,e){var i=t.x,a=t.y,s=t.text,r=t.textAnchor,n=t.foreColor,o=t.fontSize,l=t.fontFamily,h=t.fontWeight,c=t.cssClass,d=t.backgroundColor,g=t.borderWidth,u=t.strokeDashArray,f=t.borderRadius,p=t.borderColor,x=t.appendTo,b=void 0===x?".apexcharts-annotations":x,m=t.paddingLeft,v=void 0===m?4:m,y=t.paddingRight,w=void 0===y?4:y,k=t.paddingBottom,A=void 0===k?2:k,S=t.paddingTop,C=void 0===S?2:S,L=this.w,P=this.graphics.drawText({x:i,y:a,text:s,textAnchor:r||"start",fontSize:o||"12px",fontWeight:h||"regular",fontFamily:l||L.config.chart.fontFamily,foreColor:n||L.config.chart.foreColor,cssClass:c}),T=L.globals.dom.baseEl.querySelector(b);T&&T.appendChild(P.node);var z=P.bbox();if(t.draggable&&this.helpers.makeAnnotationDraggable(P,"texts",e),s){var I=this.graphics.drawRect(z.x-v,z.y-C,z.width+v+w,z.height+A+C,f,d||"transparent",1,g,p,u);T.insertBefore(I.node,P.node)}}},{key:"addShape",value:function(t,e){var i={type:t.type,x:t.x||0,y:t.y||0,width:t.width||"100%",height:t.height||50,circleRadius:t.radius||25,backgroundColor:t.backgroundColor||"#fff",opacity:t.opacity||1,borderWidth:t.borderWidth||0,borderRadius:t.borderRadius||4,borderColor:t.borderColor||"#c2c2c2",appendTo:t.appendTo||".apexcharts-annotations"},a=this.w;String(i.width).indexOf("%")>-1&&(i.width=parseInt(i.width,10)*parseInt(a.globals.svgWidth,10)/100);var s=null;s="circle"===i.type?this.graphics.drawCircle(i.circleRadius,{fill:i.backgroundColor,stroke:i.borderColor,"stroke-width":i.borderWidth,opacity:i.opacity,cx:i.x,cy:i.y}):this.graphics.drawRect(i.x,i.y,i.width,i.height,i.borderRadius,i.backgroundColor,i.opacity,i.borderWidth,i.borderColor);var r=a.globals.dom.baseEl.querySelector(i.appendTo);r&&r.appendChild(s.node),t.draggable&&(this.helpers.makeAnnotationDraggable(s,"shapes",e),s.node.classList.add("apexcharts-resizable-element"))}},{key:"addImage",value:function(t,e){var i=this.w,a=t.path,s=t.x,r=void 0===s?0:s,n=t.y,o=void 0===n?0:n,l=t.width,h=void 0===l?20:l,c=t.height,d=void 0===c?20:c,g=t.appendTo,u=void 0===g?".apexcharts-annotations":g,f=i.globals.dom.Paper.image(a);f.size(h,d).move(r,o);var p=i.globals.dom.baseEl.querySelector(u);p&&p.appendChild(f.node),t.draggable&&(this.helpers.makeAnnotationDraggable(f,"images",e),f.node.classList.add("apexcharts-resizable-element"))}},{key:"addXaxisAnnotationExternal",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"xaxis",contextMethod:i.addXaxisAnnotation}),i}},{key:"addYaxisAnnotationExternal",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"yaxis",contextMethod:i.addYaxisAnnotation}),i}},{key:"addPointAnnotationExternal",value:function(t,e,i){return void 0===this.invertAxis&&(this.invertAxis=i.w.globals.isBarHorizontal),this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"point",contextMethod:i.addPointAnnotation}),i}},{key:"addAnnotationExternal",value:function(t){var e=t.params,i=t.pushToMemory,a=t.context,s=t.type,r=t.contextMethod,n=a,o=n.w,l=o.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations")),h=l.childNodes.length+1,c=new S,d=Object.assign({},"xaxis"===s?c.xAxisAnnotation:"yaxis"===s?c.yAxisAnnotation:c.pointAnnotation),u=g.extend(d,e);switch(s){case"xaxis":this.addXaxisAnnotation(u,l,h);break;case"yaxis":this.addYaxisAnnotation(u,l,h);break;case"point":this.addPointAnnotation(u,l,h)}var f=o.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations .apexcharts-").concat(s,"-annotation-label[rel='").concat(h,"']")),p=this.helpers.addBackgroundToAnno(f,u);return p&&l.insertBefore(p.node,f),i&&o.globals.memory.methodsToExec.push({context:n,id:u.id?u.id:g.randomId(),method:r,label:"addAnnotation",params:e}),a}},{key:"clearAnnotations",value:function(t){var e=t.w,i=e.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations");e.globals.memory.methodsToExec.map((function(t,i){"addText"!==t.label&&"addAnnotation"!==t.label||e.globals.memory.methodsToExec.splice(i,1)})),i=g.listToArray(i),Array.prototype.forEach.call(i,(function(t){for(;t.firstChild;)t.removeChild(t.firstChild)}))}},{key:"removeAnnotation",value:function(t,e){var i=t.w,a=i.globals.dom.baseEl.querySelectorAll(".".concat(e));a&&(i.globals.memory.methodsToExec.map((function(t,a){t.id===e&&i.globals.memory.methodsToExec.splice(a,1)})),Array.prototype.forEach.call(a,(function(t){t.parentElement.removeChild(t)})))}}]),t}(),L=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.opts=null,this.seriesIndex=0}return a(t,[{key:"clippedImgArea",value:function(t){var e=this.w,i=e.config,a=parseInt(e.globals.gridWidth,10),s=parseInt(e.globals.gridHeight,10),r=a>s?a:s,n=t.image,o=0,l=0;void 0===t.width&&void 0===t.height?void 0!==i.fill.image.width&&void 0!==i.fill.image.height?(o=i.fill.image.width+1,l=i.fill.image.height):(o=r+1,l=r):(o=t.width,l=t.height);var h=document.createElementNS(e.globals.SVGNS,"pattern");p.setAttrs(h,{id:t.patternID,patternUnits:t.patternUnits?t.patternUnits:"userSpaceOnUse",width:o+"px",height:l+"px"});var c=document.createElementNS(e.globals.SVGNS,"image");h.appendChild(c),c.setAttributeNS(window.SVG.xlink,"href",n),p.setAttrs(c,{x:0,y:0,preserveAspectRatio:"none",width:o+"px",height:l+"px"}),c.style.opacity=t.opacity,e.globals.dom.elDefs.node.appendChild(h)}},{key:"getSeriesIndex",value:function(t){var e=this.w;return("bar"===e.config.chart.type||"rangeBar"===e.config.chart.type)&&e.config.plotOptions.bar.distributed||"heatmap"===e.config.chart.type?this.seriesIndex=t.seriesNumber:this.seriesIndex=t.seriesNumber%e.globals.series.length,this.seriesIndex}},{key:"fillPath",value:function(t){var e=this.w;this.opts=t;var i,a,s,r=this.w.config;this.seriesIndex=this.getSeriesIndex(t);var n=this.getFillColors()[this.seriesIndex];"function"==typeof n&&(n=n({seriesIndex:this.seriesIndex,dataPointIndex:t.dataPointIndex,value:t.value,w:e}));var o=this.getFillType(this.seriesIndex),l=Array.isArray(r.fill.opacity)?r.fill.opacity[this.seriesIndex]:r.fill.opacity,h=n;if(t.color&&(n=t.color),-1===n.indexOf("rgb")?n.length<9&&(h=g.hexToRgba(n,l)):n.indexOf("rgba")>-1&&(l=g.getOpacityFromRGBA(n)),t.opacity&&(l=t.opacity),"pattern"===o&&(a=this.handlePatternFill(a,n,l,h)),"gradient"===o&&(s=this.handleGradientFill(n,l,this.seriesIndex)),"image"===o){var c=r.fill.image.src,d=t.patternID?t.patternID:"";this.clippedImgArea({opacity:l,image:Array.isArray(c)?t.seriesNumber-1&&(c=g.getOpacityFromRGBA(h));var d=void 0===s.fill.gradient.opacityTo?e:Array.isArray(s.fill.gradient.opacityTo)?s.fill.gradient.opacityTo[i]:s.fill.gradient.opacityTo;if(void 0===s.fill.gradient.gradientToColors||0===s.fill.gradient.gradientToColors.length)a="dark"===s.fill.gradient.shade?o.shadeColor(-1*parseFloat(s.fill.gradient.shadeIntensity),t.indexOf("rgb")>-1?g.rgb2hex(t):t):o.shadeColor(parseFloat(s.fill.gradient.shadeIntensity),t.indexOf("rgb")>-1?g.rgb2hex(t):t);else{var u=s.fill.gradient.gradientToColors[r.seriesNumber];a=u,u.indexOf("rgba")>-1&&(d=g.getOpacityFromRGBA(u))}if(s.fill.gradient.inverseColors){var f=h;h=a,a=f}return h.indexOf("rgb")>-1&&(h=g.rgb2hex(h)),a.indexOf("rgb")>-1&&(a=g.rgb2hex(a)),n.drawGradient(l,h,a,c,d,r.size,s.fill.gradient.stops,s.fill.gradient.colorStops,i)}}]),t}(),P=function(){function t(i,a){e(this,t),this.ctx=i,this.w=i.w}return a(t,[{key:"setGlobalMarkerSize",value:function(){var t=this.w;if(t.globals.markers.size=Array.isArray(t.config.markers.size)?t.config.markers.size:[t.config.markers.size],t.globals.markers.size.length>0){if(t.globals.markers.size.length4&&void 0!==arguments[4]&&arguments[4],n=this.w,o=e,l=t,h=null,c=new p(this.ctx);if((n.globals.markers.size[e]>0||r)&&(h=c.group({class:r?"":"apexcharts-series-markers"})).attr("clip-path","url(#gridRectMarkerMask".concat(n.globals.cuid,")")),l.x instanceof Array)for(var d=0;d0:n.config.markers.size>0;if(b||r){g.isNumber(l.y[d])?x+=" w".concat(g.randomId()):x="apexcharts-nullpoint";var m=this.getMarkerConfig(x,e,f);n.config.series[o].data[i]&&(n.config.series[o].data[i].fillColor&&(m.pointFillColor=n.config.series[o].data[i].fillColor),n.config.series[o].data[i].strokeColor&&(m.pointStrokeColor=n.config.series[o].data[i].strokeColor)),a&&(m.pSize=a),(s=c.drawMarker(l.x[d],l.y[d],m)).attr("rel",f),s.attr("j",f),s.attr("index",e),s.node.setAttribute("default-marker-size",m.pSize);var v=new u(this.ctx);v.setSelectionFilter(s,e,f),this.addEvents(s),h&&h.add(s)}else void 0===n.globals.pointsArray[e]&&(n.globals.pointsArray[e]=[]),n.globals.pointsArray[e].push([l.x[d],l.y[d]])}return h}},{key:"getMarkerConfig",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=this.w,s=this.getMarkerStyle(e),r=a.globals.markers.size[e],n=a.config.markers;return null!==i&&n.discrete.length&&n.discrete.map((function(t){t.seriesIndex===e&&t.dataPointIndex===i&&(s.pointStrokeColor=t.strokeColor,s.pointFillColor=t.fillColor,r=t.size)})),{pSize:r,pRadius:n.radius,pWidth:n.strokeWidth instanceof Array?n.strokeWidth[e]:n.strokeWidth,pointStrokeColor:s.pointStrokeColor,pointFillColor:s.pointFillColor,shape:n.shape instanceof Array?n.shape[e]:n.shape,class:t,pointStrokeOpacity:n.strokeOpacity instanceof Array?n.strokeOpacity[e]:n.strokeOpacity,pointStrokeDashArray:n.strokeDashArray instanceof Array?n.strokeDashArray[e]:n.strokeDashArray,pointFillOpacity:n.fillOpacity instanceof Array?n.fillOpacity[e]:n.fillOpacity,seriesIndex:e}}},{key:"addEvents",value:function(t){var e=this.w,i=new p(this.ctx);t.node.addEventListener("mouseenter",i.pathMouseEnter.bind(this.ctx,t)),t.node.addEventListener("mouseleave",i.pathMouseLeave.bind(this.ctx,t)),t.node.addEventListener("mousedown",i.pathMouseDown.bind(this.ctx,t)),t.node.addEventListener("click",e.config.markers.onClick),t.node.addEventListener("dblclick",e.config.markers.onDblClick),t.node.addEventListener("touchstart",i.pathMouseDown.bind(this.ctx,t),{passive:!0})}},{key:"getMarkerStyle",value:function(t){var e=this.w,i=e.globals.markers.colors,a=e.config.markers.strokeColor||e.config.markers.strokeColors;return{pointStrokeColor:a instanceof Array?a[t]:a,pointFillColor:i instanceof Array?i[t]:i}}}]),t}(),T=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled}return a(t,[{key:"draw",value:function(t,e,i){var a=this.w,s=new p(this.ctx),r=i.realIndex,n=i.pointsPos,o=i.zRatio,l=i.elParent,h=s.group({class:"apexcharts-series-markers apexcharts-series-".concat(a.config.chart.type)});if(h.attr("clip-path","url(#gridRectMarkerMask".concat(a.globals.cuid,")")),n.x instanceof Array)for(var c=0;cx.maxBubbleRadius&&(f=x.maxBubbleRadius)}a.config.chart.animations.enabled||(u=f);var b=n.x[c],m=n.y[c];if(u=u||0,null!==m&&void 0!==a.globals.series[r][d]||(g=!1),g){var v=this.drawPoint(b,m,u,f,r,d,e);h.add(v)}l.add(h)}}},{key:"drawPoint",value:function(t,e,i,a,s,r,n){var o=this.w,l=s,h=new f(this.ctx),c=new u(this.ctx),d=new L(this.ctx),g=new P(this.ctx),x=new p(this.ctx),b=g.getMarkerConfig("apexcharts-marker",l),m=d.fillPath({seriesNumber:s,dataPointIndex:r,patternUnits:"objectBoundingBox",value:o.globals.series[s][n]}),v=x.drawCircle(i);if(o.config.series[l].data[r]&&o.config.series[l].data[r].fillColor&&(m=o.config.series[l].data[r].fillColor),v.attr({cx:t,cy:e,fill:m,stroke:b.pointStrokeColor,"stroke-width":b.pWidth,"stroke-dasharray":b.pointStrokeDashArray,"stroke-opacity":b.pointStrokeOpacity}),o.config.chart.dropShadow.enabled){var y=o.config.chart.dropShadow;c.dropShadow(v,y,s)}if(this.initialAnim&&!o.globals.dataChanged){var w=1;o.globals.resized||(w=o.config.chart.animations.speed),h.animateCircleRadius(v,0,a,w,o.globals.easing,(function(){window.setTimeout((function(){h.animationCompleted(v)}),100)}))}if(o.globals.dataChanged)if(this.dynamicAnim){var k,A,S,C,T=o.config.chart.animations.dynamicAnimation.speed;null!=(C=o.globals.previousPaths[s]&&o.globals.previousPaths[s][n])&&(k=C.x,A=C.y,S=void 0!==C.r?C.r:a);for(var z=0;zf.x+f.width+2||e>f.y+f.height+2||t+c4&&void 0!==arguments[4]?arguments[4]:2,r=this.w,n=new p(this.ctx),o=r.config.dataLabels,l=0,h=0,c=i,d=null;if(!o.enabled||t.x instanceof Array!=!0)return d;d=n.group({class:"apexcharts-data-labels"});for(var g=0;ge.globals.gridWidth+20)&&(o="");var b=e.globals.dataLabels.style.colors[r];(("bar"===e.config.chart.type||"rangeBar"===e.config.chart.type)&&e.config.plotOptions.bar.distributed||e.config.dataLabels.distributed)&&(b=e.globals.dataLabels.style.colors[n]),d&&(b=d);var m=c.offsetX,v=c.offsetY;if("bar"!==e.config.chart.type&&"rangeBar"!==e.config.chart.type||(m=0,v=0),x.drawnextLabel){var y=i.drawText({width:100,height:parseInt(c.style.fontSize,10),x:a+m,y:s+v,foreColor:b,textAnchor:l||c.textAnchor,text:o,fontSize:c.style.fontSize,fontFamily:c.style.fontFamily,fontWeight:c.style.fontWeight||"normal"});if(y.attr({class:"apexcharts-datalabel",cx:a,cy:s}),c.dropShadow.enabled){var w=c.dropShadow;new u(this.ctx).dropShadow(y,w)}h.add(y),void 0===e.globals.lastDrawnDataLabelsIndexes[r]&&(e.globals.lastDrawnDataLabelsIndexes[r]=[]),e.globals.lastDrawnDataLabelsIndexes[r].push(n)}}}},{key:"addBackgroundToDataLabel",value:function(t,e){var i=this.w,a=i.config.dataLabels.background,s=a.padding,r=a.padding/2,n=e.width,o=e.height,l=new p(this.ctx).drawRect(e.x-s,e.y-r/2,n+2*s,o+r,a.borderRadius,"transparent"===i.config.chart.background?"#fff":i.config.chart.background,a.opacity,a.borderWidth,a.borderColor);a.dropShadow.enabled&&new u(this.ctx).dropShadow(l,a.dropShadow);return l}},{key:"dataLabelsBackground",value:function(){var t=this.w;if("bubble"!==t.config.chart.type)for(var e=t.globals.dom.baseEl.querySelectorAll(".apexcharts-datalabels text"),i=0;ii.globals.gridHeight&&(c=i.globals.gridHeight-g)),{bcx:n,bcy:r,dataLabelsX:e,dataLabelsY:c}}},{key:"calculateBarsDataLabelsPosition",value:function(t){var e=this.w,i=t.x,a=t.i,s=t.j,r=t.bcy,n=t.barHeight,o=t.barWidth,l=t.textRects,h=t.dataLabelsX,c=t.strokeWidth,d=t.barDataLabelsConfig,g=t.offX,u=t.offY,f=e.globals.gridHeight/e.globals.dataPoints;o=Math.abs(o);var p=r-(this.barCtx.isTimelineBar?0:f)+n/2+l.height/2+u-3,x=this.barCtx.series[a][s]<0,b=i;switch(this.barCtx.isReversed&&(b=i+o,i=e.globals.gridWidth-o),d.position){case"center":h=x?b-o/2-g:b-o/2+g;break;case"bottom":h=x?b+o-c-Math.round(l.width/2)-g:b-o+c+Math.round(l.width/2)+g;break;case"top":h=x?b-c+Math.round(l.width/2)-g:b-c-Math.round(l.width/2)+g}return e.config.chart.stacked||(h<0?h=h+l.width+c:h+l.width/2>e.globals.gridWidth&&(h=e.globals.gridWidth-l.width-c)),{bcx:i,bcy:r,dataLabelsX:h,dataLabelsY:p}}},{key:"drawCalculatedDataLabels",value:function(t){var e=t.x,i=t.y,a=t.val,s=t.i,r=t.j,o=t.textRects,l=t.barHeight,h=t.barWidth,c=t.dataLabelsConfig,d=this.w,g="rotate(0)";"vertical"===d.config.plotOptions.bar.dataLabels.orientation&&(g="rotate(-90, ".concat(e,", ").concat(i,")"));var u=new z(this.barCtx.ctx),f=new p(this.barCtx.ctx),x=c.formatter,b=null,m=d.globals.collapsedSeriesIndices.indexOf(s)>-1;if(c.enabled&&!m){b=f.group({class:"apexcharts-data-labels",transform:g});var v="";void 0!==a&&(v=x(a,{seriesIndex:s,dataPointIndex:r,w:d})),0===a&&d.config.chart.stacked&&(v="");var y=d.globals.series[s][r]<=0,w=d.config.plotOptions.bar.dataLabels.position;if("vertical"===d.config.plotOptions.bar.dataLabels.orientation&&("top"===w&&(c.textAnchor=y?"end":"start"),"center"===w&&(c.textAnchor="middle"),"bottom"===w&&(c.textAnchor=y?"end":"start")),this.barCtx.isTimelineBar&&this.barCtx.barOptions.dataLabels.hideOverflowingLabels)h0&&o.width/1.6>h||h<0&&o.width/1.6l&&(v="")));var k=n({},c);this.barCtx.isHorizontal&&a<0&&("start"===c.textAnchor?k.textAnchor="end":"end"===c.textAnchor&&(k.textAnchor="start")),u.plotDataLabelsText({x:e,y:i,text:v,i:s,j:r,parent:b,dataLabelsConfig:k,alwaysDrawDataLabel:!0,offsetCorrection:!0})}return b}}]),t}(),M=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.legendInactiveClass="legend-mouseover-inactive"}return a(t,[{key:"getAllSeriesEls",value:function(){return this.w.globals.dom.baseEl.getElementsByClassName("apexcharts-series")}},{key:"getSeriesByName",value:function(t){return this.w.globals.dom.baseEl.querySelector("[seriesName='".concat(g.escapeString(t),"']"))}},{key:"isSeriesHidden",value:function(t){var e=this.getSeriesByName(t),i=parseInt(e.getAttribute("data:realIndex"),10);return{isHidden:e.classList.contains("apexcharts-series-collapsed"),realIndex:i}}},{key:"addCollapsedClassToSeries",value:function(t,e){var i=this.w;function a(i){for(var a=0;a0&&void 0!==arguments[0])||arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=this.w,s=a.globals.initialSeries.slice();a.config.series=s,a.globals.previousPaths=[],i&&(a.globals.collapsedSeries=[],a.globals.ancillaryCollapsedSeries=[],a.globals.collapsedSeriesIndices=[],a.globals.ancillaryCollapsedSeriesIndices=[]),t&&(e&&(a.globals.zoomed=!1,this.ctx.updateHelpers.revertDefaultAxisMinMax()),this.ctx.updateHelpers._updateSeries(s,a.config.chart.animations.dynamicAnimation.enabled))}},{key:"toggleSeriesOnHover",value:function(t,e){var i=this.w,a=i.globals.dom.baseEl.querySelectorAll(".apexcharts-series, .apexcharts-datalabels");if("mousemove"===t.type){var s=parseInt(e.getAttribute("rel"),10)-1,r=null,n=null;i.globals.axisCharts||"radialBar"===i.config.chart.type?i.globals.axisCharts?(r=i.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(s,"']")),n=i.globals.dom.baseEl.querySelector(".apexcharts-datalabels[data\\:realIndex='".concat(s,"']"))):r=i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(s+1,"']")):r=i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(s+1,"'] path"));for(var o=0;o=t.from&&a<=t.to&&s[e].classList.remove(i.legendInactiveClass)}}(a.config.plotOptions.heatmap.colorScale.ranges[n])}else"mouseout"===t.type&&r("remove")}},{key:"getActiveConfigSeriesIndex",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=this.w,i=0;if(e.config.series.length>1)for(var a=e.config.series.map((function(i,a){var s=!1;return t&&(s="bar"===e.config.series[a].type||"column"===e.config.series[a].type),i.data&&i.data.length>0&&!s?a:-1})),s=0;s0)for(var a=0;a0)for(var a=0;a0?t:[]}));return t}}]),t}(),X=function(){function t(i){e(this,t),this.w=i.w,this.barCtx=i}return a(t,[{key:"initVariables",value:function(t){var e=this.w;this.barCtx.series=t,this.barCtx.totalItems=0,this.barCtx.seriesLen=0,this.barCtx.visibleI=-1,this.barCtx.visibleItems=1;for(var i=0;i0&&(this.barCtx.seriesLen=this.barCtx.seriesLen+1,this.barCtx.totalItems+=t[i].length),e.globals.isXNumeric)for(var a=0;ae.globals.minX&&e.globals.seriesX[i][a]0&&(a=l.globals.minXDiff/c),(r=a/this.barCtx.seriesLen*parseInt(this.barCtx.barOptions.columnWidth,10)/100)<1&&(r=1)}n=l.globals.gridHeight-this.barCtx.baseLineY[this.barCtx.yaxisIndex]-(this.barCtx.isReversed?l.globals.gridHeight:0)+(this.barCtx.isReversed?2*this.barCtx.baseLineY[this.barCtx.yaxisIndex]:0),t=l.globals.padHorizontal+(a-r*this.barCtx.seriesLen)/2}return{x:t,y:e,yDivision:i,xDivision:a,barHeight:s,barWidth:r,zeroH:n,zeroW:o}}},{key:"getPathFillColor",value:function(t,e,i,a){var s=this.w,r=new L(this.barCtx.ctx),n=null,o=this.barCtx.barOptions.distributed?i:e;this.barCtx.barOptions.colors.ranges.length>0&&this.barCtx.barOptions.colors.ranges.map((function(a){t[e][i]>=a.from&&t[e][i]<=a.to&&(n=a.color)}));return s.config.series[e].data[i]&&s.config.series[e].data[i].fillColor&&(n=s.config.series[e].data[i].fillColor),r.fillPath({seriesNumber:this.barCtx.barOptions.distributed?o:a,dataPointIndex:i,color:n,value:t[e][i]})}},{key:"getStrokeWidth",value:function(t,e,i){var a=0,s=this.w;return void 0===this.barCtx.series[t][e]||null===this.barCtx.series[t][e]?this.barCtx.isNullValue=!0:this.barCtx.isNullValue=!1,s.config.stroke.show&&(this.barCtx.isNullValue||(a=Array.isArray(this.barCtx.strokeWidth)?this.barCtx.strokeWidth[i]:this.barCtx.strokeWidth)),a}},{key:"barBackground",value:function(t){var e=t.bc,i=t.i,a=t.x1,s=t.x2,r=t.y1,n=t.y2,o=t.elSeries,l=this.w,h=new p(this.barCtx.ctx),c=new M(this.barCtx.ctx).getActiveConfigSeriesIndex();if(this.barCtx.barOptions.colors.backgroundBarColors.length>0&&c===i){e>=this.barCtx.barOptions.colors.backgroundBarColors.length&&(e=0);var d=this.barCtx.barOptions.colors.backgroundBarColors[e],g=h.drawRect(void 0!==a?a:0,void 0!==r?r:0,void 0!==s?s:l.globals.gridWidth,void 0!==n?n:l.globals.gridHeight,this.barCtx.barOptions.colors.backgroundBarRadius,d,this.barCtx.barOptions.colors.backgroundBarOpacity);o.add(g),g.node.classList.add("apexcharts-backgroundBar")}}},{key:"getColumnPaths",value:function(t){var e=t.barWidth,i=t.barXPosition,a=t.yRatio,s=t.y1,r=t.y2,n=t.strokeWidth,o=t.series,l=t.realIndex,h=t.i,c=t.j,d=t.w,g=new p(this.barCtx.ctx);(n=Array.isArray(n)?n[l]:n)||(n=0);var u={barWidth:e,strokeWidth:n,yRatio:a,barXPosition:i,y1:s,y2:r},f=this.getRoundedBars(d,u,o,h,c),x=i,b=i+e,m=g.move(x,f.y1),v=g.move(x,f.y1);return d.globals.previousPaths.length>0&&(v=this.barCtx.getPreviousPath(l,c,!1)),{pathTo:m=m+g.line(x,f.y2)+f.endingPath+g.line(b-n,f.y2)+g.line(b-n,f.y1)+f.startingPath+"z",pathFrom:v=v+g.line(x,s)+g.line(b-n,s)+g.line(b-n,s)+g.line(b-n,s)+g.line(x,s)}}},{key:"getBarpaths",value:function(t){var e=t.barYPosition,i=t.barHeight,a=t.x1,s=t.x2,r=t.strokeWidth,n=t.series,o=t.realIndex,l=t.i,h=t.j,c=t.w,d=new p(this.barCtx.ctx);(r=Array.isArray(r)?r[o]:r)||(r=0);var g={barHeight:i,strokeWidth:r,barYPosition:e,x2:s,x1:a},u=this.getRoundedBars(c,g,n,l,h),f=d.move(u.x1,e),x=d.move(u.x1,e);c.globals.previousPaths.length>0&&(x=this.barCtx.getPreviousPath(o,h,!1));var b=e,m=e+i;return{pathTo:f=f+d.line(u.x2,b)+u.endingPath+d.line(u.x2,m-r)+d.line(u.x1,m-r)+u.startingPath+"z",pathFrom:x=x+d.line(a,b)+d.line(a,m-r)+d.line(a,m-r)+d.line(a,m-r)+d.line(a,b)}}},{key:"getRoundedBars",value:function(t,e,i,a,s){var r=new p(this.barCtx.ctx),n=Array.isArray(e.strokeWidth)?e.strokeWidth[a]:e.strokeWidth;if(n||(n=0),this.barCtx.isHorizontal){var o=null,l="",h=e.x2,c=e.x1;if(void 0!==i[a][s]||null!==i[a][s]){var d=i[a][s]<0,g=e.barHeight/2-n;switch(d&&(g=-e.barHeight/2-n),g>Math.abs(h-c)&&(g=Math.abs(h-c)),"rounded"===this.barCtx.barOptions.endingShape&&(h=e.x2-g/2),"rounded"===this.barCtx.barOptions.startingShape&&(c=e.x1+g/2),this.barCtx.barOptions.endingShape){case"flat":o=r.line(h,e.barYPosition+e.barHeight-n);break;case"rounded":o=r.quadraticCurve(h+g,e.barYPosition+(e.barHeight-n)/2,h,e.barYPosition+e.barHeight-n)}switch(this.barCtx.barOptions.startingShape){case"flat":l=r.line(c,e.barYPosition+e.barHeight-n);break;case"rounded":l=r.quadraticCurve(c-g,e.barYPosition+e.barHeight/2,c,e.barYPosition)}}return{endingPath:o,startingPath:l,x2:h,x1:c}}var u=null,f="",x=e.y2,b=e.y1;if(void 0!==i[a][s]||null!==i[a][s]){var m=i[a][s]<0,v=e.barWidth/2-n;switch(m&&(v=-e.barWidth/2-n),v>Math.abs(x-b)&&(v=Math.abs(x-b)),"rounded"===this.barCtx.barOptions.endingShape&&(x+=v/2),"rounded"===this.barCtx.barOptions.startingShape&&(b-=v/2),this.barCtx.barOptions.endingShape){case"flat":u=r.line(e.barXPosition+e.barWidth-n,x);break;case"rounded":u=r.quadraticCurve(e.barXPosition+(e.barWidth-n)/2,x-v,e.barXPosition+e.barWidth-n,x)}switch(this.barCtx.barOptions.startingShape){case"flat":f=r.line(e.barXPosition+e.barWidth-n,b);break;case"rounded":f=r.quadraticCurve(e.barXPosition+(e.barWidth-n)/2,b+v,e.barXPosition,b)}}return{endingPath:u,startingPath:f,y2:x,y1:b}}}]),t}(),E=function(){function t(i,a){e(this,t),this.ctx=i,this.w=i.w;var s=this.w;this.barOptions=s.config.plotOptions.bar,this.isHorizontal=this.barOptions.horizontal,this.strokeWidth=s.config.stroke.width,this.isNullValue=!1,this.isTimelineBar="datetime"===s.config.xaxis.type&&s.globals.seriesRangeBarTimeline.length,this.xyRatios=a,null!==this.xyRatios&&(this.xRatio=a.xRatio,this.initialXRatio=a.initialXRatio,this.yRatio=a.yRatio,this.invertedXRatio=a.invertedXRatio,this.invertedYRatio=a.invertedYRatio,this.baseLineY=a.baseLineY,this.baseLineInvertedY=a.baseLineInvertedY),this.yaxisIndex=0,this.seriesLen=0,this.barHelpers=new X(this)}return a(t,[{key:"draw",value:function(t,e){var i=this.w,a=new p(this.ctx),s=new m(this.ctx,i);t=s.getLogSeries(t),this.series=t,this.yRatio=s.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t);var r=a.group({class:"apexcharts-bar-series apexcharts-plot-series"});i.config.dataLabels.enabled&&this.totalItems>this.barOptions.dataLabels.maxItems&&console.warn("WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering.");for(var o=0,l=0;o0&&(this.visibleI=this.visibleI+1);var k=0,A=0;this.yRatio.length>1&&(this.yaxisIndex=y),this.isReversed=i.config.yaxis[this.yaxisIndex]&&i.config.yaxis[this.yaxisIndex].reversed;var S=this.barHelpers.initialPositions();x=S.y,k=S.barHeight,c=S.yDivision,u=S.zeroW,f=S.x,A=S.barWidth,h=S.xDivision,d=S.zeroH,this.horizontal||v.push(f+A/2);for(var C=a.group({class:"apexcharts-datalabels","data:realIndex":y}),L=0;L0&&v.push(f+A/2),b.push(x);var I=this.barHelpers.getPathFillColor(t,o,L,y);this.renderSeries({realIndex:y,pathFill:I,j:L,i:o,pathFrom:T.pathFrom,pathTo:T.pathTo,strokeWidth:P,elSeries:w,x:f,y:x,series:t,barHeight:k,barWidth:A,elDataLabelsWrap:C,visibleSeries:this.visibleI,type:"bar"})}i.globals.seriesXvalues[y]=v,i.globals.seriesYvalues[y]=b,r.add(w)}return r}},{key:"renderSeries",value:function(t){var e=t.realIndex,i=t.pathFill,a=t.lineFill,s=t.j,r=t.i,n=t.pathFrom,o=t.pathTo,l=t.strokeWidth,h=t.elSeries,c=t.x,d=t.y,g=t.y1,f=t.y2,x=t.series,b=t.barHeight,m=t.barWidth,v=t.barYPosition,y=t.elDataLabelsWrap,w=t.visibleSeries,k=t.type,A=this.w,S=new p(this.ctx);a||(a=this.barOptions.distributed?A.globals.stroke.colors[s]:A.globals.stroke.colors[e]),A.config.series[r].data[s]&&A.config.series[r].data[s].strokeColor&&(a=A.config.series[r].data[s].strokeColor),this.isNullValue&&(i="none");var C=s/A.config.chart.animations.animateGradually.delay*(A.config.chart.animations.speed/A.globals.dataPoints)/2.4,L=S.renderPaths({i:r,j:s,realIndex:e,pathFrom:n,pathTo:o,stroke:a,strokeWidth:l,strokeLineCap:A.config.stroke.lineCap,fill:i,animationDelay:C,initialSpeed:A.config.chart.animations.speed,dataChangeSpeed:A.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-".concat(k,"-area")});L.attr("clip-path","url(#gridRectMask".concat(A.globals.cuid,")")),void 0!==g&&void 0!==f&&(L.attr("data-range-y1",g),L.attr("data-range-y2",f)),new u(this.ctx).setSelectionFilter(L,e,s),h.add(L);var P=new I(this).handleBarDataLabels({x:c,y:d,y1:g,y2:f,i:r,j:s,series:x,realIndex:e,barHeight:b,barWidth:m,barYPosition:v,renderedPath:L,visibleSeries:w});return null!==P&&y.add(P),h.add(y),h}},{key:"drawBarPaths",value:function(t){var e=t.indexes,i=t.barHeight,a=t.strokeWidth,s=t.zeroW,r=t.x,n=t.y,o=t.yDivision,l=t.elSeries,h=this.w,c=e.i,d=e.j,g=e.bc;h.globals.isXNumeric&&(n=(h.globals.seriesX[c][d]-h.globals.minX)/this.invertedXRatio-i);var u=n+i*this.visibleI;r=void 0===this.series[c][d]||null===this.series[c][d]?s:s+this.series[c][d]/this.invertedYRatio-2*(this.isReversed?this.series[c][d]/this.invertedYRatio:0);var f=this.barHelpers.getBarpaths({barYPosition:u,barHeight:i,x1:s,x2:r,strokeWidth:a,series:this.series,realIndex:e.realIndex,i:c,j:d,w:h});return h.globals.isXNumeric||(n+=o),this.barHelpers.barBackground({bc:g,i:c,y1:u-i*this.visibleI,y2:i*this.seriesLen,elSeries:l}),{pathTo:f.pathTo,pathFrom:f.pathFrom,x:r,y:n,barYPosition:u}}},{key:"drawColumnPaths",value:function(t){var e=t.indexes,i=t.x,a=t.y,s=t.xDivision,r=t.barWidth,n=t.zeroH,o=t.strokeWidth,l=t.elSeries,h=this.w,c=e.i,d=e.j,g=e.bc;if(h.globals.isXNumeric){var u=c;h.globals.seriesX[c].length||(u=h.globals.maxValsInArrayIndex),i=(h.globals.seriesX[u][d]-h.globals.minX)/this.xRatio-r*this.seriesLen/2}var f=i+r*this.visibleI;a=void 0===this.series[c][d]||null===this.series[c][d]?n:n-this.series[c][d]/this.yRatio[this.yaxisIndex]+2*(this.isReversed?this.series[c][d]/this.yRatio[this.yaxisIndex]:0);var p=this.barHelpers.getColumnPaths({barXPosition:f,barWidth:r,y1:n,y2:a,strokeWidth:o,series:this.series,realIndex:e.realIndex,i:c,j:d,w:h});return h.globals.isXNumeric||(i+=s),this.barHelpers.barBackground({bc:g,i:c,x1:f-o/2-r*this.visibleI,x2:r*this.seriesLen+o/2,elSeries:l}),{pathTo:p.pathTo,pathFrom:p.pathFrom,x:i,y:a,barXPosition:f}}},{key:"getPreviousPath",value:function(t,e){for(var i,a=this.w,s=0;s0&&parseInt(r.realIndex,10)===parseInt(t,10)&&void 0!==a.globals.previousPaths[s].paths[e]&&(i=a.globals.previousPaths[s].paths[e].d)}return i}}]),t}(),Y=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.months31=[1,3,5,7,8,10,12],this.months30=[2,4,6,9,11],this.daysCntOfYear=[0,31,59,90,120,151,181,212,243,273,304,334]}return a(t,[{key:"isValidDate",value:function(t){return!isNaN(this.parseDate(t))}},{key:"getTimeStamp",value:function(t){return Date.parse(t)?this.w.config.xaxis.labels.datetimeUTC?new Date(new Date(t).toISOString().substr(0,25)).getTime():new Date(t).getTime():t}},{key:"getDate",value:function(t){return this.w.config.xaxis.labels.datetimeUTC?new Date(new Date(t).toUTCString()):new Date(t)}},{key:"parseDate",value:function(t){var e=Date.parse(t);if(!isNaN(e))return this.getTimeStamp(t);var i=Date.parse(t.replace(/-/g,"/").replace(/[a-z]+/gi," "));return i=this.getTimeStamp(i)}},{key:"formatDate",value:function(t,e){var i=this.w.globals.locale,a=this.w.config.xaxis.labels.datetimeUTC,s=["\0"].concat(d(i.months)),r=["\x01"].concat(d(i.shortMonths)),n=["\x02"].concat(d(i.days)),o=["\x03"].concat(d(i.shortDays));function l(t,e){var i=t+"";for(e=e||2;i.length12?u-12:0===u?12:u;e=(e=(e=(e=e.replace(/(^|[^\\])HH+/g,"$1"+l(u))).replace(/(^|[^\\])H/g,"$1"+u)).replace(/(^|[^\\])hh+/g,"$1"+l(f))).replace(/(^|[^\\])h/g,"$1"+f);var p=a?t.getUTCMinutes():t.getMinutes();e=(e=e.replace(/(^|[^\\])mm+/g,"$1"+l(p))).replace(/(^|[^\\])m/g,"$1"+p);var x=a?t.getUTCSeconds():t.getSeconds();e=(e=e.replace(/(^|[^\\])ss+/g,"$1"+l(x))).replace(/(^|[^\\])s/g,"$1"+x);var b=a?t.getUTCMilliseconds():t.getMilliseconds();e=e.replace(/(^|[^\\])fff+/g,"$1"+l(b,3)),b=Math.round(b/10),e=e.replace(/(^|[^\\])ff/g,"$1"+l(b)),b=Math.round(b/10);var m=u<12?"AM":"PM";e=(e=(e=e.replace(/(^|[^\\])f/g,"$1"+b)).replace(/(^|[^\\])TT+/g,"$1"+m)).replace(/(^|[^\\])T/g,"$1"+m.charAt(0));var v=m.toLowerCase();e=(e=e.replace(/(^|[^\\])tt+/g,"$1"+v)).replace(/(^|[^\\])t/g,"$1"+v.charAt(0));var y=-t.getTimezoneOffset(),w=a||!y?"Z":y>0?"+":"-";if(!a){var k=(y=Math.abs(y))%60;w+=l(Math.floor(y/60))+":"+l(k)}e=e.replace(/(^|[^\\])K/g,"$1"+w);var A=(a?t.getUTCDay():t.getDay())+1;return e=(e=(e=(e=(e=e.replace(new RegExp(n[0],"g"),n[A])).replace(new RegExp(o[0],"g"),o[A])).replace(new RegExp(s[0],"g"),s[c])).replace(new RegExp(r[0],"g"),r[c])).replace(/\\(.)/g,"$1")}},{key:"getTimeUnitsfromTimestamp",value:function(t,e,i){var a=this.w;void 0!==a.config.xaxis.min&&(t=a.config.xaxis.min),void 0!==a.config.xaxis.max&&(e=a.config.xaxis.max);var s=this.getDate(t),r=this.getDate(e),n=this.formatDate(s,"yyyy MM dd HH mm").split(" "),o=this.formatDate(r,"yyyy MM dd HH mm").split(" ");return{minMinute:parseInt(n[4],10),maxMinute:parseInt(o[4],10),minHour:parseInt(n[3],10),maxHour:parseInt(o[3],10),minDate:parseInt(n[2],10),maxDate:parseInt(o[2],10),minMonth:parseInt(n[1],10)-1,maxMonth:parseInt(o[1],10)-1,minYear:parseInt(n[0],10),maxYear:parseInt(o[0],10)}}},{key:"isLeapYear",value:function(t){return t%4==0&&t%100!=0||t%400==0}},{key:"calculcateLastDaysOfMonth",value:function(t,e,i){return this.determineDaysOfMonths(t,e)-i}},{key:"determineDaysOfYear",value:function(t){var e=365;return this.isLeapYear(t)&&(e=366),e}},{key:"determineRemainingDaysOfYear",value:function(t,e,i){var a=this.daysCntOfYear[e]+i;return e>1&&this.isLeapYear()&&a++,a}},{key:"determineDaysOfMonths",value:function(t,e){var i=30;switch(t=g.monthMod(t),!0){case this.months30.indexOf(t)>-1:2===t&&(i=this.isLeapYear(e)?29:28);break;case this.months31.indexOf(t)>-1:default:i=31}return i}}]),t}(),F=function(t){function i(){return e(this,i),c(this,l(i).apply(this,arguments))}return o(i,t),a(i,[{key:"draw",value:function(t,e){var i=this.w,a=new p(this.ctx);this.rangeBarOptions=this.w.config.plotOptions.rangeBar,this.series=t,this.seriesRangeStart=i.globals.seriesRangeStart,this.seriesRangeEnd=i.globals.seriesRangeEnd,this.barHelpers.initVariables(t);for(var s=a.group({class:"apexcharts-rangebar-series apexcharts-plot-series"}),r=0;r0&&(this.visibleI=this.visibleI+1);var b=0,m=0;this.yRatio.length>1&&(this.yaxisIndex=f);var v=this.barHelpers.initialPositions();d=v.y,h=v.zeroW,c=v.x,m=v.barWidth,o=v.xDivision,l=v.zeroH;for(var y=a.group({class:"apexcharts-datalabels","data:realIndex":f}),w=0;w0}));return a=s+r*this.visibleI+n*g,u>-1&&!l.config.plotOptions.bar.rangeBarOverlap&&(h=l.globals.seriesRangeBarTimeline[e][u].overlaps).indexOf(c)>-1&&(a=(r=o.barHeight/h.length)*this.visibleI+n*(100-parseInt(this.barOptions.barHeight,10))/100/2+r*(this.visibleI+h.indexOf(c))+n*g),{barYPosition:a,barHeight:r}}},{key:"drawRangeColumnPaths",value:function(t){var e=t.indexes,i=t.x,a=(t.strokeWidth,t.xDivision),s=t.barWidth,r=t.zeroH,n=this.w,o=e.i,l=e.j,h=this.yRatio[this.yaxisIndex],c=e.realIndex,d=this.getRangeValue(c,l),g=Math.min(d.start,d.end),u=Math.max(d.start,d.end);n.globals.isXNumeric&&(i=(n.globals.seriesX[o][l]-n.globals.minX)/this.xRatio-s/2);var f=i+s*this.visibleI;void 0===this.series[o][l]||null===this.series[o][l]?g=r:(g=r-g/h,u=r-u/h);var p=Math.abs(u-g),x=this.barHelpers.getColumnPaths({barXPosition:f,barWidth:s,y1:g,y2:u,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,i:c,j:l,w:n});return n.globals.isXNumeric||(i+=a),{pathTo:x.pathTo,pathFrom:x.pathFrom,barHeight:p,x:i,y:u,barXPosition:f}}},{key:"drawRangeBarPaths",value:function(t){var e=t.indexes,i=t.y,a=t.y1,s=t.y2,r=t.yDivision,n=t.barHeight,o=t.barYPosition,l=t.zeroW,h=this.w,c=l+a/this.invertedYRatio,d=l+s/this.invertedYRatio,g=Math.abs(d-c),u=this.barHelpers.getBarpaths({barYPosition:o,barHeight:n,x1:c,x2:d,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,i:e.realIndex,j:e.j,w:h});return h.globals.isXNumeric||(i+=r),{pathTo:u.pathTo,pathFrom:u.pathFrom,barWidth:g,x:d,y:i}}},{key:"getRangeValue",value:function(t,e){var i=this.w;return{start:i.globals.seriesRangeStart[t][e],end:i.globals.seriesRangeEnd[t][e]}}},{key:"getTooltipValues",value:function(t){var e=t.ctx,i=t.seriesIndex,a=t.dataPointIndex,s=t.y1,r=t.y2,n=t.w,o=n.globals.seriesRangeStart[i][a],l=n.globals.seriesRangeEnd[i][a],h=n.globals.labels[a],c=n.config.series[i].name,d=n.config.tooltip.y.formatter,g=n.config.tooltip.y.title.formatter,u={w:n,seriesIndex:i,dataPointIndex:a};"function"==typeof g&&(c=g(c,u)),s&&r&&(o=s,l=r,n.config.series[i].data[a].x&&(h=n.config.series[i].data[a].x+":"),"function"==typeof d&&(h=d(h,u)));var f="",p="",x=n.globals.colors[i];if(void 0===n.config.tooltip.x.formatter)if("datetime"===n.config.xaxis.type){var b=new Y(e);f=b.formatDate(b.getDate(o),n.config.tooltip.x.format),p=b.formatDate(b.getDate(l),n.config.tooltip.x.format)}else f=o,p=l;else f=n.config.tooltip.x.formatter(o),p=n.config.tooltip.x.formatter(l);return{start:o,end:l,startVal:f,endVal:p,ylabel:h,color:x,seriesName:c}}},{key:"buildCustomTooltipHTML",value:function(t){var e=t.color,i=t.seriesName;return'
'+(i||"")+'
'+t.ylabel+' '+t.start+' - '+t.end+"
"}}]),i}(E),R=function(){function t(i){e(this,t),this.opts=i}return a(t,[{key:"line",value:function(){return{chart:{animations:{easing:"swing"}},dataLabels:{enabled:!1},stroke:{width:5,curve:"straight"},markers:{size:0,hover:{sizeOffset:6}},xaxis:{crosshairs:{width:1}}}}},{key:"sparkline",value:function(t){this.opts.yaxis[0].show=!1,this.opts.yaxis[0].title.text="",this.opts.yaxis[0].axisBorder.show=!1,this.opts.yaxis[0].axisTicks.show=!1,this.opts.yaxis[0].floating=!0;return g.extend(t,{grid:{show:!1,padding:{left:0,right:0,top:0,bottom:0}},legend:{show:!1},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1},axisTicks:{show:!1}},chart:{toolbar:{show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1}})}},{key:"bar",value:function(){return{chart:{stacked:!1,animations:{easing:"swing"}},plotOptions:{bar:{dataLabels:{position:"center"}}},dataLabels:{style:{colors:["#fff"]},background:{enabled:!1}},stroke:{width:0,lineCap:"square"},fill:{opacity:.85},legend:{markers:{shape:"square",radius:2,size:8}},tooltip:{shared:!1},xaxis:{tooltip:{enabled:!1},tickPlacement:"between",crosshairs:{width:"barWidth",position:"back",fill:{type:"gradient"},dropShadow:{enabled:!1},stroke:{width:0}}}}}},{key:"candlestick",value:function(){return{stroke:{width:1,colors:["#333"]},fill:{opacity:1},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(t){var e=t.seriesIndex,i=t.dataPointIndex,a=t.w;return'
Open: '+a.globals.seriesCandleO[e][i]+'
High: '+a.globals.seriesCandleH[e][i]+'
Low: '+a.globals.seriesCandleL[e][i]+'
Close: '+a.globals.seriesCandleC[e][i]+"
"}},states:{active:{filter:{type:"none"}}},xaxis:{crosshairs:{width:1}}}}},{key:"rangeBar",value:function(){return{stroke:{width:0,lineCap:"square"},plotOptions:{bar:{dataLabels:{position:"center"}}},dataLabels:{enabled:!1,formatter:function(t,e){e.ctx;var i=e.seriesIndex,a=e.dataPointIndex,s=e.w,r=s.globals.seriesRangeStart[i][a];return s.globals.seriesRangeEnd[i][a]-r},background:{enabled:!1},style:{colors:["#fff"]}},tooltip:{shared:!1,followCursor:!0,custom:function(t){return t.w.config.plotOptions&&t.w.config.plotOptions.bar&&t.w.config.plotOptions.bar.horizontal?function(t){var e=new F(t.ctx,null),i=e.getTooltipValues(t),a=i.color,s=i.seriesName,r=i.ylabel,n=i.startVal,o=i.endVal;return e.buildCustomTooltipHTML({color:a,seriesName:s,ylabel:r,start:n,end:o})}(t):function(t){var e=new F(t.ctx,null),i=e.getTooltipValues(t),a=i.color,s=i.seriesName,r=i.ylabel,n=i.start,o=i.end;return e.buildCustomTooltipHTML({color:a,seriesName:s,ylabel:r,start:n,end:o})}(t)}},xaxis:{tickPlacement:"between",tooltip:{enabled:!1},crosshairs:{stroke:{width:0}}}}}},{key:"area",value:function(){return{stroke:{width:4},fill:{type:"gradient",gradient:{inverseColors:!1,shade:"light",type:"vertical",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}},markers:{size:0,hover:{sizeOffset:6}},tooltip:{followCursor:!1}}}},{key:"brush",value:function(t){return g.extend(t,{chart:{toolbar:{autoSelected:"selection",show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1},stroke:{width:1},tooltip:{enabled:!1},xaxis:{tooltip:{enabled:!1}}})}},{key:"stacked100",value:function(t){t.dataLabels=t.dataLabels||{},t.dataLabels.formatter=t.dataLabels.formatter||void 0;var e=t.dataLabels.formatter;return t.yaxis.forEach((function(e,i){t.yaxis[i].min=0,t.yaxis[i].max=100})),"bar"===t.chart.type&&(t.dataLabels.formatter=e||function(t){return"number"==typeof t&&t?t.toFixed(0)+"%":t}),t}},{key:"convertCatToNumeric",value:function(t){return t.xaxis.convertedCatToNumeric=!0,t}},{key:"convertCatToNumericXaxis",value:function(t,e,i){t.xaxis.type="numeric",t.xaxis.labels=t.xaxis.labels||{},t.xaxis.labels.formatter=t.xaxis.labels.formatter||function(t){return g.isNumber(t)?Math.floor(t):t};var a=t.xaxis.labels.formatter,s=t.xaxis.categories&&t.xaxis.categories.length?t.xaxis.categories:t.labels;return i&&i.length&&(s=i.map((function(t){return t.toString()}))),s&&s.length&&(t.xaxis.labels.formatter=function(t){return g.isNumber(t)?a(s[Math.floor(t)-1]):a(t)}),t.xaxis.categories=[],t.labels=[],t.xaxis.tickAmount=t.xaxis.tickAmount||"dataPoints",t}},{key:"bubble",value:function(){return{dataLabels:{style:{colors:["#fff"]}},tooltip:{shared:!1,intersect:!0},xaxis:{crosshairs:{width:0}},fill:{type:"solid",gradient:{shade:"light",inverse:!0,shadeIntensity:.55,opacityFrom:.4,opacityTo:.8}}}}},{key:"scatter",value:function(){return{dataLabels:{enabled:!1},tooltip:{shared:!1,intersect:!0},markers:{size:6,strokeWidth:1,hover:{sizeOffset:2}}}}},{key:"heatmap",value:function(){return{chart:{stacked:!1},fill:{opacity:1},dataLabels:{style:{colors:["#fff"]}},stroke:{colors:["#fff"]},tooltip:{followCursor:!0,marker:{show:!1},x:{show:!1}},legend:{position:"top",markers:{shape:"square",size:10,offsetY:2}},grid:{padding:{right:20}}}}},{key:"pie",value:function(){return{chart:{toolbar:{show:!1}},plotOptions:{pie:{donut:{labels:{show:!1}}}},dataLabels:{formatter:function(t){return t.toFixed(1)+"%"},style:{colors:["#fff"]},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"light",stops:[0,100]}},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"donut",value:function(){return{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(t){return t.toFixed(1)+"%"},style:{colors:["#fff"]},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"light",shadeIntensity:.35,stops:[80,100],opacityFrom:1,opacityTo:1}},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"polarArea",value:function(){return this.opts.yaxis[0].tickAmount=this.opts.yaxis[0].tickAmount?this.opts.yaxis[0].tickAmount:6,{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(t){return t.toFixed(1)+"%"},enabled:!1},stroke:{show:!0,width:2},fill:{opacity:.7},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"radar",value:function(){return this.opts.yaxis[0].labels.offsetY=this.opts.yaxis[0].labels.offsetY?this.opts.yaxis[0].labels.offsetY:6,{dataLabels:{enabled:!1,style:{fontSize:"11px"}},stroke:{width:2},markers:{size:3,strokeWidth:1,strokeOpacity:1},fill:{opacity:.2},tooltip:{shared:!1,intersect:!0,followCursor:!0},grid:{show:!1},xaxis:{labels:{formatter:function(t){return t},style:{colors:["#a8a8a8"],fontSize:"11px"}},tooltip:{enabled:!1},crosshairs:{show:!1}}}}},{key:"radialBar",value:function(){return{chart:{animations:{dynamicAnimation:{enabled:!0,speed:800}},toolbar:{show:!1}},fill:{gradient:{shade:"dark",shadeIntensity:.4,inverseColors:!1,type:"diagonal2",opacityFrom:1,opacityTo:1,stops:[70,98,100]}},legend:{show:!1,position:"right"},tooltip:{enabled:!1,fillSeriesColor:!0}}}}]),t}(),D=function(){function i(t){e(this,i),this.opts=t}return a(i,[{key:"init",value:function(e){var i=e.responsiveOverride,a=this.opts,s=new S,r=new R(a);this.chartType=a.chart.type,"histogram"===this.chartType&&(a.chart.type="bar",a=g.extend({plotOptions:{bar:{columnWidth:"99.99%"}}},a)),a=this.extendYAxis(a),a=this.extendAnnotations(a);var n=s.init(),o={};if(a&&"object"===t(a)){var l={};l=-1!==["line","area","bar","candlestick","rangeBar","histogram","bubble","scatter","heatmap","pie","polarArea","donut","radar","radialBar"].indexOf(a.chart.type)?r[a.chart.type]():r.line(),a.chart.brush&&a.chart.brush.enabled&&(l=r.brush(l)),a.chart.stacked&&"100%"===a.chart.stackType&&(a=r.stacked100(a)),this.checkForDarkTheme(window.Apex),this.checkForDarkTheme(a),a.xaxis=a.xaxis||window.Apex.xaxis||{},i||(a.xaxis.convertedCatToNumeric=!1),((a=this.checkForCatToNumericXAxis(this.chartType,l,a)).chart.sparkline&&a.chart.sparkline.enabled||window.Apex.chart&&window.Apex.chart.sparkline&&window.Apex.chart.sparkline.enabled)&&(l=r.sparkline(l)),o=g.extend(n,l)}var h=g.extend(o,window.Apex);return n=g.extend(h,a),n=this.handleUserInputErrors(n)}},{key:"checkForCatToNumericXAxis",value:function(t,e,i){var a=new R(i),s="bar"===t&&i.plotOptions&&i.plotOptions.bar&&i.plotOptions.bar.horizontal,r="pie"===t||"polarArea"===t||"donut"===t||"radar"===t||"radialBar"===t||"heatmap"===t,n="datetime"!==i.xaxis.type&&"numeric"!==i.xaxis.type,o=i.xaxis.tickPlacement?i.xaxis.tickPlacement:e.xaxis&&e.xaxis.tickPlacement;return s||r||!n||"between"===o||(i=a.convertCatToNumeric(i)),i}},{key:"extendYAxis",value:function(t,e){var i=new S;(void 0===t.yaxis||!t.yaxis||Array.isArray(t.yaxis)&&0===t.yaxis.length)&&(t.yaxis={}),t.yaxis.constructor!==Array&&window.Apex.yaxis&&window.Apex.yaxis.constructor!==Array&&(t.yaxis=g.extend(t.yaxis,window.Apex.yaxis)),t.yaxis.constructor!==Array?t.yaxis=[g.extend(i.yAxis,t.yaxis)]:t.yaxis=g.extendArray(t.yaxis,i.yAxis);var a=!1;t.yaxis.forEach((function(t){t.logarithmic&&(a=!0)}));var s=t.series;return e&&!s&&(s=e.config.series),a&&s.length!==t.yaxis.length&&s.length&&(t.yaxis=s.map((function(e,a){if(e.name||(s[a].name="series-".concat(a+1)),t.yaxis[a])return t.yaxis[a].seriesName=s[a].name,t.yaxis[a];var r=g.extend(i.yAxis,t.yaxis[0]);return r.show=!1,r}))),a&&s.length>1&&s.length!==t.yaxis.length&&console.warn("A multi-series logarithmic chart should have equal number of series and y-axes. Please make sure to equalize both."),t}},{key:"extendAnnotations",value:function(t){return void 0===t.annotations&&(t.annotations={},t.annotations.yaxis=[],t.annotations.xaxis=[],t.annotations.points=[]),t=this.extendYAxisAnnotations(t),t=this.extendXAxisAnnotations(t),t=this.extendPointAnnotations(t)}},{key:"extendYAxisAnnotations",value:function(t){var e=new S;return t.annotations.yaxis=g.extendArray(void 0!==t.annotations.yaxis?t.annotations.yaxis:[],e.yAxisAnnotation),t}},{key:"extendXAxisAnnotations",value:function(t){var e=new S;return t.annotations.xaxis=g.extendArray(void 0!==t.annotations.xaxis?t.annotations.xaxis:[],e.xAxisAnnotation),t}},{key:"extendPointAnnotations",value:function(t){var e=new S;return t.annotations.points=g.extendArray(void 0!==t.annotations.points?t.annotations.points:[],e.pointAnnotation),t}},{key:"checkForDarkTheme",value:function(t){t.theme&&"dark"===t.theme.mode&&(t.tooltip||(t.tooltip={}),"light"!==t.tooltip.theme&&(t.tooltip.theme="dark"),t.chart.foreColor||(t.chart.foreColor="#f6f7f8"),t.theme.palette||(t.theme.palette="palette4"))}},{key:"handleUserInputErrors",value:function(t){var e=t;if(e.tooltip.shared&&e.tooltip.intersect)throw new Error("tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.");if(("bar"===e.chart.type||"rangeBar"===e.chart.type)&&e.plotOptions.bar.horizontal){if(e.yaxis.length>1)throw new Error("Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false");e.yaxis[0].reversed&&(e.yaxis[0].opposite=!0),e.xaxis.tooltip.enabled=!1,e.yaxis[0].tooltip.enabled=!1,e.chart.zoom.enabled=!1}return"bar"!==e.chart.type&&"rangeBar"!==e.chart.type||e.tooltip.shared&&("barWidth"===e.xaxis.crosshairs.width&&e.series.length>1&&(console.warn('crosshairs.width = "barWidth" is only supported in single series, not in a multi-series barChart.'),e.xaxis.crosshairs.width="tickWidth"),e.plotOptions.bar.horizontal&&(e.states.hover.type="none",e.tooltip.shared=!1),e.tooltip.followCursor||(console.warn("followCursor option in shared columns cannot be turned off. Please set %ctooltip.followCursor: true","color: blue;"),e.tooltip.followCursor=!0)),"candlestick"===e.chart.type&&e.yaxis[0].reversed&&(console.warn("Reversed y-axis in candlestick chart is not supported."),e.yaxis[0].reversed=!1),e.chart.group&&0===e.yaxis[0].labels.minWidth&&console.warn("It looks like you have multiple charts in synchronization. You must provide yaxis.labels.minWidth which must be EQUAL for all grouped charts to prevent incorrect behaviour."),Array.isArray(e.stroke.width)&&"line"!==e.chart.type&&"area"!==e.chart.type&&(console.warn("stroke.width option accepts array only for line and area charts. Reverted back to Number"),e.stroke.width=e.stroke.width[0]),e}}]),i}(),H=function(){function t(){e(this,t)}return a(t,[{key:"initGlobalVars",value:function(t){t.series=[],t.seriesCandleO=[],t.seriesCandleH=[],t.seriesCandleL=[],t.seriesCandleC=[],t.seriesRangeStart=[],t.seriesRangeEnd=[],t.seriesRangeBarTimeline=[],t.seriesPercent=[],t.seriesX=[],t.seriesZ=[],t.seriesNames=[],t.seriesTotals=[],t.seriesLog=[],t.stackedSeriesTotals=[],t.seriesXvalues=[],t.seriesYvalues=[],t.labels=[],t.categoryLabels=[],t.timescaleLabels=[],t.noLabelsProvided=!1,t.resizeTimer=null,t.selectionResizeTimer=null,t.delayedElements=[],t.pointsArray=[],t.dataLabelsRects=[],t.isXNumeric=!1,t.xaxisLabelsCount=0,t.skipLastTimelinelabel=!1,t.skipFirstTimelinelabel=!1,t.x2SpaceAvailable=0,t.isDataXYZ=!1,t.isMultiLineX=!1,t.isMultipleYAxis=!1,t.maxY=-Number.MAX_VALUE,t.minY=Number.MIN_VALUE,t.minYArr=[],t.maxYArr=[],t.maxX=-Number.MAX_VALUE,t.minX=Number.MAX_VALUE,t.initialMaxX=-Number.MAX_VALUE,t.initialMinX=Number.MAX_VALUE,t.maxDate=0,t.minDate=Number.MAX_VALUE,t.minZ=Number.MAX_VALUE,t.maxZ=-Number.MAX_VALUE,t.minXDiff=Number.MAX_VALUE,t.yAxisScale=[],t.xAxisScale=null,t.xAxisTicksPositions=[],t.yLabelsCoords=[],t.yTitleCoords=[],t.barPadForNumericAxis=0,t.padHorizontal=0,t.xRange=0,t.yRange=[],t.zRange=0,t.dataPoints=0,t.xTickAmount=0}},{key:"globalVars",value:function(t){return{chartID:null,cuid:null,events:{beforeMount:[],mounted:[],updated:[],clicked:[],selection:[],dataPointSelection:[],zoomed:[],scrolled:[]},colors:[],clientX:null,clientY:null,fill:{colors:[]},stroke:{colors:[]},dataLabels:{style:{colors:[]}},radarPolygons:{fill:{colors:[]}},markers:{colors:[],size:t.markers.size,largestSize:0},animationEnded:!1,isTouchDevice:"ontouchstart"in window||navigator.msMaxTouchPoints,isDirty:!1,isExecCalled:!1,initialConfig:null,lastXAxis:[],lastYAxis:[],columnSeries:null,labels:[],timescaleLabels:[],noLabelsProvided:!1,allSeriesCollapsed:!1,collapsedSeries:[],collapsedSeriesIndices:[],ancillaryCollapsedSeries:[],ancillaryCollapsedSeriesIndices:[],risingSeries:[],dataFormatXNumeric:!1,capturedSeriesIndex:-1,capturedDataPointIndex:-1,selectedDataPoints:[],goldenPadding:35,invalidLogScale:!1,ignoreYAxisIndexes:[],yAxisSameScaleIndices:[],maxValsInArrayIndex:0,radialSize:0,zoomEnabled:"zoom"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.zoom&&t.chart.zoom.enabled,panEnabled:"pan"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.pan,selectionEnabled:"selection"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.selection,yaxis:null,mousedown:!1,lastClientPosition:{},visibleXRange:void 0,yValueDecimal:0,total:0,SVGNS:"http://www.w3.org/2000/svg",svgWidth:0,svgHeight:0,noData:!1,locale:{},dom:{},memory:{methodsToExec:[]},shouldAnimate:!0,skipLastTimelinelabel:!1,skipFirstTimelinelabel:!1,delayedElements:[],axisCharts:!0,isDataXYZ:!1,resized:!1,resizeTimer:null,comboCharts:!1,dataChanged:!1,previousPaths:[],allSeriesHasEqualX:!0,pointsArray:[],dataLabelsRects:[],lastDrawnDataLabelsIndexes:[],x2SpaceAvailable:0,hasNullValues:!1,easing:null,zoomed:!1,gridWidth:0,gridHeight:0,rotateXLabels:!1,defaultLabels:!1,xLabelFormatter:void 0,yLabelFormatters:[],xaxisTooltipFormatter:void 0,ttKeyFormatter:void 0,ttVal:void 0,ttZFormatter:void 0,LINE_HEIGHT_RATIO:1.618,xAxisLabelsHeight:0,yAxisLabelsWidth:0,scaleX:1,scaleY:1,translateX:0,translateY:0,translateYAxisX:[],yAxisWidths:[],translateXAxisY:0,translateXAxisX:0,tooltip:null}}},{key:"init",value:function(t){var e=this.globalVars(t);return this.initGlobalVars(e),e.initialConfig=g.extend({},t),e.initialSeries=JSON.parse(JSON.stringify(e.initialConfig.series)),e.lastXAxis=JSON.parse(JSON.stringify(e.initialConfig.xaxis)),e.lastYAxis=JSON.parse(JSON.stringify(e.initialConfig.yaxis)),e}}]),t}(),N=function(){function t(i){e(this,t),this.opts=i}return a(t,[{key:"init",value:function(){var t=new D(this.opts).init({responsiveOverride:!1});return{config:t,globals:(new H).init(t)}}}]),t}(),O=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.twoDSeries=[],this.threeDSeries=[],this.twoDSeriesX=[],this.coreUtils=new m(this.ctx)}return a(t,[{key:"isMultiFormat",value:function(){return this.isFormatXY()||this.isFormat2DArray()}},{key:"isFormatXY",value:function(){var t=this.w.config.series.slice(),e=new M(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&null!==t[this.activeSeriesIndex].data[0]&&void 0!==t[this.activeSeriesIndex].data[0].x&&null!==t[this.activeSeriesIndex].data[0])return!0}},{key:"isFormat2DArray",value:function(){var t=this.w.config.series.slice(),e=new M(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&void 0!==t[this.activeSeriesIndex].data[0]&&null!==t[this.activeSeriesIndex].data[0]&&t[this.activeSeriesIndex].data[0].constructor===Array)return!0}},{key:"handleFormat2DArray",value:function(t,e){var i=this.w.config,a=this.w.globals;i.xaxis.sorted&&("datetime"===i.xaxis.type?t[e].data.sort((function(t,e){return new Date(t[0]).getTime()-new Date(e[0]).getTime()})):"numeric"===i.xaxis.type&&t[e].data.sort((function(t,e){return t[0]-e[0]})));for(var s=0;s-1&&(r=this.activeSeriesIndex),i.xaxis.sorted&&("datetime"===i.xaxis.type?t[e].data.sort((function(t,e){return new Date(t.x).getTime()-new Date(e.x).getTime()})):"numeric"===i.xaxis.type&&t[e].data.sort((function(t,e){return t.x-e.x})));for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:this.ctx,a=this.w.config,s=this.w.globals,r=new Y(i),n=a.labels.length>0?a.labels.slice():a.xaxis.categories.slice(),o=function(){for(var t=0;t0&&(this.twoDSeriesX=n,s.seriesX.push(this.twoDSeriesX))),s.labels.push(this.twoDSeriesX);var h=t[l].data.map((function(t){return g.parseNumber(t)}));s.series.push(h)}s.seriesZ.push(this.threeDSeries),void 0!==t[l].name?s.seriesNames.push(t[l].name):s.seriesNames.push("series-"+parseInt(l+1,10))}return this.w}},{key:"parseDataNonAxisCharts",value:function(t){var e=this.w.globals,i=this.w.config;e.series=t.slice(),e.seriesNames=i.labels.slice();for(var a=0;a0)i.labels=e.xaxis.categories;else if(e.labels.length>0)i.labels=e.labels.slice();else if(this.fallbackToCategory){if(i.labels=i.labels[0],i.seriesRangeBarTimeline.length&&(i.seriesRangeBarTimeline.map((function(t){t.forEach((function(t){i.labels.indexOf(t.x)<0&&t.x&&i.labels.push(t.x)}))})),i.labels=i.labels.filter((function(t,e,i){return i.indexOf(t)===e}))),e.xaxis.convertedCatToNumeric)new R(e).convertCatToNumericXaxis(e,this.ctx,i.seriesX[0]),this._generateExternalLabels(t)}else this._generateExternalLabels(t)}},{key:"_generateExternalLabels",value:function(t){var e=this.w.globals,i=this.w.config,a=[];if(e.axisCharts){if(e.series.length>0)for(var s=0;se.length?t:e}),0);t.globals.yAxisScale[0].niceMax=e,t.globals.yAxisScale[0].niceMin=e}}}]),t}(),B=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return a(t,[{key:"getLabel",value:function(t,e,i,a){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"12px",n=this.w,o=void 0===t[a]?"":t[a],l=o,h=n.globals.xLabelFormatter,c=n.config.xaxis.labels.formatter,d=!1,g=new W(this.ctx),u=o;l=g.xLabelFormat(h,o,u),void 0!==c&&(l=c(o,t[a],a));var f=function(t){var i=null;return e.forEach((function(t){"month"===t.unit?i="year":"day"===t.unit?i="month":"hour"===t.unit?i="day":"minute"===t.unit&&(i="hour")})),i===t};e.length>0?(d=f(e[a].unit),i=e[a].position,l=e[a].value):"datetime"===n.config.xaxis.type&&void 0===c&&(l=""),void 0===l&&(l=""),l=Array.isArray(l)?l:l.toString();var x=new p(this.ctx),b={};return b=n.globals.rotateXLabels?x.getTextRects(l,parseInt(r,10),null,"rotate(".concat(n.config.xaxis.labels.rotate," 0 0)"),!1):x.getTextRects(l,parseInt(r,10)),!Array.isArray(l)&&(0===l.indexOf("NaN")||0===l.toLowerCase().indexOf("invalid")||l.toLowerCase().indexOf("infinity")>=0||s.indexOf(l)>=0&&!n.config.xaxis.labels.showDuplicates)&&(l=""),{x:i,text:l,textRect:b,isBold:d}}},{key:"checkForOverflowingLabels",value:function(t,e,i,a,s){var r=this.w;if(0===t&&r.globals.skipFirstTimelinelabel&&(e.text=""),t===i-1&&r.globals.skipLastTimelinelabel&&(e.text=""),r.config.xaxis.labels.hideOverlappingLabels&&a.length>0){var n=s[s.length-1];e.x0){!0===o.config.yaxis[s].opposite&&(t+=a.width);for(var c=e;c>=0;c--){var d=h+e/10+o.config.yaxis[s].labels.offsetY-1;o.globals.isBarHorizontal&&(d=r*c),"heatmap"===o.config.chart.type&&(d+=r/2);var g=l.drawLine(t+i.offsetX-a.width+a.offsetX,d+a.offsetY,t+i.offsetX+a.offsetX,d+a.offsetY,a.color);n.add(g),h+=r}}}}]),t}(),V=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return a(t,[{key:"fixSvgStringForIe11",value:function(t){if(!g.isIE11())return t;var e=0,i=t.replace(/xmlns="http:\/\/www.w3.org\/2000\/svg"/g,(function(t){return 2===++e?'xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.com/svgjs"':t}));return i=(i=i.replace(/xmlns:NS\d+=""/g,"")).replace(/NS\d+:(\w+:\w+=")/g,"$1")}},{key:"getSvgString",value:function(){var t=this.w.globals.dom.Paper.svg();return this.fixSvgStringForIe11(t)}},{key:"cleanup",value:function(){var t=this.w,e=t.globals.dom.baseEl.getElementsByClassName("apexcharts-xcrosshairs"),i=t.globals.dom.baseEl.getElementsByClassName("apexcharts-ycrosshairs"),a=t.globals.dom.baseEl.querySelectorAll(".apexcharts-zoom-rect, .apexcharts-selection-rect");Array.prototype.forEach.call(a,(function(t){t.setAttribute("width",0)})),e&&e[0]&&(e[0].setAttribute("x",-500),e[0].setAttribute("x1",-500),e[0].setAttribute("x2",-500)),i&&i[0]&&(i[0].setAttribute("y",-100),i[0].setAttribute("y1",-100),i[0].setAttribute("y2",-100))}},{key:"svgUrl",value:function(){this.cleanup();var t=this.getSvgString(),e=new Blob([t],{type:"image/svg+xml;charset=utf-8"});return URL.createObjectURL(e)}},{key:"dataURI",value:function(){var t=this;return new Promise((function(e){var i=t.w;t.cleanup();var a=document.createElement("canvas");a.width=i.globals.svgWidth,a.height=parseInt(i.globals.dom.elWrap.style.height,10);var s="transparent"===i.config.chart.background?"#fff":i.config.chart.background,r=a.getContext("2d");r.fillStyle=s,r.fillRect(0,0,a.width,a.height);var n=t.getSvgString();if(window.canvg&&g.isIE11()){var o=window.canvg.Canvg.fromString(r,n,{ignoreClear:!0,ignoreDimensions:!0});o.start();var l=a.msToBlob();o.stop(),e({blob:l})}else{var h="data:image/svg+xml,"+encodeURIComponent(n),c=new Image;c.crossOrigin="anonymous",c.onload=function(){if(r.drawImage(c,0,0),a.msToBlob){var t=a.msToBlob();e({blob:t})}else{var i=a.toDataURL("image/png");e({imgURI:i})}},c.src=h}}))}},{key:"exportToSVG",value:function(){this.triggerDownload(this.svgUrl(),".svg")}},{key:"exportToPng",value:function(){var t=this;this.dataURI().then((function(e){var i=e.imgURI,a=e.blob;a?navigator.msSaveOrOpenBlob(a,t.w.globals.chartID+".png"):t.triggerDownload(i,".png")}))}},{key:"exportToCSV",value:function(t){var e=this,i=t.series,a=t.columnDelimiter,s=void 0===a?",":a,r=t.lineDelimiter,n=void 0===r?"\n":r,o=this.w,l=[],h=[],c="data:text/csv;charset=utf-8,",d=new O(this.ctx),g=new B(this.ctx),u=function(t){var i="";if(o.globals.axisCharts){if("category"===o.config.xaxis.type||o.config.xaxis.convertedCatToNumeric)if(o.globals.isBarHorizontal){var a=o.globals.yLabelFormatters[0],s=new M(e.ctx).getActiveConfigSeriesIndex();i=a(o.globals.labels[t],{seriesIndex:s,dataPointIndex:t,w:o})}else i=g.getLabel(o.globals.labels,o.globals.timescaleLabels,0,t).text;"datetime"===o.config.xaxis.type&&(o.config.xaxis.categories.length?i=o.config.xaxis.categories[t]:o.config.labels.length&&(i=o.config.labels[t]))}else i=o.config.labels[t];return i};l.push("category"),i.map((function(t,e){o.globals.axisCharts&&l.push(t.name?t.name:"series-".concat(e))})),o.globals.axisCharts||(l.push("value"),h.push(l.join(s))),i.map((function(t,e){o.globals.axisCharts?function(t,e){if(l.length&&0===e&&h.push(l.join(s)),t.data&&t.data.length)for(var a=0;a0&&!a.globals.isBarHorizontal&&(this.xaxisLabels=a.globals.timescaleLabels.slice()),this.drawnLabels=[],this.drawnLabelsRects=[],"top"===a.config.xaxis.position?this.offY=0:this.offY=a.globals.gridHeight+1,this.offY=this.offY+a.config.xaxis.axisBorder.offsetY,this.isCategoryBarHorizontal="bar"===a.config.chart.type&&a.config.plotOptions.bar.horizontal,this.xaxisFontSize=a.config.xaxis.labels.style.fontSize,this.xaxisFontFamily=a.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=a.config.xaxis.labels.style.colors,this.xaxisBorderWidth=a.config.xaxis.axisBorder.width,this.isCategoryBarHorizontal&&(this.xaxisBorderWidth=a.config.yaxis[0].axisBorder.width.toString()),this.xaxisBorderWidth.indexOf("%")>-1?this.xaxisBorderWidth=a.globals.gridWidth*parseInt(this.xaxisBorderWidth,10)/100:this.xaxisBorderWidth=parseInt(this.xaxisBorderWidth,10),this.xaxisBorderHeight=a.config.xaxis.axisBorder.height,this.yaxis=a.config.yaxis[0]}return a(t,[{key:"drawXaxis",value:function(){var t,e=this,i=this.w,a=new p(this.ctx),s=a.group({class:"apexcharts-xaxis",transform:"translate(".concat(i.config.xaxis.offsetX,", ").concat(i.config.xaxis.offsetY,")")}),r=a.group({class:"apexcharts-xaxis-texts-g",transform:"translate(".concat(i.globals.translateXAxisX,", ").concat(i.globals.translateXAxisY,")")});s.add(r);for(var n=i.globals.padHorizontal,o=[],l=0;l1?h-1:h;t=i.globals.gridWidth/c,n=n+t/2+i.config.xaxis.labels.offsetX}else t=i.globals.gridWidth/o.length,n=n+t+i.config.xaxis.labels.offsetX;if(i.config.xaxis.labels.show)for(var d=function(s){var l=n-t/2+i.config.xaxis.labels.offsetX;0===s&&1===h&&t/2===n&&1===i.globals.dataPoints&&(l=i.globals.gridWidth/2);var c=e.axesUtils.getLabel(o,i.globals.timescaleLabels,l,s,e.drawnLabels,e.xaxisFontSize),d=28;i.globals.rotateXLabels&&(d=22);(c=e.axesUtils.checkForOverflowingLabels(s,c,h,e.drawnLabels,e.drawnLabelsRects)).text&&i.globals.xaxisLabelsCount++;var g=a.drawText({x:c.x,y:e.offY+i.config.xaxis.labels.offsetY+d-("top"===i.config.xaxis.position?i.globals.xAxisHeight+i.config.xaxis.axisTicks.height-2:0),text:c.text,textAnchor:"middle",fontWeight:c.isBold?600:i.config.xaxis.labels.style.fontWeight,fontSize:e.xaxisFontSize,fontFamily:e.xaxisFontFamily,foreColor:Array.isArray(e.xaxisForeColors)?i.config.xaxis.convertedCatToNumeric?e.xaxisForeColors[i.globals.minX+s-1]:e.xaxisForeColors[s]:e.xaxisForeColors,isPlainText:!1,cssClass:"apexcharts-xaxis-label "+i.config.xaxis.labels.style.cssClass});r.add(g);var u=document.createElementNS(i.globals.SVGNS,"title");u.textContent=c.text,g.node.appendChild(u),""!==c.text&&(e.drawnLabels.push(c.text),e.drawnLabelsRects.push(c)),n+=t},g=0;g<=h-1;g++)d(g);if(void 0!==i.config.xaxis.title.text){var u=a.group({class:"apexcharts-xaxis-title"}),f=a.drawText({x:i.globals.gridWidth/2+i.config.xaxis.title.offsetX,y:this.offY-parseFloat(this.xaxisFontSize)+i.globals.xAxisLabelsHeight+i.config.xaxis.title.offsetY,text:i.config.xaxis.title.text,textAnchor:"middle",fontSize:i.config.xaxis.title.style.fontSize,fontFamily:i.config.xaxis.title.style.fontFamily,fontWeight:i.config.xaxis.title.style.fontWeight,foreColor:i.config.xaxis.title.style.color,cssClass:"apexcharts-xaxis-title-text "+i.config.xaxis.title.style.cssClass});u.add(f),s.add(u)}if(i.config.xaxis.axisBorder.show){var x=0;"bar"===i.config.chart.type&&i.globals.isXNumeric&&(x-=15);var b=a.drawLine(i.globals.padHorizontal+x+i.config.xaxis.axisBorder.offsetX,this.offY,this.xaxisBorderWidth,this.offY,i.config.xaxis.axisBorder.color,0,this.xaxisBorderHeight);s.add(b)}return s}},{key:"drawXaxisInversed",value:function(t){var e,i,a=this.w,s=new p(this.ctx),r=a.config.yaxis[0].opposite?a.globals.translateYAxisX[t]:0,n=s.group({class:"apexcharts-yaxis apexcharts-xaxis-inversed",rel:t}),o=s.group({class:"apexcharts-yaxis-texts-g apexcharts-xaxis-inversed-texts-g",transform:"translate("+r+", 0)"});n.add(o);var l=[];if(a.config.yaxis[t].show)for(var h=0;hi.globals.gridWidth)){var s=this.offY+i.config.xaxis.axisTicks.offsetY,r=s+i.config.xaxis.axisTicks.height;if("top"===i.config.xaxis.position&&(r=s-i.config.xaxis.axisTicks.height),i.config.xaxis.axisTicks.show){var n=new p(this.ctx).drawLine(t+i.config.xaxis.axisTicks.offsetX,s+i.config.xaxis.offsetY,a+i.config.xaxis.axisTicks.offsetX,r+i.config.xaxis.offsetY,i.config.xaxis.axisTicks.color);e.add(n),n.node.classList.add("apexcharts-xaxis-tick")}}}},{key:"getXAxisTicksPositions",value:function(){var t=this.w,e=[],i=this.xaxisLabels.length,a=t.globals.padHorizontal;if(t.globals.timescaleLabels.length>0)for(var s=0;s0){var h=s[s.length-1].getBBox(),c=s[0].getBBox();h.x<-20&&s[s.length-1].parentNode.removeChild(s[s.length-1]),c.x+c.width>t.globals.gridWidth&&!t.globals.isBarHorizontal&&s[0].parentNode.removeChild(s[0]);for(var d=0;d0&&(this.xaxisLabels=a.globals.timescaleLabels.slice())}return a(t,[{key:"drawGridArea",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w,i=new p(this.ctx);null===t&&(t=i.group({class:"apexcharts-grid"}));var a=i.drawLine(e.globals.padHorizontal,1,e.globals.padHorizontal,e.globals.gridHeight,"transparent"),s=i.drawLine(e.globals.padHorizontal,e.globals.gridHeight,e.globals.gridWidth,e.globals.gridHeight,"transparent");return t.add(s),t.add(a),t}},{key:"drawGrid",value:function(){var t=null;return this.w.globals.axisCharts&&(t=this.renderGrid(),this.drawGridArea(t.el)),t}},{key:"createGridMask",value:function(){var t=this.w,e=t.globals,i=new p(this.ctx),a=Array.isArray(t.config.stroke.width)?0:t.config.stroke.width;if(Array.isArray(t.config.stroke.width)){var s=0;t.config.stroke.width.forEach((function(t){s=Math.max(s,t)})),a=s}e.dom.elGridRectMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elGridRectMask.setAttribute("id","gridRectMask".concat(e.cuid)),e.dom.elGridRectMarkerMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elGridRectMarkerMask.setAttribute("id","gridRectMarkerMask".concat(e.cuid));var r=t.config.chart.type,n=0,o=0;("bar"===r||"rangeBar"===r||t.globals.comboBarCount>0)&&t.globals.isXNumeric&&!t.globals.isBarHorizontal&&(n=t.config.grid.padding.left,o=t.config.grid.padding.right,e.barPadForNumericAxis>n&&(n=e.barPadForNumericAxis,o=e.barPadForNumericAxis)),e.dom.elGridRect=i.drawRect(-a/2-n-2,-a/2,e.gridWidth+a+o+n+4,e.gridHeight+a,0,"#fff"),new m(this).getLargestMarkerSize();var l=t.globals.markers.largestSize+1;e.dom.elGridRectMarker=i.drawRect(2*-l,2*-l,e.gridWidth+4*l,e.gridHeight+4*l,0,"#fff"),e.dom.elGridRectMask.appendChild(e.dom.elGridRect.node),e.dom.elGridRectMarkerMask.appendChild(e.dom.elGridRectMarker.node);var h=e.dom.baseEl.querySelector("defs");h.appendChild(e.dom.elGridRectMask),h.appendChild(e.dom.elGridRectMarkerMask)}},{key:"_drawGridLines",value:function(t){var e=t.i,i=t.x1,a=t.y1,s=t.x2,r=t.y2,n=t.xCount,o=t.parent,l=this.w;0===e&&l.globals.skipFirstTimelinelabel||e===n-1&&l.globals.skipLastTimelinelabel||"radar"===l.config.chart.type||(l.config.grid.xaxis.lines.show&&this._drawGridLine({x1:i,y1:a,x2:s,y2:r,parent:o}),new G(this.ctx).drawXaxisTicks(i,this.elg))}},{key:"_drawGridLine",value:function(t){var e=t.x1,i=t.y1,a=t.x2,s=t.y2,r=t.parent,n=this.w,o=n.config.grid.strokeDashArray,l=new p(this).drawLine(e,i,a,s,n.config.grid.borderColor,o);l.node.classList.add("apexcharts-gridline"),r.add(l)}},{key:"_drawGridBandRect",value:function(t){var e=t.c,i=t.x1,a=t.y1,s=t.x2,r=t.y2,n=t.type,o=this.w,l=new p(this.ctx);if("column"!==n||"datetime"!==o.config.xaxis.type){var h=o.config.grid[n].colors[e],c=l.drawRect(i,a,s,r,0,h,o.config.grid[n].opacity);this.elg.add(c),c.attr("clip-path","url(#gridRectMask".concat(o.globals.cuid,")")),c.node.classList.add("apexcharts-grid-".concat(n))}}},{key:"_drawXYLines",value:function(t){var e=this,i=t.xCount,a=t.tickAmount,s=this.w;if(s.config.grid.xaxis.lines.show||s.config.xaxis.axisTicks.show){var r=s.globals.padHorizontal,n=s.globals.gridHeight;s.globals.timescaleLabels.length?function(t){for(var a=t.xC,s=t.x1,r=t.y1,n=t.x2,o=t.y2,l=0;l2));s++);return!t.globals.isBarHorizontal||this.isTimelineBar?(i=this.xaxisLabels.length,this.isTimelineBar&&(a=t.globals.labels.length),this._drawXYLines({xCount:i,tickAmount:a})):(i=a,a=t.globals.xTickAmount,this._drawInvertedXYLines({xCount:i,tickAmount:a})),this.drawGridBands(i,a),{el:this.elg,xAxisTickWidth:t.globals.gridWidth/i}}},{key:"drawGridBands",value:function(t,e){var i=this.w;if(void 0!==i.config.grid.row.colors&&i.config.grid.row.colors.length>0)for(var a=0,s=i.globals.gridHeight/e,r=i.globals.gridWidth,n=0,o=0;n=i.config.grid.row.colors.length&&(o=0),this._drawGridBandRect({c:o,x1:0,y1:a,x2:r,y2:s,type:"row"}),a+=i.globals.gridHeight/e;if(void 0!==i.config.grid.column.colors&&i.config.grid.column.colors.length>0)for(var l=i.globals.isBarHorizontal||"category"!==i.config.xaxis.type&&!i.config.xaxis.convertedCatToNumeric?t:t-1,h=i.globals.padHorizontal,c=i.globals.padHorizontal+i.globals.gridWidth/l,d=i.globals.gridHeight,g=0,u=0;g=i.config.grid.column.colors.length&&(u=0),this._drawGridBandRect({c:u,x1:h,y1:0,x2:c,y2:d,type:"column"}),h+=i.globals.gridWidth/l}}]),t}(),j=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return a(t,[{key:"niceScale",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,s=arguments.length>4?arguments[4]:void 0,r=this.w;if("dataPoints"===i&&(i=r.globals.dataPoints-1),t===Number.MIN_VALUE&&0===e||!g.isNumber(t)&&!g.isNumber(e)||t===Number.MIN_VALUE&&e===-Number.MAX_VALUE){t=0,e=i;var n=this.linearScale(t,e,i);return n}t>e?(console.warn("axis.min cannot be greater than axis.max"),e=t+.1):t===e&&(t=0===t?0:t-.5,e=0===e?2:e+.5);var o=[],l=Math.abs(e-t);l<1&&s&&("candlestick"===r.config.chart.type||"candlestick"===r.config.series[a].type||r.globals.isRangeData)&&(e*=1.01);var h=i+1;h<2?h=2:h>2&&(h-=2);var c=l/h,d=Math.floor(g.log10(c)),u=Math.pow(10,d),f=Math.round(c/u);f<1&&(f=1);var p=f*u,x=p*Math.floor(t/p),b=p*Math.ceil(e/p),m=x;if(s&&l>2){for(;o.push(m),!((m+=p)>b););return{result:o,niceMin:o[0],niceMax:o[o.length-1]}}var v=t;(o=[]).push(v);for(var y=Math.abs(e-t)/i,w=0;w<=i;w++)v+=y,o.push(v);return o[o.length-2]>=e&&o.pop(),{result:o,niceMin:o[0],niceMax:o[o.length-1]}}},{key:"linearScale",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,a=Math.abs(e-t),s=a/i;i===Number.MAX_VALUE&&(i=10,s=1);for(var r=[],n=t;i>=0;)r.push(n),n+=s,i-=1;return{result:r,niceMin:r[0],niceMax:r[r.length-1]}}},{key:"logarithmicScale",value:function(t,e,i,a){(e<0||e===Number.MIN_VALUE)&&(e=.01);for(var s=Math.log(e)/Math.log(10),r=Math.log(i)/Math.log(10),n=Math.abs(i-e)/a,o=[],l=e;a>=0;)o.push(l),l+=n,a-=1;var h=o.map((function(t,a){t<=0&&(t=.01);var n=(r-s)/(i-e),o=Math.pow(10,s+n*(t-s));return Math.round(o/g.roundToBase(o,10))*g.roundToBase(o,10)}));return 0===h[0]&&(h[0]=1),{result:h,niceMin:h[0],niceMax:h[h.length-1]}}},{key:"setYScaleForIndex",value:function(t,e,i){var a=this.w.globals,s=this.w.config,r=a.isBarHorizontal?s.xaxis:s.yaxis[t];void 0===a.yAxisScale[t]&&(a.yAxisScale[t]=[]);var n=Math.abs(i-e);if(r.logarithmic&&n<=5&&(a.invalidLogScale=!0),r.logarithmic&&n>5)a.allSeriesCollapsed=!1,a.yAxisScale[t]=this.logarithmicScale(t,e,i,r.tickAmount?r.tickAmount:Math.floor(Math.log10(i)));else if(i!==-Number.MAX_VALUE&&g.isNumber(i))if(a.allSeriesCollapsed=!1,void 0===r.min&&void 0===r.max||r.forceNiceScale){var o=void 0===s.yaxis[t].max&&void 0===s.yaxis[t].min||s.yaxis[t].forceNiceScale;a.yAxisScale[t]=this.niceScale(e,i,r.tickAmount?r.tickAmount:n<5&&n>1?n+1:5,t,o)}else a.yAxisScale[t]=this.linearScale(e,i,r.tickAmount);else a.yAxisScale[t]=this.linearScale(0,5,5)}},{key:"setXScale",value:function(t,e){var i=this.w,a=i.globals,s=i.config.xaxis,r=Math.abs(e-t);return e!==-Number.MAX_VALUE&&g.isNumber(e)?a.xAxisScale=this.niceScale(t,e,s.tickAmount?s.tickAmount:r<5&&r>1?r+1:5,0):a.xAxisScale=this.linearScale(0,5,5),a.xAxisScale}},{key:"setMultipleYScales",value:function(){var t=this,e=this.w.globals,i=this.w.config,a=e.minYArr.concat([]),s=e.maxYArr.concat([]),r=[];i.yaxis.forEach((function(e,n){var o=n;i.series.forEach((function(t,i){t.name===e.seriesName&&(o=i,n!==i?r.push({index:i,similarIndex:n,alreadyExists:!0}):r.push({index:i}))}));var l=a[o],h=s[o];t.setYScaleForIndex(n,l,h)})),this.sameScaleInMultipleAxes(a,s,r)}},{key:"sameScaleInMultipleAxes",value:function(t,e,i){var a=this,s=this.w.config,r=this.w.globals,n=[];i.forEach((function(t){t.alreadyExists&&(void 0===n[t.index]&&(n[t.index]=[]),n[t.index].push(t.index),n[t.index].push(t.similarIndex))})),r.yAxisSameScaleIndices=n,n.forEach((function(t,e){n.forEach((function(i,a){var s,r;e!==a&&(s=t,r=i,s.filter((function(t){return-1!==r.indexOf(t)}))).length>0&&(n[e]=n[e].concat(n[a]))}))}));var o=n.map((function(t){return t.filter((function(e,i){return t.indexOf(e)===i}))})).map((function(t){return t.sort()}));n=n.filter((function(t){return!!t}));var l=o.slice(),h=l.map((function(t){return JSON.stringify(t)}));l=l.filter((function(t,e){return h.indexOf(JSON.stringify(t))===e}));var c=[],d=[];t.forEach((function(t,i){l.forEach((function(a,s){a.indexOf(i)>-1&&(void 0===c[s]&&(c[s]=[],d[s]=[]),c[s].push({key:i,value:t}),d[s].push({key:i,value:e[i]}))}))}));var g=Array.apply(null,Array(l.length)).map(Number.prototype.valueOf,Number.MIN_VALUE),u=Array.apply(null,Array(l.length)).map(Number.prototype.valueOf,-Number.MAX_VALUE);c.forEach((function(t,e){t.forEach((function(t,i){g[e]=Math.min(t.value,g[e])}))})),d.forEach((function(t,e){t.forEach((function(t,i){u[e]=Math.max(t.value,u[e])}))})),t.forEach((function(t,e){d.forEach((function(t,i){var n=g[i],o=u[i];s.chart.stacked&&(o=0,t.forEach((function(t,e){t.value!==-Number.MAX_VALUE&&(o+=t.value),n!==Number.MIN_VALUE&&(n+=c[i][e].value)}))),t.forEach((function(i,l){t[l].key===e&&(void 0!==s.yaxis[e].min&&(n="function"==typeof s.yaxis[e].min?s.yaxis[e].min(r.minY):s.yaxis[e].min),void 0!==s.yaxis[e].max&&(o="function"==typeof s.yaxis[e].max?s.yaxis[e].max(r.maxY):s.yaxis[e].max),a.setYScaleForIndex(e,n,o))}))}))}))}},{key:"autoScaleY",value:function(t,e,i){t||(t=this);var a=t.w;if(a.globals.isMultipleYAxis||a.globals.collapsedSeries.length)return console.warn("autoScaleYaxis is not supported in a multi-yaxis chart."),e;var s=a.globals.seriesX[0],r=a.config.chart.stacked;return e.forEach((function(t,n){for(var o=0,l=0;l=i.xaxis.min){o=l;break}var h,c,d=a.globals.minYArr[n],g=a.globals.maxYArr[n],u=a.globals.stackedSeriesTotals;a.globals.series.forEach((function(n,l){var f=n[o];r?(f=u[o],h=c=f,u.forEach((function(t,e){s[e]<=i.xaxis.max&&s[e]>=i.xaxis.min&&(t>c&&null!==t&&(c=t),n[e]=i.xaxis.min){var r=t,n=t;a.globals.series.forEach((function(i,a){null!==t&&(r=Math.min(i[e],r),n=Math.max(i[e],n))})),n>c&&null!==n&&(c=n),rd&&(h=d),e.length>1?(e[l].min=void 0===t.min?h:t.min,e[l].max=void 0===t.max?c:t.max):(e[0].min=void 0===t.min?h:t.min,e[0].max=void 0===t.max?c:t.max)}))})),e}}]),t}(),U=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.scales=new j(i)}return a(t,[{key:"init",value:function(){this.setYRange(),this.setXRange(),this.setZRange()}},{key:"getMinYMaxY",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.MAX_VALUE,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-Number.MAX_VALUE,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=this.w.config,r=this.w.globals,n=-Number.MAX_VALUE,o=Number.MIN_VALUE;null===a&&(a=t+1);var l=r.series,h=l,c=l;"candlestick"===s.chart.type?(h=r.seriesCandleL,c=r.seriesCandleH):r.isRangeData&&(h=r.seriesRangeStart,c=r.seriesRangeEnd);for(var d=t;dh[d][u]&&h[d][u]<0&&(o=h[d][u])):r.hasNullValues=!0}}return"rangeBar"===s.chart.type&&r.seriesRangeStart.length&&r.isBarHorizontal&&"datetime"===s.xaxis.type&&(o=e),"bar"===s.chart.type&&(o<0&&n<0&&(n=0),o===Number.MIN_VALUE&&(o=0)),{minY:o,maxY:n,lowestY:e,highestY:i}}},{key:"setYRange",value:function(){var t=this.w.globals,e=this.w.config;t.maxY=-Number.MAX_VALUE,t.minY=Number.MIN_VALUE;var i=Number.MAX_VALUE;if(t.isMultipleYAxis)for(var a=0;a=0&&i<=10&&(n=0),t.minY=i-5*n/100,i>0&&t.minY<0&&(t.minY=0),t.maxY=t.maxY+5*n/100}if(e.yaxis.forEach((function(e,i){void 0!==e.max&&("number"==typeof e.max?t.maxYArr[i]=e.max:"function"==typeof e.max&&(t.maxYArr[i]=e.max(t.maxY)),t.maxY=t.maxYArr[i]),void 0!==e.min&&("number"==typeof e.min?t.minYArr[i]=e.min:"function"==typeof e.min&&(t.minYArr[i]=e.min(t.minY)),t.minY=t.minYArr[i])})),t.isBarHorizontal){["min","max"].forEach((function(i){void 0!==e.xaxis[i]&&"number"==typeof e.xaxis[i]&&("min"===i?t.minY=e.xaxis[i]:t.maxY=e.xaxis[i])}))}return t.isMultipleYAxis?(this.scales.setMultipleYScales(),t.minY=i,t.yAxisScale.forEach((function(e,i){t.minYArr[i]=e.niceMin,t.maxYArr[i]=e.niceMax}))):(this.scales.setYScaleForIndex(0,t.minY,t.maxY),t.minY=t.yAxisScale[0].niceMin,t.maxY=t.yAxisScale[0].niceMax,t.minYArr[0]=t.yAxisScale[0].niceMin,t.maxYArr[0]=t.yAxisScale[0].niceMax),{minY:t.minY,maxY:t.maxY,minYArr:t.minYArr,maxYArr:t.maxYArr}}},{key:"setXRange",value:function(){var t=this.w.globals,e=this.w.config,i="numeric"===e.xaxis.type||"datetime"===e.xaxis.type||"category"===e.xaxis.type&&!t.noLabelsProvided||t.noLabelsProvided||t.isXNumeric;if(t.isXNumeric&&function(){for(var e=0;et.dataPoints&&0!==t.dataPoints&&(a=t.dataPoints-1)):"dataPoints"===e.xaxis.tickAmount?(t.series.length>1&&(a=t.series[t.maxValsInArrayIndex].length-1),t.isXNumeric&&(a=t.maxX-t.minX-1)):a=e.xaxis.tickAmount,t.xTickAmount=a,void 0!==e.xaxis.max&&"number"==typeof e.xaxis.max&&(t.maxX=e.xaxis.max),void 0!==e.xaxis.min&&"number"==typeof e.xaxis.min&&(t.minX=e.xaxis.min),void 0!==e.xaxis.range&&(t.minX=t.maxX-e.xaxis.range),t.minX!==Number.MAX_VALUE&&t.maxX!==-Number.MAX_VALUE)if(e.xaxis.convertedCatToNumeric&&!t.dataFormatXNumeric){for(var s=[],r=t.minX-1;r0&&(t.xAxisScale=this.scales.linearScale(1,t.labels.length,a-1),t.seriesX=t.labels.slice());i&&(t.labels=t.xAxisScale.result.slice())}return t.isBarHorizontal&&t.labels.length&&(t.xTickAmount=t.labels.length),this._handleSingleDataPoint(),this._getMinXDiff(),{minX:t.minX,maxX:t.maxX}}},{key:"setZRange",value:function(){var t=this.w.globals;if(t.isDataXYZ)for(var e=0;e0){var s=e-t.seriesX[i][a-1];s>0&&(t.minXDiff=Math.min(s,t.minXDiff))}})),1===t.dataPoints&&t.minXDiff===Number.MAX_VALUE&&(t.minXDiff=.5)}))}},{key:"_setStackedMinMax",value:function(){var t=this.w.globals,e=[],i=[];if(t.series.length)for(var a=0;a0?s=s+parseFloat(t.series[n][a])+1e-4:r+=parseFloat(t.series[n][a])),n===t.series.length-1&&(e.push(s),i.push(r));for(var o=0;o=0;b--)x(b);if(void 0!==e.config.yaxis[t].title.text){var m=i.group({class:"apexcharts-yaxis-title"}),v=0;e.config.yaxis[t].opposite&&(v=e.globals.translateYAxisX[t]);var y=i.drawText({x:v,y:e.globals.gridHeight/2+e.globals.translateY+e.config.yaxis[t].title.offsetY,text:e.config.yaxis[t].title.text,textAnchor:"end",foreColor:e.config.yaxis[t].title.style.color,fontSize:e.config.yaxis[t].title.style.fontSize,fontWeight:e.config.yaxis[t].title.style.fontWeight,fontFamily:e.config.yaxis[t].title.style.fontFamily,cssClass:"apexcharts-yaxis-title-text "+e.config.yaxis[t].title.style.cssClass});m.add(y),o.add(m)}var w=e.config.yaxis[t].axisBorder,k=31+w.offsetX;if(e.config.yaxis[t].opposite&&(k=-31-w.offsetX),w.show){var A=i.drawLine(k,e.globals.translateY+w.offsetY-2,k,e.globals.gridHeight+e.globals.translateY+w.offsetY+2,w.color,0,w.width);o.add(A)}return e.config.yaxis[t].axisTicks.show&&this.axesUtils.drawYAxisTicks(k,h,w,e.config.yaxis[t].axisTicks,t,c,o),o}},{key:"drawYaxisInversed",value:function(t){var e=this.w,i=new p(this.ctx),a=i.group({class:"apexcharts-xaxis apexcharts-yaxis-inversed"}),s=i.group({class:"apexcharts-xaxis-texts-g",transform:"translate(".concat(e.globals.translateXAxisX,", ").concat(e.globals.translateXAxisY,")")});a.add(s);var r=e.globals.yAxisScale[t].result.length-1,n=e.globals.gridWidth/r+.1,o=n+e.config.xaxis.labels.offsetX,l=e.globals.xLabelFormatter,h=e.globals.yAxisScale[t].result.slice(),c=e.globals.timescaleLabels;c.length>0&&(this.xaxisLabels=c.slice(),r=(h=c.slice()).length),h=this.axesUtils.checkForReversedLabels(t,h);var d=c.length;if(e.config.xaxis.labels.show)for(var g=d?0:r;d?g=0;d?g++:g--){var u=h[g];u=l(u,g);var f=e.globals.gridWidth+e.globals.padHorizontal-(o-n+e.config.xaxis.labels.offsetX);if(c.length){var x=this.axesUtils.getLabel(h,c,f,g,this.drawnLabels,this.xaxisFontSize);f=x.x,u=x.text,this.drawnLabels.push(x.text),0===g&&e.globals.skipFirstTimelinelabel&&(u=""),g===h.length-1&&e.globals.skipLastTimelinelabel&&(u="")}var b=i.drawText({x:f,y:this.xAxisoffX+e.config.xaxis.labels.offsetY+30-("top"===e.config.xaxis.position?e.globals.xAxisHeight+e.config.xaxis.axisTicks.height-2:0),text:u,textAnchor:"middle",foreColor:Array.isArray(this.xaxisForeColors)?this.xaxisForeColors[t]:this.xaxisForeColors,fontSize:this.xaxisFontSize,fontFamily:this.xaxisFontFamily,fontWeight:e.config.xaxis.labels.style.fontWeight,isPlainText:!1,cssClass:"apexcharts-xaxis-label "+e.config.xaxis.labels.style.cssClass});s.add(b),b.tspan(u);var m=document.createElementNS(e.globals.SVGNS,"title");m.textContent=u,b.node.appendChild(m),o+=n}return this.inversedYAxisTitleText(a),this.inversedYAxisBorder(a),a}},{key:"inversedYAxisBorder",value:function(t){var e=this.w,i=new p(this.ctx),a=e.config.xaxis.axisBorder;if(a.show){var s=0;"bar"===e.config.chart.type&&e.globals.isXNumeric&&(s-=15);var r=i.drawLine(e.globals.padHorizontal+s+a.offsetX,this.xAxisoffX,e.globals.gridWidth,this.xAxisoffX,a.color,0,a.height);t.add(r)}}},{key:"inversedYAxisTitleText",value:function(t){var e=this.w,i=new p(this.ctx);if(void 0!==e.config.xaxis.title.text){var a=i.group({class:"apexcharts-xaxis-title apexcharts-yaxis-title-inversed"}),s=i.drawText({x:e.globals.gridWidth/2+e.config.xaxis.title.offsetX,y:this.xAxisoffX+parseFloat(this.xaxisFontSize)+parseFloat(e.config.xaxis.title.style.fontSize)+e.config.xaxis.title.offsetY+20,text:e.config.xaxis.title.text,textAnchor:"middle",fontSize:e.config.xaxis.title.style.fontSize,fontFamily:e.config.xaxis.title.style.fontFamily,fontWeight:e.config.xaxis.title.style.fontWeight,cssClass:"apexcharts-xaxis-title-text "+e.config.xaxis.title.style.cssClass});a.add(s),t.add(a)}}},{key:"yAxisTitleRotate",value:function(t,e){var i=this.w,a=new p(this.ctx),s={width:0,height:0},r={width:0,height:0},n=i.globals.dom.baseEl.querySelector(" .apexcharts-yaxis[rel='".concat(t,"'] .apexcharts-yaxis-texts-g"));null!==n&&(s=n.getBoundingClientRect());var o=i.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(t,"'] .apexcharts-yaxis-title text"));if(null!==o&&(r=o.getBoundingClientRect()),null!==o){var l=this.xPaddingForYAxisTitle(t,s,r,e);o.setAttribute("x",l.xPos-(e?10:0))}if(null!==o){var h=a.rotateAroundCenter(o);o.setAttribute("transform","rotate(".concat(e?"":"-").concat(i.config.yaxis[t].title.rotate," ").concat(h.x," ").concat(h.y,")"))}}},{key:"xPaddingForYAxisTitle",value:function(t,e,i,a){var s=this.w,r=0,n=0,o=10;return void 0===s.config.yaxis[t].title.text||t<0?{xPos:n,padd:0}:(a?(n=e.width+s.config.yaxis[t].title.offsetX+i.width/2+o/2,0===(r+=1)&&(n-=o/2)):(n=-1*e.width+s.config.yaxis[t].title.offsetX+o/2+i.width/2,s.globals.isBarHorizontal&&(o=25,n=-1*e.width-s.config.yaxis[t].title.offsetX-o)),{xPos:n,padd:o})}},{key:"setYAxisXPosition",value:function(t,e){var i=this.w,a=0,s=0,r=18,n=1;i.config.yaxis.length>1&&(this.multipleYs=!0),i.config.yaxis.map((function(o,l){var h=i.globals.ignoreYAxisIndexes.indexOf(l)>-1||!o.show||o.floating||0===t[l].width,c=t[l].width+e[l].width;o.opposite?i.globals.isBarHorizontal?(s=i.globals.gridWidth+i.globals.translateX-1,i.globals.translateYAxisX[l]=s-o.labels.offsetX):(s=i.globals.gridWidth+i.globals.translateX+n,h||(n=n+c+20),i.globals.translateYAxisX[l]=s-o.labels.offsetX+20):(a=i.globals.translateX-r,h||(r=r+c+20),i.globals.translateYAxisX[l]=a+o.labels.offsetX)}))}},{key:"setYAxisTextAlignments",value:function(){var t=this.w,e=t.globals.dom.baseEl.getElementsByClassName("apexcharts-yaxis");(e=g.listToArray(e)).forEach((function(e,i){var a=t.config.yaxis[i];if(void 0!==a.labels.align){var s=t.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(i,"'] .apexcharts-yaxis-texts-g")),r=t.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis[rel='".concat(i,"'] .apexcharts-yaxis-label"));r=g.listToArray(r);var n=s.getBoundingClientRect();"left"===a.labels.align?(r.forEach((function(t,e){t.setAttribute("text-anchor","start")})),a.opposite||s.setAttribute("transform","translate(-".concat(n.width,", 0)"))):"center"===a.labels.align?(r.forEach((function(t,e){t.setAttribute("text-anchor","middle")})),s.setAttribute("transform","translate(".concat(n.width/2*(a.opposite?1:-1),", 0)"))):"right"===a.labels.align&&(r.forEach((function(t,e){t.setAttribute("text-anchor","end")})),a.opposite&&s.setAttribute("transform","translate(".concat(n.width,", 0)")))}}))}}]),t}(),Z=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.documentEvent=g.bind(this.documentEvent,this)}return a(t,[{key:"addEventListener",value:function(t,e){var i=this.w;i.globals.events.hasOwnProperty(t)?i.globals.events[t].push(e):i.globals.events[t]=[e]}},{key:"removeEventListener",value:function(t,e){var i=this.w;if(i.globals.events.hasOwnProperty(t)){var a=i.globals.events[t].indexOf(e);-1!==a&&i.globals.events[t].splice(a,1)}}},{key:"fireEvent",value:function(t,e){var i=this.w;if(i.globals.events.hasOwnProperty(t)){e&&e.length||(e=[]);for(var a=i.globals.events[t],s=a.length,r=0;r0&&(e=this.w.config.chart.locales.concat(window.Apex.chart.locales));var i=e.filter((function(e){return e.name===t}))[0];if(!i)throw new Error("Wrong locale name provided. Please make sure you set the correct locale name in options");var a=g.extend(A,i);this.w.globals.locale=a.options}}]),t}(),J=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return a(t,[{key:"drawAxis",value:function(t,e){var i,a,s=this.w.globals,r=this.w.config,n=new G(this.ctx),o=new q(this.ctx);s.axisCharts&&"radar"!==t&&(s.isBarHorizontal?(a=o.drawYaxisInversed(0),i=n.drawXaxisInversed(0),s.dom.elGraphical.add(i),s.dom.elGraphical.add(a)):(i=n.drawXaxis(),s.dom.elGraphical.add(i),r.yaxis.map((function(t,e){-1===s.ignoreYAxisIndexes.indexOf(e)&&(a=o.drawYaxis(e),s.dom.Paper.add(a))}))));r.yaxis.map((function(t,e){-1===s.ignoreYAxisIndexes.indexOf(e)&&o.yAxisTitleRotate(e,t.opposite)}))}}]),t}(),Q=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return a(t,[{key:"drawXCrosshairs",value:function(){var t=this.w,e=new p(this.ctx),i=new u(this.ctx),a=t.config.xaxis.crosshairs.fill.gradient,s=t.config.xaxis.crosshairs.dropShadow,r=t.config.xaxis.crosshairs.fill.type,n=a.colorFrom,o=a.colorTo,l=a.opacityFrom,h=a.opacityTo,c=a.stops,d=s.enabled,f=s.left,x=s.top,b=s.blur,m=s.color,v=s.opacity,y=t.config.xaxis.crosshairs.fill.color;if(t.config.xaxis.crosshairs.show){"gradient"===r&&(y=e.drawGradient("vertical",n,o,l,h,null,c,null));var w=e.drawRect();1===t.config.xaxis.crosshairs.width&&(w=e.drawLine()),w.attr({class:"apexcharts-xcrosshairs",x:0,y:0,y2:t.globals.gridHeight,width:g.isNumber(t.config.xaxis.crosshairs.width)?t.config.xaxis.crosshairs.width:0,height:t.globals.gridHeight,fill:y,filter:"none","fill-opacity":t.config.xaxis.crosshairs.opacity,stroke:t.config.xaxis.crosshairs.stroke.color,"stroke-width":t.config.xaxis.crosshairs.stroke.width,"stroke-dasharray":t.config.xaxis.crosshairs.stroke.dashArray}),d&&(w=i.dropShadow(w,{left:f,top:x,blur:b,color:m,opacity:v})),t.globals.dom.elGraphical.add(w)}}},{key:"drawYCrosshairs",value:function(){var t=this.w,e=new p(this.ctx),i=t.config.yaxis[0].crosshairs;if(t.config.yaxis[0].crosshairs.show){var a=e.drawLine(0,0,t.globals.gridWidth,0,i.stroke.color,i.stroke.dashArray,i.stroke.width);a.attr({class:"apexcharts-ycrosshairs"}),t.globals.dom.elGraphical.add(a)}var s=e.drawLine(0,0,t.globals.gridWidth,0,i.stroke.color,0,0);s.attr({class:"apexcharts-ycrosshairs-hidden"}),t.globals.dom.elGraphical.add(s)}}]),t}(),K=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return a(t,[{key:"checkResponsiveConfig",value:function(t){var e=this,i=this.w,a=i.config;if(0!==a.responsive.length){var s=a.responsive.slice();s.sort((function(t,e){return t.breakpoint>e.breakpoint?1:e.breakpoint>t.breakpoint?-1:0})).reverse();var r=new D({}),n=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=s[0].breakpoint,n=window.innerWidth>0?window.innerWidth:screen.width;if(n>a){var o=m.extendArrayProps(r,i.globals.initialConfig,i);t=g.extend(o,t),t=g.extend(i.config,t),e.overrideResponsiveOptions(t)}else for(var l=0;l0&&"function"==typeof e.config.colors[0]&&(e.globals.colors=e.config.series.map((function(i,a){var s=e.config.colors[a];return s||(s=e.config.colors[0]),"function"==typeof s?(t.isColorFn=!0,s({value:e.globals.axisCharts?e.globals.series[a][0]?e.globals.series[a][0]:0:e.globals.series[a],seriesIndex:a,dataPointIndex:a,w:e})):s})))),e.config.theme.monochrome.enabled){var a=[],s=e.globals.series.length;this.isBarDistributed&&(s=e.globals.series[0].length*e.globals.series.length);for(var r=e.config.theme.monochrome.color,n=1/(s/e.config.theme.monochrome.shadeIntensity),o=e.config.theme.monochrome.shadeTo,l=0,h=0;h2&&void 0!==arguments[2]?arguments[2]:null,a=this.w,s=e||a.globals.series.length;if(null===i&&(i=this.isBarDistributed||"heatmap"===a.config.chart.type&&a.config.plotOptions.heatmap.colorScale.inverse),i&&(s=a.globals.series[0].length*a.globals.series.length),t.lengtht.globals.svgWidth&&(this.dCtx.lgRect.width=t.globals.svgWidth/1.5),this.dCtx.lgRect}},{key:"getLargestStringFromMultiArr",value:function(t,e){var i=t;if(this.w.globals.isMultiLineX){var a=e.map((function(t,e){return Array.isArray(t)?t.length:1})),s=Math.max.apply(Math,d(a));i=e[a.indexOf(s)]}return i}}]),t}(),at=function(){function t(i){e(this,t),this.w=i.w,this.dCtx=i}return a(t,[{key:"getxAxisLabelsCoords",value:function(){var t,e=this.w,i=e.globals.labels.slice();if(e.config.xaxis.convertedCatToNumeric&&0===i.length&&(i=e.globals.categoryLabels),e.globals.timescaleLabels.length>0){var a=this.getxAxisTimeScaleLabelsCoords();t={width:a.width,height:a.height},e.globals.rotateXLabels=!1}else{this.dCtx.lgWidthForSideLegends="left"!==e.config.legend.position&&"right"!==e.config.legend.position||e.config.legend.floating?0:this.dCtx.lgRect.width;var s=e.globals.xLabelFormatter,r=g.getLargestStringFromArr(i),n=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,i);e.globals.isBarHorizontal&&(n=r=e.globals.yAxisScale[0].result.reduce((function(t,e){return t.length>e.length?t:e}),0));var o=new W(this.dCtx.ctx),l=r;r=o.xLabelFormat(s,r,l),n=o.xLabelFormat(s,n,l),(e.config.xaxis.convertedCatToNumeric&&void 0===r||""===String(r).trim())&&(n=r="1");var h=new p(this.dCtx.ctx),c=h.getTextRects(r,e.config.xaxis.labels.style.fontSize),d=c;if(r!==n&&(d=h.getTextRects(n,e.config.xaxis.labels.style.fontSize)),(t={width:c.width>=d.width?c.width:d.width,height:c.height>=d.height?c.height:d.height}).width*i.length>e.globals.svgWidth-this.dCtx.lgWidthForSideLegends-this.dCtx.yAxisWidth-this.dCtx.gridPad.left-this.dCtx.gridPad.right&&0!==e.config.xaxis.labels.rotate||e.config.xaxis.labels.rotateAlways){if(!e.globals.isBarHorizontal){e.globals.rotateXLabels=!0;var u=function(t){return h.getTextRects(t,e.config.xaxis.labels.style.fontSize,e.config.xaxis.labels.style.fontFamily,"rotate(".concat(e.config.xaxis.labels.rotate," 0 0)"),!1)};c=u(r),r!==n&&(d=u(n)),t.height=(c.height>d.height?c.height:d.height)/1.5,t.width=c.width>d.width?c.width:d.width}}else e.globals.rotateXLabels=!1}return e.config.xaxis.labels.show||(t={width:0,height:0}),{width:t.width,height:t.height}}},{key:"getxAxisTitleCoords",value:function(){var t=this.w,e=0,i=0;if(void 0!==t.config.xaxis.title.text){var a=new p(this.dCtx.ctx).getTextRects(t.config.xaxis.title.text,t.config.xaxis.title.style.fontSize);e=a.width,i=a.height}return{width:e,height:i}}},{key:"getxAxisTimeScaleLabelsCoords",value:function(){var t,e=this.w;this.dCtx.timescaleLabels=e.globals.timescaleLabels.slice();var i=this.dCtx.timescaleLabels.map((function(t){return t.value})),a=i.reduce((function(t,e){return void 0===t?(console.error("You have possibly supplied invalid Date format. Please supply a valid JavaScript Date"),0):t.length>e.length?t:e}),0);return 1.05*(t=new p(this.dCtx.ctx).getTextRects(a,e.config.xaxis.labels.style.fontSize)).width*i.length>e.globals.gridWidth&&0!==e.config.xaxis.labels.rotate&&(e.globals.overlappingXLabels=!0),t}},{key:"additionalPaddingXLabels",value:function(t){var e=this,i=this.w,a=i.globals,s=i.config,r=s.xaxis.type,n=t.width;a.skipLastTimelinelabel=!1,a.skipFirstTimelinelabel=!1;var o=i.config.yaxis[0].opposite&&i.globals.isBarHorizontal,l=function(t,o){(function(t){return-1!==a.collapsedSeriesIndices.indexOf(t)})(o)||("datetime"!==r&&e.dCtx.gridPad.lefta.gridWidth&&(a.skipLastTimelinelabel=!0),l<0&&(a.skipFirstTimelinelabel=!0)}else"datetime"===r?e.dCtx.gridPad.rightu.width?f.width:u.width)+a,height:f.height>u.height?f.height:u.height})}else i.push({width:0,height:0})})),i}},{key:"getyAxisTitleCoords",value:function(){var t=this,e=this.w,i=[];return e.config.yaxis.map((function(e,a){if(e.show&&void 0!==e.title.text){var s=new p(t.dCtx.ctx).getTextRects(e.title.text,e.title.style.fontSize,e.title.style.fontFamily,"rotate(-90 0 0)",!1);i.push({width:s.width,height:s.height})}else i.push({width:0,height:0})})),i}},{key:"getTotalYAxisWidth",value:function(){var t=this.w,e=0,i=0,a=0,s=t.globals.yAxisScale.length>1?10:0,r=new B(this.dCtx.ctx),n=function(n,o){var l=t.config.yaxis[o].floating,h=0;n.width>0&&!l?(h=n.width+s,function(e){return t.globals.ignoreYAxisIndexes.indexOf(e)>-1}(o)&&(h=h-n.width-s)):h=l||r.isYAxisHidden(o)?0:5,t.config.yaxis[o].opposite?a+=h:i+=h,e+=h};return t.globals.yLabelsCoords.map((function(t,e){n(t,e)})),t.globals.yTitleCoords.map((function(t,e){n(t,e)})),t.globals.isBarHorizontal&&(e=t.globals.yLabelsCoords[0].width+t.globals.yTitleCoords[0].width+15),this.dCtx.yAxisWidthLeft=i,this.dCtx.yAxisWidthRight=a,e}}]),t}(),rt=function(){function t(i){e(this,t),this.w=i.w,this.dCtx=i}return a(t,[{key:"gridPadForColumnsInNumericAxis",value:function(t){var e=this.w;if(e.globals.noData||e.globals.allSeriesCollapsed)return 0;var i=e.config.chart.type,a=0,s="bar"===i||"rangeBar"===i?e.config.series.length:1;if(e.globals.comboBarCount>0&&(s=e.globals.comboBarCount),e.globals.collapsedSeries.forEach((function(t){"bar"!==t.type&&"rangeBar"!==t.type||(s-=1)})),e.config.chart.stacked&&(s=1),("bar"===i||"rangeBar"===i||e.globals.comboBarCount>0)&&e.globals.isXNumeric&&!e.globals.isBarHorizontal&&s>0){var r,n,o=Math.abs(e.globals.initialMaxX-e.globals.initialMinX);o<=3&&(o=e.globals.dataPoints),r=o/t,e.globals.minXDiff&&e.globals.minXDiff/r>0&&(n=e.globals.minXDiff/r),(a=n/s*parseInt(e.config.plotOptions.bar.columnWidth,10)/100)<1&&(a=1),a=a/(s>1?1:1.5)+5,e.globals.barPadForNumericAxis=a}return a}},{key:"gridPadFortitleSubtitle",value:function(){var t=this,e=this.w,i=e.globals,a=this.dCtx.isSparkline||!e.globals.axisCharts?0:10;["title","subtitle"].forEach((function(i){void 0!==e.config[i].text?a+=e.config[i].margin:a+=t.dCtx.isSparkline||!e.globals.axisCharts?0:5}));var s=e.config.series.length>1||!e.globals.axisCharts||e.config.legend.showForSingleSeries;e.config.legend.show&&"bottom"===e.config.legend.position&&!e.config.legend.floating&&s&&(a+=10);var r=this.dCtx.dimHelpers.getTitleSubtitleCoords("title"),n=this.dCtx.dimHelpers.getTitleSubtitleCoords("subtitle");i.gridHeight=i.gridHeight-r.height-n.height-a,i.translateY=i.translateY+r.height+n.height+a}},{key:"setGridXPosForDualYAxis",value:function(t,e){var i=this.w,a=new B(this.dCtx.ctx);i.config.yaxis.map((function(s,r){-1!==i.globals.ignoreYAxisIndexes.indexOf(r)||s.floating||a.isYAxisHidden(r)||s.opposite&&(i.globals.translateX=i.globals.translateX-(e[r].width+t[r].width)-parseInt(i.config.yaxis[r].labels.style.fontSize,10)/1.2-12)}))}}]),t}(),nt=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.lgRect={},this.yAxisWidth=0,this.yAxisWidthLeft=0,this.yAxisWidthRight=0,this.xAxisHeight=0,this.isSparkline=this.w.config.chart.sparkline.enabled,this.dimHelpers=new it(this),this.dimYAxis=new st(this),this.dimXAxis=new at(this),this.dimGrid=new rt(this),this.lgWidthForSideLegends=0,this.gridPad=this.w.config.grid.padding,this.xPadRight=0,this.xPadLeft=0}return a(t,[{key:"plotCoords",value:function(){var t=this.w.globals;this.lgRect=this.dimHelpers.getLegendsRect(),t.axisCharts?this.setDimensionsForAxisCharts():this.setDimensionsForNonAxisCharts(),this.dimGrid.gridPadFortitleSubtitle(),t.gridHeight=t.gridHeight-this.gridPad.top-this.gridPad.bottom,t.gridWidth=t.gridWidth-this.gridPad.left-this.gridPad.right-this.xPadRight-this.xPadLeft;var e=this.dimGrid.gridPadForColumnsInNumericAxis(t.gridWidth);t.gridWidth=t.gridWidth-2*e,t.translateX=t.translateX+this.gridPad.left+this.xPadLeft+(e>0?e+4:0),t.translateY=t.translateY+this.gridPad.top}},{key:"setDimensionsForAxisCharts",value:function(){var t=this,e=this.w,i=e.globals,a=this.dimYAxis.getyAxisLabelsCoords(),s=this.dimYAxis.getyAxisTitleCoords();e.globals.yLabelsCoords=[],e.globals.yTitleCoords=[],e.config.yaxis.map((function(t,i){e.globals.yLabelsCoords.push({width:a[i].width,index:i}),e.globals.yTitleCoords.push({width:s[i].width,index:i})})),this.yAxisWidth=this.dimYAxis.getTotalYAxisWidth();var r=this.dimXAxis.getxAxisLabelsCoords(),n=this.dimXAxis.getxAxisTitleCoords();this.conditionalChecksForAxisCoords(r,n),i.translateXAxisY=e.globals.rotateXLabels?this.xAxisHeight/8:-4,i.translateXAxisX=e.globals.rotateXLabels&&e.globals.isXNumeric&&e.config.xaxis.labels.rotate<=-45?-this.xAxisWidth/4:0,e.globals.isBarHorizontal&&(i.rotateXLabels=!1,i.translateXAxisY=parseInt(e.config.xaxis.labels.style.fontSize,10)/1.5*-1),i.translateXAxisY=i.translateXAxisY+e.config.xaxis.labels.offsetY,i.translateXAxisX=i.translateXAxisX+e.config.xaxis.labels.offsetX;var o=this.yAxisWidth,l=this.xAxisHeight;i.xAxisLabelsHeight=this.xAxisHeight,i.xAxisHeight=this.xAxisHeight;var h=10;("radar"===e.config.chart.type||this.isSparkline)&&(o=0,l=i.goldenPadding),this.isSparkline&&(this.lgRect={height:0,width:0},l=0,o=0,h=0),this.dimXAxis.additionalPaddingXLabels(r);var c=function(){i.translateX=o,i.gridHeight=i.svgHeight-t.lgRect.height-l-(t.isSparkline?0:e.globals.rotateXLabels?10:15),i.gridWidth=i.svgWidth-o};switch("top"===e.config.xaxis.position&&(h=i.xAxisHeight-e.config.xaxis.axisTicks.height-5),e.config.legend.position){case"bottom":i.translateY=h,c();break;case"top":i.translateY=this.lgRect.height+h,c();break;case"left":i.translateY=h,i.translateX=this.lgRect.width+o,i.gridHeight=i.svgHeight-l-12,i.gridWidth=i.svgWidth-this.lgRect.width-o;break;case"right":i.translateY=h,i.translateX=o,i.gridHeight=i.svgHeight-l-12,i.gridWidth=i.svgWidth-this.lgRect.width-o-5;break;default:throw new Error("Legend position not supported")}this.dimGrid.setGridXPosForDualYAxis(s,a),new q(this.ctx).setYAxisXPosition(a,s)}},{key:"setDimensionsForNonAxisCharts",value:function(){var t=this.w,e=t.globals,i=t.config,a=0;t.config.legend.show&&!t.config.legend.floating&&(a=20);var s="pie"===i.chart.type||"polarArea"===i.chart.type||"donut"===i.chart.type?"pie":"radialBar",r=i.plotOptions[s].offsetY,n=i.plotOptions[s].offsetX;if(!i.legend.show||i.legend.floating)return e.gridHeight=e.svgHeight-i.grid.padding.left+i.grid.padding.right,e.gridWidth=e.gridHeight,e.translateY=r,void(e.translateX=n+(e.svgWidth-e.gridWidth)/2);switch(i.legend.position){case"bottom":e.gridHeight=e.svgHeight-this.lgRect.height-e.goldenPadding,e.gridWidth=e.gridHeight,e.translateY=r-10,e.translateX=n+(e.svgWidth-e.gridWidth)/2;break;case"top":e.gridHeight=e.svgHeight-this.lgRect.height-e.goldenPadding,e.gridWidth=e.gridHeight,e.translateY=this.lgRect.height+r+10,e.translateX=n+(e.svgWidth-e.gridWidth)/2;break;case"left":e.gridWidth=e.svgWidth-this.lgRect.width-a,e.gridHeight="auto"!==i.chart.height?e.svgHeight:e.gridWidth,e.translateY=r,e.translateX=n+this.lgRect.width+a;break;case"right":e.gridWidth=e.svgWidth-this.lgRect.width-a-5,e.gridHeight="auto"!==i.chart.height?e.svgHeight:e.gridWidth,e.translateY=r,e.translateX=n+10;break;default:throw new Error("Legend position not supported")}}},{key:"conditionalChecksForAxisCoords",value:function(t,e){var i=this.w;this.xAxisHeight=(t.height+e.height)*(i.globals.isMultiLineX?1.2:i.globals.LINE_HEIGHT_RATIO)+(i.globals.rotateXLabels?22:10),this.xAxisWidth=t.width,this.xAxisHeight-e.height>i.config.xaxis.labels.maxHeight&&(this.xAxisHeight=i.config.xaxis.labels.maxHeight),i.config.xaxis.labels.minHeight&&this.xAxisHeights&&(this.yAxisWidth=s)}}]),t}(),ot=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return a(t,[{key:"drawYAxisTexts",value:function(t,e,i,a){var s=this.w,r=s.config.yaxis[0],n=s.globals.yLabelFormatters[0];return new p(this.ctx).drawText({x:t+r.labels.offsetX,y:e+r.labels.offsetY,text:n(a,i),textAnchor:"middle",fontSize:r.labels.style.fontSize,fontFamily:r.labels.style.fontFamily,foreColor:r.labels.style.color})}}]),t}(),lt=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animBeginArr=[0],this.animDur=0,this.donutDataLabels=this.w.config.plotOptions.pie.donut.labels;var a=this.w;this.lineColorArr=void 0!==a.globals.stroke.colors?a.globals.stroke.colors:a.globals.colors,this.defaultSize=a.globals.svgHeightthis.fullAngle?e.endAngle=e.endAngle-(a+n):a+n=360&&(o=359.99);var l=Math.PI*(o-90)/180,h=e.centerX+s*Math.cos(n),c=e.centerY+s*Math.sin(n),d=e.centerX+s*Math.cos(l),u=e.centerY+s*Math.sin(l),f=g.polarToCartesian(e.centerX,e.centerY,e.donutSize,o),p=g.polarToCartesian(e.centerX,e.centerY,e.donutSize,r),x=a>180?1:0,b=["M",h,c,"A",s,s,0,x,1,d,u];return"donut"===e.chartType?[].concat(b,["L",f.x,f.y,"A",e.donutSize,e.donutSize,0,x,0,p.x,p.y,"L",h,c,"z"]).join(" "):"pie"===e.chartType||"polarArea"===e.chartType?[].concat(b,["L",e.centerX,e.centerY,"L",h,c]).join(" "):[].concat(b).join(" ")}},{key:"drawPolarElements",value:function(){var t=this.w,e=new j(this.ctx),i=new p(this.ctx),a=new ot(this.ctx),s=i.group(),r=i.group(),n=void 0===t.config.yaxis[0].max&&void 0===t.config.yaxis[0].min,o=e.niceScale(0,Math.ceil(this.maxY),t.config.yaxis[0].tickAmount,0,n),l=o.result.reverse(),h=o.result.length;this.maxY=o.niceMax;for(var c=t.globals.radialSize,d=c/(h-1),g=0;g1&&t.total.show&&(s=t.total.color);var n=r.globals.dom.baseEl.querySelector(".apexcharts-datalabel-label"),o=r.globals.dom.baseEl.querySelector(".apexcharts-datalabel-value");i=(0,t.value.formatter)(i,r),a||"function"!=typeof t.total.formatter||(i=t.total.formatter(r));var l=e===t.total.label;e=t.name.formatter(e,l,r),null!==n&&(n.textContent=e),null!==o&&(o.textContent=i),null!==n&&(n.style.fill=s)}},{key:"printDataLabelsInner",value:function(t,e){var i=this.w,a=t.getAttribute("data:value"),s=i.globals.seriesNames[parseInt(t.parentNode.getAttribute("rel"),10)-1];i.globals.series.length>1&&this.printInnerLabels(e,s,a,t);var r=i.globals.dom.baseEl.querySelector(".apexcharts-datalabels-group");null!==r&&(r.style.opacity=1)}},{key:"revertDataLabelsInner",value:function(t,e,i){var a=this,s=this.w,r=s.globals.dom.baseEl.querySelector(".apexcharts-datalabels-group"),n=!1,o=s.globals.dom.baseEl.getElementsByClassName("apexcharts-pie-area"),l=function(t){var i=t.makeSliceOut,s=t.printLabel;Array.prototype.forEach.call(o,(function(t){"true"===t.getAttribute("data:pieClicked")&&(i&&(n=!0),s&&a.printDataLabelsInner(t,e))}))};if(l({makeSliceOut:!0,printLabel:!1}),e.total.show&&s.globals.series.length>1)n&&!e.total.showAlways?l({makeSliceOut:!1,printLabel:!0}):this.printInnerLabels(e,e.total.label,e.total.formatter(s));else if(l({makeSliceOut:!1,printLabel:!0}),!n)if(s.globals.selectedDataPoints.length&&s.globals.series.length>1)if(s.globals.selectedDataPoints[0].length>0){var h=s.globals.selectedDataPoints[0],c=s.globals.dom.baseEl.querySelector(".apexcharts-".concat(this.chartType.toLowerCase(),"-slice-").concat(h));this.printDataLabelsInner(c,e)}else r&&s.globals.selectedDataPoints.length&&0===s.globals.selectedDataPoints[0].length&&(r.style.opacity=0);else r&&s.globals.series.length>1&&(r.style.opacity=0)}}]),t}(),ht=function(){function t(i){e(this,t),this.w=i.w,this.lgCtx=i}return a(t,[{key:"getLegendStyles",value:function(){var t=document.createElement("style");t.setAttribute("type","text/css");var e=document.createTextNode("\t\n \t\n .apexcharts-legend {\t\n display: flex;\t\n overflow: auto;\t\n padding: 0 10px;\t\n }\t\n .apexcharts-legend.position-bottom, .apexcharts-legend.position-top {\t\n flex-wrap: wrap\t\n }\t\n .apexcharts-legend.position-right, .apexcharts-legend.position-left {\t\n flex-direction: column;\t\n bottom: 0;\t\n }\t\n .apexcharts-legend.position-bottom.apexcharts-align-left, .apexcharts-legend.position-top.apexcharts-align-left, .apexcharts-legend.position-right, .apexcharts-legend.position-left {\t\n justify-content: flex-start;\t\n }\t\n .apexcharts-legend.position-bottom.apexcharts-align-center, .apexcharts-legend.position-top.apexcharts-align-center {\t\n justify-content: center; \t\n }\t\n .apexcharts-legend.position-bottom.apexcharts-align-right, .apexcharts-legend.position-top.apexcharts-align-right {\t\n justify-content: flex-end;\t\n }\t\n .apexcharts-legend-series {\t\n cursor: pointer;\t\n line-height: normal;\t\n }\t\n .apexcharts-legend.position-bottom .apexcharts-legend-series, .apexcharts-legend.position-top .apexcharts-legend-series{\t\n display: flex;\t\n align-items: center;\t\n }\t\n .apexcharts-legend-text {\t\n position: relative;\t\n font-size: 14px;\t\n }\t\n .apexcharts-legend-text *, .apexcharts-legend-marker * {\t\n pointer-events: none;\t\n }\t\n .apexcharts-legend-marker {\t\n position: relative;\t\n display: inline-block;\t\n cursor: pointer;\t\n margin-right: 3px;\t\n border-style: solid;\n }\t\n \t\n .apexcharts-legend.apexcharts-align-right .apexcharts-legend-series, .apexcharts-legend.apexcharts-align-left .apexcharts-legend-series{\t\n display: inline-block;\t\n }\t\n .apexcharts-legend-series.apexcharts-no-click {\t\n cursor: auto;\t\n }\t\n .apexcharts-legend .apexcharts-hidden-zero-series, .apexcharts-legend .apexcharts-hidden-null-series {\t\n display: none !important;\t\n }\t\n .apexcharts-inactive-legend {\t\n opacity: 0.45;\t\n }");return t.appendChild(e),t}},{key:"getLegendBBox",value:function(){var t=this.w.globals.dom.baseEl.querySelector(".apexcharts-legend").getBoundingClientRect(),e=t.width;return{clwh:t.height,clww:e}}},{key:"appendToForeignObject",value:function(){var t=this.w.globals;t.dom.elLegendForeign=document.createElementNS(t.SVGNS,"foreignObject");var e=t.dom.elLegendForeign;e.setAttribute("x",0),e.setAttribute("y",0),e.setAttribute("width",t.svgWidth),e.setAttribute("height",t.svgHeight),t.dom.elLegendWrap.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),e.appendChild(t.dom.elLegendWrap),e.appendChild(this.getLegendStyles()),t.dom.Paper.node.insertBefore(e,t.dom.elGraphical.node)}},{key:"toggleDataSeries",value:function(t,e){var i=this,a=this.w;if(a.globals.axisCharts||"radialBar"===a.config.chart.type){a.globals.resized=!0;var s=null,r=null;if(a.globals.risingSeries=[],a.globals.axisCharts?(s=a.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(t,"']")),r=parseInt(s.getAttribute("data:realIndex"),10)):(s=a.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(t+1,"']")),r=parseInt(s.getAttribute("rel"),10)-1),e)[{cs:a.globals.collapsedSeries,csi:a.globals.collapsedSeriesIndices},{cs:a.globals.ancillaryCollapsedSeries,csi:a.globals.ancillaryCollapsedSeriesIndices}].forEach((function(t){i.riseCollapsedSeries(t.cs,t.csi,r)}));else this.hideSeries({seriesEl:s,realIndex:r})}else{var n=a.globals.dom.Paper.select(" .apexcharts-series[rel='".concat(t+1,"'] path")),o=a.config.chart.type;if("pie"===o||"polarArea"===o||"donut"===o){var l=a.config.plotOptions.pie.donut.labels,h=new p(this.lgCtx.ctx),c=new lt(this.lgCtx.ctx);h.pathMouseDown(n.members[0],null),c.printDataLabelsInner(n.members[0].node,l)}n.fire("click")}}},{key:"hideSeries",value:function(t){var e=t.seriesEl,i=t.realIndex,a=this.w;if(a.globals.axisCharts){var s=!1;if(a.config.yaxis[i]&&a.config.yaxis[i].show&&a.config.yaxis[i].showAlways&&(s=!0,a.globals.ancillaryCollapsedSeriesIndices.indexOf(i)<0&&(a.globals.ancillaryCollapsedSeries.push({index:i,data:a.config.series[i].data.slice(),type:e.parentNode.className.baseVal.split("-")[1]}),a.globals.ancillaryCollapsedSeriesIndices.push(i))),!s){a.globals.collapsedSeries.push({index:i,data:a.config.series[i].data.slice(),type:e.parentNode.className.baseVal.split("-")[1]}),a.globals.collapsedSeriesIndices.push(i);var r=a.globals.risingSeries.indexOf(i);a.globals.risingSeries.splice(r,1)}a.config.series[i].data=[]}else a.globals.collapsedSeries.push({index:i,data:a.config.series[i]}),a.globals.collapsedSeriesIndices.push(i),a.config.series[i]=0;for(var n=e.childNodes,o=0;o0)for(var s=0;s1||!e.axisCharts)&&i.legend.show){for(;e.dom.elLegendWrap.firstChild;)e.dom.elLegendWrap.removeChild(e.dom.elLegendWrap.firstChild);this.drawLegends(),g.isIE11()?document.getElementsByTagName("head")[0].appendChild(this.legendHelpers.getLegendStyles()):this.legendHelpers.appendToForeignObject(),"bottom"===i.legend.position||"top"===i.legend.position?this.legendAlignHorizontal():"right"!==i.legend.position&&"left"!==i.legend.position||this.legendAlignVertical()}}},{key:"drawLegends",value:function(){var t=this.w,e=t.config.legend.fontFamily,i=t.globals.seriesNames,a=t.globals.colors.slice();if("heatmap"===t.config.chart.type){var s=t.config.plotOptions.heatmap.colorScale.ranges;i=s.map((function(t){return t.name?t.name:t.from+" - "+t.to})),a=s.map((function(t){return t.color}))}else this.isBarsDistributed&&(i=t.globals.labels.slice());for(var r=t.globals.legendFormatter,n=t.config.legend.inverseOrder,o=n?i.length-1:0;n?o>=0:o<=i.length-1;n?o--:o++){var l=r(i[o],{seriesIndex:o,w:t}),h=!1,c=!1;if(t.globals.collapsedSeries.length>0)for(var d=0;d0)for(var g=0;g0?l-10:0)+(h>0?h-10:0)}a.style.position="absolute",r=r+t+i.config.legend.offsetX,n=n+e+i.config.legend.offsetY,a.style.left=r+"px",a.style.top=n+"px","bottom"===i.config.legend.position?(a.style.top="auto",a.style.bottom=5-i.config.legend.offsetY+"px"):"right"===i.config.legend.position&&(a.style.left="auto",a.style.right=25+i.config.legend.offsetX+"px");["width","height"].forEach((function(t){a.style[t]&&(a.style[t]=parseInt(i.config.legend[t],10)+"px")}))}},{key:"legendAlignHorizontal",value:function(){var t=this.w;t.globals.dom.baseEl.querySelector(".apexcharts-legend").style.right=0;var e=this.legendHelpers.getLegendBBox(),i=new nt(this.ctx),a=i.dimHelpers.getTitleSubtitleCoords("title"),s=i.dimHelpers.getTitleSubtitleCoords("subtitle"),r=0;"bottom"===t.config.legend.position?r=-e.clwh/1.8:"top"===t.config.legend.position&&(r=a.height+s.height+t.config.title.margin+t.config.subtitle.margin-10),this.setLegendWrapXY(20,r)}},{key:"legendAlignVertical",value:function(){var t=this.w,e=this.legendHelpers.getLegendBBox(),i=0;"left"===t.config.legend.position&&(i=20),"right"===t.config.legend.position&&(i=t.globals.svgWidth-e.clww-10),this.setLegendWrapXY(i,20)}},{key:"onLegendHovered",value:function(t){var e=this.w,i=t.target.classList.contains("apexcharts-legend-text")||t.target.classList.contains("apexcharts-legend-marker");if("heatmap"===e.config.chart.type||this.isBarsDistributed){if(i){var a=parseInt(t.target.getAttribute("rel"),10)-1;this.ctx.events.fireEvent("legendHover",[this.ctx,a,this.w]),new M(this.ctx).highlightRangeInSeries(t,t.target)}}else!t.target.classList.contains("apexcharts-inactive-legend")&&i&&new M(this.ctx).toggleSeriesOnHover(t,t.target)}},{key:"onLegendClick",value:function(t){if(t.target.classList.contains("apexcharts-legend-text")||t.target.classList.contains("apexcharts-legend-marker")){var e=parseInt(t.target.getAttribute("rel"),10)-1,i="true"===t.target.getAttribute("data:collapsed"),a=this.w.config.chart.events.legendClick;"function"==typeof a&&a(this.ctx,e,this.w),this.ctx.events.fireEvent("legendClick",[this.ctx,e,this.w]);var s=this.w.config.legend.markers.onClick;"function"==typeof s&&t.target.classList.contains("apexcharts-legend-marker")&&(s(this.ctx,e,this.w),this.ctx.events.fireEvent("legendMarkerClick",[this.ctx,e,this.w])),this.legendHelpers.toggleDataSeries(e,i)}}}]),t}(),dt=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.ev=this.w.config.chart.events,this.selectedClass="apexcharts-selected",this.localeValues=this.w.globals.locale.toolbar}return a(t,[{key:"createToolbar",value:function(){var t=this,e=this.w,i=function(){return document.createElement("div")},a=i();if(a.setAttribute("class","apexcharts-toolbar"),a.style.top=e.config.chart.toolbar.offsetY+"px",a.style.right=3-e.config.chart.toolbar.offsetX+"px",e.globals.dom.elWrap.appendChild(a),this.elZoom=i(),this.elZoomIn=i(),this.elZoomOut=i(),this.elPan=i(),this.elSelection=i(),this.elZoomReset=i(),this.elMenuIcon=i(),this.elMenu=i(),this.elCustomIcons=[],this.t=e.config.chart.toolbar.tools,Array.isArray(this.t.customIcons))for(var s=0;s\n \n \n\n'),n("zoomOut",this.elZoomOut,'\n \n \n\n');var o=function(i){t.t[i]&&e.config.chart[i].enabled&&r.push({el:"zoom"===i?t.elZoom:t.elSelection,icon:"string"==typeof t.t[i]?t.t[i]:"zoom"===i?'\n \n \n \n':'\n \n \n',title:t.localeValues["zoom"===i?"selectionZoom":"selection"],class:e.globals.isTouchDevice?"apexcharts-element-hidden":"apexcharts-".concat(i,"-icon")})};o("zoom"),o("selection"),this.t.pan&&e.config.chart.zoom.enabled&&r.push({el:this.elPan,icon:"string"==typeof this.t.pan?this.t.pan:'\n \n \n \n \n \n \n \n',title:this.localeValues.pan,class:e.globals.isTouchDevice?"apexcharts-element-hidden":"apexcharts-pan-icon"}),n("reset",this.elZoomReset,'\n \n \n'),this.t.download&&r.push({el:this.elMenuIcon,icon:"string"==typeof this.t.download?this.t.download:'',title:this.localeValues.menu,class:"apexcharts-menu-icon"});for(var l=0;l0&&e.height>0&&this.slDraggableRect.selectize({points:"l, r",pointSize:8,pointType:"rect"}).resize({constraint:{minX:0,minY:0,maxX:t.globals.gridWidth,maxY:t.globals.gridHeight}}).on("resizing",this.selectionDragging.bind(this,"resizing"))}}},{key:"preselectedSelection",value:function(){var t=this.w,e=this.xyRatios;if(!t.globals.zoomEnabled)if(void 0!==t.globals.selection&&null!==t.globals.selection)this.drawSelectionRect(t.globals.selection);else if(void 0!==t.config.chart.selection.xaxis.min&&void 0!==t.config.chart.selection.xaxis.max){var i=(t.config.chart.selection.xaxis.min-t.globals.minX)/e.xRatio,a={x:i,y:0,width:t.globals.gridWidth-(t.globals.maxX-t.config.chart.selection.xaxis.max)/e.xRatio-i,height:t.globals.gridHeight,translateX:0,translateY:0,selectionEnabled:!0};this.drawSelectionRect(a),this.makeSelectionRectDraggable(),"function"==typeof t.config.chart.events.selection&&t.config.chart.events.selection(this.ctx,{xaxis:{min:t.config.chart.selection.xaxis.min,max:t.config.chart.selection.xaxis.max},yaxis:{}})}}},{key:"drawSelectionRect",value:function(t){var e=t.x,i=t.y,a=t.width,s=t.height,r=t.translateX,n=void 0===r?0:r,o=t.translateY,l=void 0===o?0:o,h=this.w,c=this.zoomRect,d=this.selectionRect;if(this.dragged||null!==h.globals.selection){var g={transform:"translate("+n+", "+l+")"};h.globals.zoomEnabled&&this.dragged&&(a<0&&(a=1),c.attr({x:e,y:i,width:a,height:s,fill:h.config.chart.zoom.zoomedArea.fill.color,"fill-opacity":h.config.chart.zoom.zoomedArea.fill.opacity,stroke:h.config.chart.zoom.zoomedArea.stroke.color,"stroke-width":h.config.chart.zoom.zoomedArea.stroke.width,"stroke-opacity":h.config.chart.zoom.zoomedArea.stroke.opacity}),p.setAttrs(c.node,g)),h.globals.selectionEnabled&&(d.attr({x:e,y:i,width:a>0?a:0,height:s>0?s:0,fill:h.config.chart.selection.fill.color,"fill-opacity":h.config.chart.selection.fill.opacity,stroke:h.config.chart.selection.stroke.color,"stroke-width":h.config.chart.selection.stroke.width,"stroke-dasharray":h.config.chart.selection.stroke.dashArray,"stroke-opacity":h.config.chart.selection.stroke.opacity}),p.setAttrs(d.node,g))}}},{key:"hideSelectionRect",value:function(t){t&&t.attr({x:0,y:0,width:0,height:0})}},{key:"selectionDrawing",value:function(t){var e=t.context,i=t.zoomtype,a=this.w,s=e,r=this.gridRect.getBoundingClientRect(),n=s.startX-1,o=s.startY,l=s.clientX-r.left-n,h=s.clientY-r.top-o,c=0,d=0,g={};return Math.abs(l+n)>a.globals.gridWidth?l=a.globals.gridWidth-n:s.clientX-r.left<0&&(l=n),n>s.clientX-r.left&&(c=-(l=Math.abs(l))),o>s.clientY-r.top&&(d=-(h=Math.abs(h))),g="x"===i?{x:n,y:0,width:l,height:a.globals.gridHeight,translateX:c,translateY:0}:"y"===i?{x:0,y:o,width:a.globals.gridWidth,height:h,translateX:0,translateY:d}:{x:n,y:o,width:l,height:h,translateX:c,translateY:d},s.drawSelectionRect(g),s.selectionDragging("resizing"),g}},{key:"selectionDragging",value:function(t,e){var i=this,a=this.w,s=this.xyRatios,r=this.selectionRect,n=0;"resizing"===t&&(n=30);var o=function(t){return parseFloat(r.node.getAttribute(t))},l={x:o("x"),y:o("y"),width:o("width"),height:o("height")};a.globals.selection=l,"function"==typeof a.config.chart.events.selection&&a.globals.selectionEnabled&&(clearTimeout(this.w.globals.selectionResizeTimer),this.w.globals.selectionResizeTimer=window.setTimeout((function(){var t=i.gridRect.getBoundingClientRect(),e=r.node.getBoundingClientRect(),n=a.globals.xAxisScale.niceMin+(e.left-t.left)*s.xRatio,o=a.globals.xAxisScale.niceMin+(e.right-t.left)*s.xRatio,l=a.globals.yAxisScale[0].niceMin+(t.bottom-e.bottom)*s.yRatio[0],h=a.globals.yAxisScale[0].niceMax-(e.top-t.top)*s.yRatio[0];a.config.chart.events.selection(i.ctx,{xaxis:{min:n,max:o},yaxis:{min:l,max:h}})}),n))}},{key:"selectionDrawn",value:function(t){var e=t.context,i=t.zoomtype,a=this.w,s=e,r=this.xyRatios,n=this.ctx.toolbar;if(s.startX>s.endX){var o=s.startX;s.startX=s.endX,s.endX=o}if(s.startY>s.endY){var l=s.startY;s.startY=s.endY,s.endY=l}var h=a.globals.xAxisScale.niceMin+s.startX*r.xRatio,c=a.globals.xAxisScale.niceMin+s.endX*r.xRatio,d=[],u=[];if(a.config.yaxis.forEach((function(t,e){d.push(a.globals.yAxisScale[e].niceMax-r.yRatio[e]*s.startY),u.push(a.globals.yAxisScale[e].niceMax-r.yRatio[e]*s.endY)})),s.dragged&&(s.dragX>10||s.dragY>10)&&h!==c)if(a.globals.zoomEnabled){var f=g.clone(a.globals.initialConfig.yaxis),p=g.clone(a.globals.initialConfig.xaxis);if(a.globals.zoomed=!0,a.globals.zoomed||(a.globals.lastXAxis=g.clone(a.config.xaxis),a.globals.lastYAxis=g.clone(a.config.yaxis)),a.config.xaxis.convertedCatToNumeric&&(h=Math.floor(h),c=Math.floor(c),h<1&&(h=1,c=a.globals.dataPoints),c-h<2&&(c=h+1)),"xy"!==i&&"x"!==i||(p={min:h,max:c}),"xy"!==i&&"y"!==i||f.forEach((function(t,e){f[e].min=u[e],f[e].max=d[e]})),a.config.chart.zoom.autoScaleYaxis){var x=new j(s.ctx);f=x.autoScaleY(s.ctx,f,{xaxis:p})}if(n){var b=n.getBeforeZoomRange(p,f);b&&(p=b.xaxis?b.xaxis:p,f=b.yaxis?b.yaxe:f)}var m={xaxis:p};a.config.chart.group||(m.yaxis=f),s.ctx.updateHelpers._updateOptions(m,!1,s.w.config.chart.animations.dynamicAnimation.enabled),"function"==typeof a.config.chart.events.zoomed&&n.zoomCallback(p,f)}else if(a.globals.selectionEnabled){var v,y=null;v={min:h,max:c},"xy"!==i&&"y"!==i||(y=g.clone(a.config.yaxis)).forEach((function(t,e){y[e].min=u[e],y[e].max=d[e]})),a.globals.selection=s.selection,"function"==typeof a.config.chart.events.selection&&a.config.chart.events.selection(s.ctx,{xaxis:v,yaxis:y})}}},{key:"panDragging",value:function(t){var e=t.context,i=this.w,a=e;if(void 0!==i.globals.lastClientPosition.x){var s=i.globals.lastClientPosition.x-a.clientX,r=i.globals.lastClientPosition.y-a.clientY;Math.abs(s)>Math.abs(r)&&s>0?this.moveDirection="left":Math.abs(s)>Math.abs(r)&&s<0?this.moveDirection="right":Math.abs(r)>Math.abs(s)&&r>0?this.moveDirection="up":Math.abs(r)>Math.abs(s)&&r<0&&(this.moveDirection="down")}i.globals.lastClientPosition={x:a.clientX,y:a.clientY};var n=i.globals.minX,o=i.globals.maxX;i.config.xaxis.convertedCatToNumeric||a.panScrolled(n,o)}},{key:"delayedPanScrolled",value:function(){var t=this.w,e=t.globals.minX,i=t.globals.maxX,a=(t.globals.maxX-t.globals.minX)/2;"left"===this.moveDirection?(e=t.globals.minX+a,i=t.globals.maxX+a):"right"===this.moveDirection&&(e=t.globals.minX-a,i=t.globals.maxX-a),e=Math.floor(e),i=Math.floor(i),this.updateScrolledChart({xaxis:{min:e,max:i}},e,i)}},{key:"panScrolled",value:function(t,e){var i=this.w,a=this.xyRatios,s=g.clone(i.globals.initialConfig.yaxis);"left"===this.moveDirection?(t=i.globals.minX+i.globals.gridWidth/15*a.xRatio,e=i.globals.maxX+i.globals.gridWidth/15*a.xRatio):"right"===this.moveDirection&&(t=i.globals.minX-i.globals.gridWidth/15*a.xRatio,e=i.globals.maxX-i.globals.gridWidth/15*a.xRatio),(ti.globals.initialMaxX)&&(t=i.globals.minX,e=i.globals.maxX);var r={min:t,max:e};i.config.chart.zoom.autoScaleYaxis&&(s=new j(this.ctx).autoScaleY(this.ctx,s,{xaxis:r}));var n={xaxis:{min:t,max:e}};i.config.chart.group||(n.yaxis=s),this.updateScrolledChart(n,t,e)}},{key:"updateScrolledChart",value:function(t,e,i){var a=this.w;this.ctx.updateHelpers._updateOptions(t,!1,!1),"function"==typeof a.config.chart.events.scrolled&&a.config.chart.events.scrolled(this.ctx,{xaxis:{min:e,max:i}})}}]),i}(dt),ut=function(){function t(i){e(this,t),this.w=i.w,this.ttCtx=i,this.ctx=i.ctx}return a(t,[{key:"getNearestValues",value:function(t){var e=t.hoverArea,i=t.elGrid,a=t.clientX,s=t.clientY,r=this.w,n=r.globals.gridWidth,o=n/(r.globals.dataPoints-1),l=i.getBoundingClientRect(),h=this.hasBars();(r.globals.comboCharts||h)&&(o=n/r.globals.dataPoints);var c=a-l.left,d=s-l.top;c<0||d<0||c>r.globals.gridWidth||d>r.globals.gridHeight?(e.classList.remove("hovering-zoom"),e.classList.remove("hovering-pan")):r.globals.zoomEnabled?(e.classList.remove("hovering-pan"),e.classList.add("hovering-zoom")):r.globals.panEnabled&&(e.classList.remove("hovering-zoom"),e.classList.add("hovering-pan"));var u=Math.round(c/o);h&&(u=Math.ceil(c/o),u-=1);for(var f,p=null,x=null,b=[],m=0;m1?r=this.getFirstActiveXArray(i):n=0;var l=a[r][0],h=i[r][0],c=Math.abs(t-h),d=Math.abs(e-l),g=d+c;return a.map((function(s,r){s.map((function(s,l){var h=Math.abs(e-a[r][l]),u=Math.abs(t-i[r][l]),f=u+h;f0?e:-1})),s=0;s0)for(var a=0;a0}},{key:"getElBars",value:function(){return this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-bar-series, .apexcharts-candlestick-series, .apexcharts-rangebar-series")}},{key:"hasBars",value:function(){return this.getElBars().length>0}},{key:"getHoverMarkerSize",value:function(t){var e=this.w,i=e.config.markers.hover.size;return void 0===i&&(i=e.globals.markers.size[t]+e.config.markers.hover.sizeOffset),i}},{key:"toggleAllTooltipSeriesGroups",value:function(t){var e=this.w,i=this.ttCtx;0===i.allTooltipSeriesGroups.length&&(i.allTooltipSeriesGroups=e.globals.dom.baseEl.querySelectorAll(".apexcharts-tooltip-series-group"));for(var a=i.allTooltipSeriesGroups,s=0;s-1?f[0].parentNode.style.display="none":f[0].parentNode.style.display=l.config.tooltip.items.display)}},{key:"toggleActiveInactiveSeries",value:function(t){var e=this.w;if(t)this.tooltipUtil.toggleAllTooltipSeriesGroups("enable");else{this.tooltipUtil.toggleAllTooltipSeriesGroups("disable");var i=e.globals.dom.baseEl.querySelector(".apexcharts-tooltip-series-group");i&&(i.classList.add("apexcharts-active"),i.style.display=e.config.tooltip.items.display)}}},{key:"getValuesToPrint",value:function(t){var e=t.i,i=t.j,a=this.w,s=this.ctx.series.filteredSeriesX(),r="",n="",o=null,l=null,h={series:a.globals.series,seriesIndex:e,dataPointIndex:i,w:a},c=a.globals.ttZFormatter;null===i?l=a.globals.series[e]:a.globals.isXNumeric?(r=s[e][i],0===s[e].length&&(r=s[this.tooltipUtil.getFirstActiveXArray(s)][i])):r=void 0!==a.globals.labels[i]?a.globals.labels[i]:"";var d=r;a.globals.isXNumeric&&"datetime"===a.config.xaxis.type?r=new W(this.ctx).xLabelFormat(a.globals.ttKeyFormatter,d,d):a.globals.isBarHorizontal||(r=a.globals.xLabelFormatter(d,h));return void 0!==a.config.tooltip.x.formatter&&(r=a.globals.ttKeyFormatter(d,h)),a.globals.seriesZ.length>0&&a.globals.seriesZ[0].length>0&&(o=c(a.globals.seriesZ[e][i],a)),n="function"==typeof a.config.xaxis.tooltip.formatter?a.globals.xaxisTooltipFormatter(d,h):r,{val:Array.isArray(l)?l.join(" "):l,xVal:Array.isArray(r)?r.join(" "):r,xAxisTTVal:Array.isArray(n)?n.join(" "):n,zVal:o}}},{key:"handleCustomTooltip",value:function(t){var e=t.i,i=t.j,a=t.y1,s=t.y2,r=t.w,n=this.ttCtx.getElTooltip(),o=r.config.tooltip.custom;Array.isArray(o)&&o[e]&&(o=o[e]),n.innerHTML=o({ctx:this.ctx,series:r.globals.series,seriesIndex:e,dataPointIndex:i,y1:a,y2:s,w:r})}}]),t}(),pt=function(){function t(i){e(this,t),this.ttCtx=i,this.ctx=i.ctx,this.w=i.w}return a(t,[{key:"moveXCrosshairs",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.ttCtx,a=this.w,s=i.getElXCrosshairs(),r=t-i.xcrosshairsWidth/2,n=a.globals.labels.slice().length;if(null!==e&&(r=a.globals.gridWidth/n*e),null!==s&&(s.setAttribute("x",r),s.setAttribute("x1",r),s.setAttribute("x2",r),s.setAttribute("y2",a.globals.gridHeight),s.classList.add("apexcharts-active")),r<0&&(r=0),r>a.globals.gridWidth&&(r=a.globals.gridWidth),i.blxaxisTooltip){var o=r;"tickWidth"!==a.config.xaxis.crosshairs.width&&"barWidth"!==a.config.xaxis.crosshairs.width||(o=r+i.xcrosshairsWidth/2),this.moveXAxisTooltip(o)}}},{key:"moveYCrosshairs",value:function(t){var e=this.ttCtx;null!==e.ycrosshairs&&(p.setAttrs(e.ycrosshairs,{y1:t,y2:t}),p.setAttrs(e.ycrosshairsHidden,{y1:t,y2:t}))}},{key:"moveXAxisTooltip",value:function(t){var e=this.w,i=this.ttCtx;if(null!==i.xaxisTooltip){i.xaxisTooltip.classList.add("apexcharts-active");var a=i.xaxisOffY+e.config.xaxis.tooltip.offsetY+e.globals.translateY+1+e.config.xaxis.offsetY;if(t-=i.xaxisTooltip.getBoundingClientRect().width/2,!isNaN(t)){t+=e.globals.translateX;var s;s=new p(this.ctx).getTextRects(i.xaxisTooltipText.innerHTML),i.xaxisTooltipText.style.minWidth=s.width+"px",i.xaxisTooltip.style.left=t+"px",i.xaxisTooltip.style.top=a+"px"}}}},{key:"moveYAxisTooltip",value:function(t){var e=this.w,i=this.ttCtx;null===i.yaxisTTEls&&(i.yaxisTTEls=e.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxistooltip"));var a=parseInt(i.ycrosshairsHidden.getAttribute("y1"),10),s=e.globals.translateY+a,r=i.yaxisTTEls[t].getBoundingClientRect().height,n=e.globals.translateYAxisX[t]-2;e.config.yaxis[t].opposite&&(n-=26),s-=r/2,-1===e.globals.ignoreYAxisIndexes.indexOf(t)?(i.yaxisTTEls[t].classList.add("apexcharts-active"),i.yaxisTTEls[t].style.top=s+"px",i.yaxisTTEls[t].style.left=n+e.config.yaxis[t].tooltip.offsetX+"px"):i.yaxisTTEls[t].classList.remove("apexcharts-active")}},{key:"moveTooltip",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=this.w,s=this.ttCtx,r=s.getElTooltip(),n=s.tooltipRect,o=null!==i?parseFloat(i):1,l=parseFloat(t)+o+5,h=parseFloat(e)+o/2;if(l>a.globals.gridWidth/2&&(l=l-n.ttWidth-o-15),l>a.globals.gridWidth-n.ttWidth-10&&(l=a.globals.gridWidth-n.ttWidth),l<-20&&(l=-20),a.config.tooltip.followCursor){var c=s.getElGrid(),d=c.getBoundingClientRect();h=s.e.clientY+a.globals.translateY-d.top-n.ttHeight/2}if(!a.config.tooltip.followCursor){var g=this.positionChecks(n,l,h);l=g.x,h=g.y}isNaN(l)||(l+=a.globals.translateX,r.style.left=l+"px",r.style.top=h+"px")}},{key:"positionChecks",value:function(t,e,i){var a=this.w;return t.ttHeight/2+i>a.globals.gridHeight&&(i=a.globals.gridHeight-t.ttHeight+a.globals.translateY),i<0&&(i=0),{x:e,y:i}}},{key:"moveMarkers",value:function(t,e){var i=this.w,a=this.ttCtx;if(i.globals.markers.size[t]>0)for(var s=i.globals.dom.baseEl.querySelectorAll(" .apexcharts-series[data\\:realIndex='".concat(t,"'] .apexcharts-marker")),r=0;r=2&&s%2==0?Math.floor(s/2):Math.floor(s/2)+1,n=i.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[rel='".concat(r,"'] path[j='").concat(t,"'], .apexcharts-candlestick-series .apexcharts-series[rel='").concat(r,"'] path[j='").concat(t,"'], .apexcharts-rangebar-series .apexcharts-series[rel='").concat(r,"'] path[j='").concat(t,"']")),o=n?parseFloat(n.getAttribute("cx")):0,l=n?parseFloat(n.getAttribute("barWidth")):0;i.globals.isXNumeric?o-=s%2!=0?l/2:0:(o=a.xAxisTicksPositions[t-1]+a.dataPointsDividedWidth/2,isNaN(o)&&(o=a.xAxisTicksPositions[t]-a.dataPointsDividedWidth/2));var h=a.getElGrid().getBoundingClientRect();if(e=a.e.clientY-h.top-a.tooltipRect.ttHeight/2,this.moveXCrosshairs(o),!a.fixedTooltip){var c=e||i.globals.gridHeight;this.moveTooltip(o,c)}}}]),t}(),xt=function(){function t(i){e(this,t),this.w=i.w,this.ttCtx=i,this.ctx=i.ctx,this.tooltipPosition=new pt(i)}return a(t,[{key:"drawDynamicPoints",value:function(){var t=this.w,e=new p(this.ctx),i=new P(this.ctx),a=t.globals.dom.baseEl.querySelectorAll(".apexcharts-series");(a=d(a)).sort((function(t,e){return Number(e.getAttribute("data:realIndex"))2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=this.w;"bubble"!==s.config.chart.type&&this.newPointSize(t,e);var r=e.getAttribute("cx"),n=e.getAttribute("cy");if(null!==i&&null!==a&&(r=i,n=a),this.tooltipPosition.moveXCrosshairs(r),!this.fixedTooltip){if("radar"===s.config.chart.type){var o=this.ttCtx.getElGrid(),l=o.getBoundingClientRect();r=this.ttCtx.e.clientX-l.left}this.tooltipPosition.moveTooltip(r,n,s.config.markers.hover.size)}}},{key:"enlargePoints",value:function(t){for(var e=this.w,i=this.ttCtx,a=t,s=e.globals.dom.baseEl.querySelectorAll(".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker"),r=e.config.markers.hover.size,n=0;nn.globals.gridWidth/2&&(a=h-r.tooltipRect.ttWidth/2+d),r.w.config.tooltip.followCursor){var u=r.getElGrid().getBoundingClientRect();s=r.e.clientY-u.top+n.globals.translateY/2-10}}return{x:a,y:s}}},{key:"handleMarkerTooltip",value:function(t){var e,i,a=t.e,s=t.opt,r=t.x,n=t.y,o=this.w,l=this.ttCtx;if(a.target.classList.contains("apexcharts-marker")){var h=parseInt(s.paths.getAttribute("cx"),10),c=parseInt(s.paths.getAttribute("cy"),10),d=parseFloat(s.paths.getAttribute("val"));if(i=parseInt(s.paths.getAttribute("rel"),10),e=parseInt(s.paths.parentNode.parentNode.parentNode.getAttribute("rel"),10)-1,l.intersect){var u=g.findAncestor(s.paths,"apexcharts-series");u&&(e=parseInt(u.getAttribute("data:realIndex"),10))}if(l.tooltipLabels.drawSeriesTexts({ttItems:s.ttItems,i:e,j:i,shared:!l.showOnIntersect&&o.config.tooltip.shared}),"mouseup"===a.type&&l.markerClick(a,e,i),o.globals.capturedSeriesIndex=e,o.globals.capturedDataPointIndex=i,r=h,n=c+o.globals.translateY-1.4*l.tooltipRect.ttHeight,l.w.config.tooltip.followCursor){var f=l.getElGrid().getBoundingClientRect();n=l.e.clientY+o.globals.translateY-f.top}d<0&&(n=c),l.marker.enlargeCurrentPoint(i,s.paths,r,n)}return{x:r,y:n}}},{key:"handleBarTooltip",value:function(t){var e,i,a=t.e,s=t.opt,r=this.w,n=this.ttCtx,o=n.getElTooltip(),l=0,h=0,c=0,d=this.getBarTooltipXY({e:a,opt:s});e=d.i;var g=d.barHeight,u=d.j;if(r.globals.capturedSeriesIndex=e,r.globals.capturedDataPointIndex=u,r.globals.isBarHorizontal&&n.tooltipUtil.hasBars()||!r.config.tooltip.shared?(h=d.x,c=d.y,i=Array.isArray(r.config.stroke.width)?r.config.stroke.width[e]:r.config.stroke.width,l=h):r.globals.comboCharts||r.config.tooltip.shared||(l/=2),isNaN(c)?c=r.globals.svgHeight-n.tooltipRect.ttHeight:c<0&&(c=0),h+n.tooltipRect.ttWidth>r.globals.gridWidth?h-=n.tooltipRect.ttWidth:h<0&&(h=0),n.w.config.tooltip.followCursor){var f=n.getElGrid().getBoundingClientRect();c=n.e.clientY-f.top}if(null===n.tooltip&&(n.tooltip=r.globals.dom.baseEl.querySelector(".apexcharts-tooltip")),r.config.tooltip.shared||(r.globals.comboBarCount>0?n.tooltipPosition.moveXCrosshairs(l+i/2):n.tooltipPosition.moveXCrosshairs(l)),!n.fixedTooltip&&(!r.config.tooltip.shared||r.globals.isBarHorizontal&&n.tooltipUtil.hasBars())){var p=r.globals.isMultipleYAxis?r.config.yaxis[x]&&r.config.yaxis[x].reversed:r.config.yaxis[0].reversed;p&&(h-=n.tooltipRect.ttWidth)<0&&(h=0),o.style.left=h+r.globals.translateX+"px";var x=parseInt(s.paths.parentNode.getAttribute("data:realIndex"),10);!p||r.globals.isBarHorizontal&&n.tooltipUtil.hasBars()||(c=c+g-2*(r.globals.series[e][u]<0?g:0)),n.tooltipRect.ttHeight+c>r.globals.gridHeight?(c=r.globals.gridHeight-n.tooltipRect.ttHeight+r.globals.translateY,o.style.top=c+"px"):o.style.top=c+r.globals.translateY-n.tooltipRect.ttHeight/2+"px"}}},{key:"getBarTooltipXY",value:function(t){var e=t.e,i=t.opt,a=this.w,s=null,r=this.ttCtx,n=0,o=0,l=0,h=0,c=0,d=e.target.classList;if(d.contains("apexcharts-bar-area")||d.contains("apexcharts-candlestick-area")||d.contains("apexcharts-rangebar-area")){var g=e.target,u=g.getBoundingClientRect(),f=i.elGrid.getBoundingClientRect(),p=u.height;c=u.height;var x=u.width,b=parseInt(g.getAttribute("cx"),10),m=parseInt(g.getAttribute("cy"),10);h=parseFloat(g.getAttribute("barWidth"));var v="touchmove"===e.type?e.touches[0].clientX:e.clientX;s=parseInt(g.getAttribute("j"),10),n=parseInt(g.parentNode.getAttribute("rel"),10)-1;var y=g.getAttribute("data-range-y1"),w=g.getAttribute("data-range-y2");a.globals.comboCharts&&(n=parseInt(g.parentNode.getAttribute("data:realIndex"),10)),r.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:n,j:s,y1:y?parseInt(y,10):null,y2:w?parseInt(w,10):null,shared:!r.showOnIntersect&&a.config.tooltip.shared}),a.config.tooltip.followCursor?a.globals.isBarHorizontal?(o=v-f.left+15,l=m-r.dataPointsDividedHeight+p/2-r.tooltipRect.ttHeight/2):(o=a.globals.isXNumeric?b-x/2:b-r.dataPointsDividedWidth+x/2,l=e.clientY-f.top-r.tooltipRect.ttHeight/2-15):a.globals.isBarHorizontal?((o=b)0&&i.setAttribute("width",e.xcrosshairsWidth)}},{key:"handleYCrosshair",value:function(){var t=this.w,e=this.ttCtx;e.ycrosshairs=t.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs"),e.ycrosshairsHidden=t.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs-hidden")}},{key:"drawYaxisTooltipText",value:function(t,e,i){var a=this.ttCtx,s=this.w,r=s.globals.yLabelFormatters[t];if(a.blyaxisTooltip){var n=a.getElGrid().getBoundingClientRect(),o=(e-n.top)*i.yRatio[t],l=s.globals.maxYArr[t]-s.globals.minYArr[t],h=s.globals.minYArr[t]+(l-o);a.tooltipPosition.moveYCrosshairs(e-n.top),a.yaxisTooltipText[t].innerHTML=r(h),a.tooltipPosition.moveYAxisTooltip(t)}}}]),t}(),vt=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w;var a=this.w;this.tConfig=a.config.tooltip,this.tooltipUtil=new ut(this),this.tooltipLabels=new ft(this),this.tooltipPosition=new pt(this),this.marker=new xt(this),this.intersect=new bt(this),this.axesTooltip=new mt(this),this.showOnIntersect=this.tConfig.intersect,this.showTooltipTitle=this.tConfig.x.show,this.fixedTooltip=this.tConfig.fixed.enabled,this.xaxisTooltip=null,this.yaxisTTEls=null,this.isBarShared=!a.globals.isBarHorizontal&&this.tConfig.shared}return a(t,[{key:"getElTooltip",value:function(t){return t||(t=this),t.w.globals.dom.baseEl.querySelector(".apexcharts-tooltip")}},{key:"getElXCrosshairs",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-xcrosshairs")}},{key:"getElGrid",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-grid")}},{key:"drawTooltip",value:function(t){var e=this.w;this.xyRatios=t,this.blxaxisTooltip=e.config.xaxis.tooltip.enabled&&e.globals.axisCharts,this.blyaxisTooltip=e.config.yaxis[0].tooltip.enabled&&e.globals.axisCharts,this.allTooltipSeriesGroups=[],e.globals.axisCharts||(this.showTooltipTitle=!1);var i=document.createElement("div");if(i.classList.add("apexcharts-tooltip"),i.classList.add("apexcharts-theme-".concat(this.tConfig.theme)),e.globals.dom.elWrap.appendChild(i),e.globals.axisCharts){this.axesTooltip.drawXaxisTooltip(),this.axesTooltip.drawYaxisTooltip(),this.axesTooltip.setXCrosshairWidth(),this.axesTooltip.handleYCrosshair();var a=new G(this.ctx);this.xAxisTicksPositions=a.getXAxisTicksPositions()}if(!e.globals.comboCharts&&!this.tConfig.intersect&&"bar"!==e.config.chart.type&&"rangeBar"!==e.config.chart.type||this.tConfig.shared||(this.showOnIntersect=!0),0!==e.config.markers.size&&0!==e.globals.markers.largestSize||this.marker.drawDynamicPoints(this),e.globals.collapsedSeries.length!==e.globals.series.length){this.dataPointsDividedHeight=e.globals.gridHeight/e.globals.dataPoints,this.dataPointsDividedWidth=e.globals.gridWidth/e.globals.dataPoints,this.showTooltipTitle&&(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.classList.add("apexcharts-tooltip-title"),this.tooltipTitle.style.fontFamily=this.tConfig.style.fontFamily||e.config.chart.fontFamily,this.tooltipTitle.style.fontSize=this.tConfig.style.fontSize,i.appendChild(this.tooltipTitle));var s=e.globals.series.length;(e.globals.xyCharts||e.globals.comboCharts)&&this.tConfig.shared&&(s=this.showOnIntersect?1:e.globals.series.length),this.legendLabels=e.globals.dom.baseEl.querySelectorAll(".apexcharts-legend-text"),this.ttItems=this.createTTElements(s),this.addSVGEvents()}}},{key:"createTTElements",value:function(t){for(var e=this.w,i=[],a=this.getElTooltip(),s=0;s0&&this.addPathsEventListeners(u,c),this.tooltipUtil.hasBars()&&!this.tConfig.shared&&this.addDatapointEventsListeners(c)}}},{key:"drawFixedTooltipRect",value:function(){var t=this.w,e=this.getElTooltip(),i=e.getBoundingClientRect(),a=i.width+10,s=i.height+10,r=this.tConfig.fixed.offsetX,n=this.tConfig.fixed.offsetY,o=this.tConfig.fixed.position.toLowerCase();return o.indexOf("right")>-1&&(r=r+t.globals.svgWidth-a+10),o.indexOf("bottom")>-1&&(n=n+t.globals.svgHeight-s-10),e.style.left=r+"px",e.style.top=n+"px",{x:r,y:n,ttWidth:a,ttHeight:s}}},{key:"addDatapointEventsListeners",value:function(t){var e=this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers .apexcharts-marker, .apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-rangebar-area");this.addPathsEventListeners(e,t)}},{key:"addPathsEventListeners",value:function(t,e){for(var i=this,a=function(a){var s={paths:t[a],tooltipEl:e.tooltipEl,tooltipY:e.tooltipY,tooltipX:e.tooltipX,elGrid:e.elGrid,hoverArea:e.hoverArea,ttItems:e.ttItems};["mousemove","mouseup","touchmove","mouseout","touchend"].map((function(e){return t[a].addEventListener(e,i.seriesHover.bind(i,s),{capture:!1,passive:!0})}))},s=0;sn.top+n.height)this.handleMouseOut(s);else{if(Array.isArray(this.tConfig.enabledOnSeries)&&!r.config.tooltip.shared){var h=parseInt(s.paths.getAttribute("index"),10);if(this.tConfig.enabledOnSeries.indexOf(h)<0)return void this.handleMouseOut(s)}var c=this.getElTooltip(),d=this.getElXCrosshairs(),g=r.globals.xyCharts||"bar"===r.config.chart.type&&!r.globals.isBarHorizontal&&this.tooltipUtil.hasBars()&&this.tConfig.shared||r.globals.comboCharts&&this.tooltipUtil.hasBars();if(r.globals.isBarHorizontal&&this.tooltipUtil.hasBars()&&(g=!1),"mousemove"===a.type||"touchmove"===a.type||"mouseup"===a.type){if(null!==d&&d.classList.add("apexcharts-active"),null!==this.ycrosshairs&&this.blyaxisTooltip&&this.ycrosshairs.classList.add("apexcharts-active"),g&&!this.showOnIntersect)this.handleStickyTooltip(a,o,l,s);else if("heatmap"===r.config.chart.type){var u=this.intersect.handleHeatTooltip({e:a,opt:s,x:e,y:i});e=u.x,i=u.y,c.style.left=e+"px",c.style.top=i+"px"}else this.tooltipUtil.hasBars()&&this.intersect.handleBarTooltip({e:a,opt:s}),this.tooltipUtil.hasMarkers()&&this.intersect.handleMarkerTooltip({e:a,opt:s,x:e,y:i});if(this.blyaxisTooltip)for(var f=0;fs.globals.gridWidth?this.handleMouseOut(a):null!==o?this.handleStickyCapturedSeries(t,o,a,n):this.tooltipUtil.isXoverlap(n)&&this.create(t,this,0,n,a.ttItems)}},{key:"handleStickyCapturedSeries",value:function(t,e,i,a){var s=this.w;null===s.globals.series[e][a]?this.handleMouseOut(i):void 0!==s.globals.series[e][a]?this.tConfig.shared&&this.tooltipUtil.isXoverlap(a)&&this.tooltipUtil.isInitialSeriesSameLen()?this.create(t,this,e,a,i.ttItems):this.create(t,this,e,a,i.ttItems,!1):this.tooltipUtil.isXoverlap(a)&&this.create(t,this,0,a,i.ttItems)}},{key:"deactivateHoverFilter",value:function(){for(var t=this.w,e=new p(this.ctx),i=t.globals.dom.Paper.select(".apexcharts-bar-area"),a=0;a5&&void 0!==arguments[5]?arguments[5]:null,n=this.w,o=e;"mouseup"===t.type&&this.markerClick(t,i,a),null===r&&(r=this.tConfig.shared);var l=this.tooltipUtil.hasMarkers(),h=this.tooltipUtil.getElBars();if(n.config.legend.tooltipHoverFormatter){var c=n.config.legend.tooltipHoverFormatter,d=Array.from(this.legendLabels);d.forEach((function(t){var e=t.getAttribute("data:default-text");t.innerHTML=decodeURIComponent(e)}));for(var g=0;g0?o.marker.enlargePoints(a):o.tooltipPosition.moveDynamicPointsOnHover(a)),this.tooltipUtil.hasBars()&&(this.barSeriesHeight=this.tooltipUtil.getBarsHeight(h),this.barSeriesHeight>0)){var m=new p(this.ctx),v=n.globals.dom.Paper.select(".apexcharts-bar-area[j='".concat(a,"']"));this.deactivateHoverFilter(),this.tooltipPosition.moveStickyTooltipOverBars(a);for(var y=0;y0&&(this.totalItems+=t[r].length);for(var o=this.graphics.group({class:"apexcharts-bar-series apexcharts-plot-series"}),l=0,h=0,c=function(s,r){var c=void 0,d=void 0,u=void 0,f=void 0,p=[],x=[],b=a.globals.comboCharts?e[s]:s;i.yRatio.length>1&&(i.yaxisIndex=b),i.isReversed=a.config.yaxis[i.yaxisIndex]&&a.config.yaxis[i.yaxisIndex].reversed;var m=i.graphics.group({class:"apexcharts-series",seriesName:g.escapeString(a.globals.seriesNames[b]),rel:s+1,"data:realIndex":b}),v=i.graphics.group({class:"apexcharts-datalabels","data:realIndex":b}),y=0,w=0,k=i.initialPositions(l,h,c,d,u,f);h=k.y,y=k.barHeight,d=k.yDivision,f=k.zeroW,l=k.x,w=k.barWidth,c=k.xDivision,u=k.zeroH,i.yArrj=[],i.yArrjF=[],i.yArrjVal=[],i.xArrj=[],i.xArrjF=[],i.xArrjVal=[],1===i.prevY.length&&i.prevY[0].every((function(t){return isNaN(t)}))&&(i.prevY[0]=i.prevY[0].map((function(t){return u})),i.prevYF[0]=i.prevYF[0].map((function(t){return 0})));for(var A=0;A0){var b=r;this.prevXVal[g-1][u]<0?b=this.series[g][u]>=0?this.prevX[g-1][u]+p-2*(this.isReversed?p:0):this.prevX[g-1][u]:this.prevXVal[g-1][u]>=0&&(b=this.series[g][u]>=0?this.prevX[g-1][u]:this.prevX[g-1][u]-p+2*(this.isReversed?p:0)),e=b}else e=r;n=null===this.series[g][u]?e:e+this.series[g][u]/this.invertedYRatio-2*(this.isReversed?this.series[g][u]/this.invertedYRatio:0),this.xArrj.push(n),this.xArrjF.push(Math.abs(e-n)),this.xArrjVal.push(this.series[g][u]);var m=this.barHelpers.getBarpaths({barYPosition:d,barHeight:a,x1:e,x2:n,strokeWidth:s,series:this.series,realIndex:i.realIndex,i:g,j:u,w:c});return this.barHelpers.barBackground({bc:f,i:g,y1:d,y2:a,elSeries:h}),o+=l,{pathTo:m.pathTo,pathFrom:m.pathFrom,x:n,y:o}}},{key:"drawStackedColumnPaths",value:function(t){var e=t.indexes,i=t.x,a=t.y,s=t.xDivision,r=t.barWidth,n=t.zeroH,o=(t.strokeWidth,t.elSeries),l=this.w,h=e.i,c=e.j,d=e.bc;if(l.globals.isXNumeric){var g=l.globals.seriesX[h][c];g||(g=0),i=(g-l.globals.minX)/this.xRatio-r/2}for(var u,f=i,p=0,x=0;x0&&!l.globals.isXNumeric||h>0&&l.globals.isXNumeric&&l.globals.seriesX[h-1][c]===l.globals.seriesX[h][c]){var b,m,v=Math.min(this.yRatio.length+1,h+1);if(void 0!==this.prevY[h-1])for(var y=1;y=0?m-p+2*(this.isReversed?p:0):m;break}if(this.prevYVal[h-w][c]>=0){b=this.series[h][c]>=0?m:m+p-2*(this.isReversed?p:0);break}}void 0===b&&(b=l.globals.gridHeight),u=this.prevYF[0].every((function(t){return 0===t}))&&this.prevYF.slice(1,h).every((function(t){return t.every((function(t){return isNaN(t)}))}))?l.globals.gridHeight-n:b}else u=l.globals.gridHeight-n;a=u-this.series[h][c]/this.yRatio[this.yaxisIndex]+2*(this.isReversed?this.series[h][c]/this.yRatio[this.yaxisIndex]:0),this.yArrj.push(a),this.yArrjF.push(Math.abs(u-a)),this.yArrjVal.push(this.series[h][c]);var k=this.barHelpers.getColumnPaths({barXPosition:f,barWidth:r,y1:u,y2:a,yRatio:this.yRatio[this.yaxisIndex],strokeWidth:this.strokeWidth,series:this.series,realIndex:e.realIndex,i:h,j:c,w:l});return this.barHelpers.barBackground({bc:d,i:h,x1:f,x2:r,elSeries:o}),i+=s,{pathTo:k.pathTo,pathFrom:k.pathFrom,x:l.globals.isXNumeric?i-s:i,y:a}}}]),i}(E),wt=function(t){function i(){return e(this,i),c(this,l(i).apply(this,arguments))}return o(i,t),a(i,[{key:"draw",value:function(t,e){var i=this.w,a=new p(this.ctx),s=new L(this.ctx);this.candlestickOptions=this.w.config.plotOptions.candlestick;var r=new m(this.ctx,i);t=r.getLogSeries(t),this.series=t,this.yRatio=r.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t);for(var n=a.group({class:"apexcharts-candlestick-series apexcharts-plot-series"}),o=0;o0&&(this.visibleI=this.visibleI+1);var v,y;this.yRatio.length>1&&(this.yaxisIndex=x);var w=this.barHelpers.initialPositions();d=w.y,v=w.barHeight,c=w.x,y=w.barWidth,l=w.xDivision,h=w.zeroH,f.push(c+y/2);for(var k=a.group({class:"apexcharts-datalabels","data:realIndex":x}),A=0;A0&&f.push(c+y/2),u.push(d);var T=s.fillPath({seriesNumber:x,dataPointIndex:A,color:S,value:t[o][A]}),z=this.candlestickOptions.wick.useFillColor?S:void 0;this.renderSeries({realIndex:x,pathFill:T,lineFill:z,j:A,i:o,pathFrom:P.pathFrom,pathTo:P.pathTo,strokeWidth:C,elSeries:b,x:c,y:d,series:t,barHeight:v,barWidth:y,elDataLabelsWrap:k,visibleSeries:this.visibleI,type:"candlestick"})}i.globals.seriesXvalues[x]=f,i.globals.seriesYvalues[x]=u,n.add(b)}return n}},{key:"drawCandleStickPaths",value:function(t){var e=t.indexes,i=t.x,a=(t.y,t.xDivision),s=t.barWidth,r=t.zeroH,n=t.strokeWidth,o=this.w,l=new p(this.ctx),h=e.i,c=e.j,d=!0,g=o.config.plotOptions.candlestick.colors.upward,u=o.config.plotOptions.candlestick.colors.downward,f=this.yRatio[this.yaxisIndex],x=e.realIndex,b=this.getOHLCValue(x,c),m=r,v=r;b.o>b.c&&(d=!1);var y=Math.min(b.o,b.c),w=Math.max(b.o,b.c);o.globals.isXNumeric&&(i=(o.globals.seriesX[x][c]-o.globals.minX)/this.xRatio-s/2);var k=i+s*this.visibleI;void 0===this.series[h][c]||null===this.series[h][c]?y=r:(y=r-y/f,w=r-w/f,m=r-b.h/f,v=r-b.l/f);var A=l.move(k,r),S=l.move(k,y);return o.globals.previousPaths.length>0&&(S=this.getPreviousPath(x,c,!0)),A=l.move(k,w)+l.line(k+s/2,w)+l.line(k+s/2,m)+l.line(k+s/2,w)+l.line(k+s,w)+l.line(k+s,y)+l.line(k+s/2,y)+l.line(k+s/2,v)+l.line(k+s/2,y)+l.line(k,y)+l.line(k,w-n/2),S+=l.move(k,y),o.globals.isXNumeric||(i+=a),{pathTo:A,pathFrom:S,x:i,y:w,barXPosition:k,color:d?g:u}}},{key:"getOHLCValue",value:function(t,e){var i=this.w;return{o:i.globals.seriesCandleO[t][e],h:i.globals.seriesCandleH[t][e],l:i.globals.seriesCandleL[t][e],c:i.globals.seriesCandleC[t][e]}}}]),i}(E),kt=function(){function t(i,a){e(this,t),this.ctx=i,this.w=i.w,this.xRatio=a.xRatio,this.yRatio=a.yRatio,this.negRange=!1,this.dynamicAnim=this.w.config.chart.animations.dynamicAnimation,this.rectRadius=this.w.config.plotOptions.heatmap.radius,this.strokeWidth=this.w.config.stroke.show?this.w.config.stroke.width:0}return a(t,[{key:"draw",value:function(t){var e=this.w,i=new p(this.ctx),a=i.group({class:"apexcharts-heatmap"});a.attr("clip-path","url(#gridRectMask".concat(e.globals.cuid,")"));var s=e.globals.gridWidth/e.globals.dataPoints,r=e.globals.gridHeight/e.globals.series.length,n=0,o=!1;this.checkColorRange();var l=t.slice();e.config.yaxis[0].reversed&&(o=!0,l.reverse());for(var h=o?0:l.length-1;o?h=0;o?h++:h--){var c=i.group({class:"apexcharts-series apexcharts-heatmap-series",seriesName:g.escapeString(e.globals.seriesNames[h]),rel:h+1,"data:realIndex":h});if(e.config.chart.dropShadow.enabled){var d=e.config.chart.dropShadow;new u(this.ctx).dropShadow(c,d,h)}for(var f=0,x=0;x0&&e.colorScale.ranges.map((function(e,i){e.from<=0&&(t.negRange=!0)}))}},{key:"determineHeatColor",value:function(t,e){var i=this.w,a=i.globals.series[t][e],s=i.config.plotOptions.heatmap,r=s.colorScale.inverse?e:t,n=i.globals.colors[r],o=null,l=Math.min.apply(Math,d(i.globals.series[t])),h=Math.max.apply(Math,d(i.globals.series[t]));s.distributed||(l=i.globals.minY,h=i.globals.maxY),void 0!==s.colorScale.min&&(l=s.colorScale.mini.globals.maxY?s.colorScale.max:i.globals.maxY);var c=Math.abs(h)+Math.abs(l),g=100*a/(0===c?c-1e-6:c);s.colorScale.ranges.length>0&&s.colorScale.ranges.map((function(t,e){if(a>=t.from&&a<=t.to){n=t.color,o=t.foreColor?t.foreColor:null,l=t.from,h=t.to;var i=Math.abs(h)+Math.abs(l);g=100*a/(0===i?i-1e-6:i)}}));return{color:n,foreColor:o,percent:g}}},{key:"calculateHeatmapDataLabels",value:function(t){var e=t.x,i=t.y,a=t.i,s=t.j,r=t.heatColorProps,n=(t.series,t.rectHeight),o=t.rectWidth,l=this.w,h=l.config.dataLabels,c=new p(this.ctx),d=new z(this.ctx),g=h.formatter,u=null;if(h.enabled){u=c.group({class:"apexcharts-data-labels"});var f=h.offsetX,x=h.offsetY,b=e+o/2+f,m=i+n/2+parseFloat(h.style.fontSize)/3+x,v=g(l.globals.series[a][s],{seriesIndex:a,dataPointIndex:s,w:l});d.plotDataLabelsText({x:b,y:m,text:v,i:a,j:s,color:r.foreColor,parent:u,dataLabelsConfig:h})}return u}},{key:"animateHeatMap",value:function(t,e,i,a,s,r){var n=new f(this.ctx);n.animateRect(t,{x:e+a/2,y:i+s/2,width:0,height:0},{x:e,y:i,width:a,height:s},r,(function(){n.animationCompleted(t)}))}},{key:"animateHeatColor",value:function(t,e,i,a){t.attr({fill:e}).animate(a).attr({fill:i})}}]),t}(),At=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animDur=0;var a=this.w;this.graphics=new p(this.ctx),this.lineColorArr=void 0!==a.globals.stroke.colors?a.globals.stroke.colors:a.globals.colors,this.defaultSize=a.globals.svgHeight0&&(b=e.getPreviousPath(o));for(var m=0;m=10?t.x>0?(i="start",a+=10):t.x<0&&(i="end",a-=10):i="middle",Math.abs(t.y)>=e-10&&(t.y<0?s-=10:t.y>0&&(s+=10)),{textAnchor:i,newX:a,newY:s}}},{key:"getPreviousPath",value:function(t){for(var e=this.w,i=null,a=0;a0&&parseInt(s.realIndex,10)===parseInt(t,10)&&void 0!==e.globals.previousPaths[a].paths[0]&&(i=e.globals.previousPaths[a].paths[0].d)}return i}},{key:"getDataPointsPos",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.dataPointsLen;t=t||[],e=e||[];for(var a=[],s=0;s=360&&(g=360-Math.abs(this.startAngle)-.1);var f=i.drawPath({d:"",stroke:c,strokeWidth:n*parseInt(h.strokeWidth,10)/100,fill:"none",strokeOpacity:h.opacity,classes:"apexcharts-radialbar-area"});if(h.dropShadow.enabled){var x=h.dropShadow;s.dropShadow(f,x)}l.add(f),f.attr("id","apexcharts-radialbarTrack-"+o),this.animatePaths(f,{centerX:t.centerX,centerY:t.centerY,endAngle:g,startAngle:d,size:t.size,i:o,totalItems:2,animBeginArr:0,dur:0,isTrack:!0,easing:e.globals.easing})}return a}},{key:"drawArcs",value:function(t){var e=this.w,i=new p(this.ctx),a=new L(this.ctx),s=new u(this.ctx),r=i.group(),n=this.getStrokeWidth(t);t.size=t.size-n/2;var o=e.config.plotOptions.radialBar.hollow.background,l=t.size-n*t.series.length-this.margin*t.series.length-n*parseInt(e.config.plotOptions.radialBar.track.strokeWidth,10)/100/2,h=l-e.config.plotOptions.radialBar.hollow.margin;void 0!==e.config.plotOptions.radialBar.hollow.image&&(o=this.drawHollowImage(t,r,l,o));var c=this.drawHollow({size:h,centerX:t.centerX,centerY:t.centerY,fill:o||"transparent"});if(e.config.plotOptions.radialBar.hollow.dropShadow.enabled){var d=e.config.plotOptions.radialBar.hollow.dropShadow;s.dropShadow(c,d)}var f=1;!this.radialDataLabels.total.show&&e.globals.series.length>1&&(f=0);var x=null;this.radialDataLabels.show&&(x=this.renderInnerDataLabels(this.radialDataLabels,{hollowSize:l,centerX:t.centerX,centerY:t.centerY,opacity:f})),"back"===e.config.plotOptions.radialBar.hollow.position&&(r.add(c),x&&r.add(x));var b=!1;e.config.plotOptions.radialBar.inverseOrder&&(b=!0);for(var m=b?t.series.length-1:0;b?m>=0:m100?100:t.series[m])/100,S=Math.round(this.totalAngle*A)+this.startAngle,C=void 0;e.globals.dataChanged&&(k=this.startAngle,C=Math.round(this.totalAngle*g.negToZero(e.globals.previousPaths[m])/100)+k),Math.abs(S)+Math.abs(w)>=360&&(S-=.01),Math.abs(C)+Math.abs(k)>=360&&(C-=.01);var P=S-w,T=Array.isArray(e.config.stroke.dashArray)?e.config.stroke.dashArray[m]:e.config.stroke.dashArray,z=i.drawPath({d:"",stroke:y,strokeWidth:n,fill:"none",fillOpacity:e.config.fill.opacity,classes:"apexcharts-radialbar-area apexcharts-radialbar-slice-"+m,strokeDashArray:T});if(p.setAttrs(z.node,{"data:angle":P,"data:value":t.series[m]}),e.config.chart.dropShadow.enabled){var I=e.config.chart.dropShadow;s.dropShadow(z,I,m)}this.addListeners(z,this.radialDataLabels),v.add(z),z.attr({index:0,j:m});var M=0;!this.initialAnim||e.globals.resized||e.globals.dataChanged||(M=(S-w)/360*e.config.chart.animations.speed,this.animDur=M/(1.2*t.series.length)+this.animDur,this.animBeginArr.push(this.animDur)),e.globals.dataChanged&&(M=(S-w)/360*e.config.chart.animations.dynamicAnimation.speed,this.animDur=M/(1.2*t.series.length)+this.animDur,this.animBeginArr.push(this.animDur)),this.animatePaths(z,{centerX:t.centerX,centerY:t.centerY,endAngle:S,startAngle:w,prevEndAngle:C,prevStartAngle:k,size:t.size,i:m,totalItems:2,animBeginArr:this.animBeginArr,dur:M,shouldSetPrevPaths:!0,easing:e.globals.easing})}return{g:r,elHollow:c,dataLabels:x}}},{key:"drawHollow",value:function(t){var e=new p(this.ctx).drawCircle(2*t.size);return e.attr({class:"apexcharts-radialbar-hollow",cx:t.centerX,cy:t.centerY,r:t.size,fill:t.fill}),e}},{key:"drawHollowImage",value:function(t,e,i,a){var s=this.w,r=new L(this.ctx),n=g.randomId(),o=s.config.plotOptions.radialBar.hollow.image;if(s.config.plotOptions.radialBar.hollow.imageClipped)r.clippedImgArea({width:i,height:i,image:o,patternID:"pattern".concat(s.globals.cuid).concat(n)}),a="url(#pattern".concat(s.globals.cuid).concat(n,")");else{var l=s.config.plotOptions.radialBar.hollow.imageWidth,h=s.config.plotOptions.radialBar.hollow.imageHeight;if(void 0===l&&void 0===h){var c=s.globals.dom.Paper.image(o).loaded((function(e){this.move(t.centerX-e.width/2+s.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-e.height/2+s.config.plotOptions.radialBar.hollow.imageOffsetY)}));e.add(c)}else{var d=s.globals.dom.Paper.image(o).loaded((function(e){this.move(t.centerX-l/2+s.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-h/2+s.config.plotOptions.radialBar.hollow.imageOffsetY),this.size(l,h)}));e.add(d)}}return a}},{key:"getStrokeWidth",value:function(t){var e=this.w;return t.size*(100-parseInt(e.config.plotOptions.radialBar.hollow.size,10))/100/(t.series.length+1)-this.margin}}]),i}(lt),Ct=function(){function t(i){e(this,t),this.w=i.w,this.lineCtx=i}return a(t,[{key:"sameValueSeriesFix",value:function(t,e){var i=this.w;if("line"===i.config.chart.type&&("gradient"===i.config.fill.type||"gradient"===i.config.fill.type[t])&&new m(this.lineCtx.ctx,i).seriesHaveSameValues(t)){var a=e[t].slice();a[a.length-1]=a[a.length-1]+1e-6,e[t]=a}return e}},{key:"calculatePoints",value:function(t){var e=t.series,i=t.realIndex,a=t.x,s=t.y,r=t.i,n=t.j,o=t.prevY,l=this.w,h=[],c=[];if(0===n){var d=this.lineCtx.categoryAxisCorrection+l.config.markers.offsetX;l.globals.isXNumeric&&(d=(l.globals.seriesX[i][0]-l.globals.minX)/this.lineCtx.xRatio+l.config.markers.offsetX),h.push(d),c.push(g.isNumber(e[r][0])?o+l.config.markers.offsetY:null),h.push(a+l.config.markers.offsetX),c.push(g.isNumber(e[r][n+1])?s+l.config.markers.offsetY:null)}else h.push(a+l.config.markers.offsetX),c.push(g.isNumber(e[r][n+1])?s+l.config.markers.offsetY:null);return{x:h,y:c}}},{key:"checkPreviousPaths",value:function(t){for(var e=t.pathFromLine,i=t.pathFromArea,a=t.realIndex,s=this.w,r=0;r0&&parseInt(n.realIndex,10)===parseInt(a,10)&&("line"===n.type?(this.lineCtx.appendPathFrom=!1,e=s.globals.previousPaths[r].paths[0].d):"area"===n.type&&(this.lineCtx.appendPathFrom=!1,i=s.globals.previousPaths[r].paths[0].d,s.config.stroke.show&&s.globals.previousPaths[r].paths[1]&&(e=s.globals.previousPaths[r].paths[1].d)))}return{pathFromLine:e,pathFromArea:i}}},{key:"determineFirstPrevY",value:function(t){var e=t.i,i=t.series,a=t.prevY,s=t.lineYPosition,r=this.w;if(void 0!==i[e][0])a=(s=r.config.chart.stacked&&e>0?this.lineCtx.prevSeriesY[e-1][0]:this.lineCtx.zeroY)-i[e][0]/this.lineCtx.yRatio[this.lineCtx.yaxisIndex]+2*(this.lineCtx.isReversed?i[e][0]/this.lineCtx.yRatio[this.lineCtx.yaxisIndex]:0);else if(r.config.chart.stacked&&e>0&&void 0===i[e][0])for(var n=e-1;n>=0;n--)if(null!==i[n][0]&&void 0!==i[n][0]){a=s=this.lineCtx.prevSeriesY[n][0];break}return{prevY:a,lineYPosition:s}}}]),t}(),Lt=function(){function t(i,a,s){e(this,t),this.ctx=i,this.w=i.w,this.xyRatios=a,this.pointsChart=!("bubble"!==this.w.config.chart.type&&"scatter"!==this.w.config.chart.type)||s,this.scatter=new T(this.ctx),this.noNegatives=this.w.globals.minX===Number.MAX_VALUE,this.lineHelpers=new Ct(this),this.markers=new P(this.ctx),this.prevSeriesY=[],this.categoryAxisCorrection=0,this.yaxisIndex=0}return a(t,[{key:"draw",value:function(t,e,i){var a=this.w,s=new p(this.ctx),r=a.globals.comboCharts?e:a.config.chart.type,n=s.group({class:"apexcharts-".concat(r,"-series apexcharts-plot-series")}),o=new m(this.ctx,a);this.yRatio=this.xyRatios.yRatio,this.zRatio=this.xyRatios.zRatio,this.xRatio=this.xyRatios.xRatio,this.baseLineY=this.xyRatios.baseLineY,t=o.getLogSeries(t),this.yRatio=o.getLogYRatios(this.yRatio);for(var l=[],h=0;h0&&(u=(a.globals.seriesX[c][0]-a.globals.minX)/this.xRatio),g.push(u);var f,x=u,b=x,v=this.zeroY;v=this.lineHelpers.determineFirstPrevY({i:h,series:t,prevY:v,lineYPosition:0}).prevY,d.push(v),f=v;var y=this._calculatePathsFrom({series:t,i:h,realIndex:c,prevX:b,prevY:v}),w=this._iterateOverDataPoints({series:t,realIndex:c,i:h,x:u,y:1,pX:x,pY:f,pathsFrom:y,linePaths:[],areaPaths:[],seriesIndex:i,lineYPosition:0,xArrj:g,yArrj:d});this._handlePaths({type:r,realIndex:c,i:h,paths:w}),this.elSeries.add(this.elPointsMain),this.elSeries.add(this.elDataLabelsWrap),l.push(this.elSeries)}for(var k=l.length;k>0;k--)n.add(l[k-1]);return n}},{key:"_initSerieVariables",value:function(t,e,i){var a=this.w,s=new p(this.ctx);this.xDivision=a.globals.gridWidth/(a.globals.dataPoints-("on"===a.config.xaxis.tickPlacement?1:0)),this.strokeWidth=Array.isArray(a.config.stroke.width)?a.config.stroke.width[i]:a.config.stroke.width,this.yRatio.length>1&&(this.yaxisIndex=i),this.isReversed=a.config.yaxis[this.yaxisIndex]&&a.config.yaxis[this.yaxisIndex].reversed,this.zeroY=a.globals.gridHeight-this.baseLineY[this.yaxisIndex]-(this.isReversed?a.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[this.yaxisIndex]:0),this.areaBottomY=this.zeroY,this.zeroY>a.globals.gridHeight&&(this.areaBottomY=a.globals.gridHeight),this.categoryAxisCorrection=this.xDivision/2,this.elSeries=s.group({class:"apexcharts-series",seriesName:g.escapeString(a.globals.seriesNames[i])}),this.elPointsMain=s.group({class:"apexcharts-series-markers-wrap","data:realIndex":i}),this.elDataLabelsWrap=s.group({class:"apexcharts-datalabels","data:realIndex":i});var r=t[e].length===a.globals.dataPoints;this.elSeries.attr({"data:longestSeries":r,rel:e+1,"data:realIndex":i}),this.appendPathFrom=!0}},{key:"_calculatePathsFrom",value:function(t){var e,i,a,s,r=t.series,n=t.i,o=t.realIndex,l=t.prevX,h=t.prevY,c=this.w,d=new p(this.ctx);if(null===r[n][0]){for(var g=0;g0){var u=this.lineHelpers.checkPreviousPaths({pathFromLine:a,pathFromArea:s,realIndex:o});a=u.pathFromLine,s=u.pathFromArea}return{prevX:l,prevY:h,linePath:e,areaPath:i,pathFromLine:a,pathFromArea:s}}},{key:"_handlePaths",value:function(t){var e=t.type,i=t.realIndex,a=t.i,s=t.paths,r=this.w,o=new p(this.ctx),l=new L(this.ctx);this.prevSeriesY.push(s.yArrj),r.globals.seriesXvalues[i]=s.xArrj,r.globals.seriesYvalues[i]=s.yArrj,this.pointsChart||r.globals.delayedElements.push({el:this.elPointsMain.node,index:i});var h={i:a,realIndex:i,animationDelay:a,initialSpeed:r.config.chart.animations.speed,dataChangeSpeed:r.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-".concat(e)};if("area"===e)for(var c=l.fillPath({seriesNumber:i}),d=0;d1?b.globals.dataPoints-1:b.globals.dataPoints,P=0;P0&&b.globals.collapsedSeries.length-1){e--;break}return e>=0?e:0}(a-1)][P+1]}else u=this.zeroY;else u=this.zeroY;r=T?u-C/v[this.yaxisIndex]+2*(this.isReversed?C/v[this.yaxisIndex]:0):u-e[a][P+1]/v[this.yaxisIndex]+2*(this.isReversed?e[a][P+1]/v[this.yaxisIndex]:0),f.push(s),x.push(r);var I=this.lineHelpers.calculatePoints({series:e,x:s,y:r,realIndex:i,i:a,j:P,prevY:y}),M=this._createPaths({series:e,i:a,realIndex:i,j:P,x:s,y:r,pX:n,pY:o,linePath:w,areaPath:k,linePaths:h,areaPaths:c,seriesIndex:d});c=M.areaPaths,h=M.linePaths,n=M.pX,o=M.pY,k=M.areaPath,w=M.linePath,this.appendPathFrom&&(A+=m.line(s,this.zeroY),S+=m.line(s,this.zeroY)),this.handleNullDataPoints(e,I,a,P,i),this._handleMarkersAndLabels({pointsPos:I,series:e,x:s,y:r,prevY:y,i:a,j:P,realIndex:i})}return{yArrj:x,xArrj:f,pathFromArea:S,areaPaths:c,pathFromLine:A,linePaths:h}}},{key:"_handleMarkersAndLabels",value:function(t){var e=t.pointsPos,i=(t.series,t.x,t.y,t.prevY,t.i),a=t.j,s=t.realIndex,r=this.w,n=new z(this.ctx);if(this.pointsChart)this.scatter.draw(this.elSeries,a,{realIndex:s,pointsPos:e,zRatio:this.zRatio,elParent:this.elPointsMain});else{r.globals.series[i].length>1&&this.elPointsMain.node.classList.add("apexcharts-element-hidden");var o=this.markers.plotChartMarkers(e,s,a+1);null!==o&&this.elPointsMain.add(o)}var l=n.drawDataLabel(e,s,a+1,null);null!==l&&this.elDataLabelsWrap.add(l)}},{key:"_createPaths",value:function(t){var e=t.series,i=t.i,a=t.realIndex,s=t.j,r=t.x,n=t.y,o=t.pX,l=t.pY,h=t.linePath,c=t.areaPath,d=t.linePaths,g=t.areaPaths,u=t.seriesIndex,f=this.w,x=new p(this.ctx),b=f.config.stroke.curve,m=this.areaBottomY;if(Array.isArray(f.config.stroke.curve)&&(b=Array.isArray(u)?f.config.stroke.curve[u[i]]:f.config.stroke.curve[i]),"smooth"===b){var v=.35*(r-o);f.globals.hasNullValues?(null!==e[i][s]&&(null!==e[i][s+1]?(h=x.move(o,l)+x.curve(o+v,l,r-v,n,r+1,n),c=x.move(o+1,l)+x.curve(o+v,l,r-v,n,r+1,n)+x.line(r,m)+x.line(o,m)+"z"):(h=x.move(o,l),c=x.move(o,l)+"z")),d.push(h),g.push(c)):(h+=x.curve(o+v,l,r-v,n,r,n),c+=x.curve(o+v,l,r-v,n,r,n)),o=r,l=n,s===e[i].length-2&&(c=c+x.curve(o,l,r,n,r,m)+x.move(r,n)+"z",f.globals.hasNullValues||(d.push(h),g.push(c)))}else{if(null===e[i][s+1]){h+=x.move(r,n);var y=f.globals.isXNumeric?(f.globals.seriesX[a][s]-f.globals.minX)/this.xRatio:r-this.xDivision;c=c+x.line(y,m)+x.move(r,n)+"z"}null===e[i][s]&&(h+=x.move(r,n),c+=x.move(r,m)),"stepline"===b?(h=h+x.line(r,null,"H")+x.line(null,n,"V"),c=c+x.line(r,null,"H")+x.line(null,n,"V")):"straight"===b&&(h+=x.line(r,n),c+=x.line(r,n)),s===e[i].length-2&&(c=c+x.line(r,m)+x.move(r,n)+"z",d.push(h),g.push(c))}return{linePaths:d,areaPaths:g,pX:o,pY:l,linePath:h,areaPath:c}}},{key:"handleNullDataPoints",value:function(t,e,i,a,s){var r=this.w;if(null===t[i][a]&&r.config.markers.showNullDataPoints||1===t[i].length){var n=this.markers.plotChartMarkers(e,s,a+1,this.strokeWidth-r.config.markers.strokeWidth/2,!0);null!==n&&this.elPointsMain.add(n)}}}]),t}(),Pt=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.timeScaleArray=[],this.utc=this.w.config.xaxis.labels.datetimeUTC}return a(t,[{key:"calculateTimeScaleTicks",value:function(t,e){var i=this,a=this.w;if(a.globals.allSeriesCollapsed)return a.globals.labels=[],a.globals.timescaleLabels=[],[];var s=new Y(this.ctx),r=(e-t)/864e5;this.determineInterval(r),a.globals.disableZoomIn=!1,a.globals.disableZoomOut=!1,r<.005?a.globals.disableZoomIn=!0:r>5e4&&(a.globals.disableZoomOut=!0);var o=s.getTimeUnitsfromTimestamp(t,e,this.utc),l=a.globals.gridWidth/r,h=l/24,c=h/60,d=Math.floor(24*r),g=Math.floor(24*r*60),u=Math.floor(r),f=Math.floor(r/30),p=Math.floor(r/365),x={minMinute:o.minMinute,minHour:o.minHour,minDate:o.minDate,minMonth:o.minMonth,minYear:o.minYear},b={firstVal:x,currentMinute:x.minMinute,currentHour:x.minHour,currentMonthDate:x.minDate,currentDate:x.minDate,currentMonth:x.minMonth,currentYear:x.minYear,daysWidthOnXAxis:l,hoursWidthOnXAxis:h,minutesWidthOnXAxis:c,numberOfMinutes:g,numberOfHours:d,numberOfDays:u,numberOfMonths:f,numberOfYears:p};switch(this.tickInterval){case"years":this.generateYearScale(b);break;case"months":case"half_year":this.generateMonthScale(b);break;case"months_days":case"months_fortnight":case"days":case"week_days":this.generateDayScale(b);break;case"hours":this.generateHourScale(b);break;case"minutes":this.generateMinuteScale(b)}var m=this.timeScaleArray.map((function(t){var e={position:t.position,unit:t.unit,year:t.year,day:t.day?t.day:1,hour:t.hour?t.hour:0,month:t.month+1};return"month"===t.unit?n({},e,{day:1,value:t.value+1}):"day"===t.unit||"hour"===t.unit?n({},e,{value:t.value}):"minute"===t.unit?n({},e,{value:t.value,minute:t.value}):t}));return m.filter((function(t){var e=1,s=Math.ceil(a.globals.gridWidth/120),r=t.value;void 0!==a.config.xaxis.tickAmount&&(s=a.config.xaxis.tickAmount),m.length>s&&(e=Math.floor(m.length/s));var n=!1,o=!1;switch(i.tickInterval){case"years":"year"===t.unit&&(n=!0);break;case"half_year":e=7,"year"===t.unit&&(n=!0);break;case"months":e=1,"year"===t.unit&&(n=!0);break;case"months_fortnight":e=15,"year"!==t.unit&&"month"!==t.unit||(n=!0),30===r&&(o=!0);break;case"months_days":e=10,"month"===t.unit&&(n=!0),30===r&&(o=!0);break;case"week_days":e=8,"month"===t.unit&&(n=!0);break;case"days":e=1,"month"===t.unit&&(n=!0);break;case"hours":"day"===t.unit&&(n=!0);break;case"minutes":r%5!=0&&(o=!0)}if("minutes"===i.tickInterval||"hours"===i.tickInterval){if(!o)return!0}else if((r%e==0||n)&&!o)return!0}))}},{key:"recalcDimensionsBasedOnFormat",value:function(t,e){var i=this.w,a=this.formatDates(t),s=this.removeOverlappingTS(a);i.globals.timescaleLabels=s.slice(),new nt(this.ctx).plotCoords()}},{key:"determineInterval",value:function(t){switch(!0){case t>1825:this.tickInterval="years";break;case t>800&&t<=1825:this.tickInterval="half_year";break;case t>180&&t<=800:this.tickInterval="months";break;case t>90&&t<=180:this.tickInterval="months_fortnight";break;case t>60&&t<=90:this.tickInterval="months_days";break;case t>30&&t<=60:this.tickInterval="week_days";break;case t>2&&t<=30:this.tickInterval="days";break;case t>.1&&t<=2:this.tickInterval="hours";break;case t<.1:this.tickInterval="minutes";break;default:this.tickInterval="days"}}},{key:"generateYearScale",value:function(t){var e=t.firstVal,i=t.currentMonth,a=t.currentYear,s=t.daysWidthOnXAxis,r=t.numberOfYears,n=e.minYear,o=0,l=new Y(this.ctx);if(e.minDate>1&&e.minMonth>0){var h=l.determineRemainingDaysOfYear(e.minYear,e.minMonth,e.minDate);o=(l.determineDaysOfYear(e.minYear)-h+1)*s,n=e.minYear+1,this.timeScaleArray.push({position:o,value:n,unit:"year",year:n,month:g.monthMod(i+1)})}else 1===e.minDate&&0===e.minMonth&&this.timeScaleArray.push({position:o,value:n,unit:"year",year:a,month:g.monthMod(i+1)});for(var c=n,d=o,u=0;u1){l=(h.determineDaysOfMonths(a+1,e.minYear)-i+1)*r,o=g.monthMod(a+1);var u=s+d,f=g.monthMod(o),p=o;0===o&&(c="year",p=u,f=1,u+=d+=1),this.timeScaleArray.push({position:l,value:p,unit:c,year:u,month:f})}else this.timeScaleArray.push({position:l,value:o,unit:c,year:s,month:g.monthMod(a)});for(var x=o+1,b=l,m=0,v=1;mn.determineDaysOfMonths(e+1,i)?(h=1,o="month",u=e+=1,e):e},d=(24-e.minHour)*s,u=l,f=c(h,i,a);0===e.minHour&&1===e.minDate&&(d=0,u=g.monthMod(e.minMonth),o="month",h=e.minDate,r++),this.timeScaleArray.push({position:d,value:u,unit:o,year:this._getYear(a,f,0),month:g.monthMod(f),day:h});for(var p=d,x=0;xo.determineDaysOfMonths(e+1,s)&&(x=1,e+=1),{month:e,date:x}},c=function(t,e){return t>o.determineDaysOfMonths(e+1,s)?e+=1:e},d=60-e.minMinute,u=d*r,f=e.minHour+1,p=f+1;60===d&&(u=0,p=(f=e.minHour)+1);var x=i,b=c(x,a);this.timeScaleArray.push({position:u,value:f,unit:l,day:x,hour:p,year:s,month:g.monthMod(b)});for(var m=u,v=0;v=24)p=0,l="day",b=h(x+=1,b).month,b=c(x,b);var y=this._getYear(s,b,0);m=0===p&&0===v?d*r:60*r+m;var w=0===p?x:p;this.timeScaleArray.push({position:m,value:w,unit:l,hour:p,day:x,year:y,month:g.monthMod(b)}),p++}}},{key:"generateMinuteScale",value:function(t){var e=t.firstVal,i=t.currentMinute,a=t.currentHour,s=t.currentDate,r=t.currentMonth,n=t.currentYear,o=t.minutesWidthOnXAxis,l=t.numberOfMinutes,h=o-(i-e.minMinute),c=e.minMinute+1,d=c+1,u=s,f=r,p=n,x=a;this.timeScaleArray.push({position:h,value:c,unit:"minute",day:u,hour:x,minute:d,year:p,month:g.monthMod(f)});for(var b=h,m=0;m=60&&(d=0,24===(x+=1)&&(x=0)),b=o+b,this.timeScaleArray.push({position:b,value:d,unit:"minute",hour:x,minute:d,day:u,year:this._getYear(n,f,0),month:g.monthMod(f)}),d++}},{key:"createRawDateString",value:function(t,e){var i=t.year;return i+="-"+("0"+t.month.toString()).slice(-2),"day"===t.unit?i+="day"===t.unit?"-"+("0"+e).slice(-2):"-01":i+="-"+("0"+(t.day?t.day:"1")).slice(-2),"hour"===t.unit?i+="hour"===t.unit?"T"+("0"+e).slice(-2):"T00":i+="T"+("0"+(t.hour?t.hour:"0")).slice(-2),i+="minute"===t.unit?":"+("0"+e).slice(-2)+":00":":00:00",this.utc&&(i+=".000Z"),i}},{key:"formatDates",value:function(t){var e=this,i=this.w;return t.map((function(t){var a=t.value.toString(),s=new Y(e.ctx),r=e.createRawDateString(t,a),n=s.getDate(r);if(void 0===i.config.xaxis.labels.format){var o="dd MMM",l=i.config.xaxis.labels.datetimeFormatter;"year"===t.unit&&(o=l.year),"month"===t.unit&&(o=l.month),"day"===t.unit&&(o=l.day),"hour"===t.unit&&(o=l.hour),"minute"===t.unit&&(o=l.minute),a=s.formatDate(n,o)}else a=s.formatDate(n,i.config.xaxis.labels.format);return{dateString:r,position:t.position,value:a,unit:t.unit,year:t.year,month:t.month}}))}},{key:"removeOverlappingTS",value:function(t){var e,i=this,a=new p(this.ctx),s=!1;t.length>0&&t[0].value&&t.every((function(e){return e.value.length===t[0].value.length}))&&(s=!0,e=a.getTextRects(t[0].value).width);var r=0,n=t.map((function(n,o){if(o>0&&i.w.config.xaxis.labels.hideOverlappingLabels){var l=s?e:a.getTextRects(t[r].value).width,h=t[r].position;return n.position>h+l+10?(r=o,n):null}return n}));return n=n.filter((function(t){return null!==t}))}},{key:"_getYear",value:function(t,e,i){return t+Math.floor(e/12)+i}}]),t}(),Tt=function(){function t(i,a){e(this,t),this.ctx=a,this.w=a.w,this.el=i}return a(t,[{key:"setupElements",value:function(){var t=this.w.globals,e=this.w.config,i=e.chart.type;t.axisCharts=["line","area","bar","rangeBar","candlestick","scatter","bubble","radar","heatmap"].indexOf(i)>-1,t.xyCharts=["line","area","bar","rangeBar","candlestick","scatter","bubble"].indexOf(i)>-1,t.isBarHorizontal=("bar"===e.chart.type||"rangeBar"===e.chart.type)&&e.plotOptions.bar.horizontal,t.chartClass=".apexcharts"+t.cuid,t.dom.baseEl=this.el,t.dom.elWrap=document.createElement("div"),p.setAttrs(t.dom.elWrap,{id:t.chartClass.substring(1),class:"apexcharts-canvas "+t.chartClass.substring(1)}),this.el.appendChild(t.dom.elWrap),t.dom.Paper=new window.SVG.Doc(t.dom.elWrap),t.dom.Paper.attr({class:"apexcharts-svg","xmlns:data":"ApexChartsNS",transform:"translate(".concat(e.chart.offsetX,", ").concat(e.chart.offsetY,")")}),t.dom.Paper.node.style.background=e.chart.background,this.setSVGDimensions(),t.dom.elGraphical=t.dom.Paper.group().attr({class:"apexcharts-inner apexcharts-graphical"}),t.dom.elAnnotations=t.dom.Paper.group().attr({class:"apexcharts-annotations"}),t.dom.elDefs=t.dom.Paper.defs(),t.dom.elLegendWrap=document.createElement("div"),t.dom.elLegendWrap.classList.add("apexcharts-legend"),t.dom.elWrap.appendChild(t.dom.elLegendWrap),t.dom.Paper.add(t.dom.elGraphical),t.dom.elGraphical.add(t.dom.elDefs)}},{key:"plotChartType",value:function(t,e){var i=this.w,a=i.config,s=i.globals,r={series:[],i:[]},n={series:[],i:[]},o={series:[],i:[]},l={series:[],i:[]},h={series:[],i:[]},c={series:[],i:[]};s.series.map((function(e,d){void 0!==t[d].type?("column"===t[d].type||"bar"===t[d].type?(s.series.length>1&&a.plotOptions.bar.horizontal&&console.warn("Horizontal bars are not supported in a mixed/combo chart. Please turn off `plotOptions.bar.horizontal`"),h.series.push(e),h.i.push(d),i.globals.columnSeries=h.series):"area"===t[d].type?(n.series.push(e),n.i.push(d)):"line"===t[d].type?(r.series.push(e),r.i.push(d)):"scatter"===t[d].type?(o.series.push(e),o.i.push(d)):"bubble"===t[d].type?(l.series.push(e),l.i.push(d)):"candlestick"===t[d].type?(c.series.push(e),c.i.push(d)):console.warn("You have specified an unrecognized chart type. Available types for this propery are line/area/column/bar/scatter/bubble"),s.comboCharts=!0):(r.series.push(e),r.i.push(d))}));var d=new Lt(this.ctx,e),g=new wt(this.ctx,e),u=new lt(this.ctx),f=new St(this.ctx),p=new F(this.ctx,e),x=new At(this.ctx),b=[];if(s.comboCharts){if(n.series.length>0&&b.push(d.draw(n.series,"area",n.i)),h.series.length>0)if(i.config.chart.stacked){var m=new yt(this.ctx,e);b.push(m.draw(h.series,h.i))}else{var v=new E(this.ctx,e);b.push(v.draw(h.series,h.i))}if(r.series.length>0&&b.push(d.draw(r.series,"line",r.i)),c.series.length>0&&b.push(g.draw(c.series,c.i)),o.series.length>0){var y=new Lt(this.ctx,e,!0);b.push(y.draw(o.series,"scatter",o.i))}if(l.series.length>0){var w=new Lt(this.ctx,e,!0);b.push(w.draw(l.series,"bubble",l.i))}}else switch(a.chart.type){case"line":b=d.draw(s.series,"line");break;case"area":b=d.draw(s.series,"area");break;case"bar":if(a.chart.stacked)b=new yt(this.ctx,e).draw(s.series);else b=new E(this.ctx,e).draw(s.series);break;case"candlestick":b=new wt(this.ctx,e).draw(s.series);break;case"rangeBar":b=p.draw(s.series);break;case"heatmap":b=new kt(this.ctx,e).draw(s.series);break;case"pie":case"donut":case"polarArea":b=u.draw(s.series);break;case"radialBar":b=f.draw(s.series);break;case"radar":b=x.draw(s.series);break;default:b=d.draw(s.series)}return b}},{key:"setSVGDimensions",value:function(){var t=this.w.globals,e=this.w.config;t.svgWidth=e.chart.width,t.svgHeight=e.chart.height;var i=g.getDimensions(this.el),a=e.chart.width.toString().split(/[0-9]+/g).pop();if("%"===a?g.isNumber(i[0])&&(0===i[0].width&&(i=g.getDimensions(this.el.parentNode)),t.svgWidth=i[0]*parseInt(e.chart.width,10)/100):"px"!==a&&""!==a||(t.svgWidth=parseInt(e.chart.width,10)),"auto"!==t.svgHeight&&""!==t.svgHeight)if("%"===e.chart.height.toString().split(/[0-9]+/g).pop()){var s=g.getDimensions(this.el.parentNode);t.svgHeight=s[1]*parseInt(e.chart.height,10)/100}else t.svgHeight=parseInt(e.chart.height,10);else t.axisCharts?t.svgHeight=t.svgWidth/1.61:t.svgHeight=t.svgWidth/1.2;t.svgWidth<0&&(t.svgWidth=0),t.svgHeight<0&&(t.svgHeight=0),p.setAttrs(t.dom.Paper.node,{width:t.svgWidth,height:t.svgHeight});var r=e.chart.sparkline.enabled?0:t.axisCharts?e.chart.parentHeightOffset:0;t.dom.Paper.node.parentNode.parentNode.style.minHeight=t.svgHeight+r+"px",t.dom.elWrap.style.width=t.svgWidth+"px",t.dom.elWrap.style.height=t.svgHeight+"px"}},{key:"shiftGraphPosition",value:function(){var t=this.w.globals,e=t.translateY,i={transform:"translate("+t.translateX+", "+e+")"};p.setAttrs(t.dom.elGraphical.node,i),t.x2SpaceAvailable=t.svgWidth-t.dom.elGraphical.x()-t.gridWidth}},{key:"resizeNonAxisCharts",value:function(){var t=this.w,e=t.globals,i=0,a=t.config.chart.sparkline.enabled?1:15;a+=t.config.grid.padding.bottom,"top"!==t.config.legend.position&&"bottom"!==t.config.legend.position||!t.config.legend.show||t.config.legend.floating||(i=new ct(this.ctx).legendHelpers.getLegendBBox().clwh+10);var s=t.globals.dom.baseEl.querySelector(".apexcharts-radialbar"),r=2.05*t.globals.radialSize;if(s&&!t.config.chart.sparkline.enabled){var n=g.getBoundingClientRect(s);r=n.bottom;var o=n.bottom-n.top;r=Math.max(2.05*t.globals.radialSize,o)}var l=r+e.translateY+i+a;e.dom.elLegendForeign&&e.dom.elLegendForeign.setAttribute("height",l),e.dom.elWrap.style.height=l+"px",p.setAttrs(e.dom.Paper.node,{height:l}),e.dom.Paper.node.parentNode.parentNode.style.minHeight=l+"px"}},{key:"coreCalculations",value:function(){new U(this.ctx).init()}},{key:"resetGlobals",value:function(){var t=this,e=function(){return t.w.config.series.map((function(t){return[]}))},i=new H,a=this.w.globals;i.initGlobalVars(a),a.seriesXvalues=e(),a.seriesYvalues=e()}},{key:"isMultipleY",value:function(){if(this.w.config.yaxis.constructor===Array&&this.w.config.yaxis.length>1)return this.w.globals.isMultipleYAxis=!0,!0}},{key:"xySettings",value:function(){var t=null,e=this.w;if(e.globals.axisCharts){if("back"===e.config.xaxis.crosshairs.position)new Q(this.ctx).drawXCrosshairs();if("back"===e.config.yaxis[0].crosshairs.position)new Q(this.ctx).drawYCrosshairs();if("datetime"===e.config.xaxis.type&&void 0===e.config.xaxis.labels.formatter){var i=new Pt(this.ctx),a=[];isFinite(e.globals.minX)&&isFinite(e.globals.maxX)&&!e.globals.isBarHorizontal?a=i.calculateTimeScaleTicks(e.globals.minX,e.globals.maxX):e.globals.isBarHorizontal&&(a=i.calculateTimeScaleTicks(e.globals.minY,e.globals.maxY)),i.recalcDimensionsBasedOnFormat(a)}t=new m(this.ctx).getCalculatedRatios()}return t}},{key:"updateSourceChart",value:function(t){this.ctx.w.globals.selection=void 0,this.ctx.updateHelpers._updateOptions({chart:{selection:{xaxis:{min:t.w.globals.minX,max:t.w.globals.maxX}}}},!1,!1)}},{key:"setupBrushHandler",value:function(){var t=this,e=this.w;if(e.config.chart.brush.enabled&&"function"!=typeof e.config.chart.events.selection){var i=e.config.chart.brush.targets||[e.config.chart.brush.target];i.forEach((function(e){var i=ApexCharts.getChartByID(e);i.w.globals.brushSource=t.ctx,"function"!=typeof i.w.config.chart.events.zoomed&&(i.w.config.chart.events.zoomed=function(){t.updateSourceChart(i)}),"function"!=typeof i.w.config.chart.events.scrolled&&(i.w.config.chart.events.scrolled=function(){t.updateSourceChart(i)})})),e.config.chart.events.selection=function(t,a){i.forEach((function(t){var i=ApexCharts.getChartByID(t),s=g.clone(e.config.yaxis);e.config.chart.brush.autoScaleYaxis&&1===i.w.globals.series.length&&(s=new j(i).autoScaleY(i,s,a));i.ctx.updateHelpers._updateOptions({xaxis:{min:a.xaxis.min,max:a.xaxis.max},yaxis:n({},i.w.config.yaxis[0],{min:s[0].min,max:s[0].max})},!1,!1,!1,!1)}))}}}}]),t}(),zt=function(){function i(t){e(this,i),this.ctx=t,this.w=t.w}return a(i,[{key:"_updateOptions",value:function(e){var i=this,a=arguments.length>1&&void 0!==arguments[1]&&arguments[1],s=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],n=arguments.length>4&&void 0!==arguments[4]&&arguments[4],o=[this.ctx];r&&(o=this.ctx.getSyncedCharts()),this.ctx.w.globals.isExecCalled&&(o=[this.ctx],this.ctx.w.globals.isExecCalled=!1),o.forEach((function(r){var o=r.w;return o.globals.shouldAnimate=s,a||(o.globals.resized=!0,o.globals.dataChanged=!0,s&&r.series.getPreviousPaths()),e&&"object"===t(e)&&(r.config=new D(e),e=m.extendArrayProps(r.config,e,o),r.w.globals.chartID!==i.ctx.w.globals.chartID&&delete e.series,o.config=g.extend(o.config,e),n&&(o.globals.lastXAxis=[],o.globals.lastYAxis=[],o.globals.initialConfig=g.extend({},o.config),o.globals.initialSeries=JSON.parse(JSON.stringify(o.config.series)))),r.update(e)}))}},{key:"_updateSeries",value:function(t,e){var i,a=this,s=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=this.w;return r.globals.shouldAnimate=e,r.globals.dataChanged=!0,e&&this.ctx.series.getPreviousPaths(),r.globals.axisCharts?(0===(i=t.map((function(t,e){return a._extendSeries(t,e)}))).length&&(i=[{data:[]}]),r.config.series=i):r.config.series=t.slice(),s&&(r.globals.initialConfig.series=JSON.parse(JSON.stringify(r.config.series)),r.globals.initialSeries=JSON.parse(JSON.stringify(r.config.series))),this.ctx.update()}},{key:"_extendSeries",value:function(t,e){var i=this.w;return n({},i.config.series[e],{name:t.name?t.name:i.config.series[e]&&i.config.series[e].name,type:t.type?t.type:i.config.series[e]&&i.config.series[e].type,data:t.data?t.data:i.config.series[e]&&i.config.series[e].data})}},{key:"toggleDataPointSelection",value:function(t,e){var i=this.w,a=null,s=".apexcharts-series[data\\:realIndex='".concat(t,"']");i.globals.axisCharts?a=i.globals.dom.Paper.select("".concat(s," path[j='").concat(e,"'], ").concat(s," circle[j='").concat(e,"'], ").concat(s," rect[j='").concat(e,"']")).members[0]:void 0===e&&(a=i.globals.dom.Paper.select("".concat(s," path[j='").concat(t,"']")).members[0],("pie"===i.config.chart.type||"polarArea"===i.config.chart.type||"donut"===i.config.chart.type)&&new lt(this.ctx).pieClicked(t));return a?(new p(this.ctx).pathMouseDown(a,null),a.node?a.node:null):(console.warn("toggleDataPointSelection: Element not found"),null)}},{key:"forceXAxisUpdate",value:function(t){var e=this.w;if(["min","max"].forEach((function(i){void 0!==t.xaxis[i]&&(e.config.xaxis[i]=t.xaxis[i],e.globals.lastXAxis[i]=t.xaxis[i])})),t.xaxis.categories&&t.xaxis.categories.length&&(e.config.xaxis.categories=t.xaxis.categories),e.config.xaxis.convertedCatToNumeric){var i=new R(t);t=i.convertCatToNumericXaxis(t,this.ctx)}return t}},{key:"forceYAxisUpdate",value:function(t){var e=this.w;return e.config.chart.stacked&&"100%"===e.config.chart.stackType&&(Array.isArray(t.yaxis)?t.yaxis.forEach((function(e,i){t.yaxis[i].min=0,t.yaxis[i].max=100})):(t.yaxis.min=0,t.yaxis.max=100)),t}},{key:"revertDefaultAxisMinMax",value:function(){var t=this,e=this.w;e.config.xaxis.min=e.globals.lastXAxis.min,e.config.xaxis.max=e.globals.lastXAxis.max,e.config.yaxis.map((function(i,a){e.globals.zoomed?void 0!==e.globals.lastYAxis[a]&&(i.min=e.globals.lastYAxis[a].min,i.max=e.globals.lastYAxis[a].max):void 0!==t.ctx.opts.yaxis[a]&&(i.min=t.ctx.opts.yaxis[a].min,i.max=t.ctx.opts.yaxis[a].max)}))}}]),i}();w="undefined"!=typeof window?window:void 0,k=function(e,i){var a=(void 0!==this?this:e).SVG=function(t){if(a.supported)return t=new a.Doc(t),a.parser.draw||a.prepare(),t};if(a.ns="http://www.w3.org/2000/svg",a.xmlns="http://www.w3.org/2000/xmlns/",a.xlink="http://www.w3.org/1999/xlink",a.svgjs="http://svgjs.com/svgjs",a.supported=!0,!a.supported)return!1;a.did=1e3,a.eid=function(t){return"Svgjs"+d(t)+a.did++},a.create=function(t){var e=i.createElementNS(this.ns,t);return e.setAttribute("id",this.eid(t)),e},a.extend=function(){var t,e;e=(t=[].slice.call(arguments)).pop();for(var i=t.length-1;i>=0;i--)if(t[i])for(var s in e)t[i].prototype[s]=e[s];a.Set&&a.Set.inherit&&a.Set.inherit()},a.invent=function(t){var e="function"==typeof t.create?t.create:function(){this.constructor.call(this,a.create(t.create))};return t.inherit&&(e.prototype=new t.inherit),t.extend&&a.extend(e,t.extend),t.construct&&a.extend(t.parent||a.Container,t.construct),e},a.adopt=function(t){return t?t.instance?t.instance:((i="svg"==t.nodeName?t.parentNode instanceof e.SVGElement?new a.Nested:new a.Doc:"linearGradient"==t.nodeName?new a.Gradient("linear"):"radialGradient"==t.nodeName?new a.Gradient("radial"):a[d(t.nodeName)]?new(a[d(t.nodeName)]):new a.Element(t)).type=t.nodeName,i.node=t,t.instance=i,i instanceof a.Doc&&i.namespace().defs(),i.setData(JSON.parse(t.getAttribute("svgjs:data"))||{}),i):null;var i},a.prepare=function(){var t=i.getElementsByTagName("body")[0],e=(t?new a.Doc(t):a.adopt(i.documentElement).nested()).size(2,0);a.parser={body:t||i.documentElement,draw:e.style("opacity:0;position:absolute;left:-100%;top:-100%;overflow:hidden").node,poly:e.polyline().node,path:e.path().node,native:a.create("svg")}},a.parser={native:a.create("svg")},i.addEventListener("DOMContentLoaded",(function(){a.parser.draw||a.prepare()}),!1),a.regex={numberAndUnit:/^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i,hex:/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,rgb:/rgb\((\d+),(\d+),(\d+)\)/,reference:/#([a-z0-9\-_]+)/i,transforms:/\)\s*,?\s*/,whitespace:/\s/g,isHex:/^#[a-f0-9]{3,6}$/i,isRgb:/^rgb\(/,isCss:/[^:]+:[^;]+;?/,isBlank:/^(\s+)?$/,isNumber:/^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,isPercent:/^-?[\d\.]+%$/,isImage:/\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i,delimiter:/[\s,]+/,hyphen:/([^e])\-/gi,pathLetters:/[MLHVCSQTAZ]/gi,isPathLetter:/[MLHVCSQTAZ]/i,numbersWithDots:/((\d?\.\d+(?:e[+-]?\d+)?)((?:\.\d+(?:e[+-]?\d+)?)+))+/gi,dots:/\./g},a.utils={map:function(t,e){for(var i=t.length,a=[],s=0;s1?1:t,new a.Color({r:~~(this.r+(this.destination.r-this.r)*t),g:~~(this.g+(this.destination.g-this.g)*t),b:~~(this.b+(this.destination.b-this.b)*t)})):this}}),a.Color.test=function(t){return t+="",a.regex.isHex.test(t)||a.regex.isRgb.test(t)},a.Color.isRgb=function(t){return t&&"number"==typeof t.r&&"number"==typeof t.g&&"number"==typeof t.b},a.Color.isColor=function(t){return a.Color.isRgb(t)||a.Color.test(t)},a.Array=function(t,e){0==(t=(t||[]).valueOf()).length&&e&&(t=e.valueOf()),this.value=this.parse(t)},a.extend(a.Array,{toString:function(){return this.value.join(" ")},valueOf:function(){return this.value},parse:function(t){return t=t.valueOf(),Array.isArray(t)?t:this.split(t)}}),a.PointArray=function(t,e){a.Array.call(this,t,e||[[0,0]])},a.PointArray.prototype=new a.Array,a.PointArray.prototype.constructor=a.PointArray;for(var s={M:function(t,e,i){return e.x=i.x=t[0],e.y=i.y=t[1],["M",e.x,e.y]},L:function(t,e){return e.x=t[0],e.y=t[1],["L",t[0],t[1]]},H:function(t,e){return e.x=t[0],["H",t[0]]},V:function(t,e){return e.y=t[0],["V",t[0]]},C:function(t,e){return e.x=t[4],e.y=t[5],["C",t[0],t[1],t[2],t[3],t[4],t[5]]},Q:function(t,e){return e.x=t[2],e.y=t[3],["Q",t[0],t[1],t[2],t[3]]},Z:function(t,e,i){return e.x=i.x,e.y=i.y,["Z"]}},r="mlhvqtcsaz".split(""),n=0,o=r.length;nl);return r},bbox:function(){return a.parser.draw||a.prepare(),a.parser.path.setAttribute("d",this.toString()),a.parser.path.getBBox()}}),a.Number=a.invent({create:function(t,e){this.value=0,this.unit=e||"","number"==typeof t?this.value=isNaN(t)?0:isFinite(t)?t:t<0?-34e37:34e37:"string"==typeof t?(e=t.match(a.regex.numberAndUnit))&&(this.value=parseFloat(e[1]),"%"==e[5]?this.value/=100:"s"==e[5]&&(this.value*=1e3),this.unit=e[5]):t instanceof a.Number&&(this.value=t.valueOf(),this.unit=t.unit)},extend:{toString:function(){return("%"==this.unit?~~(1e8*this.value)/1e6:"s"==this.unit?this.value/1e3:this.value)+this.unit},toJSON:function(){return this.toString()},valueOf:function(){return this.value},plus:function(t){return t=new a.Number(t),new a.Number(this+t,this.unit||t.unit)},minus:function(t){return t=new a.Number(t),new a.Number(this-t,this.unit||t.unit)},times:function(t){return t=new a.Number(t),new a.Number(this*t,this.unit||t.unit)},divide:function(t){return t=new a.Number(t),new a.Number(this/t,this.unit||t.unit)},to:function(t){var e=new a.Number(this);return"string"==typeof t&&(e.unit=t),e},morph:function(t){return this.destination=new a.Number(t),t.relative&&(this.destination.value+=this.value),this},at:function(t){return this.destination?new a.Number(this.destination).minus(this).times(t).plus(this):this}}}),a.Element=a.invent({create:function(t){this._stroke=a.defaults.attrs.stroke,this._event=null,this.dom={},(this.node=t)&&(this.type=t.nodeName,this.node.instance=this,this._stroke=t.getAttribute("stroke")||this._stroke)},extend:{x:function(t){return this.attr("x",t)},y:function(t){return this.attr("y",t)},cx:function(t){return null==t?this.x()+this.width()/2:this.x(t-this.width()/2)},cy:function(t){return null==t?this.y()+this.height()/2:this.y(t-this.height()/2)},move:function(t,e){return this.x(t).y(e)},center:function(t,e){return this.cx(t).cy(e)},width:function(t){return this.attr("width",t)},height:function(t){return this.attr("height",t)},size:function(t,e){var i=u(this,t,e);return this.width(new a.Number(i.width)).height(new a.Number(i.height))},clone:function(t){this.writeDataToDom();var e=x(this.node.cloneNode(!0));return t?t.add(e):this.after(e),e},remove:function(){return this.parent()&&this.parent().removeElement(this),this},replace:function(t){return this.after(t).remove(),t},addTo:function(t){return t.put(this)},putIn:function(t){return t.add(this)},id:function(t){return this.attr("id",t)},show:function(){return this.style("display","")},hide:function(){return this.style("display","none")},visible:function(){return"none"!=this.style("display")},toString:function(){return this.attr("id")},classes:function(){var t=this.attr("class");return null==t?[]:t.trim().split(a.regex.delimiter)},hasClass:function(t){return-1!=this.classes().indexOf(t)},addClass:function(t){if(!this.hasClass(t)){var e=this.classes();e.push(t),this.attr("class",e.join(" "))}return this},removeClass:function(t){return this.hasClass(t)&&this.attr("class",this.classes().filter((function(e){return e!=t})).join(" ")),this},toggleClass:function(t){return this.hasClass(t)?this.removeClass(t):this.addClass(t)},reference:function(t){return a.get(this.attr(t))},parent:function(t){var i=this;if(!i.node.parentNode)return null;if(i=a.adopt(i.node.parentNode),!t)return i;for(;i&&i.node instanceof e.SVGElement;){if("string"==typeof t?i.matches(t):i instanceof t)return i;if(!i.node.parentNode||"#document"==i.node.parentNode.nodeName)return null;i=a.adopt(i.node.parentNode)}},doc:function(){return this instanceof a.Doc?this:this.parent(a.Doc)},parents:function(t){var e=[],i=this;do{if(!(i=i.parent(t))||!i.node)break;e.push(i)}while(i.parent);return e},matches:function(t){return function(t,e){return(t.matches||t.matchesSelector||t.msMatchesSelector||t.mozMatchesSelector||t.webkitMatchesSelector||t.oMatchesSelector).call(t,e)}(this.node,t)},native:function(){return this.node},svg:function(t){var e=i.createElement("svg");if(!(t&&this instanceof a.Parent))return e.appendChild(t=i.createElement("svg")),this.writeDataToDom(),t.appendChild(this.node.cloneNode(!0)),e.innerHTML.replace(/^/,"").replace(/<\/svg>$/,"");e.innerHTML=""+t.replace(/\n/,"").replace(/<([\w:-]+)([^<]+?)\/>/g,"<$1$2>")+"";for(var s=0,r=e.firstChild.childNodes.length;s":function(t){return-Math.cos(t*Math.PI)/2+.5},">":function(t){return Math.sin(t*Math.PI/2)},"<":function(t){return 1-Math.cos(t*Math.PI/2)}},a.morph=function(t){return function(e,i){return new a.MorphObj(e,i).at(t)}},a.Situation=a.invent({create:function(t){this.init=!1,this.reversed=!1,this.reversing=!1,this.duration=new a.Number(t.duration).valueOf(),this.delay=new a.Number(t.delay).valueOf(),this.start=+new Date+this.delay,this.finish=this.start+this.duration,this.ease=t.ease,this.loop=0,this.loops=!1,this.animations={},this.attrs={},this.styles={},this.transforms=[],this.once={}}}),a.FX=a.invent({create:function(t){this._target=t,this.situations=[],this.active=!1,this.situation=null,this.paused=!1,this.lastPos=0,this.pos=0,this.absPos=0,this._speed=1},extend:{animate:function(e,i,s){"object"===t(e)&&(i=e.ease,s=e.delay,e=e.duration);var r=new a.Situation({duration:e||1e3,delay:s||0,ease:a.easing[i||"-"]||i});return this.queue(r),this},target:function(t){return t&&t instanceof a.Element?(this._target=t,this):this._target},timeToAbsPos:function(t){return(t-this.situation.start)/(this.situation.duration/this._speed)},absPosToTime:function(t){return this.situation.duration/this._speed*t+this.situation.start},startAnimFrame:function(){this.stopAnimFrame(),this.animationFrame=e.requestAnimationFrame(function(){this.step()}.bind(this))},stopAnimFrame:function(){e.cancelAnimationFrame(this.animationFrame)},start:function(){return!this.active&&this.situation&&(this.active=!0,this.startCurrent()),this},startCurrent:function(){return this.situation.start=+new Date+this.situation.delay/this._speed,this.situation.finish=this.situation.start+this.situation.duration/this._speed,this.initAnimations().step()},queue:function(t){return("function"==typeof t||t instanceof a.Situation)&&this.situations.push(t),this.situation||(this.situation=this.situations.shift()),this},dequeue:function(){return this.stop(),this.situation=this.situations.shift(),this.situation&&(this.situation instanceof a.Situation?this.start():this.situation.call(this)),this},initAnimations:function(){var t,e=this.situation;if(e.init)return this;for(var i in e.animations){t=this.target()[i](),Array.isArray(t)||(t=[t]),Array.isArray(e.animations[i])||(e.animations[i]=[e.animations[i]]);for(var s=t.length;s--;)e.animations[i][s]instanceof a.Number&&(t[s]=new a.Number(t[s])),e.animations[i][s]=t[s].morph(e.animations[i][s])}for(var i in e.attrs)e.attrs[i]=new a.MorphObj(this.target().attr(i),e.attrs[i]);for(var i in e.styles)e.styles[i]=new a.MorphObj(this.target().style(i),e.styles[i]);return e.initialTransformation=this.target().matrixify(),e.init=!0,this},clearQueue:function(){return this.situations=[],this},clearCurrent:function(){return this.situation=null,this},stop:function(t,e){var i=this.active;return this.active=!1,e&&this.clearQueue(),t&&this.situation&&(!i&&this.startCurrent(),this.atEnd()),this.stopAnimFrame(),this.clearCurrent()},after:function(t){var e=this.last();return this.target().on("finished.fx",(function i(a){a.detail.situation==e&&(t.call(this,e),this.off("finished.fx",i))})),this._callStart()},during:function(t){var e=this.last(),i=function(i){i.detail.situation==e&&t.call(this,i.detail.pos,a.morph(i.detail.pos),i.detail.eased,e)};return this.target().off("during.fx",i).on("during.fx",i),this.after((function(){this.off("during.fx",i)})),this._callStart()},afterAll:function(t){var e=function e(i){t.call(this),this.off("allfinished.fx",e)};return this.target().off("allfinished.fx",e).on("allfinished.fx",e),this._callStart()},last:function(){return this.situations.length?this.situations[this.situations.length-1]:this.situation},add:function(t,e,i){return this.last()[i||"animations"][t]=e,this._callStart()},step:function(t){var e,i,a;t||(this.absPos=this.timeToAbsPos(+new Date)),!1!==this.situation.loops?(e=Math.max(this.absPos,0),i=Math.floor(e),!0===this.situation.loops||ithis.lastPos&&r<=s&&(this.situation.once[r].call(this.target(),this.pos,s),delete this.situation.once[r]);return this.active&&this.target().fire("during",{pos:this.pos,eased:s,fx:this,situation:this.situation}),this.situation?(this.eachAt(),1==this.pos&&!this.situation.reversed||this.situation.reversed&&0==this.pos?(this.stopAnimFrame(),this.target().fire("finished",{fx:this,situation:this.situation}),this.situations.length||(this.target().fire("allfinished"),this.situations.length||(this.target().off(".fx"),this.active=!1)),this.active?this.dequeue():this.clearCurrent()):!this.paused&&this.active&&this.startAnimFrame(),this.lastPos=s,this):this},eachAt:function(){var t,e=this,i=this.target(),s=this.situation;for(var r in s.animations)t=[].concat(s.animations[r]).map((function(t){return"string"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),i[r].apply(i,t);for(var r in s.attrs)t=[r].concat(s.attrs[r]).map((function(t){return"string"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),i.attr.apply(i,t);for(var r in s.styles)t=[r].concat(s.styles[r]).map((function(t){return"string"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),i.style.apply(i,t);if(s.transforms.length){t=s.initialTransformation,r=0;for(var n=s.transforms.length;r=0;--s)this[v[s]]=null!=e[v[s]]?e[v[s]]:i[v[s]]},extend:{extract:function(){var t=f(this,0,1),e=(f(this,1,0),180/Math.PI*Math.atan2(t.y,t.x)-90);return{x:this.e,y:this.f,transformedX:(this.e*Math.cos(e*Math.PI/180)+this.f*Math.sin(e*Math.PI/180))/Math.sqrt(this.a*this.a+this.b*this.b),transformedY:(this.f*Math.cos(e*Math.PI/180)+this.e*Math.sin(-e*Math.PI/180))/Math.sqrt(this.c*this.c+this.d*this.d),rotation:e,a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f,matrix:new a.Matrix(this)}},clone:function(){return new a.Matrix(this)},morph:function(t){return this.destination=new a.Matrix(t),this},multiply:function(t){return new a.Matrix(this.native().multiply(function(t){return t instanceof a.Matrix||(t=new a.Matrix(t)),t}(t).native()))},inverse:function(){return new a.Matrix(this.native().inverse())},translate:function(t,e){return new a.Matrix(this.native().translate(t||0,e||0))},native:function(){for(var t=a.parser.native.createSVGMatrix(),e=v.length-1;e>=0;e--)t[v[e]]=this[v[e]];return t},toString:function(){return"matrix("+m(this.a)+","+m(this.b)+","+m(this.c)+","+m(this.d)+","+m(this.e)+","+m(this.f)+")"}},parent:a.Element,construct:{ctm:function(){return new a.Matrix(this.node.getCTM())},screenCTM:function(){if(this instanceof a.Nested){var t=this.rect(1,1),e=t.node.getScreenCTM();return t.remove(),new a.Matrix(e)}return new a.Matrix(this.node.getScreenCTM())}}}),a.Point=a.invent({create:function(e,i){var a;a=Array.isArray(e)?{x:e[0],y:e[1]}:"object"===t(e)?{x:e.x,y:e.y}:null!=e?{x:e,y:null!=i?i:e}:{x:0,y:0},this.x=a.x,this.y=a.y},extend:{clone:function(){return new a.Point(this)},morph:function(t,e){return this.destination=new a.Point(t,e),this}}}),a.extend(a.Element,{point:function(t,e){return new a.Point(t,e).transform(this.screenCTM().inverse())}}),a.extend(a.Element,{attr:function(e,i,s){if(null==e){for(e={},s=(i=this.node.attributes).length-1;s>=0;s--)e[i[s].nodeName]=a.regex.isNumber.test(i[s].nodeValue)?parseFloat(i[s].nodeValue):i[s].nodeValue;return e}if("object"===t(e))for(var r in e)this.attr(r,e[r]);else if(null===i)this.node.removeAttribute(e);else{if(null==i)return null==(i=this.node.getAttribute(e))?a.defaults.attrs[e]:a.regex.isNumber.test(i)?parseFloat(i):i;"stroke-width"==e?this.attr("stroke",parseFloat(i)>0?this._stroke:null):"stroke"==e&&(this._stroke=i),"fill"!=e&&"stroke"!=e||(a.regex.isImage.test(i)&&(i=this.doc().defs().image(i,0,0)),i instanceof a.Image&&(i=this.doc().defs().pattern(0,0,(function(){this.add(i)})))),"number"==typeof i?i=new a.Number(i):a.Color.isColor(i)?i=new a.Color(i):Array.isArray(i)&&(i=new a.Array(i)),"leading"==e?this.leading&&this.leading(i):"string"==typeof s?this.node.setAttributeNS(s,e,i.toString()):this.node.setAttribute(e,i.toString()),!this.rebuild||"font-size"!=e&&"x"!=e||this.rebuild(e,i)}return this}}),a.extend(a.Element,{transform:function(e,i){var s;return"object"!==t(e)?(s=new a.Matrix(this).extract(),"string"==typeof e?s[e]:s):(s=new a.Matrix(this),i=!!i||!!e.relative,null!=e.a&&(s=i?s.multiply(new a.Matrix(e)):new a.Matrix(e)),this.attr("transform",s))}}),a.extend(a.Element,{untransform:function(){return this.attr("transform",null)},matrixify:function(){return(this.attr("transform")||"").split(a.regex.transforms).slice(0,-1).map((function(t){var e=t.trim().split("(");return[e[0],e[1].split(a.regex.delimiter).map((function(t){return parseFloat(t)}))]})).reduce((function(t,e){return"matrix"==e[0]?t.multiply(p(e[1])):t[e[0]].apply(t,e[1])}),new a.Matrix)},toParent:function(t){if(this==t)return this;var e=this.screenCTM(),i=t.screenCTM().inverse();return this.addTo(t).untransform().transform(i.multiply(e)),this},toDoc:function(){return this.toParent(this.doc())}}),a.Transformation=a.invent({create:function(e,i){if(arguments.length>1&&"boolean"!=typeof i)return this.constructor.call(this,[].slice.call(arguments));if(Array.isArray(e))for(var a=0,s=this.arguments.length;a=0},index:function(t){return[].slice.call(this.node.childNodes).indexOf(t.node)},get:function(t){return a.adopt(this.node.childNodes[t])},first:function(){return this.get(0)},last:function(){return this.get(this.node.childNodes.length-1)},each:function(t,e){for(var i=this.children(),s=0,r=i.length;s=0;i--)t.childNodes[i]instanceof e.SVGElement&&x(t.childNodes[i]);return a.adopt(t).id(a.eid(t.nodeName))}function b(t){return null==t.x&&(t.x=0,t.y=0,t.width=0,t.height=0),t.w=t.width,t.h=t.height,t.x2=t.x+t.width,t.y2=t.y+t.height,t.cx=t.x+t.width/2,t.cy=t.y+t.height/2,t}function m(t){return Math.abs(t)>1e-37?t:0}["fill","stroke"].forEach((function(t){var e={};e[t]=function(e){if(void 0===e)return this;if("string"==typeof e||a.Color.isRgb(e)||e&&"function"==typeof e.fill)this.attr(t,e);else for(var i=l[t].length-1;i>=0;i--)null!=e[l[t][i]]&&this.attr(l.prefix(t,l[t][i]),e[l[t][i]]);return this},a.extend(a.Element,a.FX,e)})),a.extend(a.Element,a.FX,{translate:function(t,e){return this.transform({x:t,y:e})},matrix:function(t){return this.attr("transform",new a.Matrix(6==arguments.length?[].slice.call(arguments):t))},opacity:function(t){return this.attr("opacity",t)},dx:function(t){return this.x(new a.Number(t).plus(this instanceof a.FX?0:this.x()),!0)},dy:function(t){return this.y(new a.Number(t).plus(this instanceof a.FX?0:this.y()),!0)}}),a.extend(a.Path,{length:function(){return this.node.getTotalLength()},pointAt:function(t){return this.node.getPointAtLength(t)}}),a.Set=a.invent({create:function(t){Array.isArray(t)?this.members=t:this.clear()},extend:{add:function(){for(var t=[].slice.call(arguments),e=0,i=t.length;e-1&&this.members.splice(e,1),this},each:function(t){for(var e=0,i=this.members.length;e=0},index:function(t){return this.members.indexOf(t)},get:function(t){return this.members[t]},first:function(){return this.get(0)},last:function(){return this.get(this.members.length-1)},valueOf:function(){return this.members}},construct:{set:function(t){return new a.Set(t)}}}),a.FX.Set=a.invent({create:function(t){this.set=t}}),a.Set.inherit=function(){var t=[];for(var e in a.Shape.prototype)"function"==typeof a.Shape.prototype[e]&&"function"!=typeof a.Set.prototype[e]&&t.push(e);for(var e in t.forEach((function(t){a.Set.prototype[t]=function(){for(var e=0,i=this.members.length;e=0;t--)delete this.memory()[arguments[t]];return this},memory:function(){return this._memory||(this._memory={})}}),a.get=function(t){var e=i.getElementById(function(t){var e=(t||"").toString().match(a.regex.reference);if(e)return e[1]}(t)||t);return a.adopt(e)},a.select=function(t,e){return new a.Set(a.utils.map((e||i).querySelectorAll(t),(function(t){return a.adopt(t)})))},a.extend(a.Parent,{select:function(t){return a.select(t,this.node)}});var v="abcdef".split("");if("function"!=typeof e.CustomEvent){var y=function(t,e){e=e||{bubbles:!1,cancelable:!1,detail:void 0};var a=i.createEvent("CustomEvent");return a.initCustomEvent(t,e.bubbles,e.cancelable,e.detail),a};y.prototype=e.Event.prototype,a.CustomEvent=y}else a.CustomEvent=e.CustomEvent;return a},"function"==typeof define&&define.amd?define((function(){return k(w,w.document)})):"object"===("undefined"==typeof exports?"undefined":t(exports))&&"undefined"!=typeof module?module.exports=w.document?k(w,w.document):function(t){return k(t,t.document)}:w.SVG=k(w,w.document), +/*! svg.filter.js - v2.0.2 - 2016-02-24 + * https://github.com/wout/svg.filter.js + * Copyright (c) 2016 Wout Fierens; Licensed MIT */ +function(){SVG.Filter=SVG.invent({create:"filter",inherit:SVG.Parent,extend:{source:"SourceGraphic",sourceAlpha:"SourceAlpha",background:"BackgroundImage",backgroundAlpha:"BackgroundAlpha",fill:"FillPaint",stroke:"StrokePaint",autoSetIn:!0,put:function(t,e){return this.add(t,e),!t.attr("in")&&this.autoSetIn&&t.attr("in",this.source),t.attr("result")||t.attr("result",t),t},blend:function(t,e,i){return this.put(new SVG.BlendEffect(t,e,i))},colorMatrix:function(t,e){return this.put(new SVG.ColorMatrixEffect(t,e))},convolveMatrix:function(t){return this.put(new SVG.ConvolveMatrixEffect(t))},componentTransfer:function(t){return this.put(new SVG.ComponentTransferEffect(t))},composite:function(t,e,i){return this.put(new SVG.CompositeEffect(t,e,i))},flood:function(t,e){return this.put(new SVG.FloodEffect(t,e))},offset:function(t,e){return this.put(new SVG.OffsetEffect(t,e))},image:function(t){return this.put(new SVG.ImageEffect(t))},merge:function(){var t=[void 0];for(var e in arguments)t.push(arguments[e]);return this.put(new(SVG.MergeEffect.bind.apply(SVG.MergeEffect,t)))},gaussianBlur:function(t,e){return this.put(new SVG.GaussianBlurEffect(t,e))},morphology:function(t,e){return this.put(new SVG.MorphologyEffect(t,e))},diffuseLighting:function(t,e,i){return this.put(new SVG.DiffuseLightingEffect(t,e,i))},displacementMap:function(t,e,i,a,s){return this.put(new SVG.DisplacementMapEffect(t,e,i,a,s))},specularLighting:function(t,e,i,a){return this.put(new SVG.SpecularLightingEffect(t,e,i,a))},tile:function(){return this.put(new SVG.TileEffect)},turbulence:function(t,e,i,a,s){return this.put(new SVG.TurbulenceEffect(t,e,i,a,s))},toString:function(){return"url(#"+this.attr("id")+")"}}}),SVG.extend(SVG.Defs,{filter:function(t){var e=this.put(new SVG.Filter);return"function"==typeof t&&t.call(e,e),e}}),SVG.extend(SVG.Container,{filter:function(t){return this.defs().filter(t)}}),SVG.extend(SVG.Element,SVG.G,SVG.Nested,{filter:function(t){return this.filterer=t instanceof SVG.Element?t:this.doc().filter(t),this.doc()&&this.filterer.doc()!==this.doc()&&this.doc().defs().add(this.filterer),this.attr("filter",this.filterer),this.filterer},unfilter:function(t){return this.filterer&&!0===t&&this.filterer.remove(),delete this.filterer,this.attr("filter",null)}}),SVG.Effect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(t){return null==t?this.parent()&&this.parent().select('[result="'+this.attr("in")+'"]').get(0)||this.attr("in"):this.attr("in",t)},result:function(t){return null==t?this.attr("result"):this.attr("result",t)},toString:function(){return this.result()}}}),SVG.ParentEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Parent,extend:{in:function(t){return null==t?this.parent()&&this.parent().select('[result="'+this.attr("in")+'"]').get(0)||this.attr("in"):this.attr("in",t)},result:function(t){return null==t?this.attr("result"):this.attr("result",t)},toString:function(){return this.result()}}});var t={blend:function(t,e){return this.parent()&&this.parent().blend(this,t,e)},colorMatrix:function(t,e){return this.parent()&&this.parent().colorMatrix(t,e).in(this)},convolveMatrix:function(t){return this.parent()&&this.parent().convolveMatrix(t).in(this)},componentTransfer:function(t){return this.parent()&&this.parent().componentTransfer(t).in(this)},composite:function(t,e){return this.parent()&&this.parent().composite(this,t,e)},flood:function(t,e){return this.parent()&&this.parent().flood(t,e)},offset:function(t,e){return this.parent()&&this.parent().offset(t,e).in(this)},image:function(t){return this.parent()&&this.parent().image(t)},merge:function(){return this.parent()&&this.parent().merge.apply(this.parent(),[this].concat(arguments))},gaussianBlur:function(t,e){return this.parent()&&this.parent().gaussianBlur(t,e).in(this)},morphology:function(t,e){return this.parent()&&this.parent().morphology(t,e).in(this)},diffuseLighting:function(t,e,i){return this.parent()&&this.parent().diffuseLighting(t,e,i).in(this)},displacementMap:function(t,e,i,a){return this.parent()&&this.parent().displacementMap(this,t,e,i,a)},specularLighting:function(t,e,i,a){return this.parent()&&this.parent().specularLighting(t,e,i,a).in(this)},tile:function(){return this.parent()&&this.parent().tile().in(this)},turbulence:function(t,e,i,a,s){return this.parent()&&this.parent().turbulence(t,e,i,a,s).in(this)}};SVG.extend(SVG.Effect,t),SVG.extend(SVG.ParentEffect,t),SVG.ChildEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(t){this.attr("in",t)}}});var e={blend:function(t,e,i){this.attr({in:t,in2:e,mode:i||"normal"})},colorMatrix:function(t,e){"matrix"==t&&(e=s(e)),this.attr({type:t,values:void 0===e?null:e})},convolveMatrix:function(t){t=s(t),this.attr({order:Math.sqrt(t.split(" ").length),kernelMatrix:t})},composite:function(t,e,i){this.attr({in:t,in2:e,operator:i})},flood:function(t,e){this.attr("flood-color",t),null!=e&&this.attr("flood-opacity",e)},offset:function(t,e){this.attr({dx:t,dy:e})},image:function(t){this.attr("href",t,SVG.xlink)},displacementMap:function(t,e,i,a,s){this.attr({in:t,in2:e,scale:i,xChannelSelector:a,yChannelSelector:s})},gaussianBlur:function(t,e){null!=t||null!=e?this.attr("stdDeviation",r(Array.prototype.slice.call(arguments))):this.attr("stdDeviation","0 0")},morphology:function(t,e){this.attr({operator:t,radius:e})},tile:function(){},turbulence:function(t,e,i,a,s){this.attr({numOctaves:e,seed:i,stitchTiles:a,baseFrequency:t,type:s})}},i={merge:function(){var t;if(arguments[0]instanceof SVG.Set){var e=this;arguments[0].each((function(t){this instanceof SVG.MergeNode?e.put(this):(this instanceof SVG.Effect||this instanceof SVG.ParentEffect)&&e.put(new SVG.MergeNode(this))}))}else{t=Array.isArray(arguments[0])?arguments[0]:arguments;for(var i=0;i1&&(a=Math.sqrt(a),T*=a,z*=a);s=(new SVG.Matrix).rotate(I).scale(1/T,1/z).rotate(-I),F=F.transform(s),R=R.transform(s),r=[R.x-F.x,R.y-F.y],o=r[0]*r[0]+r[1]*r[1],n=Math.sqrt(o),r[0]/=n,r[1]/=n,l=o<4?Math.sqrt(1-o/4):0,M===X&&(l*=-1);h=new SVG.Point((R.x+F.x)/2+l*-r[1],(R.y+F.y)/2+l*r[0]),c=new SVG.Point(F.x-h.x,F.y-h.y),d=new SVG.Point(R.x-h.x,R.y-h.y),g=Math.acos(c.x/Math.sqrt(c.x*c.x+c.y*c.y)),c.y<0&&(g*=-1);u=Math.acos(d.x/Math.sqrt(d.x*d.x+d.y*d.y)),d.y<0&&(u*=-1);X&&g>u&&(u+=2*Math.PI);!X&&gr.maxX-e.width&&(n=(a=r.maxX-e.width)-this.startPoints.box.x),null!=r.minY&&sr.maxY-e.height&&(o=(s=r.maxY-e.height)-this.startPoints.box.y),null!=r.snapToGrid&&(a-=a%r.snapToGrid,s-=s%r.snapToGrid,n-=n%r.snapToGrid,o-=o%r.snapToGrid),this.el instanceof SVG.G?this.el.matrix(this.startPoints.transform).transform({x:n,y:o},!0):this.el.move(a,s));return i},t.prototype.end=function(t){var e=this.drag(t);this.el.fire("dragend",{event:t,p:e,m:this.m,handler:this}),SVG.off(window,"mousemove.drag"),SVG.off(window,"touchmove.drag"),SVG.off(window,"mouseup.drag"),SVG.off(window,"touchend.drag")},SVG.extend(SVG.Element,{draggable:function(e,i){"function"!=typeof e&&"object"!=typeof e||(i=e,e=!0);var a=this.remember("_draggable")||new t(this);return(e=void 0===e||e)?a.init(i||{},e):(this.off("mousedown.drag"),this.off("touchstart.drag")),this}})}.call(void 0),function(){function t(t){this.el=t,t.remember("_selectHandler",this),this.pointSelection={isSelected:!1},this.rectSelection={isSelected:!1},this.pointsList={lt:[0,0],rt:["width",0],rb:["width","height"],lb:[0,"height"],t:["width",0],r:["width","height"],b:["width","height"],l:[0,"height"]},this.pointCoord=function(t,e,i){var a="string"!=typeof t?t:e[t];return i?a/2:a},this.pointCoords=function(t,e){var i=this.pointsList[t];return{x:this.pointCoord(i[0],e,"t"===t||"b"===t),y:this.pointCoord(i[1],e,"r"===t||"l"===t)}}}t.prototype.init=function(t,e){var i=this.el.bbox();this.options={};var a=this.el.selectize.defaults.points;for(var s in this.el.selectize.defaults)this.options[s]=this.el.selectize.defaults[s],void 0!==e[s]&&(this.options[s]=e[s]);var r=["points","pointsExclude"];for(var s in r){var n=this.options[r[s]];"string"==typeof n?n=n.length>0?n.split(/\s*,\s*/i):[]:"boolean"==typeof n&&"points"===r[s]&&(n=n?a:[]),this.options[r[s]]=n}this.options.points=[a,this.options.points].reduce((function(t,e){return t.filter((function(t){return e.indexOf(t)>-1}))})),this.options.points=[this.options.points,this.options.pointsExclude].reduce((function(t,e){return t.filter((function(t){return e.indexOf(t)<0}))})),this.parent=this.el.parent(),this.nested=this.nested||this.parent.group(),this.nested.matrix(new SVG.Matrix(this.el).translate(i.x,i.y)),this.options.deepSelect&&-1!==["line","polyline","polygon"].indexOf(this.el.type)?this.selectPoints(t):this.selectRect(t),this.observe(),this.cleanup()},t.prototype.selectPoints=function(t){return this.pointSelection.isSelected=t,this.pointSelection.set?this:(this.pointSelection.set=this.parent.set(),this.drawPoints(),this)},t.prototype.getPointArray=function(){var t=this.el.bbox();return this.el.array().valueOf().map((function(e){return[e[0]-t.x,e[1]-t.y]}))},t.prototype.drawPoints=function(){for(var t=this,e=this.getPointArray(),i=0,a=e.length;i0&&this.parameters.box.height-i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x+i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize-i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x+i[0],this.parameters.box.y+i[1]).size(this.parameters.box.width-i[0],this.parameters.box.height-i[1])}};break;case"rt":this.calc=function(t,e){var i=this.snapToGrid(t,e,2);if(this.parameters.box.width+i[0]>0&&this.parameters.box.height-i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x-i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize+i[0]);i=this.checkAspectRatio(i,!0),this.el.move(this.parameters.box.x,this.parameters.box.y+i[1]).size(this.parameters.box.width+i[0],this.parameters.box.height-i[1])}};break;case"rb":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.width+i[0]>0&&this.parameters.box.height+i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x-i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize+i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x,this.parameters.box.y).size(this.parameters.box.width+i[0],this.parameters.box.height+i[1])}};break;case"lb":this.calc=function(t,e){var i=this.snapToGrid(t,e,1);if(this.parameters.box.width-i[0]>0&&this.parameters.box.height+i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x+i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize-i[0]);i=this.checkAspectRatio(i,!0),this.el.move(this.parameters.box.x+i[0],this.parameters.box.y).size(this.parameters.box.width-i[0],this.parameters.box.height+i[1])}};break;case"t":this.calc=function(t,e){var i=this.snapToGrid(t,e,2);if(this.parameters.box.height-i[1]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y+i[1]).height(this.parameters.box.height-i[1])}};break;case"r":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.width+i[0]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y).width(this.parameters.box.width+i[0])}};break;case"b":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.height+i[1]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y).height(this.parameters.box.height+i[1])}};break;case"l":this.calc=function(t,e){var i=this.snapToGrid(t,e,1);if(this.parameters.box.width-i[0]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x+i[0],this.parameters.box.y).width(this.parameters.box.width-i[0])}};break;case"rot":this.calc=function(t,e){var i=t+this.parameters.p.x,a=e+this.parameters.p.y,s=Math.atan2(this.parameters.p.y-this.parameters.box.y-this.parameters.box.height/2,this.parameters.p.x-this.parameters.box.x-this.parameters.box.width/2),r=Math.atan2(a-this.parameters.box.y-this.parameters.box.height/2,i-this.parameters.box.x-this.parameters.box.width/2),n=this.parameters.rotation+180*(r-s)/Math.PI+this.options.snapToAngle/2;this.el.center(this.parameters.box.cx,this.parameters.box.cy).rotate(n-n%this.options.snapToAngle,this.parameters.box.cx,this.parameters.box.cy)};break;case"point":this.calc=function(t,e){var i=this.snapToGrid(t,e,this.parameters.pointCoords[0],this.parameters.pointCoords[1]),a=this.el.array().valueOf();a[this.parameters.i][0]=this.parameters.pointCoords[0]+i[0],a[this.parameters.i][1]=this.parameters.pointCoords[1]+i[1],this.el.plot(a)}}this.el.fire("resizestart",{dx:this.parameters.x,dy:this.parameters.y,event:t}),SVG.on(window,"touchmove.resize",(function(t){e.update(t||window.event)})),SVG.on(window,"touchend.resize",(function(){e.done()})),SVG.on(window,"mousemove.resize",(function(t){e.update(t||window.event)})),SVG.on(window,"mouseup.resize",(function(){e.done()}))},t.prototype.update=function(t){if(t){var e=this._extractPosition(t),i=this.transformPoint(e.x,e.y),a=i.x-this.parameters.p.x,s=i.y-this.parameters.p.y;this.lastUpdateCall=[a,s],this.calc(a,s),this.el.fire("resizing",{dx:a,dy:s,event:t})}else this.lastUpdateCall&&this.calc(this.lastUpdateCall[0],this.lastUpdateCall[1])},t.prototype.done=function(){this.lastUpdateCall=null,SVG.off(window,"mousemove.resize"),SVG.off(window,"mouseup.resize"),SVG.off(window,"touchmove.resize"),SVG.off(window,"touchend.resize"),this.el.fire("resizedone")},t.prototype.snapToGrid=function(t,e,i,a){var s;return void 0!==a?s=[(i+t)%this.options.snapToGrid,(a+e)%this.options.snapToGrid]:(i=null==i?3:i,s=[(this.parameters.box.x+t+(1&i?0:this.parameters.box.width))%this.options.snapToGrid,(this.parameters.box.y+e+(2&i?0:this.parameters.box.height))%this.options.snapToGrid]),t<0&&(s[0]-=this.options.snapToGrid),e<0&&(s[1]-=this.options.snapToGrid),t-=Math.abs(s[0])n.maxX&&(t=n.maxX-s),void 0!==n.minY&&r+en.maxY&&(e=n.maxY-r),[t,e]},t.prototype.checkAspectRatio=function(t,e){if(!this.options.saveAspectRatio)return t;var i=t.slice(),a=this.parameters.box.width/this.parameters.box.height,s=this.parameters.box.width+t[0],r=this.parameters.box.height-t[1],n=s/r;return na&&(i[0]=this.parameters.box.width-r*a,e&&(i[0]=-i[0])),i},SVG.extend(SVG.Element,{resize:function(e){return(this.remember("_resizeHandler")||new t(this)).init(e||{}),this}}),SVG.Element.prototype.resize.defaults={snapToAngle:.1,snapToGrid:1,constraint:{},saveAspectRatio:!1}}).call(this)}();!function(t,e){void 0===e&&(e={});var i=e.insertAt;if(t&&"undefined"!=typeof document){var a=document.head||document.getElementsByTagName("head")[0],s=document.createElement("style");s.type="text/css","top"===i&&a.firstChild?a.insertBefore(s,a.firstChild):a.appendChild(s),s.styleSheet?s.styleSheet.cssText=t:s.appendChild(document.createTextNode(t))}}('.apexcharts-canvas {\n position: relative;\n user-select: none;\n /* cannot give overflow: hidden as it will crop tooltips which overflow outside chart area */\n}\n\n\n/* scrollbar is not visible by default for legend, hence forcing the visibility */\n.apexcharts-canvas ::-webkit-scrollbar {\n -webkit-appearance: none;\n width: 6px;\n}\n\n.apexcharts-canvas ::-webkit-scrollbar-thumb {\n border-radius: 4px;\n background-color: rgba(0, 0, 0, .5);\n box-shadow: 0 0 1px rgba(255, 255, 255, .5);\n -webkit-box-shadow: 0 0 1px rgba(255, 255, 255, .5);\n}\n\n.apexcharts-canvas.apexcharts-theme-dark {\n background: #343F57;\n}\n\n.apexcharts-inner {\n position: relative;\n}\n\n.apexcharts-text tspan {\n font-family: inherit;\n}\n\n.legend-mouseover-inactive {\n transition: 0.15s ease all;\n opacity: 0.20;\n}\n\n.apexcharts-series-collapsed {\n opacity: 0;\n}\n\n.apexcharts-tooltip {\n border-radius: 5px;\n box-shadow: 2px 2px 6px -4px #999;\n cursor: default;\n font-size: 14px;\n left: 62px;\n opacity: 0;\n pointer-events: none;\n position: absolute;\n top: 20px;\n overflow: hidden;\n white-space: nowrap;\n z-index: 12;\n transition: 0.15s ease all;\n}\n\n.apexcharts-tooltip.apexcharts-active {\n opacity: 1;\n transition: 0.15s ease all;\n}\n\n.apexcharts-tooltip.apexcharts-theme-light {\n border: 1px solid #e3e3e3;\n background: rgba(255, 255, 255, 0.96);\n}\n\n.apexcharts-tooltip.apexcharts-theme-dark {\n color: #fff;\n background: rgba(30, 30, 30, 0.8);\n}\n\n.apexcharts-tooltip * {\n font-family: inherit;\n}\n\n\n.apexcharts-tooltip-title {\n padding: 6px;\n font-size: 15px;\n margin-bottom: 4px;\n}\n\n.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title {\n background: #ECEFF1;\n border-bottom: 1px solid #ddd;\n}\n\n.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title {\n background: rgba(0, 0, 0, 0.7);\n border-bottom: 1px solid #333;\n}\n\n.apexcharts-tooltip-text-value,\n.apexcharts-tooltip-text-z-value {\n display: inline-block;\n font-weight: 600;\n margin-left: 5px;\n}\n\n.apexcharts-tooltip-text-z-label:empty,\n.apexcharts-tooltip-text-z-value:empty {\n display: none;\n}\n\n.apexcharts-tooltip-text-value,\n.apexcharts-tooltip-text-z-value {\n font-weight: 600;\n}\n\n.apexcharts-tooltip-marker {\n width: 12px;\n height: 12px;\n position: relative;\n top: 0px;\n margin-right: 10px;\n border-radius: 50%;\n}\n\n.apexcharts-tooltip-series-group {\n padding: 0 10px;\n display: none;\n text-align: left;\n justify-content: left;\n align-items: center;\n}\n\n.apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-marker {\n opacity: 1;\n}\n\n.apexcharts-tooltip-series-group.apexcharts-active,\n.apexcharts-tooltip-series-group:last-child {\n padding-bottom: 4px;\n}\n\n.apexcharts-tooltip-series-group-hidden {\n opacity: 0;\n height: 0;\n line-height: 0;\n padding: 0 !important;\n}\n\n.apexcharts-tooltip-y-group {\n padding: 6px 0 5px;\n}\n\n.apexcharts-tooltip-candlestick {\n padding: 4px 8px;\n}\n\n.apexcharts-tooltip-candlestick>div {\n margin: 4px 0;\n}\n\n.apexcharts-tooltip-candlestick span.value {\n font-weight: bold;\n}\n\n.apexcharts-tooltip-rangebar {\n padding: 5px 8px;\n}\n\n.apexcharts-tooltip-rangebar .category {\n font-weight: 600;\n color: #777;\n}\n\n.apexcharts-tooltip-rangebar .series-name {\n font-weight: bold;\n display: block;\n margin-bottom: 5px;\n}\n\n.apexcharts-xaxistooltip {\n opacity: 0;\n padding: 9px 10px;\n pointer-events: none;\n color: #373d3f;\n font-size: 13px;\n text-align: center;\n border-radius: 2px;\n position: absolute;\n z-index: 10;\n background: #ECEFF1;\n border: 1px solid #90A4AE;\n transition: 0.15s ease all;\n}\n\n.apexcharts-xaxistooltip.apexcharts-theme-dark {\n background: rgba(0, 0, 0, 0.7);\n border: 1px solid rgba(0, 0, 0, 0.5);\n color: #fff;\n}\n\n.apexcharts-xaxistooltip:after,\n.apexcharts-xaxistooltip:before {\n left: 50%;\n border: solid transparent;\n content: " ";\n height: 0;\n width: 0;\n position: absolute;\n pointer-events: none;\n}\n\n.apexcharts-xaxistooltip:after {\n border-color: rgba(236, 239, 241, 0);\n border-width: 6px;\n margin-left: -6px;\n}\n\n.apexcharts-xaxistooltip:before {\n border-color: rgba(144, 164, 174, 0);\n border-width: 7px;\n margin-left: -7px;\n}\n\n.apexcharts-xaxistooltip-bottom:after,\n.apexcharts-xaxistooltip-bottom:before {\n bottom: 100%;\n}\n\n.apexcharts-xaxistooltip-top:after,\n.apexcharts-xaxistooltip-top:before {\n top: 100%;\n}\n\n.apexcharts-xaxistooltip-bottom:after {\n border-bottom-color: #ECEFF1;\n}\n\n.apexcharts-xaxistooltip-bottom:before {\n border-bottom-color: #90A4AE;\n}\n\n.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after {\n border-bottom-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:before {\n border-bottom-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-xaxistooltip-top:after {\n border-top-color: #ECEFF1\n}\n\n.apexcharts-xaxistooltip-top:before {\n border-top-color: #90A4AE;\n}\n\n.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after {\n border-top-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-xaxistooltip-top.apexcharts-theme-dark:before {\n border-top-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-xaxistooltip.apexcharts-active {\n opacity: 1;\n transition: 0.15s ease all;\n}\n\n.apexcharts-yaxistooltip {\n opacity: 0;\n padding: 4px 10px;\n pointer-events: none;\n color: #373d3f;\n font-size: 13px;\n text-align: center;\n border-radius: 2px;\n position: absolute;\n z-index: 10;\n background: #ECEFF1;\n border: 1px solid #90A4AE;\n}\n\n.apexcharts-yaxistooltip.apexcharts-theme-dark {\n background: rgba(0, 0, 0, 0.7);\n border: 1px solid rgba(0, 0, 0, 0.5);\n color: #fff;\n}\n\n.apexcharts-yaxistooltip:after,\n.apexcharts-yaxistooltip:before {\n top: 50%;\n border: solid transparent;\n content: " ";\n height: 0;\n width: 0;\n position: absolute;\n pointer-events: none;\n}\n\n.apexcharts-yaxistooltip:after {\n border-color: rgba(236, 239, 241, 0);\n border-width: 6px;\n margin-top: -6px;\n}\n\n.apexcharts-yaxistooltip:before {\n border-color: rgba(144, 164, 174, 0);\n border-width: 7px;\n margin-top: -7px;\n}\n\n.apexcharts-yaxistooltip-left:after,\n.apexcharts-yaxistooltip-left:before {\n left: 100%;\n}\n\n.apexcharts-yaxistooltip-right:after,\n.apexcharts-yaxistooltip-right:before {\n right: 100%;\n}\n\n.apexcharts-yaxistooltip-left:after {\n border-left-color: #ECEFF1;\n}\n\n.apexcharts-yaxistooltip-left:before {\n border-left-color: #90A4AE;\n}\n\n.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after {\n border-left-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-yaxistooltip-left.apexcharts-theme-dark:before {\n border-left-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-yaxistooltip-right:after {\n border-right-color: #ECEFF1;\n}\n\n.apexcharts-yaxistooltip-right:before {\n border-right-color: #90A4AE;\n}\n\n.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after {\n border-right-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-yaxistooltip-right.apexcharts-theme-dark:before {\n border-right-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-yaxistooltip.apexcharts-active {\n opacity: 1;\n}\n\n.apexcharts-yaxistooltip-hidden {\n display: none;\n}\n\n.apexcharts-xcrosshairs,\n.apexcharts-ycrosshairs {\n pointer-events: none;\n opacity: 0;\n transition: 0.15s ease all;\n}\n\n.apexcharts-xcrosshairs.apexcharts-active,\n.apexcharts-ycrosshairs.apexcharts-active {\n opacity: 1;\n transition: 0.15s ease all;\n}\n\n.apexcharts-ycrosshairs-hidden {\n opacity: 0;\n}\n\n.apexcharts-selection-rect {\n cursor: move;\n}\n\n.svg_select_boundingRect, .svg_select_points_rot {\n pointer-events: none;\n opacity: 0;\n visibility: hidden;\n}\n.apexcharts-selection-rect + g .svg_select_boundingRect,\n.apexcharts-selection-rect + g .svg_select_points_rot {\n opacity: 0;\n visibility: hidden;\n}\n\n.apexcharts-selection-rect + g .svg_select_points_l,\n.apexcharts-selection-rect + g .svg_select_points_r {\n cursor: ew-resize;\n opacity: 1;\n visibility: visible;\n}\n\n.svg_select_points {\n fill: #efefef;\n stroke: #333;\n rx: 2;\n}\n\n.apexcharts-canvas.apexcharts-zoomable .hovering-zoom {\n cursor: crosshair\n}\n\n.apexcharts-canvas.apexcharts-zoomable .hovering-pan {\n cursor: move\n}\n\n.apexcharts-zoom-icon,\n.apexcharts-zoomin-icon,\n.apexcharts-zoomout-icon,\n.apexcharts-reset-icon,\n.apexcharts-pan-icon,\n.apexcharts-selection-icon,\n.apexcharts-menu-icon,\n.apexcharts-toolbar-custom-icon {\n cursor: pointer;\n width: 20px;\n height: 20px;\n line-height: 24px;\n color: #6E8192;\n text-align: center;\n}\n\n.apexcharts-zoom-icon svg,\n.apexcharts-zoomin-icon svg,\n.apexcharts-zoomout-icon svg,\n.apexcharts-reset-icon svg,\n.apexcharts-menu-icon svg {\n fill: #6E8192;\n}\n\n.apexcharts-selection-icon svg {\n fill: #444;\n transform: scale(0.76)\n}\n\n.apexcharts-theme-dark .apexcharts-zoom-icon svg,\n.apexcharts-theme-dark .apexcharts-zoomin-icon svg,\n.apexcharts-theme-dark .apexcharts-zoomout-icon svg,\n.apexcharts-theme-dark .apexcharts-reset-icon svg,\n.apexcharts-theme-dark .apexcharts-pan-icon svg,\n.apexcharts-theme-dark .apexcharts-selection-icon svg,\n.apexcharts-theme-dark .apexcharts-menu-icon svg,\n.apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg {\n fill: #f3f4f5;\n}\n\n.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg,\n.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected svg,\n.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg {\n fill: #008FFB;\n}\n\n.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover svg,\n.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover svg,\n.apexcharts-theme-light .apexcharts-zoomin-icon:hover svg,\n.apexcharts-theme-light .apexcharts-zoomout-icon:hover svg,\n.apexcharts-theme-light .apexcharts-reset-icon:hover svg,\n.apexcharts-theme-light .apexcharts-menu-icon:hover svg {\n fill: #333;\n}\n\n.apexcharts-selection-icon,\n.apexcharts-menu-icon {\n position: relative;\n}\n\n.apexcharts-reset-icon {\n margin-left: 5px;\n}\n\n.apexcharts-zoom-icon,\n.apexcharts-reset-icon,\n.apexcharts-menu-icon {\n transform: scale(0.85);\n}\n\n.apexcharts-zoomin-icon,\n.apexcharts-zoomout-icon {\n transform: scale(0.7)\n}\n\n.apexcharts-zoomout-icon {\n margin-right: 3px;\n}\n\n.apexcharts-pan-icon {\n transform: scale(0.62);\n position: relative;\n left: 1px;\n top: 0px;\n}\n\n.apexcharts-pan-icon svg {\n fill: #fff;\n stroke: #6E8192;\n stroke-width: 2;\n}\n\n.apexcharts-pan-icon.apexcharts-selected svg {\n stroke: #008FFB;\n}\n\n.apexcharts-pan-icon:not(.apexcharts-selected):hover svg {\n stroke: #333;\n}\n\n.apexcharts-toolbar {\n position: absolute;\n z-index: 11;\n max-width: 176px;\n text-align: right;\n border-radius: 3px;\n padding: 0px 6px 2px 6px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.apexcharts-menu {\n background: #fff;\n position: absolute;\n top: 100%;\n border: 1px solid #ddd;\n border-radius: 3px;\n padding: 3px;\n right: 10px;\n opacity: 0;\n min-width: 110px;\n transition: 0.15s ease all;\n pointer-events: none;\n}\n\n.apexcharts-menu.apexcharts-menu-open {\n opacity: 1;\n pointer-events: all;\n transition: 0.15s ease all;\n}\n\n.apexcharts-menu-item {\n padding: 6px 7px;\n font-size: 12px;\n cursor: pointer;\n}\n\n.apexcharts-theme-light .apexcharts-menu-item:hover {\n background: #eee;\n}\n\n.apexcharts-theme-dark .apexcharts-menu {\n background: rgba(0, 0, 0, 0.7);\n color: #fff;\n}\n\n@media screen and (min-width: 768px) {\n .apexcharts-canvas:hover .apexcharts-toolbar {\n opacity: 1;\n }\n}\n\n.apexcharts-datalabel.apexcharts-element-hidden {\n opacity: 0;\n}\n\n.apexcharts-pie-label,\n.apexcharts-datalabels,\n.apexcharts-datalabel,\n.apexcharts-datalabel-label,\n.apexcharts-datalabel-value {\n cursor: default;\n pointer-events: none;\n}\n\n.apexcharts-pie-label-delay {\n opacity: 0;\n animation-name: opaque;\n animation-duration: 0.3s;\n animation-fill-mode: forwards;\n animation-timing-function: ease;\n}\n\n.apexcharts-canvas .apexcharts-element-hidden {\n opacity: 0;\n}\n\n.apexcharts-hide .apexcharts-series-points {\n opacity: 0;\n}\n\n.apexcharts-gridline,\n.apexcharts-annotation-rect,\n.apexcharts-tooltip .apexcharts-marker,\n.apexcharts-area-series .apexcharts-area,\n.apexcharts-line,\n.apexcharts-zoom-rect,\n.apexcharts-toolbar svg,\n.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,\n.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,\n.apexcharts-radar-series path,\n.apexcharts-radar-series polygon {\n pointer-events: none;\n}\n\n\n/* markers */\n\n.apexcharts-marker {\n transition: 0.15s ease all;\n}\n\n@keyframes opaque {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n\n\n/* Resize generated styles */\n\n@keyframes resizeanim {\n from {\n opacity: 0;\n }\n to {\n opacity: 0;\n }\n}\n\n.resize-triggers {\n animation: 1ms resizeanim;\n visibility: hidden;\n opacity: 0;\n}\n\n.resize-triggers,\n.resize-triggers>div,\n.contract-trigger:before {\n content: " ";\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n overflow: hidden;\n}\n\n.resize-triggers>div {\n background: #eee;\n overflow: auto;\n}\n\n.contract-trigger:before {\n width: 200%;\n height: 200%;\n}'),function(){function t(t){var e=t.__resizeTriggers__,i=e.firstElementChild,a=e.lastElementChild,s=i?i.firstElementChild:null;a&&(a.scrollLeft=a.scrollWidth,a.scrollTop=a.scrollHeight),s&&(s.style.width=i.offsetWidth+1+"px",s.style.height=i.offsetHeight+1+"px"),i&&(i.scrollLeft=i.scrollWidth,i.scrollTop=i.scrollHeight)}function e(e){var i=this;t(this),this.__resizeRAF__&&r(this.__resizeRAF__),this.__resizeRAF__=s((function(){(function(t){return t.offsetWidth!=t.__resizeLast__.width||t.offsetHeight!=t.__resizeLast__.height})(i)&&(i.__resizeLast__.width=i.offsetWidth,i.__resizeLast__.height=i.offsetHeight,i.__resizeListeners__.forEach((function(t){t.call(e)})))}))}var i,a,s=(i=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(t){return window.setTimeout(t,20)},function(t){return i(t)}),r=(a=window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||window.clearTimeout,function(t){return a(t)}),n=!1,o="animationstart",l="Webkit Moz O ms".split(" "),h="webkitAnimationStart animationstart oAnimationStart MSAnimationStart".split(" "),c=document.createElement("fakeelement");if(void 0!==c.style.animationName&&(n=!0),!1===n)for(var d=0;d
',i.appendChild(i.__resizeTriggers__),t(i),i.addEventListener("scroll",e,!0),o&&i.__resizeTriggers__.addEventListener(o,(function(e){"resizeanim"==e.animationName&&t(i)}))),i.__resizeListeners__.push(a)},window.removeResizeListener=function(t,i){t&&(t.__resizeListeners__.splice(t.__resizeListeners__.indexOf(i),1),t.__resizeListeners__.length||(t.removeEventListener("scroll",e),t.__resizeTriggers__.parentNode&&(t.__resizeTriggers__=!t.removeChild(t.__resizeTriggers__))))}}(),window.Apex={};var It=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return a(t,[{key:"initModules",value:function(){this.ctx.publicMethods=["updateOptions","updateSeries","appendData","appendSeries","toggleSeries","showSeries","hideSeries","setLocale","resetSeries","zoomX","toggleDataPointSelection","dataURI","addXaxisAnnotation","addYaxisAnnotation","addPointAnnotation","clearAnnotations","removeAnnotation","paper","destroy"],this.ctx.eventList=["click","mousedown","mousemove","touchstart","touchmove","mouseup","touchend"],this.ctx.animations=new f(this.ctx),this.ctx.axes=new J(this.ctx),this.ctx.core=new Tt(this.ctx.el,this.ctx),this.ctx.config=new D({}),this.ctx.data=new O(this.ctx),this.ctx.grid=new _(this.ctx),this.ctx.graphics=new p(this.ctx),this.ctx.coreUtils=new m(this.ctx),this.ctx.crosshairs=new Q(this.ctx),this.ctx.events=new Z(this.ctx),this.ctx.exports=new V(this.ctx),this.ctx.localization=new $(this.ctx),this.ctx.options=new S,this.ctx.responsive=new K(this.ctx),this.ctx.series=new M(this.ctx),this.ctx.theme=new tt(this.ctx),this.ctx.formatters=new W(this.ctx),this.ctx.titleSubtitle=new et(this.ctx),this.ctx.legend=new ct(this.ctx),this.ctx.toolbar=new dt(this.ctx),this.ctx.dimensions=new nt(this.ctx),this.ctx.updateHelpers=new zt(this.ctx),this.ctx.zoomPanSelection=new gt(this.ctx),this.ctx.w.globals.tooltip=new vt(this.ctx)}}]),t}(),Mt=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return a(t,[{key:"clear",value:function(){this.ctx.zoomPanSelection&&this.ctx.zoomPanSelection.destroy(),this.ctx.toolbar&&this.ctx.toolbar.destroy(),this.ctx.animations=null,this.ctx.axes=null,this.ctx.annotations=null,this.ctx.core=null,this.ctx.data=null,this.ctx.grid=null,this.ctx.series=null,this.ctx.responsive=null,this.ctx.theme=null,this.ctx.formatters=null,this.ctx.titleSubtitle=null,this.ctx.legend=null,this.ctx.dimensions=null,this.ctx.options=null,this.ctx.crosshairs=null,this.ctx.zoomPanSelection=null,this.ctx.updateHelpers=null,this.ctx.toolbar=null,this.ctx.localization=null,this.ctx.w.globals.tooltip=null,this.clearDomElements()}},{key:"killSVG",value:function(t){t.each((function(t,e){this.removeClass("*"),this.off(),this.stop()}),!0),t.ungroup(),t.clear()}},{key:"clearDomElements",value:function(){var t=this;this.ctx.eventList.forEach((function(e){document.removeEventListener(e,t.ctx.events.documentEvent)}));var e=this.w.globals.dom;if(null!==this.ctx.el)for(;this.ctx.el.firstChild;)this.ctx.el.removeChild(this.ctx.el.firstChild);this.killSVG(e.Paper),e.Paper.remove(),e.elWrap=null,e.elGraphical=null,e.elAnnotations=null,e.elLegendWrap=null,e.baseEl=null,e.elGridRect=null,e.elGridRectMask=null,e.elGridRectMarkerMask=null,e.elDefs=null}}]),t}();return function(){function t(i,a){e(this,t),this.opts=a,this.ctx=this,this.w=new N(a).init(),this.el=i,this.w.globals.cuid=g.randomId(),this.w.globals.chartID=this.w.config.chart.id?this.w.config.chart.id:this.w.globals.cuid,new It(this).initModules(),this.create=g.bind(this.create,this),this.windowResizeHandler=this._windowResize.bind(this)}return a(t,[{key:"render",value:function(){var t=this;return new Promise((function(e,i){if(null!==t.el){void 0===Apex._chartInstances&&(Apex._chartInstances=[]),t.w.config.chart.id&&Apex._chartInstances.push({id:t.w.globals.chartID,group:t.w.config.chart.group,chart:t}),t.setLocale(t.w.config.chart.defaultLocale);var a=t.w.config.chart.events.beforeMount;"function"==typeof a&&a(t,t.w),t.events.fireEvent("beforeMount",[t,t.w]),window.addEventListener("resize",t.windowResizeHandler),window.addResizeListener(t.el.parentNode,t._parentResizeCallback.bind(t));var s=t.create(t.w.config.series,{});if(!s)return e(t);t.mount(s).then((function(){"function"==typeof t.w.config.chart.events.mounted&&t.w.config.chart.events.mounted(t,t.w),t.events.fireEvent("mounted",[t,t.w]),e(s)})).catch((function(t){i(t)}))}else i(new Error("Element not found"))}))}},{key:"create",value:function(t,e){var i=this.w;new It(this).initModules();var a=this.w.globals;(a.noData=!1,a.animationEnded=!1,this.responsive.checkResponsiveConfig(e),i.config.xaxis.convertedCatToNumeric)&&new R(i.config).convertCatToNumericXaxis(i.config,this.ctx);if(null===this.el)return a.animationEnded=!0,null;if(this.core.setupElements(),0===a.svgWidth)return a.animationEnded=!0,null;var s=m.checkComboSeries(t);a.comboCharts=s.comboCharts,a.comboBarCount=s.comboBarCount,(0===t.length||1===t.length&&t[0].data&&0===t[0].data.length)&&this.series.handleNoData(),this.events.setupEventHandlers(),this.data.parseData(t),this.theme.init(),new P(this).setGlobalMarkerSize(),this.formatters.setLabelFormatters(),this.titleSubtitle.draw(),a.noData&&a.collapsedSeries.length!==a.series.length||this.legend.init(),this.series.hasAllSeriesEqualX(),a.axisCharts&&(this.core.coreCalculations(),"category"!==i.config.xaxis.type&&this.formatters.setLabelFormatters()),this.formatters.heatmapLabelFormatters(),this.dimensions.plotCoords();var r=this.core.xySettings();this.grid.createGridMask();var n=this.core.plotChartType(t,r),o=new z(this);o.bringForward(),i.config.dataLabels.background.enabled&&o.dataLabelsBackground(),this.core.shiftGraphPosition();var l={plot:{left:i.globals.translateX,top:i.globals.translateY,width:i.globals.gridWidth,height:i.globals.gridHeight}};return{elGraph:n,xyRatios:r,elInner:i.globals.dom.elGraphical,dimensions:l}}},{key:"mount",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,i=this,a=i.w;return new Promise((function(s,r){if(null===i.el)return r(new Error("Not enough data to display or target element not found"));(null===e||a.globals.allSeriesCollapsed)&&i.series.handleNoData(),i.axes.drawAxis(a.config.chart.type,e.xyRatios),i.grid=new _(i);var n=i.grid.drawGrid();i.annotations=new C(i),i.annotations.drawShapeAnnos(),i.annotations.drawImageAnnos(),i.annotations.drawTextAnnos(),"back"===a.config.grid.position&&n&&a.globals.dom.elGraphical.add(n.el);var o=new G(t.ctx),l=new q(t.ctx);if(null!==n&&(o.xAxisLabelCorrections(n.xAxisTickWidth),l.setYAxisTextAlignments()),"back"===a.config.annotations.position&&(a.globals.dom.Paper.add(a.globals.dom.elAnnotations),i.annotations.drawAxesAnnotations()),e.elGraph instanceof Array)for(var h=0;h0&&a.globals.memory.methodsToExec.forEach((function(t){t.method(t.params,!1,t.context)})),a.globals.axisCharts||a.globals.noData||i.core.resizeNonAxisCharts(),s(i)}))}},{key:"destroy",value:function(){window.removeEventListener("resize",this.windowResizeHandler),window.removeResizeListener(this.el.parentNode,this._parentResizeCallback.bind(this));var t=this.w.config.chart.id;t&&Apex._chartInstances.forEach((function(e,i){e.id===t&&Apex._chartInstances.splice(i,1)})),new Mt(this.ctx).clear()}},{key:"updateOptions",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],n=this.w;return t.series&&(this.series.resetSeries(!1,!0,!1),t.series.length&&t.series[0].data&&(t.series=t.series.map((function(t,i){return e.updateHelpers._extendSeries(t,i)}))),this.updateHelpers.revertDefaultAxisMinMax()),t.xaxis&&(t=this.updateHelpers.forceXAxisUpdate(t)),t.yaxis&&(t=this.updateHelpers.forceYAxisUpdate(t)),n.globals.collapsedSeriesIndices.length>0&&this.series.clearPreviousPaths(),t.theme&&(t=this.theme.updateThemeOptions(t)),this.updateHelpers._updateOptions(t,i,a,s,r)}},{key:"updateSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(t,e,i)}},{key:"appendSeries",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=this.w.config.series.slice();return a.push(t),this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(a,e,i)}},{key:"appendData",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this;i.w.globals.dataChanged=!0,i.series.getPreviousPaths();for(var a=i.w.config.series.slice(),s=0;s0&&void 0!==arguments[0])||arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.series.resetSeries(t,e)}},{key:"addEventListener",value:function(t,e){this.events.addEventListener(t,e)}},{key:"removeEventListener",value:function(t,e){this.events.removeEventListener(t,e)}},{key:"addXaxisAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addXaxisAnnotationExternal(t,e,a)}},{key:"addYaxisAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addYaxisAnnotationExternal(t,e,a)}},{key:"addPointAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addPointAnnotationExternal(t,e,a)}},{key:"clearAnnotations",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,e=this;t&&(e=t),e.annotations.clearAnnotations(e)}},{key:"removeAnnotation",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,i=this;e&&(i=e),i.annotations.removeAnnotation(i,t)}},{key:"getChartArea",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-inner")}},{key:"getSeriesTotalXRange",value:function(t,e){return this.coreUtils.getSeriesTotalsXRange(t,e)}},{key:"getHighestValueInSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=new U(this.ctx);return e.getMinYMaxY(t).highestY}},{key:"getLowestValueInSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=new U(this.ctx);return e.getMinYMaxY(t).lowestY}},{key:"getSeriesTotal",value:function(){return this.w.globals.seriesTotals}},{key:"toggleDataPointSelection",value:function(t,e){return this.updateHelpers.toggleDataPointSelection(t,e)}},{key:"zoomX",value:function(t,e){this.ctx.toolbar.zoomUpdateOptions(t,e)}},{key:"setLocale",value:function(t){this.localization.setCurrentLocaleValues(t)}},{key:"dataURI",value:function(){return new V(this.ctx).dataURI()}},{key:"paper",value:function(){return this.w.globals.dom.Paper}},{key:"_parentResizeCallback",value:function(){!this.w.globals.noData&&this.w.globals.animationEnded&&this.w.config.chart.redrawOnParentResize&&this._windowResize()}},{key:"_windowResize",value:function(){var t=this;clearTimeout(this.w.globals.resizeTimer),this.w.globals.resizeTimer=window.setTimeout((function(){t.w.globals.resized=!0,t.w.globals.dataChanged=!1,t.ctx.update()}),150)}}],[{key:"getChartByID",value:function(t){var e=Apex._chartInstances.filter((function(e){return e.id===t}))[0];return e&&e.chart}},{key:"initOnLoad",value:function(){for(var e=document.querySelectorAll("[data-apexcharts]"),i=0;i2?s-2:0),n=2;n + MIT Expat Licence + */ + + + var BigNumber, + isNumeric = /^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i, + mathceil = Math.ceil, + mathfloor = Math.floor, + notBool = ' not a boolean or binary digit', + roundingMode = 'rounding mode', + tooManyDigits = 'number type has more than 15 significant digits', + ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_', + BASE = 1e14, + LOG_BASE = 14, + MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1 + // MAX_INT32 = 0x7fffffff, // 2^31 - 1 + POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13], + SQRT_BASE = 1e7, + + /* + * The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and + * the arguments to toExponential, toFixed, toFormat, and toPrecision, beyond which an + * exception is thrown (if ERRORS is true). + */ + MAX = 1E9; // 0 to MAX_INT32 + + + /* + * Create and return a BigNumber constructor. + */ + function constructorFactory(config) { + var div, parseNumeric, + + // id tracks the caller function, so its name can be included in error messages. + id = 0, + P = BigNumber.prototype, + ONE = new BigNumber(1), + + + /********************************* EDITABLE DEFAULTS **********************************/ + + + /* + * The default values below must be integers within the inclusive ranges stated. + * The values can also be changed at run-time using BigNumber.config. + */ + + // The maximum number of decimal places for operations involving division. + DECIMAL_PLACES = 20, // 0 to MAX + + /* + * The rounding mode used when rounding to the above decimal places, and when using + * toExponential, toFixed, toFormat and toPrecision, and round (default value). + * UP 0 Away from zero. + * DOWN 1 Towards zero. + * CEIL 2 Towards +Infinity. + * FLOOR 3 Towards -Infinity. + * HALF_UP 4 Towards nearest neighbour. If equidistant, up. + * HALF_DOWN 5 Towards nearest neighbour. If equidistant, down. + * HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour. + * HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity. + * HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity. + */ + ROUNDING_MODE = 4, // 0 to 8 + + // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS] + + // The exponent value at and beneath which toString returns exponential notation. + // Number type: -7 + TO_EXP_NEG = -7, // 0 to -MAX + + // The exponent value at and above which toString returns exponential notation. + // Number type: 21 + TO_EXP_POS = 21, // 0 to MAX + + // RANGE : [MIN_EXP, MAX_EXP] + + // The minimum exponent value, beneath which underflow to zero occurs. + // Number type: -324 (5e-324) + MIN_EXP = -1e7, // -1 to -MAX + + // The maximum exponent value, above which overflow to Infinity occurs. + // Number type: 308 (1.7976931348623157e+308) + // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow. + MAX_EXP = 1e7, // 1 to MAX + + // Whether BigNumber Errors are ever thrown. + ERRORS = true, // true or false + + // Change to intValidatorNoErrors if ERRORS is false. + isValidInt = intValidatorWithErrors, // intValidatorWithErrors/intValidatorNoErrors + + // Whether to use cryptographically-secure random number generation, if available. + CRYPTO = false, // true or false + + /* + * The modulo mode used when calculating the modulus: a mod n. + * The quotient (q = a / n) is calculated according to the corresponding rounding mode. + * The remainder (r) is calculated as: r = a - n * q. + * + * UP 0 The remainder is positive if the dividend is negative, else is negative. + * DOWN 1 The remainder has the same sign as the dividend. + * This modulo mode is commonly known as 'truncated division' and is + * equivalent to (a % n) in JavaScript. + * FLOOR 3 The remainder has the same sign as the divisor (Python %). + * HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function. + * EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). + * The remainder is always positive. + * + * The truncated division, floored division, Euclidian division and IEEE 754 remainder + * modes are commonly used for the modulus operation. + * Although the other rounding modes can also be used, they may not give useful results. + */ + MODULO_MODE = 1, // 0 to 9 + + // The maximum number of significant digits of the result of the toPower operation. + // If POW_PRECISION is 0, there will be unlimited significant digits. + POW_PRECISION = 0, // 0 to MAX + + // The format specification used by the BigNumber.prototype.toFormat method. + FORMAT = { + decimalSeparator: '.', + groupSeparator: ',', + groupSize: 3, + secondaryGroupSize: 0, + fractionGroupSeparator: '\xA0', // non-breaking space + fractionGroupSize: 0 + }; + + + /******************************************************************************************/ + + + // CONSTRUCTOR + + + /* + * The BigNumber constructor and exported function. + * Create and return a new instance of a BigNumber object. + * + * n {number|string|BigNumber} A numeric value. + * [b] {number} The base of n. Integer, 2 to 64 inclusive. + */ + function BigNumber( n, b ) { + var c, e, i, num, len, str, + x = this; + + // Enable constructor usage without new. + if ( !( x instanceof BigNumber ) ) { + + // 'BigNumber() constructor call without new: {n}' + if (ERRORS) raise( 26, 'constructor call without new', n ); + return new BigNumber( n, b ); + } + + // 'new BigNumber() base not an integer: {b}' + // 'new BigNumber() base out of range: {b}' + if ( b == null || !isValidInt( b, 2, 64, id, 'base' ) ) { + + // Duplicate. + if ( n instanceof BigNumber ) { + x.s = n.s; + x.e = n.e; + x.c = ( n = n.c ) ? n.slice() : n; + id = 0; + return; + } + + if ( ( num = typeof n == 'number' ) && n * 0 == 0 ) { + x.s = 1 / n < 0 ? ( n = -n, -1 ) : 1; + + // Fast path for integers. + if ( n === ~~n ) { + for ( e = 0, i = n; i >= 10; i /= 10, e++ ); + x.e = e; + x.c = [n]; + id = 0; + return; + } + + str = n + ''; + } else { + if ( !isNumeric.test( str = n + '' ) ) return parseNumeric( x, str, num ); + x.s = str.charCodeAt(0) === 45 ? ( str = str.slice(1), -1 ) : 1; + } + } else { + b = b | 0; + str = n + ''; + + // Ensure return value is rounded to DECIMAL_PLACES as with other bases. + // Allow exponential notation to be used with base 10 argument. + if ( b == 10 ) { + x = new BigNumber( n instanceof BigNumber ? n : str ); + return round( x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE ); + } + + // Avoid potential interpretation of Infinity and NaN as base 44+ values. + // Any number in exponential form will fail due to the [Ee][+-]. + if ( ( num = typeof n == 'number' ) && n * 0 != 0 || + !( new RegExp( '^-?' + ( c = '[' + ALPHABET.slice( 0, b ) + ']+' ) + + '(?:\\.' + c + ')?$',b < 37 ? 'i' : '' ) ).test(str) ) { + return parseNumeric( x, str, num, b ); + } + + if (num) { + x.s = 1 / n < 0 ? ( str = str.slice(1), -1 ) : 1; + + if ( ERRORS && str.replace( /^0\.0*|\./, '' ).length > 15 ) { + + // 'new BigNumber() number type has more than 15 significant digits: {n}' + raise( id, tooManyDigits, n ); + } + + // Prevent later check for length on converted number. + num = false; + } else { + x.s = str.charCodeAt(0) === 45 ? ( str = str.slice(1), -1 ) : 1; + } + + str = convertBase( str, 10, b, x.s ); + } + + // Decimal point? + if ( ( e = str.indexOf('.') ) > -1 ) str = str.replace( '.', '' ); + + // Exponential form? + if ( ( i = str.search( /e/i ) ) > 0 ) { + + // Determine exponent. + if ( e < 0 ) e = i; + e += +str.slice( i + 1 ); + str = str.substring( 0, i ); + } else if ( e < 0 ) { + + // Integer. + e = str.length; + } + + // Determine leading zeros. + for ( i = 0; str.charCodeAt(i) === 48; i++ ); + + // Determine trailing zeros. + for ( len = str.length; str.charCodeAt(--len) === 48; ); + str = str.slice( i, len + 1 ); + + if (str) { + len = str.length; + + // Disallow numbers with over 15 significant digits if number type. + // 'new BigNumber() number type has more than 15 significant digits: {n}' + if ( num && ERRORS && len > 15 && ( n > MAX_SAFE_INTEGER || n !== mathfloor(n) ) ) { + raise( id, tooManyDigits, x.s * n ); + } + + e = e - i - 1; + + // Overflow? + if ( e > MAX_EXP ) { + + // Infinity. + x.c = x.e = null; + + // Underflow? + } else if ( e < MIN_EXP ) { + + // Zero. + x.c = [ x.e = 0 ]; + } else { + x.e = e; + x.c = []; + + // Transform base + + // e is the base 10 exponent. + // i is where to slice str to get the first element of the coefficient array. + i = ( e + 1 ) % LOG_BASE; + if ( e < 0 ) i += LOG_BASE; + + if ( i < len ) { + if (i) x.c.push( +str.slice( 0, i ) ); + + for ( len -= LOG_BASE; i < len; ) { + x.c.push( +str.slice( i, i += LOG_BASE ) ); + } + + str = str.slice(i); + i = LOG_BASE - str.length; + } else { + i -= len; + } + + for ( ; i--; str += '0' ); + x.c.push( +str ); + } + } else { + + // Zero. + x.c = [ x.e = 0 ]; + } + + id = 0; + } + + + // CONSTRUCTOR PROPERTIES + + + BigNumber.another = constructorFactory; + + BigNumber.ROUND_UP = 0; + BigNumber.ROUND_DOWN = 1; + BigNumber.ROUND_CEIL = 2; + BigNumber.ROUND_FLOOR = 3; + BigNumber.ROUND_HALF_UP = 4; + BigNumber.ROUND_HALF_DOWN = 5; + BigNumber.ROUND_HALF_EVEN = 6; + BigNumber.ROUND_HALF_CEIL = 7; + BigNumber.ROUND_HALF_FLOOR = 8; + BigNumber.EUCLID = 9; + + + /* + * Configure infrequently-changing library-wide settings. + * + * Accept an object or an argument list, with one or many of the following properties or + * parameters respectively: + * + * DECIMAL_PLACES {number} Integer, 0 to MAX inclusive + * ROUNDING_MODE {number} Integer, 0 to 8 inclusive + * EXPONENTIAL_AT {number|number[]} Integer, -MAX to MAX inclusive or + * [integer -MAX to 0 incl., 0 to MAX incl.] + * RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or + * [integer -MAX to -1 incl., integer 1 to MAX incl.] + * ERRORS {boolean|number} true, false, 1 or 0 + * CRYPTO {boolean|number} true, false, 1 or 0 + * MODULO_MODE {number} 0 to 9 inclusive + * POW_PRECISION {number} 0 to MAX inclusive + * FORMAT {object} See BigNumber.prototype.toFormat + * decimalSeparator {string} + * groupSeparator {string} + * groupSize {number} + * secondaryGroupSize {number} + * fractionGroupSeparator {string} + * fractionGroupSize {number} + * + * (The values assigned to the above FORMAT object properties are not checked for validity.) + * + * E.g. + * BigNumber.config(20, 4) is equivalent to + * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }) + * + * Ignore properties/parameters set to null or undefined. + * Return an object with the properties current values. + */ + BigNumber.config = BigNumber.set = function () { + var v, p, + i = 0, + r = {}, + a = arguments, + o = a[0], + has = o && typeof o == 'object' + ? function () { if ( o.hasOwnProperty(p) ) return ( v = o[p] ) != null; } + : function () { if ( a.length > i ) return ( v = a[i++] ) != null; }; + + // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive. + // 'config() DECIMAL_PLACES not an integer: {v}' + // 'config() DECIMAL_PLACES out of range: {v}' + if ( has( p = 'DECIMAL_PLACES' ) && isValidInt( v, 0, MAX, 2, p ) ) { + DECIMAL_PLACES = v | 0; + } + r[p] = DECIMAL_PLACES; + + // ROUNDING_MODE {number} Integer, 0 to 8 inclusive. + // 'config() ROUNDING_MODE not an integer: {v}' + // 'config() ROUNDING_MODE out of range: {v}' + if ( has( p = 'ROUNDING_MODE' ) && isValidInt( v, 0, 8, 2, p ) ) { + ROUNDING_MODE = v | 0; + } + r[p] = ROUNDING_MODE; + + // EXPONENTIAL_AT {number|number[]} + // Integer, -MAX to MAX inclusive or [integer -MAX to 0 inclusive, 0 to MAX inclusive]. + // 'config() EXPONENTIAL_AT not an integer: {v}' + // 'config() EXPONENTIAL_AT out of range: {v}' + if ( has( p = 'EXPONENTIAL_AT' ) ) { + + if ( isArray(v) ) { + if ( isValidInt( v[0], -MAX, 0, 2, p ) && isValidInt( v[1], 0, MAX, 2, p ) ) { + TO_EXP_NEG = v[0] | 0; + TO_EXP_POS = v[1] | 0; + } + } else if ( isValidInt( v, -MAX, MAX, 2, p ) ) { + TO_EXP_NEG = -( TO_EXP_POS = ( v < 0 ? -v : v ) | 0 ); + } + } + r[p] = [ TO_EXP_NEG, TO_EXP_POS ]; + + // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or + // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive]. + // 'config() RANGE not an integer: {v}' + // 'config() RANGE cannot be zero: {v}' + // 'config() RANGE out of range: {v}' + if ( has( p = 'RANGE' ) ) { + + if ( isArray(v) ) { + if ( isValidInt( v[0], -MAX, -1, 2, p ) && isValidInt( v[1], 1, MAX, 2, p ) ) { + MIN_EXP = v[0] | 0; + MAX_EXP = v[1] | 0; + } + } else if ( isValidInt( v, -MAX, MAX, 2, p ) ) { + if ( v | 0 ) MIN_EXP = -( MAX_EXP = ( v < 0 ? -v : v ) | 0 ); + else if (ERRORS) raise( 2, p + ' cannot be zero', v ); + } + } + r[p] = [ MIN_EXP, MAX_EXP ]; + + // ERRORS {boolean|number} true, false, 1 or 0. + // 'config() ERRORS not a boolean or binary digit: {v}' + if ( has( p = 'ERRORS' ) ) { + + if ( v === !!v || v === 1 || v === 0 ) { + id = 0; + isValidInt = ( ERRORS = !!v ) ? intValidatorWithErrors : intValidatorNoErrors; + } else if (ERRORS) { + raise( 2, p + notBool, v ); + } + } + r[p] = ERRORS; + + // CRYPTO {boolean|number} true, false, 1 or 0. + // 'config() CRYPTO not a boolean or binary digit: {v}' + // 'config() crypto unavailable: {crypto}' + if ( has( p = 'CRYPTO' ) ) { + + if ( v === true || v === false || v === 1 || v === 0 ) { + if (v) { + v = typeof crypto == 'undefined'; + if ( !v && crypto && (crypto.getRandomValues || crypto.randomBytes)) { + CRYPTO = true; + } else if (ERRORS) { + raise( 2, 'crypto unavailable', v ? void 0 : crypto ); + } else { + CRYPTO = false; + } + } else { + CRYPTO = false; + } + } else if (ERRORS) { + raise( 2, p + notBool, v ); + } + } + r[p] = CRYPTO; + + // MODULO_MODE {number} Integer, 0 to 9 inclusive. + // 'config() MODULO_MODE not an integer: {v}' + // 'config() MODULO_MODE out of range: {v}' + if ( has( p = 'MODULO_MODE' ) && isValidInt( v, 0, 9, 2, p ) ) { + MODULO_MODE = v | 0; + } + r[p] = MODULO_MODE; + + // POW_PRECISION {number} Integer, 0 to MAX inclusive. + // 'config() POW_PRECISION not an integer: {v}' + // 'config() POW_PRECISION out of range: {v}' + if ( has( p = 'POW_PRECISION' ) && isValidInt( v, 0, MAX, 2, p ) ) { + POW_PRECISION = v | 0; + } + r[p] = POW_PRECISION; + + // FORMAT {object} + // 'config() FORMAT not an object: {v}' + if ( has( p = 'FORMAT' ) ) { + + if ( typeof v == 'object' ) { + FORMAT = v; + } else if (ERRORS) { + raise( 2, p + ' not an object', v ); + } + } + r[p] = FORMAT; + + return r; + }; + + + /* + * Return a new BigNumber whose value is the maximum of the arguments. + * + * arguments {number|string|BigNumber} + */ + BigNumber.max = function () { return maxOrMin( arguments, P.lt ); }; + + + /* + * Return a new BigNumber whose value is the minimum of the arguments. + * + * arguments {number|string|BigNumber} + */ + BigNumber.min = function () { return maxOrMin( arguments, P.gt ); }; + + + /* + * Return a new BigNumber with a random value equal to or greater than 0 and less than 1, + * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing + * zeros are produced). + * + * [dp] {number} Decimal places. Integer, 0 to MAX inclusive. + * + * 'random() decimal places not an integer: {dp}' + * 'random() decimal places out of range: {dp}' + * 'random() crypto unavailable: {crypto}' + */ + BigNumber.random = (function () { + var pow2_53 = 0x20000000000000; + + // Return a 53 bit integer n, where 0 <= n < 9007199254740992. + // Check if Math.random() produces more than 32 bits of randomness. + // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits. + // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1. + var random53bitInt = (Math.random() * pow2_53) & 0x1fffff + ? function () { return mathfloor( Math.random() * pow2_53 ); } + : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) + + (Math.random() * 0x800000 | 0); }; + + return function (dp) { + var a, b, e, k, v, + i = 0, + c = [], + rand = new BigNumber(ONE); + + dp = dp == null || !isValidInt( dp, 0, MAX, 14 ) ? DECIMAL_PLACES : dp | 0; + k = mathceil( dp / LOG_BASE ); + + if (CRYPTO) { + + // Browsers supporting crypto.getRandomValues. + if (crypto.getRandomValues) { + + a = crypto.getRandomValues( new Uint32Array( k *= 2 ) ); + + for ( ; i < k; ) { + + // 53 bits: + // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2) + // 11111 11111111 11111111 11111111 11100000 00000000 00000000 + // ((Math.pow(2, 32) - 1) >>> 11).toString(2) + // 11111 11111111 11111111 + // 0x20000 is 2^21. + v = a[i] * 0x20000 + (a[i + 1] >>> 11); + + // Rejection sampling: + // 0 <= v < 9007199254740992 + // Probability that v >= 9e15, is + // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251 + if ( v >= 9e15 ) { + b = crypto.getRandomValues( new Uint32Array(2) ); + a[i] = b[0]; + a[i + 1] = b[1]; + } else { + + // 0 <= v <= 8999999999999999 + // 0 <= (v % 1e14) <= 99999999999999 + c.push( v % 1e14 ); + i += 2; + } + } + i = k / 2; + + // Node.js supporting crypto.randomBytes. + } else if (crypto.randomBytes) { + + // buffer + a = crypto.randomBytes( k *= 7 ); + + for ( ; i < k; ) { + + // 0x1000000000000 is 2^48, 0x10000000000 is 2^40 + // 0x100000000 is 2^32, 0x1000000 is 2^24 + // 11111 11111111 11111111 11111111 11111111 11111111 11111111 + // 0 <= v < 9007199254740992 + v = ( ( a[i] & 31 ) * 0x1000000000000 ) + ( a[i + 1] * 0x10000000000 ) + + ( a[i + 2] * 0x100000000 ) + ( a[i + 3] * 0x1000000 ) + + ( a[i + 4] << 16 ) + ( a[i + 5] << 8 ) + a[i + 6]; + + if ( v >= 9e15 ) { + crypto.randomBytes(7).copy( a, i ); + } else { + + // 0 <= (v % 1e14) <= 99999999999999 + c.push( v % 1e14 ); + i += 7; + } + } + i = k / 7; + } else { + CRYPTO = false; + if (ERRORS) raise( 14, 'crypto unavailable', crypto ); + } + } + + // Use Math.random. + if (!CRYPTO) { + + for ( ; i < k; ) { + v = random53bitInt(); + if ( v < 9e15 ) c[i++] = v % 1e14; + } + } + + k = c[--i]; + dp %= LOG_BASE; + + // Convert trailing digits to zeros according to dp. + if ( k && dp ) { + v = POWS_TEN[LOG_BASE - dp]; + c[i] = mathfloor( k / v ) * v; + } + + // Remove trailing elements which are zero. + for ( ; c[i] === 0; c.pop(), i-- ); + + // Zero? + if ( i < 0 ) { + c = [ e = 0 ]; + } else { + + // Remove leading elements which are zero and adjust exponent accordingly. + for ( e = -1 ; c[0] === 0; c.shift(), e -= LOG_BASE); + + // Count the digits of the first element of c to determine leading zeros, and... + for ( i = 1, v = c[0]; v >= 10; v /= 10, i++); + + // adjust the exponent accordingly. + if ( i < LOG_BASE ) e -= LOG_BASE - i; + } + + rand.e = e; + rand.c = c; + return rand; + }; + })(); + + + // PRIVATE FUNCTIONS + + + // Convert a numeric string of baseIn to a numeric string of baseOut. + function convertBase( str, baseOut, baseIn, sign ) { + var d, e, k, r, x, xc, y, + i = str.indexOf( '.' ), + dp = DECIMAL_PLACES, + rm = ROUNDING_MODE; + + if ( baseIn < 37 ) str = str.toLowerCase(); + + // Non-integer. + if ( i >= 0 ) { + k = POW_PRECISION; + + // Unlimited precision. + POW_PRECISION = 0; + str = str.replace( '.', '' ); + y = new BigNumber(baseIn); + x = y.pow( str.length - i ); + POW_PRECISION = k; + + // Convert str as if an integer, then restore the fraction part by dividing the + // result by its base raised to a power. + y.c = toBaseOut( toFixedPoint( coeffToString( x.c ), x.e ), 10, baseOut ); + y.e = y.c.length; + } + + // Convert the number as integer. + xc = toBaseOut( str, baseIn, baseOut ); + e = k = xc.length; + + // Remove trailing zeros. + for ( ; xc[--k] == 0; xc.pop() ); + if ( !xc[0] ) return '0'; + + if ( i < 0 ) { + --e; + } else { + x.c = xc; + x.e = e; + + // sign is needed for correct rounding. + x.s = sign; + x = div( x, y, dp, rm, baseOut ); + xc = x.c; + r = x.r; + e = x.e; + } + + d = e + dp + 1; + + // The rounding digit, i.e. the digit to the right of the digit that may be rounded up. + i = xc[d]; + k = baseOut / 2; + r = r || d < 0 || xc[d + 1] != null; + + r = rm < 4 ? ( i != null || r ) && ( rm == 0 || rm == ( x.s < 0 ? 3 : 2 ) ) + : i > k || i == k &&( rm == 4 || r || rm == 6 && xc[d - 1] & 1 || + rm == ( x.s < 0 ? 8 : 7 ) ); + + if ( d < 1 || !xc[0] ) { + + // 1^-dp or 0. + str = r ? toFixedPoint( '1', -dp ) : '0'; + } else { + xc.length = d; + + if (r) { + + // Rounding up may mean the previous digit has to be rounded up and so on. + for ( --baseOut; ++xc[--d] > baseOut; ) { + xc[d] = 0; + + if ( !d ) { + ++e; + xc.unshift(1); + } + } + } + + // Determine trailing zeros. + for ( k = xc.length; !xc[--k]; ); + + // E.g. [4, 11, 15] becomes 4bf. + for ( i = 0, str = ''; i <= k; str += ALPHABET.charAt( xc[i++] ) ); + str = toFixedPoint( str, e ); + } + + // The caller will add the sign. + return str; + } + + + // Perform division in the specified base. Called by div and convertBase. + div = (function () { + + // Assume non-zero x and k. + function multiply( x, k, base ) { + var m, temp, xlo, xhi, + carry = 0, + i = x.length, + klo = k % SQRT_BASE, + khi = k / SQRT_BASE | 0; + + for ( x = x.slice(); i--; ) { + xlo = x[i] % SQRT_BASE; + xhi = x[i] / SQRT_BASE | 0; + m = khi * xlo + xhi * klo; + temp = klo * xlo + ( ( m % SQRT_BASE ) * SQRT_BASE ) + carry; + carry = ( temp / base | 0 ) + ( m / SQRT_BASE | 0 ) + khi * xhi; + x[i] = temp % base; + } + + if (carry) x.unshift(carry); + + return x; + } + + function compare( a, b, aL, bL ) { + var i, cmp; + + if ( aL != bL ) { + cmp = aL > bL ? 1 : -1; + } else { + + for ( i = cmp = 0; i < aL; i++ ) { + + if ( a[i] != b[i] ) { + cmp = a[i] > b[i] ? 1 : -1; + break; + } + } + } + return cmp; + } + + function subtract( a, b, aL, base ) { + var i = 0; + + // Subtract b from a. + for ( ; aL--; ) { + a[aL] -= i; + i = a[aL] < b[aL] ? 1 : 0; + a[aL] = i * base + a[aL] - b[aL]; + } + + // Remove leading zeros. + for ( ; !a[0] && a.length > 1; a.shift() ); + } + + // x: dividend, y: divisor. + return function ( x, y, dp, rm, base ) { + var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0, + yL, yz, + s = x.s == y.s ? 1 : -1, + xc = x.c, + yc = y.c; + + // Either NaN, Infinity or 0? + if ( !xc || !xc[0] || !yc || !yc[0] ) { + + return new BigNumber( + + // Return NaN if either NaN, or both Infinity or 0. + !x.s || !y.s || ( xc ? yc && xc[0] == yc[0] : !yc ) ? NaN : + + // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0. + xc && xc[0] == 0 || !yc ? s * 0 : s / 0 + ); + } + + q = new BigNumber(s); + qc = q.c = []; + e = x.e - y.e; + s = dp + e + 1; + + if ( !base ) { + base = BASE; + e = bitFloor( x.e / LOG_BASE ) - bitFloor( y.e / LOG_BASE ); + s = s / LOG_BASE | 0; + } + + // Result exponent may be one less then the current value of e. + // The coefficients of the BigNumbers from convertBase may have trailing zeros. + for ( i = 0; yc[i] == ( xc[i] || 0 ); i++ ); + if ( yc[i] > ( xc[i] || 0 ) ) e--; + + if ( s < 0 ) { + qc.push(1); + more = true; + } else { + xL = xc.length; + yL = yc.length; + i = 0; + s += 2; + + // Normalise xc and yc so highest order digit of yc is >= base / 2. + + n = mathfloor( base / ( yc[0] + 1 ) ); + + // Not necessary, but to handle odd bases where yc[0] == ( base / 2 ) - 1. + // if ( n > 1 || n++ == 1 && yc[0] < base / 2 ) { + if ( n > 1 ) { + yc = multiply( yc, n, base ); + xc = multiply( xc, n, base ); + yL = yc.length; + xL = xc.length; + } + + xi = yL; + rem = xc.slice( 0, yL ); + remL = rem.length; + + // Add zeros to make remainder as long as divisor. + for ( ; remL < yL; rem[remL++] = 0 ); + yz = yc.slice(); + yz.unshift(0); + yc0 = yc[0]; + if ( yc[1] >= base / 2 ) yc0++; + // Not necessary, but to prevent trial digit n > base, when using base 3. + // else if ( base == 3 && yc0 == 1 ) yc0 = 1 + 1e-15; + + do { + n = 0; + + // Compare divisor and remainder. + cmp = compare( yc, rem, yL, remL ); + + // If divisor < remainder. + if ( cmp < 0 ) { + + // Calculate trial digit, n. + + rem0 = rem[0]; + if ( yL != remL ) rem0 = rem0 * base + ( rem[1] || 0 ); + + // n is how many times the divisor goes into the current remainder. + n = mathfloor( rem0 / yc0 ); + + // Algorithm: + // 1. product = divisor * trial digit (n) + // 2. if product > remainder: product -= divisor, n-- + // 3. remainder -= product + // 4. if product was < remainder at 2: + // 5. compare new remainder and divisor + // 6. If remainder > divisor: remainder -= divisor, n++ + + if ( n > 1 ) { + + // n may be > base only when base is 3. + if (n >= base) n = base - 1; + + // product = divisor * trial digit. + prod = multiply( yc, n, base ); + prodL = prod.length; + remL = rem.length; + + // Compare product and remainder. + // If product > remainder. + // Trial digit n too high. + // n is 1 too high about 5% of the time, and is not known to have + // ever been more than 1 too high. + while ( compare( prod, rem, prodL, remL ) == 1 ) { + n--; + + // Subtract divisor from product. + subtract( prod, yL < prodL ? yz : yc, prodL, base ); + prodL = prod.length; + cmp = 1; + } + } else { + + // n is 0 or 1, cmp is -1. + // If n is 0, there is no need to compare yc and rem again below, + // so change cmp to 1 to avoid it. + // If n is 1, leave cmp as -1, so yc and rem are compared again. + if ( n == 0 ) { + + // divisor < remainder, so n must be at least 1. + cmp = n = 1; + } + + // product = divisor + prod = yc.slice(); + prodL = prod.length; + } + + if ( prodL < remL ) prod.unshift(0); + + // Subtract product from remainder. + subtract( rem, prod, remL, base ); + remL = rem.length; + + // If product was < remainder. + if ( cmp == -1 ) { + + // Compare divisor and new remainder. + // If divisor < new remainder, subtract divisor from remainder. + // Trial digit n too low. + // n is 1 too low about 5% of the time, and very rarely 2 too low. + while ( compare( yc, rem, yL, remL ) < 1 ) { + n++; + + // Subtract divisor from remainder. + subtract( rem, yL < remL ? yz : yc, remL, base ); + remL = rem.length; + } + } + } else if ( cmp === 0 ) { + n++; + rem = [0]; + } // else cmp === 1 and n will be 0 + + // Add the next digit, n, to the result array. + qc[i++] = n; + + // Update the remainder. + if ( rem[0] ) { + rem[remL++] = xc[xi] || 0; + } else { + rem = [ xc[xi] ]; + remL = 1; + } + } while ( ( xi++ < xL || rem[0] != null ) && s-- ); + + more = rem[0] != null; + + // Leading zero? + if ( !qc[0] ) qc.shift(); + } + + if ( base == BASE ) { + + // To calculate q.e, first get the number of digits of qc[0]. + for ( i = 1, s = qc[0]; s >= 10; s /= 10, i++ ); + round( q, dp + ( q.e = i + e * LOG_BASE - 1 ) + 1, rm, more ); + + // Caller is convertBase. + } else { + q.e = e; + q.r = +more; + } + + return q; + }; + })(); + + + /* + * Return a string representing the value of BigNumber n in fixed-point or exponential + * notation rounded to the specified decimal places or significant digits. + * + * n is a BigNumber. + * i is the index of the last digit required (i.e. the digit that may be rounded up). + * rm is the rounding mode. + * caller is caller id: toExponential 19, toFixed 20, toFormat 21, toPrecision 24. + */ + function format( n, i, rm, caller ) { + var c0, e, ne, len, str; + + rm = rm != null && isValidInt( rm, 0, 8, caller, roundingMode ) + ? rm | 0 : ROUNDING_MODE; + + if ( !n.c ) return n.toString(); + c0 = n.c[0]; + ne = n.e; + + if ( i == null ) { + str = coeffToString( n.c ); + str = caller == 19 || caller == 24 && ne <= TO_EXP_NEG + ? toExponential( str, ne ) + : toFixedPoint( str, ne ); + } else { + n = round( new BigNumber(n), i, rm ); + + // n.e may have changed if the value was rounded up. + e = n.e; + + str = coeffToString( n.c ); + len = str.length; + + // toPrecision returns exponential notation if the number of significant digits + // specified is less than the number of digits necessary to represent the integer + // part of the value in fixed-point notation. + + // Exponential notation. + if ( caller == 19 || caller == 24 && ( i <= e || e <= TO_EXP_NEG ) ) { + + // Append zeros? + for ( ; len < i; str += '0', len++ ); + str = toExponential( str, e ); + + // Fixed-point notation. + } else { + i -= ne; + str = toFixedPoint( str, e ); + + // Append zeros? + if ( e + 1 > len ) { + if ( --i > 0 ) for ( str += '.'; i--; str += '0' ); + } else { + i += e - len; + if ( i > 0 ) { + if ( e + 1 == len ) str += '.'; + for ( ; i--; str += '0' ); + } + } + } + } + + return n.s < 0 && c0 ? '-' + str : str; + } + + + // Handle BigNumber.max and BigNumber.min. + function maxOrMin( args, method ) { + var m, n, + i = 0; + + if ( isArray( args[0] ) ) args = args[0]; + m = new BigNumber( args[0] ); + + for ( ; ++i < args.length; ) { + n = new BigNumber( args[i] ); + + // If any number is NaN, return NaN. + if ( !n.s ) { + m = n; + break; + } else if ( method.call( m, n ) ) { + m = n; + } + } + + return m; + } + + + /* + * Return true if n is an integer in range, otherwise throw. + * Use for argument validation when ERRORS is true. + */ + function intValidatorWithErrors( n, min, max, caller, name ) { + if ( n < min || n > max || n != truncate(n) ) { + raise( caller, ( name || 'decimal places' ) + + ( n < min || n > max ? ' out of range' : ' not an integer' ), n ); + } + + return true; + } + + + /* + * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP. + * Called by minus, plus and times. + */ + function normalise( n, c, e ) { + var i = 1, + j = c.length; + + // Remove trailing zeros. + for ( ; !c[--j]; c.pop() ); + + // Calculate the base 10 exponent. First get the number of digits of c[0]. + for ( j = c[0]; j >= 10; j /= 10, i++ ); + + // Overflow? + if ( ( e = i + e * LOG_BASE - 1 ) > MAX_EXP ) { + + // Infinity. + n.c = n.e = null; + + // Underflow? + } else if ( e < MIN_EXP ) { + + // Zero. + n.c = [ n.e = 0 ]; + } else { + n.e = e; + n.c = c; + } + + return n; + } + + + // Handle values that fail the validity test in BigNumber. + parseNumeric = (function () { + var basePrefix = /^(-?)0([xbo])(?=\w[\w.]*$)/i, + dotAfter = /^([^.]+)\.$/, + dotBefore = /^\.([^.]+)$/, + isInfinityOrNaN = /^-?(Infinity|NaN)$/, + whitespaceOrPlus = /^\s*\+(?=[\w.])|^\s+|\s+$/g; + + return function ( x, str, num, b ) { + var base, + s = num ? str : str.replace( whitespaceOrPlus, '' ); + + // No exception on ±Infinity or NaN. + if ( isInfinityOrNaN.test(s) ) { + x.s = isNaN(s) ? null : s < 0 ? -1 : 1; + } else { + if ( !num ) { + + // basePrefix = /^(-?)0([xbo])(?=\w[\w.]*$)/i + s = s.replace( basePrefix, function ( m, p1, p2 ) { + base = ( p2 = p2.toLowerCase() ) == 'x' ? 16 : p2 == 'b' ? 2 : 8; + return !b || b == base ? p1 : m; + }); + + if (b) { + base = b; + + // E.g. '1.' to '1', '.1' to '0.1' + s = s.replace( dotAfter, '$1' ).replace( dotBefore, '0.$1' ); + } + + if ( str != s ) return new BigNumber( s, base ); + } + + // 'new BigNumber() not a number: {n}' + // 'new BigNumber() not a base {b} number: {n}' + if (ERRORS) raise( id, 'not a' + ( b ? ' base ' + b : '' ) + ' number', str ); + x.s = null; + } + + x.c = x.e = null; + id = 0; + } + })(); + + + // Throw a BigNumber Error. + function raise( caller, msg, val ) { + var error = new Error( [ + 'new BigNumber', // 0 + 'cmp', // 1 + 'config', // 2 + 'div', // 3 + 'divToInt', // 4 + 'eq', // 5 + 'gt', // 6 + 'gte', // 7 + 'lt', // 8 + 'lte', // 9 + 'minus', // 10 + 'mod', // 11 + 'plus', // 12 + 'precision', // 13 + 'random', // 14 + 'round', // 15 + 'shift', // 16 + 'times', // 17 + 'toDigits', // 18 + 'toExponential', // 19 + 'toFixed', // 20 + 'toFormat', // 21 + 'toFraction', // 22 + 'pow', // 23 + 'toPrecision', // 24 + 'toString', // 25 + 'BigNumber' // 26 + ][caller] + '() ' + msg + ': ' + val ); + + error.name = 'BigNumber Error'; + id = 0; + throw error; + } + + + /* + * Round x to sd significant digits using rounding mode rm. Check for over/under-flow. + * If r is truthy, it is known that there are more digits after the rounding digit. + */ + function round( x, sd, rm, r ) { + var d, i, j, k, n, ni, rd, + xc = x.c, + pows10 = POWS_TEN; + + // if x is not Infinity or NaN... + if (xc) { + + // rd is the rounding digit, i.e. the digit after the digit that may be rounded up. + // n is a base 1e14 number, the value of the element of array x.c containing rd. + // ni is the index of n within x.c. + // d is the number of digits of n. + // i is the index of rd within n including leading zeros. + // j is the actual index of rd within n (if < 0, rd is a leading zero). + out: { + + // Get the number of digits of the first element of xc. + for ( d = 1, k = xc[0]; k >= 10; k /= 10, d++ ); + i = sd - d; + + // If the rounding digit is in the first element of xc... + if ( i < 0 ) { + i += LOG_BASE; + j = sd; + n = xc[ ni = 0 ]; + + // Get the rounding digit at index j of n. + rd = n / pows10[ d - j - 1 ] % 10 | 0; + } else { + ni = mathceil( ( i + 1 ) / LOG_BASE ); + + if ( ni >= xc.length ) { + + if (r) { + + // Needed by sqrt. + for ( ; xc.length <= ni; xc.push(0) ); + n = rd = 0; + d = 1; + i %= LOG_BASE; + j = i - LOG_BASE + 1; + } else { + break out; + } + } else { + n = k = xc[ni]; + + // Get the number of digits of n. + for ( d = 1; k >= 10; k /= 10, d++ ); + + // Get the index of rd within n. + i %= LOG_BASE; + + // Get the index of rd within n, adjusted for leading zeros. + // The number of leading zeros of n is given by LOG_BASE - d. + j = i - LOG_BASE + d; + + // Get the rounding digit at index j of n. + rd = j < 0 ? 0 : n / pows10[ d - j - 1 ] % 10 | 0; + } + } + + r = r || sd < 0 || + + // Are there any non-zero digits after the rounding digit? + // The expression n % pows10[ d - j - 1 ] returns all digits of n to the right + // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714. + xc[ni + 1] != null || ( j < 0 ? n : n % pows10[ d - j - 1 ] ); + + r = rm < 4 + ? ( rd || r ) && ( rm == 0 || rm == ( x.s < 0 ? 3 : 2 ) ) + : rd > 5 || rd == 5 && ( rm == 4 || r || rm == 6 && + + // Check whether the digit to the left of the rounding digit is odd. + ( ( i > 0 ? j > 0 ? n / pows10[ d - j ] : 0 : xc[ni - 1] ) % 10 ) & 1 || + rm == ( x.s < 0 ? 8 : 7 ) ); + + if ( sd < 1 || !xc[0] ) { + xc.length = 0; + + if (r) { + + // Convert sd to decimal places. + sd -= x.e + 1; + + // 1, 0.1, 0.01, 0.001, 0.0001 etc. + xc[0] = pows10[ ( LOG_BASE - sd % LOG_BASE ) % LOG_BASE ]; + x.e = -sd || 0; + } else { + + // Zero. + xc[0] = x.e = 0; + } + + return x; + } + + // Remove excess digits. + if ( i == 0 ) { + xc.length = ni; + k = 1; + ni--; + } else { + xc.length = ni + 1; + k = pows10[ LOG_BASE - i ]; + + // E.g. 56700 becomes 56000 if 7 is the rounding digit. + // j > 0 means i > number of leading zeros of n. + xc[ni] = j > 0 ? mathfloor( n / pows10[ d - j ] % pows10[j] ) * k : 0; + } + + // Round up? + if (r) { + + for ( ; ; ) { + + // If the digit to be rounded up is in the first element of xc... + if ( ni == 0 ) { + + // i will be the length of xc[0] before k is added. + for ( i = 1, j = xc[0]; j >= 10; j /= 10, i++ ); + j = xc[0] += k; + for ( k = 1; j >= 10; j /= 10, k++ ); + + // if i != k the length has increased. + if ( i != k ) { + x.e++; + if ( xc[0] == BASE ) xc[0] = 1; + } + + break; + } else { + xc[ni] += k; + if ( xc[ni] != BASE ) break; + xc[ni--] = 0; + k = 1; + } + } + } + + // Remove trailing zeros. + for ( i = xc.length; xc[--i] === 0; xc.pop() ); + } + + // Overflow? Infinity. + if ( x.e > MAX_EXP ) { + x.c = x.e = null; + + // Underflow? Zero. + } else if ( x.e < MIN_EXP ) { + x.c = [ x.e = 0 ]; + } + } + + return x; + } + + + // PROTOTYPE/INSTANCE METHODS + + + /* + * Return a new BigNumber whose value is the absolute value of this BigNumber. + */ + P.absoluteValue = P.abs = function () { + var x = new BigNumber(this); + if ( x.s < 0 ) x.s = 1; + return x; + }; + + + /* + * Return a new BigNumber whose value is the value of this BigNumber rounded to a whole + * number in the direction of Infinity. + */ + P.ceil = function () { + return round( new BigNumber(this), this.e + 1, 2 ); + }; + + + /* + * Return + * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b), + * -1 if the value of this BigNumber is less than the value of BigNumber(y, b), + * 0 if they have the same value, + * or null if the value of either is NaN. + */ + P.comparedTo = P.cmp = function ( y, b ) { + id = 1; + return compare( this, new BigNumber( y, b ) ); + }; + + + /* + * Return the number of decimal places of the value of this BigNumber, or null if the value + * of this BigNumber is ±Infinity or NaN. + */ + P.decimalPlaces = P.dp = function () { + var n, v, + c = this.c; + + if ( !c ) return null; + n = ( ( v = c.length - 1 ) - bitFloor( this.e / LOG_BASE ) ) * LOG_BASE; + + // Subtract the number of trailing zeros of the last number. + if ( v = c[v] ) for ( ; v % 10 == 0; v /= 10, n-- ); + if ( n < 0 ) n = 0; + + return n; + }; + + + /* + * n / 0 = I + * n / N = N + * n / I = 0 + * 0 / n = 0 + * 0 / 0 = N + * 0 / N = N + * 0 / I = 0 + * N / n = N + * N / 0 = N + * N / N = N + * N / I = N + * I / n = I + * I / 0 = I + * I / N = N + * I / I = N + * + * Return a new BigNumber whose value is the value of this BigNumber divided by the value of + * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE. + */ + P.dividedBy = P.div = function ( y, b ) { + id = 3; + return div( this, new BigNumber( y, b ), DECIMAL_PLACES, ROUNDING_MODE ); + }; + + + /* + * Return a new BigNumber whose value is the integer part of dividing the value of this + * BigNumber by the value of BigNumber(y, b). + */ + P.dividedToIntegerBy = P.divToInt = function ( y, b ) { + id = 4; + return div( this, new BigNumber( y, b ), 0, 1 ); + }; + + + /* + * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b), + * otherwise returns false. + */ + P.equals = P.eq = function ( y, b ) { + id = 5; + return compare( this, new BigNumber( y, b ) ) === 0; + }; + + + /* + * Return a new BigNumber whose value is the value of this BigNumber rounded to a whole + * number in the direction of -Infinity. + */ + P.floor = function () { + return round( new BigNumber(this), this.e + 1, 3 ); + }; + + + /* + * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b), + * otherwise returns false. + */ + P.greaterThan = P.gt = function ( y, b ) { + id = 6; + return compare( this, new BigNumber( y, b ) ) > 0; + }; + + + /* + * Return true if the value of this BigNumber is greater than or equal to the value of + * BigNumber(y, b), otherwise returns false. + */ + P.greaterThanOrEqualTo = P.gte = function ( y, b ) { + id = 7; + return ( b = compare( this, new BigNumber( y, b ) ) ) === 1 || b === 0; + + }; + + + /* + * Return true if the value of this BigNumber is a finite number, otherwise returns false. + */ + P.isFinite = function () { + return !!this.c; + }; + + + /* + * Return true if the value of this BigNumber is an integer, otherwise return false. + */ + P.isInteger = P.isInt = function () { + return !!this.c && bitFloor( this.e / LOG_BASE ) > this.c.length - 2; + }; + + + /* + * Return true if the value of this BigNumber is NaN, otherwise returns false. + */ + P.isNaN = function () { + return !this.s; + }; + + + /* + * Return true if the value of this BigNumber is negative, otherwise returns false. + */ + P.isNegative = P.isNeg = function () { + return this.s < 0; + }; + + + /* + * Return true if the value of this BigNumber is 0 or -0, otherwise returns false. + */ + P.isZero = function () { + return !!this.c && this.c[0] == 0; + }; + + + /* + * Return true if the value of this BigNumber is less than the value of BigNumber(y, b), + * otherwise returns false. + */ + P.lessThan = P.lt = function ( y, b ) { + id = 8; + return compare( this, new BigNumber( y, b ) ) < 0; + }; + + + /* + * Return true if the value of this BigNumber is less than or equal to the value of + * BigNumber(y, b), otherwise returns false. + */ + P.lessThanOrEqualTo = P.lte = function ( y, b ) { + id = 9; + return ( b = compare( this, new BigNumber( y, b ) ) ) === -1 || b === 0; + }; + + + /* + * n - 0 = n + * n - N = N + * n - I = -I + * 0 - n = -n + * 0 - 0 = 0 + * 0 - N = N + * 0 - I = -I + * N - n = N + * N - 0 = N + * N - N = N + * N - I = N + * I - n = I + * I - 0 = I + * I - N = N + * I - I = N + * + * Return a new BigNumber whose value is the value of this BigNumber minus the value of + * BigNumber(y, b). + */ + P.minus = P.sub = function ( y, b ) { + var i, j, t, xLTy, + x = this, + a = x.s; + + id = 10; + y = new BigNumber( y, b ); + b = y.s; + + // Either NaN? + if ( !a || !b ) return new BigNumber(NaN); + + // Signs differ? + if ( a != b ) { + y.s = -b; + return x.plus(y); + } + + var xe = x.e / LOG_BASE, + ye = y.e / LOG_BASE, + xc = x.c, + yc = y.c; + + if ( !xe || !ye ) { + + // Either Infinity? + if ( !xc || !yc ) return xc ? ( y.s = -b, y ) : new BigNumber( yc ? x : NaN ); + + // Either zero? + if ( !xc[0] || !yc[0] ) { + + // Return y if y is non-zero, x if x is non-zero, or zero if both are zero. + return yc[0] ? ( y.s = -b, y ) : new BigNumber( xc[0] ? x : + + // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity + ROUNDING_MODE == 3 ? -0 : 0 ); + } + } + + xe = bitFloor(xe); + ye = bitFloor(ye); + xc = xc.slice(); + + // Determine which is the bigger number. + if ( a = xe - ye ) { + + if ( xLTy = a < 0 ) { + a = -a; + t = xc; + } else { + ye = xe; + t = yc; + } + + t.reverse(); + + // Prepend zeros to equalise exponents. + for ( b = a; b--; t.push(0) ); + t.reverse(); + } else { + + // Exponents equal. Check digit by digit. + j = ( xLTy = ( a = xc.length ) < ( b = yc.length ) ) ? a : b; + + for ( a = b = 0; b < j; b++ ) { + + if ( xc[b] != yc[b] ) { + xLTy = xc[b] < yc[b]; + break; + } + } + } + + // x < y? Point xc to the array of the bigger number. + if (xLTy) t = xc, xc = yc, yc = t, y.s = -y.s; + + b = ( j = yc.length ) - ( i = xc.length ); + + // Append zeros to xc if shorter. + // No need to add zeros to yc if shorter as subtract only needs to start at yc.length. + if ( b > 0 ) for ( ; b--; xc[i++] = 0 ); + b = BASE - 1; + + // Subtract yc from xc. + for ( ; j > a; ) { + + if ( xc[--j] < yc[j] ) { + for ( i = j; i && !xc[--i]; xc[i] = b ); + --xc[i]; + xc[j] += BASE; + } + + xc[j] -= yc[j]; + } + + // Remove leading zeros and adjust exponent accordingly. + for ( ; xc[0] == 0; xc.shift(), --ye ); + + // Zero? + if ( !xc[0] ) { + + // Following IEEE 754 (2008) 6.3, + // n - n = +0 but n - n = -0 when rounding towards -Infinity. + y.s = ROUNDING_MODE == 3 ? -1 : 1; + y.c = [ y.e = 0 ]; + return y; + } + + // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity + // for finite x and y. + return normalise( y, xc, ye ); + }; + + + /* + * n % 0 = N + * n % N = N + * n % I = n + * 0 % n = 0 + * -0 % n = -0 + * 0 % 0 = N + * 0 % N = N + * 0 % I = 0 + * N % n = N + * N % 0 = N + * N % N = N + * N % I = N + * I % n = N + * I % 0 = N + * I % N = N + * I % I = N + * + * Return a new BigNumber whose value is the value of this BigNumber modulo the value of + * BigNumber(y, b). The result depends on the value of MODULO_MODE. + */ + P.modulo = P.mod = function ( y, b ) { + var q, s, + x = this; + + id = 11; + y = new BigNumber( y, b ); + + // Return NaN if x is Infinity or NaN, or y is NaN or zero. + if ( !x.c || !y.s || y.c && !y.c[0] ) { + return new BigNumber(NaN); + + // Return x if y is Infinity or x is zero. + } else if ( !y.c || x.c && !x.c[0] ) { + return new BigNumber(x); + } + + if ( MODULO_MODE == 9 ) { + + // Euclidian division: q = sign(y) * floor(x / abs(y)) + // r = x - qy where 0 <= r < abs(y) + s = y.s; + y.s = 1; + q = div( x, y, 0, 3 ); + y.s = s; + q.s *= s; + } else { + q = div( x, y, 0, MODULO_MODE ); + } + + return x.minus( q.times(y) ); + }; + + + /* + * Return a new BigNumber whose value is the value of this BigNumber negated, + * i.e. multiplied by -1. + */ + P.negated = P.neg = function () { + var x = new BigNumber(this); + x.s = -x.s || null; + return x; + }; + + + /* + * n + 0 = n + * n + N = N + * n + I = I + * 0 + n = n + * 0 + 0 = 0 + * 0 + N = N + * 0 + I = I + * N + n = N + * N + 0 = N + * N + N = N + * N + I = N + * I + n = I + * I + 0 = I + * I + N = N + * I + I = I + * + * Return a new BigNumber whose value is the value of this BigNumber plus the value of + * BigNumber(y, b). + */ + P.plus = P.add = function ( y, b ) { + var t, + x = this, + a = x.s; + + id = 12; + y = new BigNumber( y, b ); + b = y.s; + + // Either NaN? + if ( !a || !b ) return new BigNumber(NaN); + + // Signs differ? + if ( a != b ) { + y.s = -b; + return x.minus(y); + } + + var xe = x.e / LOG_BASE, + ye = y.e / LOG_BASE, + xc = x.c, + yc = y.c; + + if ( !xe || !ye ) { + + // Return ±Infinity if either ±Infinity. + if ( !xc || !yc ) return new BigNumber( a / 0 ); + + // Either zero? + // Return y if y is non-zero, x if x is non-zero, or zero if both are zero. + if ( !xc[0] || !yc[0] ) return yc[0] ? y : new BigNumber( xc[0] ? x : a * 0 ); + } + + xe = bitFloor(xe); + ye = bitFloor(ye); + xc = xc.slice(); + + // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts. + if ( a = xe - ye ) { + if ( a > 0 ) { + ye = xe; + t = yc; + } else { + a = -a; + t = xc; + } + + t.reverse(); + for ( ; a--; t.push(0) ); + t.reverse(); + } + + a = xc.length; + b = yc.length; + + // Point xc to the longer array, and b to the shorter length. + if ( a - b < 0 ) t = yc, yc = xc, xc = t, b = a; + + // Only start adding at yc.length - 1 as the further digits of xc can be ignored. + for ( a = 0; b; ) { + a = ( xc[--b] = xc[b] + yc[b] + a ) / BASE | 0; + xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE; + } + + if (a) { + xc.unshift(a); + ++ye; + } + + // No need to check for zero, as +x + +y != 0 && -x + -y != 0 + // ye = MAX_EXP + 1 possible + return normalise( y, xc, ye ); + }; + + + /* + * Return the number of significant digits of the value of this BigNumber. + * + * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0. + */ + P.precision = P.sd = function (z) { + var n, v, + x = this, + c = x.c; + + // 'precision() argument not a boolean or binary digit: {z}' + if ( z != null && z !== !!z && z !== 1 && z !== 0 ) { + if (ERRORS) raise( 13, 'argument' + notBool, z ); + if ( z != !!z ) z = null; + } + + if ( !c ) return null; + v = c.length - 1; + n = v * LOG_BASE + 1; + + if ( v = c[v] ) { + + // Subtract the number of trailing zeros of the last element. + for ( ; v % 10 == 0; v /= 10, n-- ); + + // Add the number of digits of the first element. + for ( v = c[0]; v >= 10; v /= 10, n++ ); + } + + if ( z && x.e + 1 > n ) n = x.e + 1; + + return n; + }; + + + /* + * Return a new BigNumber whose value is the value of this BigNumber rounded to a maximum of + * dp decimal places using rounding mode rm, or to 0 and ROUNDING_MODE respectively if + * omitted. + * + * [dp] {number} Decimal places. Integer, 0 to MAX inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * 'round() decimal places out of range: {dp}' + * 'round() decimal places not an integer: {dp}' + * 'round() rounding mode not an integer: {rm}' + * 'round() rounding mode out of range: {rm}' + */ + P.round = function ( dp, rm ) { + var n = new BigNumber(this); + + if ( dp == null || isValidInt( dp, 0, MAX, 15 ) ) { + round( n, ~~dp + this.e + 1, rm == null || + !isValidInt( rm, 0, 8, 15, roundingMode ) ? ROUNDING_MODE : rm | 0 ); + } + + return n; + }; + + + /* + * Return a new BigNumber whose value is the value of this BigNumber shifted by k places + * (powers of 10). Shift to the right if n > 0, and to the left if n < 0. + * + * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive. + * + * If k is out of range and ERRORS is false, the result will be ±0 if k < 0, or ±Infinity + * otherwise. + * + * 'shift() argument not an integer: {k}' + * 'shift() argument out of range: {k}' + */ + P.shift = function (k) { + var n = this; + return isValidInt( k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER, 16, 'argument' ) + + // k < 1e+21, or truncate(k) will produce exponential notation. + ? n.times( '1e' + truncate(k) ) + : new BigNumber( n.c && n.c[0] && ( k < -MAX_SAFE_INTEGER || k > MAX_SAFE_INTEGER ) + ? n.s * ( k < 0 ? 0 : 1 / 0 ) + : n ); + }; + + + /* + * sqrt(-n) = N + * sqrt( N) = N + * sqrt(-I) = N + * sqrt( I) = I + * sqrt( 0) = 0 + * sqrt(-0) = -0 + * + * Return a new BigNumber whose value is the square root of the value of this BigNumber, + * rounded according to DECIMAL_PLACES and ROUNDING_MODE. + */ + P.squareRoot = P.sqrt = function () { + var m, n, r, rep, t, + x = this, + c = x.c, + s = x.s, + e = x.e, + dp = DECIMAL_PLACES + 4, + half = new BigNumber('0.5'); + + // Negative/NaN/Infinity/zero? + if ( s !== 1 || !c || !c[0] ) { + return new BigNumber( !s || s < 0 && ( !c || c[0] ) ? NaN : c ? x : 1 / 0 ); + } + + // Initial estimate. + s = Math.sqrt( +x ); + + // Math.sqrt underflow/overflow? + // Pass x to Math.sqrt as integer, then adjust the exponent of the result. + if ( s == 0 || s == 1 / 0 ) { + n = coeffToString(c); + if ( ( n.length + e ) % 2 == 0 ) n += '0'; + s = Math.sqrt(n); + e = bitFloor( ( e + 1 ) / 2 ) - ( e < 0 || e % 2 ); + + if ( s == 1 / 0 ) { + n = '1e' + e; + } else { + n = s.toExponential(); + n = n.slice( 0, n.indexOf('e') + 1 ) + e; + } + + r = new BigNumber(n); + } else { + r = new BigNumber( s + '' ); + } + + // Check for zero. + // r could be zero if MIN_EXP is changed after the this value was created. + // This would cause a division by zero (x/t) and hence Infinity below, which would cause + // coeffToString to throw. + if ( r.c[0] ) { + e = r.e; + s = e + dp; + if ( s < 3 ) s = 0; + + // Newton-Raphson iteration. + for ( ; ; ) { + t = r; + r = half.times( t.plus( div( x, t, dp, 1 ) ) ); + + if ( coeffToString( t.c ).slice( 0, s ) === ( n = + coeffToString( r.c ) ).slice( 0, s ) ) { + + // The exponent of r may here be one less than the final result exponent, + // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits + // are indexed correctly. + if ( r.e < e ) --s; + n = n.slice( s - 3, s + 1 ); + + // The 4th rounding digit may be in error by -1 so if the 4 rounding digits + // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the + // iteration. + if ( n == '9999' || !rep && n == '4999' ) { + + // On the first iteration only, check to see if rounding up gives the + // exact result as the nines may infinitely repeat. + if ( !rep ) { + round( t, t.e + DECIMAL_PLACES + 2, 0 ); + + if ( t.times(t).eq(x) ) { + r = t; + break; + } + } + + dp += 4; + s += 4; + rep = 1; + } else { + + // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact + // result. If not, then there are further digits and m will be truthy. + if ( !+n || !+n.slice(1) && n.charAt(0) == '5' ) { + + // Truncate to the first rounding digit. + round( r, r.e + DECIMAL_PLACES + 2, 1 ); + m = !r.times(r).eq(x); + } + + break; + } + } + } + } + + return round( r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m ); + }; + + + /* + * n * 0 = 0 + * n * N = N + * n * I = I + * 0 * n = 0 + * 0 * 0 = 0 + * 0 * N = N + * 0 * I = N + * N * n = N + * N * 0 = N + * N * N = N + * N * I = N + * I * n = I + * I * 0 = N + * I * N = N + * I * I = I + * + * Return a new BigNumber whose value is the value of this BigNumber times the value of + * BigNumber(y, b). + */ + P.times = P.mul = function ( y, b ) { + var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc, + base, sqrtBase, + x = this, + xc = x.c, + yc = ( id = 17, y = new BigNumber( y, b ) ).c; + + // Either NaN, ±Infinity or ±0? + if ( !xc || !yc || !xc[0] || !yc[0] ) { + + // Return NaN if either is NaN, or one is 0 and the other is Infinity. + if ( !x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc ) { + y.c = y.e = y.s = null; + } else { + y.s *= x.s; + + // Return ±Infinity if either is ±Infinity. + if ( !xc || !yc ) { + y.c = y.e = null; + + // Return ±0 if either is ±0. + } else { + y.c = [0]; + y.e = 0; + } + } + + return y; + } + + e = bitFloor( x.e / LOG_BASE ) + bitFloor( y.e / LOG_BASE ); + y.s *= x.s; + xcL = xc.length; + ycL = yc.length; + + // Ensure xc points to longer array and xcL to its length. + if ( xcL < ycL ) zc = xc, xc = yc, yc = zc, i = xcL, xcL = ycL, ycL = i; + + // Initialise the result array with zeros. + for ( i = xcL + ycL, zc = []; i--; zc.push(0) ); + + base = BASE; + sqrtBase = SQRT_BASE; + + for ( i = ycL; --i >= 0; ) { + c = 0; + ylo = yc[i] % sqrtBase; + yhi = yc[i] / sqrtBase | 0; + + for ( k = xcL, j = i + k; j > i; ) { + xlo = xc[--k] % sqrtBase; + xhi = xc[k] / sqrtBase | 0; + m = yhi * xlo + xhi * ylo; + xlo = ylo * xlo + ( ( m % sqrtBase ) * sqrtBase ) + zc[j] + c; + c = ( xlo / base | 0 ) + ( m / sqrtBase | 0 ) + yhi * xhi; + zc[j--] = xlo % base; + } + + zc[j] = c; + } + + if (c) { + ++e; + } else { + zc.shift(); + } + + return normalise( y, zc, e ); + }; + + + /* + * Return a new BigNumber whose value is the value of this BigNumber rounded to a maximum of + * sd significant digits using rounding mode rm, or ROUNDING_MODE if rm is omitted. + * + * [sd] {number} Significant digits. Integer, 1 to MAX inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * 'toDigits() precision out of range: {sd}' + * 'toDigits() precision not an integer: {sd}' + * 'toDigits() rounding mode not an integer: {rm}' + * 'toDigits() rounding mode out of range: {rm}' + */ + P.toDigits = function ( sd, rm ) { + var n = new BigNumber(this); + sd = sd == null || !isValidInt( sd, 1, MAX, 18, 'precision' ) ? null : sd | 0; + rm = rm == null || !isValidInt( rm, 0, 8, 18, roundingMode ) ? ROUNDING_MODE : rm | 0; + return sd ? round( n, sd, rm ) : n; + }; + + + /* + * Return a string representing the value of this BigNumber in exponential notation and + * rounded using ROUNDING_MODE to dp fixed decimal places. + * + * [dp] {number} Decimal places. Integer, 0 to MAX inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * 'toExponential() decimal places not an integer: {dp}' + * 'toExponential() decimal places out of range: {dp}' + * 'toExponential() rounding mode not an integer: {rm}' + * 'toExponential() rounding mode out of range: {rm}' + */ + P.toExponential = function ( dp, rm ) { + return format( this, + dp != null && isValidInt( dp, 0, MAX, 19 ) ? ~~dp + 1 : null, rm, 19 ); + }; + + + /* + * Return a string representing the value of this BigNumber in fixed-point notation rounding + * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted. + * + * Note: as with JavaScript's number type, (-0).toFixed(0) is '0', + * but e.g. (-0.00001).toFixed(0) is '-0'. + * + * [dp] {number} Decimal places. Integer, 0 to MAX inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * 'toFixed() decimal places not an integer: {dp}' + * 'toFixed() decimal places out of range: {dp}' + * 'toFixed() rounding mode not an integer: {rm}' + * 'toFixed() rounding mode out of range: {rm}' + */ + P.toFixed = function ( dp, rm ) { + return format( this, dp != null && isValidInt( dp, 0, MAX, 20 ) + ? ~~dp + this.e + 1 : null, rm, 20 ); + }; + + + /* + * Return a string representing the value of this BigNumber in fixed-point notation rounded + * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties + * of the FORMAT object (see BigNumber.config). + * + * FORMAT = { + * decimalSeparator : '.', + * groupSeparator : ',', + * groupSize : 3, + * secondaryGroupSize : 0, + * fractionGroupSeparator : '\xA0', // non-breaking space + * fractionGroupSize : 0 + * }; + * + * [dp] {number} Decimal places. Integer, 0 to MAX inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * 'toFormat() decimal places not an integer: {dp}' + * 'toFormat() decimal places out of range: {dp}' + * 'toFormat() rounding mode not an integer: {rm}' + * 'toFormat() rounding mode out of range: {rm}' + */ + P.toFormat = function ( dp, rm ) { + var str = format( this, dp != null && isValidInt( dp, 0, MAX, 21 ) + ? ~~dp + this.e + 1 : null, rm, 21 ); + + if ( this.c ) { + var i, + arr = str.split('.'), + g1 = +FORMAT.groupSize, + g2 = +FORMAT.secondaryGroupSize, + groupSeparator = FORMAT.groupSeparator, + intPart = arr[0], + fractionPart = arr[1], + isNeg = this.s < 0, + intDigits = isNeg ? intPart.slice(1) : intPart, + len = intDigits.length; + + if (g2) i = g1, g1 = g2, g2 = i, len -= i; + + if ( g1 > 0 && len > 0 ) { + i = len % g1 || g1; + intPart = intDigits.substr( 0, i ); + + for ( ; i < len; i += g1 ) { + intPart += groupSeparator + intDigits.substr( i, g1 ); + } + + if ( g2 > 0 ) intPart += groupSeparator + intDigits.slice(i); + if (isNeg) intPart = '-' + intPart; + } + + str = fractionPart + ? intPart + FORMAT.decimalSeparator + ( ( g2 = +FORMAT.fractionGroupSize ) + ? fractionPart.replace( new RegExp( '\\d{' + g2 + '}\\B', 'g' ), + '$&' + FORMAT.fractionGroupSeparator ) + : fractionPart ) + : intPart; + } + + return str; + }; + + + /* + * Return a string array representing the value of this BigNumber as a simple fraction with + * an integer numerator and an integer denominator. The denominator will be a positive + * non-zero value less than or equal to the specified maximum denominator. If a maximum + * denominator is not specified, the denominator will be the lowest value necessary to + * represent the number exactly. + * + * [md] {number|string|BigNumber} Integer >= 1 and < Infinity. The maximum denominator. + * + * 'toFraction() max denominator not an integer: {md}' + * 'toFraction() max denominator out of range: {md}' + */ + P.toFraction = function (md) { + var arr, d0, d2, e, exp, n, n0, q, s, + k = ERRORS, + x = this, + xc = x.c, + d = new BigNumber(ONE), + n1 = d0 = new BigNumber(ONE), + d1 = n0 = new BigNumber(ONE); + + if ( md != null ) { + ERRORS = false; + n = new BigNumber(md); + ERRORS = k; + + if ( !( k = n.isInt() ) || n.lt(ONE) ) { + + if (ERRORS) { + raise( 22, + 'max denominator ' + ( k ? 'out of range' : 'not an integer' ), md ); + } + + // ERRORS is false: + // If md is a finite non-integer >= 1, round it to an integer and use it. + md = !k && n.c && round( n, n.e + 1, 1 ).gte(ONE) ? n : null; + } + } + + if ( !xc ) return x.toString(); + s = coeffToString(xc); + + // Determine initial denominator. + // d is a power of 10 and the minimum max denominator that specifies the value exactly. + e = d.e = s.length - x.e - 1; + d.c[0] = POWS_TEN[ ( exp = e % LOG_BASE ) < 0 ? LOG_BASE + exp : exp ]; + md = !md || n.cmp(d) > 0 ? ( e > 0 ? d : n1 ) : n; + + exp = MAX_EXP; + MAX_EXP = 1 / 0; + n = new BigNumber(s); + + // n0 = d1 = 0 + n0.c[0] = 0; + + for ( ; ; ) { + q = div( n, d, 0, 1 ); + d2 = d0.plus( q.times(d1) ); + if ( d2.cmp(md) == 1 ) break; + d0 = d1; + d1 = d2; + n1 = n0.plus( q.times( d2 = n1 ) ); + n0 = d2; + d = n.minus( q.times( d2 = d ) ); + n = d2; + } + + d2 = div( md.minus(d0), d1, 0, 1 ); + n0 = n0.plus( d2.times(n1) ); + d0 = d0.plus( d2.times(d1) ); + n0.s = n1.s = x.s; + e *= 2; + + // Determine which fraction is closer to x, n0/d0 or n1/d1 + arr = div( n1, d1, e, ROUNDING_MODE ).minus(x).abs().cmp( + div( n0, d0, e, ROUNDING_MODE ).minus(x).abs() ) < 1 + ? [ n1.toString(), d1.toString() ] + : [ n0.toString(), d0.toString() ]; + + MAX_EXP = exp; + return arr; + }; + + + /* + * Return the value of this BigNumber converted to a number primitive. + */ + P.toNumber = function () { + return +this; + }; + + + /* + * Return a BigNumber whose value is the value of this BigNumber raised to the power n. + * If m is present, return the result modulo m. + * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE. + * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using + * ROUNDING_MODE. + * + * The modular power operation works efficiently when x, n, and m are positive integers, + * otherwise it is equivalent to calculating x.toPower(n).modulo(m) (with POW_PRECISION 0). + * + * n {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive. + * [m] {number|string|BigNumber} The modulus. + * + * 'pow() exponent not an integer: {n}' + * 'pow() exponent out of range: {n}' + * + * Performs 54 loop iterations for n of 9007199254740991. + */ + P.toPower = P.pow = function ( n, m ) { + var k, y, z, + i = mathfloor( n < 0 ? -n : +n ), + x = this; + + if ( m != null ) { + id = 23; + m = new BigNumber(m); + } + + // Pass ±Infinity to Math.pow if exponent is out of range. + if ( !isValidInt( n, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER, 23, 'exponent' ) && + ( !isFinite(n) || i > MAX_SAFE_INTEGER && ( n /= 0 ) || + parseFloat(n) != n && !( n = NaN ) ) || n == 0 ) { + k = Math.pow( +x, n ); + return new BigNumber( m ? k % m : k ); + } + + if (m) { + if ( n > 1 && x.gt(ONE) && x.isInt() && m.gt(ONE) && m.isInt() ) { + x = x.mod(m); + } else { + z = m; + + // Nullify m so only a single mod operation is performed at the end. + m = null; + } + } else if (POW_PRECISION) { + + // Truncating each coefficient array to a length of k after each multiplication + // equates to truncating significant digits to POW_PRECISION + [28, 41], + // i.e. there will be a minimum of 28 guard digits retained. + // (Using + 1.5 would give [9, 21] guard digits.) + k = mathceil( POW_PRECISION / LOG_BASE + 2 ); + } + + y = new BigNumber(ONE); + + for ( ; ; ) { + if ( i % 2 ) { + y = y.times(x); + if ( !y.c ) break; + if (k) { + if ( y.c.length > k ) y.c.length = k; + } else if (m) { + y = y.mod(m); + } + } + + i = mathfloor( i / 2 ); + if ( !i ) break; + x = x.times(x); + if (k) { + if ( x.c && x.c.length > k ) x.c.length = k; + } else if (m) { + x = x.mod(m); + } + } + + if (m) return y; + if ( n < 0 ) y = ONE.div(y); + + return z ? y.mod(z) : k ? round( y, POW_PRECISION, ROUNDING_MODE ) : y; + }; + + + /* + * Return a string representing the value of this BigNumber rounded to sd significant digits + * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits + * necessary to represent the integer part of the value in fixed-point notation, then use + * exponential notation. + * + * [sd] {number} Significant digits. Integer, 1 to MAX inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * 'toPrecision() precision not an integer: {sd}' + * 'toPrecision() precision out of range: {sd}' + * 'toPrecision() rounding mode not an integer: {rm}' + * 'toPrecision() rounding mode out of range: {rm}' + */ + P.toPrecision = function ( sd, rm ) { + return format( this, sd != null && isValidInt( sd, 1, MAX, 24, 'precision' ) + ? sd | 0 : null, rm, 24 ); + }; + + + /* + * Return a string representing the value of this BigNumber in base b, or base 10 if b is + * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and + * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent + * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than + * TO_EXP_NEG, return exponential notation. + * + * [b] {number} Integer, 2 to 64 inclusive. + * + * 'toString() base not an integer: {b}' + * 'toString() base out of range: {b}' + */ + P.toString = function (b) { + var str, + n = this, + s = n.s, + e = n.e; + + // Infinity or NaN? + if ( e === null ) { + + if (s) { + str = 'Infinity'; + if ( s < 0 ) str = '-' + str; + } else { + str = 'NaN'; + } + } else { + str = coeffToString( n.c ); + + if ( b == null || !isValidInt( b, 2, 64, 25, 'base' ) ) { + str = e <= TO_EXP_NEG || e >= TO_EXP_POS + ? toExponential( str, e ) + : toFixedPoint( str, e ); + } else { + str = convertBase( toFixedPoint( str, e ), b | 0, 10, s ); + } + + if ( s < 0 && n.c[0] ) str = '-' + str; + } + + return str; + }; + + + /* + * Return a new BigNumber whose value is the value of this BigNumber truncated to a whole + * number. + */ + P.truncated = P.trunc = function () { + return round( new BigNumber(this), this.e + 1, 1 ); + }; + + + /* + * Return as toString, but do not accept a base argument, and include the minus sign for + * negative zero. + */ + P.valueOf = P.toJSON = function () { + var str, + n = this, + e = n.e; + + if ( e === null ) return n.toString(); + + str = coeffToString( n.c ); + + str = e <= TO_EXP_NEG || e >= TO_EXP_POS + ? toExponential( str, e ) + : toFixedPoint( str, e ); + + return n.s < 0 ? '-' + str : str; + }; + + + P.isBigNumber = true; + + if ( config != null ) BigNumber.config(config); + + return BigNumber; + } + + + // PRIVATE HELPER FUNCTIONS + + + function bitFloor(n) { + var i = n | 0; + return n > 0 || n === i ? i : i - 1; + } + + + // Return a coefficient array as a string of base 10 digits. + function coeffToString(a) { + var s, z, + i = 1, + j = a.length, + r = a[0] + ''; + + for ( ; i < j; ) { + s = a[i++] + ''; + z = LOG_BASE - s.length; + for ( ; z--; s = '0' + s ); + r += s; + } + + // Determine trailing zeros. + for ( j = r.length; r.charCodeAt(--j) === 48; ); + return r.slice( 0, j + 1 || 1 ); + } + + + // Compare the value of BigNumbers x and y. + function compare( x, y ) { + var a, b, + xc = x.c, + yc = y.c, + i = x.s, + j = y.s, + k = x.e, + l = y.e; + + // Either NaN? + if ( !i || !j ) return null; + + a = xc && !xc[0]; + b = yc && !yc[0]; + + // Either zero? + if ( a || b ) return a ? b ? 0 : -j : i; + + // Signs differ? + if ( i != j ) return i; + + a = i < 0; + b = k == l; + + // Either Infinity? + if ( !xc || !yc ) return b ? 0 : !xc ^ a ? 1 : -1; + + // Compare exponents. + if ( !b ) return k > l ^ a ? 1 : -1; + + j = ( k = xc.length ) < ( l = yc.length ) ? k : l; + + // Compare digit by digit. + for ( i = 0; i < j; i++ ) if ( xc[i] != yc[i] ) return xc[i] > yc[i] ^ a ? 1 : -1; + + // Compare lengths. + return k == l ? 0 : k > l ^ a ? 1 : -1; + } + + + /* + * Return true if n is a valid number in range, otherwise false. + * Use for argument validation when ERRORS is false. + * Note: parseInt('1e+1') == 1 but parseFloat('1e+1') == 10. + */ + function intValidatorNoErrors( n, min, max ) { + return ( n = truncate(n) ) >= min && n <= max; + } + + + function isArray(obj) { + return Object.prototype.toString.call(obj) == '[object Array]'; + } + + + /* + * Convert string of baseIn to an array of numbers of baseOut. + * Eg. convertBase('255', 10, 16) returns [15, 15]. + * Eg. convertBase('ff', 16, 10) returns [2, 5, 5]. + */ + function toBaseOut( str, baseIn, baseOut ) { + var j, + arr = [0], + arrL, + i = 0, + len = str.length; + + for ( ; i < len; ) { + for ( arrL = arr.length; arrL--; arr[arrL] *= baseIn ); + arr[ j = 0 ] += ALPHABET.indexOf( str.charAt( i++ ) ); + + for ( ; j < arr.length; j++ ) { + + if ( arr[j] > baseOut - 1 ) { + if ( arr[j + 1] == null ) arr[j + 1] = 0; + arr[j + 1] += arr[j] / baseOut | 0; + arr[j] %= baseOut; + } + } + } + + return arr.reverse(); + } + + + function toExponential( str, e ) { + return ( str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str ) + + ( e < 0 ? 'e' : 'e+' ) + e; + } + + + function toFixedPoint( str, e ) { + var len, z; + + // Negative exponent? + if ( e < 0 ) { + + // Prepend zeros. + for ( z = '0.'; ++e; z += '0' ); + str = z + str; + + // Positive exponent + } else { + len = str.length; + + // Append zeros. + if ( ++e > len ) { + for ( z = '0', e -= len; --e; z += '0' ); + str += z; + } else if ( e < len ) { + str = str.slice( 0, e ) + '.' + str.slice(e); + } + } + + return str; + } + + + function truncate(n) { + n = parseFloat(n); + return n < 0 ? mathceil(n) : mathfloor(n); + } + + + // EXPORT + + + BigNumber = constructorFactory(); + BigNumber.default = BigNumber.BigNumber = BigNumber; + + + // AMD. + if ( typeof define == 'function' && define.amd ) { + define( function () { return BigNumber; } ); + + // Node.js and other environments that support module.exports. + } else if ( typeof module != 'undefined' && module.exports ) { + module.exports = BigNumber; + + // Browser. + } else { + if ( !globalObj ) globalObj = typeof self != 'undefined' ? self : Function('return this')(); + globalObj.BigNumber = BigNumber; + } +})(this); diff --git a/docs/js/bignumber.min.js b/docs/js/bignumber.min.js new file mode 100644 index 0000000..68009e4 --- /dev/null +++ b/docs/js/bignumber.min.js @@ -0,0 +1,3 @@ +/* bignumber.js v4.0.0 https://github.com/MikeMcl/bignumber.js/LICENCE */ +!function(e){"use strict";function n(e){function a(e,n){var t,r,i,o,u,s,l=this;if(!(l instanceof a))return z&&x(26,"constructor call without new",e),new a(e,n);if(null!=n&&V(n,2,64,C,"base")){if(n=0|n,s=e+"",10==n)return l=new a(e instanceof a?e:s),I(l,B+l.e+1,P);if((o="number"==typeof e)&&0*e!=0||!new RegExp("^-?"+(t="["+v.slice(0,n)+"]+")+"(?:\\."+t+")?$",37>n?"i":"").test(s))return U(l,s,o,n);o?(l.s=0>1/e?(s=s.slice(1),-1):1,z&&s.replace(/^0\.0*|\./,"").length>15&&x(C,w,e),o=!1):l.s=45===s.charCodeAt(0)?(s=s.slice(1),-1):1,s=A(s,10,n,l.s)}else{if(e instanceof a)return l.s=e.s,l.e=e.e,l.c=(e=e.c)?e.slice():e,void(C=0);if((o="number"==typeof e)&&0*e==0){if(l.s=0>1/e?(e=-e,-1):1,e===~~e){for(r=0,i=e;i>=10;i/=10,r++);return l.e=r,l.c=[e],void(C=0)}s=e+""}else{if(!h.test(s=e+""))return U(l,s,o);l.s=45===s.charCodeAt(0)?(s=s.slice(1),-1):1}}for((r=s.indexOf("."))>-1&&(s=s.replace(".","")),(i=s.search(/e/i))>0?(0>r&&(r=i),r+=+s.slice(i+1),s=s.substring(0,i)):0>r&&(r=s.length),i=0;48===s.charCodeAt(i);i++);for(u=s.length;48===s.charCodeAt(--u););if(s=s.slice(i,u+1))if(u=s.length,o&&z&&u>15&&(e>y||e!==p(e))&&x(C,w,l.s*e),r=r-i-1,r>G)l.c=l.e=null;else if($>r)l.c=[l.e=0];else{if(l.e=r,l.c=[],i=(r+1)%b,0>r&&(i+=b),u>i){for(i&&l.c.push(+s.slice(0,i)),u-=b;u>i;)l.c.push(+s.slice(i,i+=b));s=s.slice(i),i=b-s.length}else i-=u;for(;i--;s+="0");l.c.push(+s)}else l.c=[l.e=0];C=0}function A(e,n,t,i){var o,u,l,c,h,g,p,d=e.indexOf("."),m=B,w=P;for(37>t&&(e=e.toLowerCase()),d>=0&&(l=W,W=0,e=e.replace(".",""),p=new a(t),h=p.pow(e.length-d),W=l,p.c=s(f(r(h.c),h.e),10,n),p.e=p.c.length),g=s(e,t,n),u=l=g.length;0==g[--l];g.pop());if(!g[0])return"0";if(0>d?--u:(h.c=g,h.e=u,h.s=i,h=L(h,p,m,w,n),g=h.c,c=h.r,u=h.e),o=u+m+1,d=g[o],l=n/2,c=c||0>o||null!=g[o+1],c=4>w?(null!=d||c)&&(0==w||w==(h.s<0?3:2)):d>l||d==l&&(4==w||c||6==w&&1&g[o-1]||w==(h.s<0?8:7)),1>o||!g[0])e=c?f("1",-m):"0";else{if(g.length=o,c)for(--n;++g[--o]>n;)g[o]=0,o||(++u,g.unshift(1));for(l=g.length;!g[--l];);for(d=0,e="";l>=d;e+=v.charAt(g[d++]));e=f(e,u)}return e}function E(e,n,t,i){var o,u,s,c,h;if(t=null!=t&&V(t,0,8,i,m)?0|t:P,!e.c)return e.toString();if(o=e.c[0],s=e.e,null==n)h=r(e.c),h=19==i||24==i&&q>=s?l(h,s):f(h,s);else if(e=I(new a(e),n,t),u=e.e,h=r(e.c),c=h.length,19==i||24==i&&(u>=n||q>=u)){for(;n>c;h+="0",c++);h=l(h,u)}else if(n-=s,h=f(h,u),u+1>c){if(--n>0)for(h+=".";n--;h+="0");}else if(n+=u-c,n>0)for(u+1==c&&(h+=".");n--;h+="0");return e.s<0&&o?"-"+h:h}function D(e,n){var t,r,i=0;for(u(e[0])&&(e=e[0]),t=new a(e[0]);++ie||e>t||e!=c(e))&&x(r,(i||"decimal places")+(n>e||e>t?" out of range":" not an integer"),e),!0}function _(e,n,t){for(var r=1,i=n.length;!n[--i];n.pop());for(i=n[0];i>=10;i/=10,r++);return(t=r+t*b-1)>G?e.c=e.e=null:$>t?e.c=[e.e=0]:(e.e=t,e.c=n),e}function x(e,n,t){var r=new Error(["new BigNumber","cmp","config","div","divToInt","eq","gt","gte","lt","lte","minus","mod","plus","precision","random","round","shift","times","toDigits","toExponential","toFixed","toFormat","toFraction","pow","toPrecision","toString","BigNumber"][e]+"() "+n+": "+t);throw r.name="BigNumber Error",C=0,r}function I(e,n,t,r){var i,o,u,s,l,f,c,a=e.c,h=O;if(a){e:{for(i=1,s=a[0];s>=10;s/=10,i++);if(o=n-i,0>o)o+=b,u=n,l=a[f=0],c=l/h[i-u-1]%10|0;else if(f=g((o+1)/b),f>=a.length){if(!r)break e;for(;a.length<=f;a.push(0));l=c=0,i=1,o%=b,u=o-b+1}else{for(l=s=a[f],i=1;s>=10;s/=10,i++);o%=b,u=o-b+i,c=0>u?0:l/h[i-u-1]%10|0}if(r=r||0>n||null!=a[f+1]||(0>u?l:l%h[i-u-1]),r=4>t?(c||r)&&(0==t||t==(e.s<0?3:2)):c>5||5==c&&(4==t||r||6==t&&(o>0?u>0?l/h[i-u]:0:a[f-1])%10&1||t==(e.s<0?8:7)),1>n||!a[0])return a.length=0,r?(n-=e.e+1,a[0]=h[(b-n%b)%b],e.e=-n||0):a[0]=e.e=0,e;if(0==o?(a.length=f,s=1,f--):(a.length=f+1,s=h[b-o],a[f]=u>0?p(l/h[i-u]%h[u])*s:0),r)for(;;){if(0==f){for(o=1,u=a[0];u>=10;u/=10,o++);for(u=a[0]+=s,s=1;u>=10;u/=10,s++);o!=s&&(e.e++,a[0]==N&&(a[0]=1));break}if(a[f]+=s,a[f]!=N)break;a[f--]=0,s=1}for(o=a.length;0===a[--o];a.pop());}e.e>G?e.c=e.e=null:e.e<$&&(e.c=[e.e=0])}return e}var L,U,C=0,M=a.prototype,T=new a(1),B=20,P=4,q=-7,k=21,$=-1e7,G=1e7,z=!0,V=F,j=!1,H=1,W=0,J={decimalSeparator:".",groupSeparator:",",groupSize:3,secondaryGroupSize:0,fractionGroupSeparator:" ",fractionGroupSize:0};return a.another=n,a.ROUND_UP=0,a.ROUND_DOWN=1,a.ROUND_CEIL=2,a.ROUND_FLOOR=3,a.ROUND_HALF_UP=4,a.ROUND_HALF_DOWN=5,a.ROUND_HALF_EVEN=6,a.ROUND_HALF_CEIL=7,a.ROUND_HALF_FLOOR=8,a.EUCLID=9,a.config=a.set=function(){var e,n,t=0,r={},i=arguments,s=i[0],l=s&&"object"==typeof s?function(){return s.hasOwnProperty(n)?null!=(e=s[n]):void 0}:function(){return i.length>t?null!=(e=i[t++]):void 0};return l(n="DECIMAL_PLACES")&&V(e,0,S,2,n)&&(B=0|e),r[n]=B,l(n="ROUNDING_MODE")&&V(e,0,8,2,n)&&(P=0|e),r[n]=P,l(n="EXPONENTIAL_AT")&&(u(e)?V(e[0],-S,0,2,n)&&V(e[1],0,S,2,n)&&(q=0|e[0],k=0|e[1]):V(e,-S,S,2,n)&&(q=-(k=0|(0>e?-e:e)))),r[n]=[q,k],l(n="RANGE")&&(u(e)?V(e[0],-S,-1,2,n)&&V(e[1],1,S,2,n)&&($=0|e[0],G=0|e[1]):V(e,-S,S,2,n)&&(0|e?$=-(G=0|(0>e?-e:e)):z&&x(2,n+" cannot be zero",e))),r[n]=[$,G],l(n="ERRORS")&&(e===!!e||1===e||0===e?(C=0,V=(z=!!e)?F:o):z&&x(2,n+d,e)),r[n]=z,l(n="CRYPTO")&&(e===!0||e===!1||1===e||0===e?e?(e="undefined"==typeof crypto,!e&&crypto&&(crypto.getRandomValues||crypto.randomBytes)?j=!0:z?x(2,"crypto unavailable",e?void 0:crypto):j=!1):j=!1:z&&x(2,n+d,e)),r[n]=j,l(n="MODULO_MODE")&&V(e,0,9,2,n)&&(H=0|e),r[n]=H,l(n="POW_PRECISION")&&V(e,0,S,2,n)&&(W=0|e),r[n]=W,l(n="FORMAT")&&("object"==typeof e?J=e:z&&x(2,n+" not an object",e)),r[n]=J,r},a.max=function(){return D(arguments,M.lt)},a.min=function(){return D(arguments,M.gt)},a.random=function(){var e=9007199254740992,n=Math.random()*e&2097151?function(){return p(Math.random()*e)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)};return function(e){var t,r,i,o,u,s=0,l=[],f=new a(T);if(e=null!=e&&V(e,0,S,14)?0|e:B,o=g(e/b),j)if(crypto.getRandomValues){for(t=crypto.getRandomValues(new Uint32Array(o*=2));o>s;)u=131072*t[s]+(t[s+1]>>>11),u>=9e15?(r=crypto.getRandomValues(new Uint32Array(2)),t[s]=r[0],t[s+1]=r[1]):(l.push(u%1e14),s+=2);s=o/2}else if(crypto.randomBytes){for(t=crypto.randomBytes(o*=7);o>s;)u=281474976710656*(31&t[s])+1099511627776*t[s+1]+4294967296*t[s+2]+16777216*t[s+3]+(t[s+4]<<16)+(t[s+5]<<8)+t[s+6],u>=9e15?crypto.randomBytes(7).copy(t,s):(l.push(u%1e14),s+=7);s=o/7}else j=!1,z&&x(14,"crypto unavailable",crypto);if(!j)for(;o>s;)u=n(),9e15>u&&(l[s++]=u%1e14);for(o=l[--s],e%=b,o&&e&&(u=O[b-e],l[s]=p(o/u)*u);0===l[s];l.pop(),s--);if(0>s)l=[i=0];else{for(i=-1;0===l[0];l.shift(),i-=b);for(s=1,u=l[0];u>=10;u/=10,s++);b>s&&(i-=b-s)}return f.e=i,f.c=l,f}}(),L=function(){function e(e,n,t){var r,i,o,u,s=0,l=e.length,f=n%R,c=n/R|0;for(e=e.slice();l--;)o=e[l]%R,u=e[l]/R|0,r=c*o+u*f,i=f*o+r%R*R+s,s=(i/t|0)+(r/R|0)+c*u,e[l]=i%t;return s&&e.unshift(s),e}function n(e,n,t,r){var i,o;if(t!=r)o=t>r?1:-1;else for(i=o=0;t>i;i++)if(e[i]!=n[i]){o=e[i]>n[i]?1:-1;break}return o}function r(e,n,t,r){for(var i=0;t--;)e[t]-=i,i=e[t]1;e.shift());}return function(i,o,u,s,l){var f,c,h,g,d,m,w,v,y,O,R,S,A,E,D,F,_,x=i.s==o.s?1:-1,L=i.c,U=o.c;if(!(L&&L[0]&&U&&U[0]))return new a(i.s&&o.s&&(L?!U||L[0]!=U[0]:U)?L&&0==L[0]||!U?0*x:x/0:NaN);for(v=new a(x),y=v.c=[],c=i.e-o.e,x=u+c+1,l||(l=N,c=t(i.e/b)-t(o.e/b),x=x/b|0),h=0;U[h]==(L[h]||0);h++);if(U[h]>(L[h]||0)&&c--,0>x)y.push(1),g=!0;else{for(E=L.length,F=U.length,h=0,x+=2,d=p(l/(U[0]+1)),d>1&&(U=e(U,d,l),L=e(L,d,l),F=U.length,E=L.length),A=F,O=L.slice(0,F),R=O.length;F>R;O[R++]=0);_=U.slice(),_.unshift(0),D=U[0],U[1]>=l/2&&D++;do{if(d=0,f=n(U,O,F,R),0>f){if(S=O[0],F!=R&&(S=S*l+(O[1]||0)),d=p(S/D),d>1)for(d>=l&&(d=l-1),m=e(U,d,l),w=m.length,R=O.length;1==n(m,O,w,R);)d--,r(m,w>F?_:U,w,l),w=m.length,f=1;else 0==d&&(f=d=1),m=U.slice(),w=m.length;if(R>w&&m.unshift(0),r(O,m,R,l),R=O.length,-1==f)for(;n(U,O,F,R)<1;)d++,r(O,R>F?_:U,R,l),R=O.length}else 0===f&&(d++,O=[0]);y[h++]=d,O[0]?O[R++]=L[A]||0:(O=[L[A]],R=1)}while((A++=10;x/=10,h++);I(v,u+(v.e=h+c*b-1)+1,s,g)}else v.e=c,v.r=+g;return v}}(),U=function(){var e=/^(-?)0([xbo])(?=\w[\w.]*$)/i,n=/^([^.]+)\.$/,t=/^\.([^.]+)$/,r=/^-?(Infinity|NaN)$/,i=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(o,u,s,l){var f,c=s?u:u.replace(i,"");if(r.test(c))o.s=isNaN(c)?null:0>c?-1:1;else{if(!s&&(c=c.replace(e,function(e,n,t){return f="x"==(t=t.toLowerCase())?16:"b"==t?2:8,l&&l!=f?e:n}),l&&(f=l,c=c.replace(n,"$1").replace(t,"0.$1")),u!=c))return new a(c,f);z&&x(C,"not a"+(l?" base "+l:"")+" number",u),o.s=null}o.c=o.e=null,C=0}}(),M.absoluteValue=M.abs=function(){var e=new a(this);return e.s<0&&(e.s=1),e},M.ceil=function(){return I(new a(this),this.e+1,2)},M.comparedTo=M.cmp=function(e,n){return C=1,i(this,new a(e,n))},M.decimalPlaces=M.dp=function(){var e,n,r=this.c;if(!r)return null;if(e=((n=r.length-1)-t(this.e/b))*b,n=r[n])for(;n%10==0;n/=10,e--);return 0>e&&(e=0),e},M.dividedBy=M.div=function(e,n){return C=3,L(this,new a(e,n),B,P)},M.dividedToIntegerBy=M.divToInt=function(e,n){return C=4,L(this,new a(e,n),0,1)},M.equals=M.eq=function(e,n){return C=5,0===i(this,new a(e,n))},M.floor=function(){return I(new a(this),this.e+1,3)},M.greaterThan=M.gt=function(e,n){return C=6,i(this,new a(e,n))>0},M.greaterThanOrEqualTo=M.gte=function(e,n){return C=7,1===(n=i(this,new a(e,n)))||0===n},M.isFinite=function(){return!!this.c},M.isInteger=M.isInt=function(){return!!this.c&&t(this.e/b)>this.c.length-2},M.isNaN=function(){return!this.s},M.isNegative=M.isNeg=function(){return this.s<0},M.isZero=function(){return!!this.c&&0==this.c[0]},M.lessThan=M.lt=function(e,n){return C=8,i(this,new a(e,n))<0},M.lessThanOrEqualTo=M.lte=function(e,n){return C=9,-1===(n=i(this,new a(e,n)))||0===n},M.minus=M.sub=function(e,n){var r,i,o,u,s=this,l=s.s;if(C=10,e=new a(e,n),n=e.s,!l||!n)return new a(NaN);if(l!=n)return e.s=-n,s.plus(e);var f=s.e/b,c=e.e/b,h=s.c,g=e.c;if(!f||!c){if(!h||!g)return h?(e.s=-n,e):new a(g?s:NaN);if(!h[0]||!g[0])return g[0]?(e.s=-n,e):new a(h[0]?s:3==P?-0:0)}if(f=t(f),c=t(c),h=h.slice(),l=f-c){for((u=0>l)?(l=-l,o=h):(c=f,o=g),o.reverse(),n=l;n--;o.push(0));o.reverse()}else for(i=(u=(l=h.length)<(n=g.length))?l:n,l=n=0;i>n;n++)if(h[n]!=g[n]){u=h[n]0)for(;n--;h[r++]=0);for(n=N-1;i>l;){if(h[--i]0?(s=u,r=f):(o=-o,r=l),r.reverse();o--;r.push(0));r.reverse()}for(o=l.length,n=f.length,0>o-n&&(r=f,f=l,l=r,n=o),o=0;n;)o=(l[--n]=l[n]+f[n]+o)/N|0,l[n]=N===l[n]?0:l[n]%N;return o&&(l.unshift(o),++s),_(e,l,s)},M.precision=M.sd=function(e){var n,t,r=this,i=r.c;if(null!=e&&e!==!!e&&1!==e&&0!==e&&(z&&x(13,"argument"+d,e),e!=!!e&&(e=null)),!i)return null;if(t=i.length-1,n=t*b+1,t=i[t]){for(;t%10==0;t/=10,n--);for(t=i[0];t>=10;t/=10,n++);}return e&&r.e+1>n&&(n=r.e+1),n},M.round=function(e,n){var t=new a(this);return(null==e||V(e,0,S,15))&&I(t,~~e+this.e+1,null!=n&&V(n,0,8,15,m)?0|n:P),t},M.shift=function(e){var n=this;return V(e,-y,y,16,"argument")?n.times("1e"+c(e)):new a(n.c&&n.c[0]&&(-y>e||e>y)?n.s*(0>e?0:1/0):n)},M.squareRoot=M.sqrt=function(){var e,n,i,o,u,s=this,l=s.c,f=s.s,c=s.e,h=B+4,g=new a("0.5");if(1!==f||!l||!l[0])return new a(!f||0>f&&(!l||l[0])?NaN:l?s:1/0);if(f=Math.sqrt(+s),0==f||f==1/0?(n=r(l),(n.length+c)%2==0&&(n+="0"),f=Math.sqrt(n),c=t((c+1)/2)-(0>c||c%2),f==1/0?n="1e"+c:(n=f.toExponential(),n=n.slice(0,n.indexOf("e")+1)+c),i=new a(n)):i=new a(f+""),i.c[0])for(c=i.e,f=c+h,3>f&&(f=0);;)if(u=i,i=g.times(u.plus(L(s,u,h,1))),r(u.c).slice(0,f)===(n=r(i.c)).slice(0,f)){if(i.ef&&(m=O,O=S,S=m,o=f,f=g,g=o),o=f+g,m=[];o--;m.push(0));for(w=N,v=R,o=g;--o>=0;){for(r=0,p=S[o]%v,d=S[o]/v|0,s=f,u=o+s;u>o;)c=O[--s]%v,h=O[s]/v|0,l=d*c+h*p,c=p*c+l%v*v+m[u]+r,r=(c/w|0)+(l/v|0)+d*h,m[u--]=c%w;m[u]=r}return r?++i:m.shift(),_(e,m,i)},M.toDigits=function(e,n){var t=new a(this);return e=null!=e&&V(e,1,S,18,"precision")?0|e:null,n=null!=n&&V(n,0,8,18,m)?0|n:P,e?I(t,e,n):t},M.toExponential=function(e,n){return E(this,null!=e&&V(e,0,S,19)?~~e+1:null,n,19)},M.toFixed=function(e,n){return E(this,null!=e&&V(e,0,S,20)?~~e+this.e+1:null,n,20)},M.toFormat=function(e,n){var t=E(this,null!=e&&V(e,0,S,21)?~~e+this.e+1:null,n,21);if(this.c){var r,i=t.split("."),o=+J.groupSize,u=+J.secondaryGroupSize,s=J.groupSeparator,l=i[0],f=i[1],c=this.s<0,a=c?l.slice(1):l,h=a.length;if(u&&(r=o,o=u,u=r,h-=r),o>0&&h>0){for(r=h%o||o,l=a.substr(0,r);h>r;r+=o)l+=s+a.substr(r,o);u>0&&(l+=s+a.slice(r)),c&&(l="-"+l)}t=f?l+J.decimalSeparator+((u=+J.fractionGroupSize)?f.replace(new RegExp("\\d{"+u+"}\\B","g"),"$&"+J.fractionGroupSeparator):f):l}return t},M.toFraction=function(e){var n,t,i,o,u,s,l,f,c,h=z,g=this,p=g.c,d=new a(T),m=t=new a(T),w=l=new a(T);if(null!=e&&(z=!1,s=new a(e),z=h,(!(h=s.isInt())||s.lt(T))&&(z&&x(22,"max denominator "+(h?"out of range":"not an integer"),e),e=!h&&s.c&&I(s,s.e+1,1).gte(T)?s:null)),!p)return g.toString();for(c=r(p),o=d.e=c.length-g.e-1,d.c[0]=O[(u=o%b)<0?b+u:u],e=!e||s.cmp(d)>0?o>0?d:m:s,u=G,G=1/0,s=new a(c),l.c[0]=0;f=L(s,d,0,1),i=t.plus(f.times(w)),1!=i.cmp(e);)t=w,w=i,m=l.plus(f.times(i=m)),l=i,d=s.minus(f.times(i=d)),s=i;return i=L(e.minus(t),w,0,1),l=l.plus(i.times(m)),t=t.plus(i.times(w)),l.s=m.s=g.s,o*=2,n=L(m,w,o,P).minus(g).abs().cmp(L(l,t,o,P).minus(g).abs())<1?[m.toString(),w.toString()]:[l.toString(),t.toString()],G=u,n},M.toNumber=function(){return+this},M.toPower=M.pow=function(e,n){var t,r,i,o=p(0>e?-e:+e),u=this;if(null!=n&&(C=23,n=new a(n)),!V(e,-y,y,23,"exponent")&&(!isFinite(e)||o>y&&(e/=0)||parseFloat(e)!=e&&!(e=NaN))||0==e)return t=Math.pow(+u,e),new a(n?t%n:t);for(n?e>1&&u.gt(T)&&u.isInt()&&n.gt(T)&&n.isInt()?u=u.mod(n):(i=n,n=null):W&&(t=g(W/b+2)),r=new a(T);;){if(o%2){if(r=r.times(u),!r.c)break;t?r.c.length>t&&(r.c.length=t):n&&(r=r.mod(n))}if(o=p(o/2),!o)break;u=u.times(u),t?u.c&&u.c.length>t&&(u.c.length=t):n&&(u=u.mod(n))}return n?r:(0>e&&(r=T.div(r)),i?r.mod(i):t?I(r,W,P):r)},M.toPrecision=function(e,n){return E(this,null!=e&&V(e,1,S,24,"precision")?0|e:null,n,24)},M.toString=function(e){var n,t=this,i=t.s,o=t.e;return null===o?i?(n="Infinity",0>i&&(n="-"+n)):n="NaN":(n=r(t.c),n=null!=e&&V(e,2,64,25,"base")?A(f(n,o),0|e,10,i):q>=o||o>=k?l(n,o):f(n,o),0>i&&t.c[0]&&(n="-"+n)),n},M.truncated=M.trunc=function(){return I(new a(this),this.e+1,1)},M.valueOf=M.toJSON=function(){var e,n=this,t=n.e;return null===t?n.toString():(e=r(n.c),e=q>=t||t>=k?l(e,t):f(e,t),n.s<0?"-"+e:e)},M.isBigNumber=!0,null!=e&&a.config(e),a}function t(e){var n=0|e;return e>0||e===n?n:n-1}function r(e){for(var n,t,r=1,i=e.length,o=e[0]+"";i>r;){for(n=e[r++]+"",t=b-n.length;t--;n="0"+n);o+=n}for(i=o.length;48===o.charCodeAt(--i););return o.slice(0,i+1||1)}function i(e,n){var t,r,i=e.c,o=n.c,u=e.s,s=n.s,l=e.e,f=n.e;if(!u||!s)return null;if(t=i&&!i[0],r=o&&!o[0],t||r)return t?r?0:-s:u;if(u!=s)return u;if(t=0>u,r=l==f,!i||!o)return r?0:!i^t?1:-1;if(!r)return l>f^t?1:-1;for(s=(l=i.length)<(f=o.length)?l:f,u=0;s>u;u++)if(i[u]!=o[u])return i[u]>o[u]^t?1:-1;return l==f?0:l>f^t?1:-1}function o(e,n,t){return(e=c(e))>=n&&t>=e}function u(e){return"[object Array]"==Object.prototype.toString.call(e)}function s(e,n,t){for(var r,i,o=[0],u=0,s=e.length;s>u;){for(i=o.length;i--;o[i]*=n);for(o[r=0]+=v.indexOf(e.charAt(u++));rt-1&&(null==o[r+1]&&(o[r+1]=0),o[r+1]+=o[r]/t|0,o[r]%=t)}return o.reverse()}function l(e,n){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(0>n?"e":"e+")+n}function f(e,n){var t,r;if(0>n){for(r="0.";++n;r+="0");e=r+e}else if(t=e.length,++n>t){for(r="0",n-=t;--n;r+="0");e+=r}else t>n&&(e=e.slice(0,n)+"."+e.slice(n));return e}function c(e){return e=parseFloat(e),0>e?g(e):p(e)}var a,h=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,g=Math.ceil,p=Math.floor,d=" not a boolean or binary digit",m="rounding mode",w="number type has more than 15 significant digits",v="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_",N=1e14,b=14,y=9007199254740991,O=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],R=1e7,S=1e9;a=n(),a["default"]=a.BigNumber=a,"function"==typeof define&&define.amd?define(function(){return a}):"undefined"!=typeof module&&module.exports?module.exports=a:(e||(e="undefined"!=typeof self?self:Function("return this")()),e.BigNumber=a)}(this); +//# sourceMappingURL=bignumber.js.map \ No newline at end of file diff --git a/docs/js/bootstrap-vue-icons.js b/docs/js/bootstrap-vue-icons.js new file mode 100644 index 0000000..62a1f91 --- /dev/null +++ b/docs/js/bootstrap-vue-icons.js @@ -0,0 +1,2632 @@ +/*! + * BootstrapVueIcons 2.15.0 + * + * @link https://bootstrap-vue.org + * @source https://github.com/bootstrap-vue/bootstrap-vue + * @copyright (c) 2016-2020 BootstrapVue + * @license MIT + * https://github.com/bootstrap-vue/bootstrap-vue/blob/master/LICENSE + */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue')) : + typeof define === 'function' && define.amd ? define(['vue'], factory) : + (global = global || self, global.bootstrapVueIcons = factory(global.Vue)); +}(this, (function (Vue) { 'use strict'; + + Vue = Vue && Object.prototype.hasOwnProperty.call(Vue, 'default') ? Vue['default'] : Vue; + + function _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; + } + + function ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + if (enumerableOnly) symbols = symbols.filter(function (sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + }); + keys.push.apply(keys, symbols); + } + + return keys; + } + + function _objectSpread2(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] != null ? arguments[i] : {}; + + if (i % 2) { + ownKeys(Object(source), true).forEach(function (key) { + _defineProperty(target, key, source[key]); + }); + } else if (Object.getOwnPropertyDescriptors) { + Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); + } else { + ownKeys(Object(source)).forEach(function (key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); + } + } + + return target; + } + + // --- Static --- + var isArray = function isArray(val) { + return Array.isArray(val); + }; // --- Instance --- + + /** + * Strict object type check. Only returns true + * for plain JavaScript objects. + */ + + var isPlainObject = function isPlainObject(obj) { + return Object.prototype.toString.call(obj) === '[object Object]'; + }; + + /** + * Utilities to get information about the current environment + */ + // --- Constants --- + var hasWindowSupport = typeof window !== 'undefined'; + var hasDocumentSupport = typeof document !== 'undefined'; + var hasNavigatorSupport = typeof navigator !== 'undefined'; + var isBrowser = hasWindowSupport && hasDocumentSupport && hasNavigatorSupport; // Browser type sniffing + + var userAgent = isBrowser ? window.navigator.userAgent.toLowerCase() : ''; + var isJSDOM = userAgent.indexOf('jsdom') > 0; + var isIE = /msie|trident/.test(userAgent); // Determine if the browser supports the option passive for events + + var hasPassiveEventSupport = function () { + var passiveEventSupported = false; + + if (isBrowser) { + try { + var options = { + get passive() { + // This function will be called when the browser + // attempts to access the passive property. + + /* istanbul ignore next: will never be called in JSDOM */ + passiveEventSupported = true; + } + + }; + window.addEventListener('test', options, options); + window.removeEventListener('test', options, options); + } catch (err) { + /* istanbul ignore next: will never be called in JSDOM */ + passiveEventSupported = false; + } + } + + return passiveEventSupported; + }(); + + var getEnv = function getEnv(key) { + var fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + var env = typeof process !== 'undefined' && process ? process.env || {} : {}; + + if (!key) { + /* istanbul ignore next */ + return env; + } + + return env[key] || fallback; + }; + var getNoWarn = function getNoWarn() { + return getEnv('BOOTSTRAP_VUE_NO_WARN'); + }; + + var isUndefined = function isUndefined(val) { + return val === undefined; + }; + var isNull = function isNull(val) { + return val === null; + }; + var isUndefinedOrNull = function isUndefinedOrNull(val) { + return isUndefined(val) || isNull(val); + }; + + var identity = function identity(x) { + return x; + }; + + /** + * Log a warning message to the console with BootstrapVue formatting + * @param {string} message + */ + + var warn = function warn(message) + /* istanbul ignore next */ + { + var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + + if (!getNoWarn()) { + console.warn("[BootstrapVue warn]: ".concat(source ? "".concat(source, " - ") : '').concat(message)); + } + }; + + /** + * Checks if there are multiple instances of Vue, and warns (once) about possible issues. + * @param {object} Vue + */ + + var checkMultipleVue = function () { + var checkMultipleVueWarned = false; + var MULTIPLE_VUE_WARNING = ['Multiple instances of Vue detected!', 'You may need to set up an alias for Vue in your bundler config.', 'See: https://bootstrap-vue.org/docs#using-module-bundlers'].join('\n'); + return function (Vue$1) { + /* istanbul ignore next */ + if (!checkMultipleVueWarned && Vue !== Vue$1 && !isJSDOM) { + warn(MULTIPLE_VUE_WARNING); + } + + checkMultipleVueWarned = true; + }; + }(); + /** + * Plugin install factory function (no plugin config option). + * @param {object} { components, directives } + * @returns {function} plugin install function + */ + + var installFactoryNoConfig = function installFactoryNoConfig() { + var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + components = _ref2.components, + directives = _ref2.directives, + plugins = _ref2.plugins; + + var install = function install(Vue) { + if (install.installed) { + /* istanbul ignore next */ + return; + } + + install.installed = true; + checkMultipleVue(Vue); + registerComponents(Vue, components); + registerDirectives(Vue, directives); + registerPlugins(Vue, plugins); + }; + + install.installed = false; + return install; + }; + /** + * Plugin object factory function (no config option). + * @param {object} { components, directives, plugins } + * @returns {object} plugin install object + */ + + var pluginFactoryNoConfig = function pluginFactoryNoConfig() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var extend = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return _objectSpread2(_objectSpread2({}, extend), {}, { + install: installFactoryNoConfig(options) + }); + }; + /** + * Load a group of plugins. + * @param {object} Vue + * @param {object} Plugin definitions + */ + + var registerPlugins = function registerPlugins(Vue) { + var plugins = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + for (var plugin in plugins) { + if (plugin && plugins[plugin]) { + Vue.use(plugins[plugin]); + } + } + }; + /** + * Load a component. + * @param {object} Vue + * @param {string} Component name + * @param {object} Component definition + */ + + var registerComponent = function registerComponent(Vue, name, def) { + if (Vue && name && def) { + Vue.component(name, def); + } + }; + /** + * Load a group of components. + * @param {object} Vue + * @param {object} Object of component definitions + */ + + var registerComponents = function registerComponents(Vue) { + var components = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + for (var component in components) { + registerComponent(Vue, component, components[component]); + } + }; + /** + * Load a directive. + * @param {object} Vue + * @param {string} Directive name + * @param {object} Directive definition + */ + + var registerDirective = function registerDirective(Vue, name, def) { + if (Vue && name && def) { + // Ensure that any leading V is removed from the + // name, as Vue adds it automatically + Vue.directive(name.replace(/^VB/, 'B'), def); + } + }; + /** + * Load a group of directives. + * @param {object} Vue + * @param {object} Object of directive definitions + */ + + var registerDirectives = function registerDirectives(Vue) { + var directives = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + for (var directive in directives) { + registerDirective(Vue, directive, directives[directive]); + } + }; + /** + * Install plugin if window.Vue available + * @param {object} Plugin definition + */ + + var vueUse = function vueUse(VuePlugin) { + /* istanbul ignore next */ + if (hasWindowSupport && window.Vue) { + window.Vue.use(VuePlugin); + } + /* istanbul ignore next */ + + + if (hasWindowSupport && VuePlugin.NAME) { + window[VuePlugin.NAME] = VuePlugin; + } + }; + + var e=function(){return (e=Object.assign||function(e){for(var t,r=1,s=arguments.length;r 1 && arguments[1] !== undefined ? arguments[1] : 2; + return isUndefinedOrNull(val) ? '' : isArray(val) || isPlainObject(val) && val.toString === Object.prototype.toString ? JSON.stringify(val, null, spaces) : String(val); + }; // Remove leading white space from a string + + var trim = function trim(str) { + return toString(str).trim(); + }; // Lower case a string + + // Math utilty functions + var mathMax = Math.max; + + // Number utilities + + var toFloat = function toFloat(value) { + var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : NaN; + var float = parseFloat(value); + return isNaN(float) ? defaultValue : float; + }; // Converts a value (string, number, etc) to a string + + var commonIconProps = { + variant: { + type: String, + default: null + }, + fontScale: { + type: [Number, String], + default: 1 + }, + scale: { + type: [Number, String], + default: 1 + }, + rotate: { + type: [Number, String], + default: 0 + }, + flipH: { + type: Boolean, + default: false + }, + flipV: { + type: Boolean, + default: false + }, + shiftH: { + type: [Number, String], + default: 0 + }, + shiftV: { + type: [Number, String], + default: 0 + }, + animation: { + type: String, + default: null + } + }; // Base attributes needed on all icons + + var baseAttrs = { + viewBox: '0 0 16 16', + width: '1em', + height: '1em', + focusable: 'false', + role: 'img', + alt: 'icon' + }; // Attributes that are nulled out when stacked + + var stackedAttrs = { + width: null, + height: null, + focusable: null, + role: null, + alt: null + }; // Shared private base component to reduce bundle/runtime size + // @vue/component + + var BVIconBase = /*#__PURE__*/Vue.extend({ + name: 'BVIconBase', + functional: true, + props: _objectSpread2({ + content: { + type: String + }, + stacked: { + type: Boolean, + default: false + } + }, commonIconProps), + render: function render(h, _ref) { + var _class; + + var data = _ref.data, + props = _ref.props, + children = _ref.children; + var fontScale = mathMax(toFloat(props.fontScale, 1), 0) || 1; + var scale = mathMax(toFloat(props.scale, 1), 0) || 1; + var rotate = toFloat(props.rotate, 0); + var shiftH = toFloat(props.shiftH, 0); + var shiftV = toFloat(props.shiftV, 0); + var flipH = props.flipH; + var flipV = props.flipV; + var animation = props.animation; // Compute the transforms + // Note that order is important as SVG transforms are applied in order from + // left to right and we want flipping/scale to occur before rotation + // Note shifting is applied separately + // Assumes that the viewbox is `0 0 16 16` (`8 8` is the center) + + var hasScale = flipH || flipV || scale !== 1; + var hasTransforms = hasScale || rotate; + var hasShift = shiftH || shiftV; + var transforms = [hasTransforms ? 'translate(8 8)' : null, hasScale ? "scale(".concat((flipH ? -1 : 1) * scale, " ").concat((flipV ? -1 : 1) * scale, ")") : null, rotate ? "rotate(".concat(rotate, ")") : null, hasTransforms ? 'translate(-8 -8)' : null].filter(identity); // Handling stacked icons + + var isStacked = props.stacked; + var hasContent = !isUndefinedOrNull(props.content); // We wrap the content in a `` for handling the transforms (except shift) + + var $inner = h('g', { + attrs: { + transform: transforms.join(' ') || null + }, + domProps: hasContent ? { + innerHTML: props.content || '' + } : {} + }, children); // If needed, we wrap in an additional `` in order to handle the shifting + + if (hasShift) { + $inner = h('g', { + attrs: { + transform: "translate(".concat(16 * shiftH / 16, " ").concat(-16 * shiftV / 16, ")") + } + }, [$inner]); + } + + if (isStacked) { + // Wrap in an additional `` for proper + // animation handling if stacked + $inner = h('g', {}, [$inner]); + } + + return h('svg', a({ + staticClass: 'b-icon bi', + class: (_class = {}, _defineProperty(_class, "text-".concat(props.variant), !!props.variant), _defineProperty(_class, "b-icon-animation-".concat(animation), !!animation), _class), + attrs: baseAttrs, + style: isStacked ? {} : { + fontSize: fontScale === 1 ? null : "".concat(fontScale * 100, "%") + } + }, // Merge in user supplied data + data, // If icon is stacked, null out some attrs + isStacked ? { + attrs: stackedAttrs + } : {}, // These cannot be overridden by users + { + attrs: { + xmlns: isStacked ? null : 'http://www.w3.org/2000/svg', + fill: 'currentColor' + } + }), [$inner]); + } + }); + + /** + * Icon component generator function + * + * @param {string} icon name (minus the leading `BIcon`) + * @param {string} raw `innerHTML` for SVG + * @return {VueComponent} + */ + + var makeIcon = function makeIcon(name, content) { + // For performance reason we pre-compute some values, so that + // they are not computed on each render of the icon component + var iconName = "BIcon".concat(pascalCase(name)); + var iconNameClass = "bi-".concat(kebabCase(name)); + var svgContent = trim(content || ''); // Return the icon component definition + + return /*#__PURE__*/Vue.extend({ + name: iconName, + functional: true, + props: _objectSpread2(_objectSpread2({}, commonIconProps), {}, { + stacked: { + type: Boolean, + default: false + } + }), + render: function render(h, _ref) { + var data = _ref.data, + props = _ref.props; + return h(BVIconBase, a(data, { + staticClass: iconNameClass, + props: _objectSpread2(_objectSpread2({}, props), {}, { + content: svgContent + }) + })); + } + }); + }; + + // --- BEGIN AUTO-GENERATED FILE --- + + var BIconBlank = /*#__PURE__*/makeIcon('Blank', ''); // --- Bootstrap Icons --- + // eslint-disable-next-line + + var BIconAlarm = /*#__PURE__*/makeIcon('Alarm', ''); // eslint-disable-next-line + + var BIconAlarmFill = /*#__PURE__*/makeIcon('AlarmFill', ''); // eslint-disable-next-line + + var BIconAlt = /*#__PURE__*/makeIcon('Alt', ''); // eslint-disable-next-line + + var BIconApp = /*#__PURE__*/makeIcon('App', ''); // eslint-disable-next-line + + var BIconAppIndicator = /*#__PURE__*/makeIcon('AppIndicator', ''); // eslint-disable-next-line + + var BIconArchive = /*#__PURE__*/makeIcon('Archive', ''); // eslint-disable-next-line + + var BIconArchiveFill = /*#__PURE__*/makeIcon('ArchiveFill', ''); // eslint-disable-next-line + + var BIconArrow90degDown = /*#__PURE__*/makeIcon('Arrow90degDown', ''); // eslint-disable-next-line + + var BIconArrow90degLeft = /*#__PURE__*/makeIcon('Arrow90degLeft', ''); // eslint-disable-next-line + + var BIconArrow90degRight = /*#__PURE__*/makeIcon('Arrow90degRight', ''); // eslint-disable-next-line + + var BIconArrow90degUp = /*#__PURE__*/makeIcon('Arrow90degUp', ''); // eslint-disable-next-line + + var BIconArrowBarDown = /*#__PURE__*/makeIcon('ArrowBarDown', ''); // eslint-disable-next-line + + var BIconArrowBarLeft = /*#__PURE__*/makeIcon('ArrowBarLeft', ''); // eslint-disable-next-line + + var BIconArrowBarRight = /*#__PURE__*/makeIcon('ArrowBarRight', ''); // eslint-disable-next-line + + var BIconArrowBarUp = /*#__PURE__*/makeIcon('ArrowBarUp', ''); // eslint-disable-next-line + + var BIconArrowClockwise = /*#__PURE__*/makeIcon('ArrowClockwise', ''); // eslint-disable-next-line + + var BIconArrowCounterclockwise = /*#__PURE__*/makeIcon('ArrowCounterclockwise', ''); // eslint-disable-next-line + + var BIconArrowDown = /*#__PURE__*/makeIcon('ArrowDown', ''); // eslint-disable-next-line + + var BIconArrowDownCircle = /*#__PURE__*/makeIcon('ArrowDownCircle', ''); // eslint-disable-next-line + + var BIconArrowDownCircleFill = /*#__PURE__*/makeIcon('ArrowDownCircleFill', ''); // eslint-disable-next-line + + var BIconArrowDownLeft = /*#__PURE__*/makeIcon('ArrowDownLeft', ''); // eslint-disable-next-line + + var BIconArrowDownLeftCircle = /*#__PURE__*/makeIcon('ArrowDownLeftCircle', ''); // eslint-disable-next-line + + var BIconArrowDownLeftCircleFill = /*#__PURE__*/makeIcon('ArrowDownLeftCircleFill', ''); // eslint-disable-next-line + + var BIconArrowDownLeftSquare = /*#__PURE__*/makeIcon('ArrowDownLeftSquare', ''); // eslint-disable-next-line + + var BIconArrowDownLeftSquareFill = /*#__PURE__*/makeIcon('ArrowDownLeftSquareFill', ''); // eslint-disable-next-line + + var BIconArrowDownRight = /*#__PURE__*/makeIcon('ArrowDownRight', ''); // eslint-disable-next-line + + var BIconArrowDownRightCircle = /*#__PURE__*/makeIcon('ArrowDownRightCircle', ''); // eslint-disable-next-line + + var BIconArrowDownRightCircleFill = /*#__PURE__*/makeIcon('ArrowDownRightCircleFill', ''); // eslint-disable-next-line + + var BIconArrowDownRightSquare = /*#__PURE__*/makeIcon('ArrowDownRightSquare', ''); // eslint-disable-next-line + + var BIconArrowDownRightSquareFill = /*#__PURE__*/makeIcon('ArrowDownRightSquareFill', ''); // eslint-disable-next-line + + var BIconArrowDownShort = /*#__PURE__*/makeIcon('ArrowDownShort', ''); // eslint-disable-next-line + + var BIconArrowDownSquare = /*#__PURE__*/makeIcon('ArrowDownSquare', ''); // eslint-disable-next-line + + var BIconArrowDownSquareFill = /*#__PURE__*/makeIcon('ArrowDownSquareFill', ''); // eslint-disable-next-line + + var BIconArrowDownUp = /*#__PURE__*/makeIcon('ArrowDownUp', ''); // eslint-disable-next-line + + var BIconArrowLeft = /*#__PURE__*/makeIcon('ArrowLeft', ''); // eslint-disable-next-line + + var BIconArrowLeftCircle = /*#__PURE__*/makeIcon('ArrowLeftCircle', ''); // eslint-disable-next-line + + var BIconArrowLeftCircleFill = /*#__PURE__*/makeIcon('ArrowLeftCircleFill', ''); // eslint-disable-next-line + + var BIconArrowLeftRight = /*#__PURE__*/makeIcon('ArrowLeftRight', ''); // eslint-disable-next-line + + var BIconArrowLeftShort = /*#__PURE__*/makeIcon('ArrowLeftShort', ''); // eslint-disable-next-line + + var BIconArrowLeftSquare = /*#__PURE__*/makeIcon('ArrowLeftSquare', ''); // eslint-disable-next-line + + var BIconArrowLeftSquareFill = /*#__PURE__*/makeIcon('ArrowLeftSquareFill', ''); // eslint-disable-next-line + + var BIconArrowRepeat = /*#__PURE__*/makeIcon('ArrowRepeat', ''); // eslint-disable-next-line + + var BIconArrowReturnLeft = /*#__PURE__*/makeIcon('ArrowReturnLeft', ''); // eslint-disable-next-line + + var BIconArrowReturnRight = /*#__PURE__*/makeIcon('ArrowReturnRight', ''); // eslint-disable-next-line + + var BIconArrowRight = /*#__PURE__*/makeIcon('ArrowRight', ''); // eslint-disable-next-line + + var BIconArrowRightCircle = /*#__PURE__*/makeIcon('ArrowRightCircle', ''); // eslint-disable-next-line + + var BIconArrowRightCircleFill = /*#__PURE__*/makeIcon('ArrowRightCircleFill', ''); // eslint-disable-next-line + + var BIconArrowRightShort = /*#__PURE__*/makeIcon('ArrowRightShort', ''); // eslint-disable-next-line + + var BIconArrowRightSquare = /*#__PURE__*/makeIcon('ArrowRightSquare', ''); // eslint-disable-next-line + + var BIconArrowRightSquareFill = /*#__PURE__*/makeIcon('ArrowRightSquareFill', ''); // eslint-disable-next-line + + var BIconArrowUp = /*#__PURE__*/makeIcon('ArrowUp', ''); // eslint-disable-next-line + + var BIconArrowUpCircle = /*#__PURE__*/makeIcon('ArrowUpCircle', ''); // eslint-disable-next-line + + var BIconArrowUpCircleFill = /*#__PURE__*/makeIcon('ArrowUpCircleFill', ''); // eslint-disable-next-line + + var BIconArrowUpLeft = /*#__PURE__*/makeIcon('ArrowUpLeft', ''); // eslint-disable-next-line + + var BIconArrowUpLeftCircle = /*#__PURE__*/makeIcon('ArrowUpLeftCircle', ''); // eslint-disable-next-line + + var BIconArrowUpLeftCircleFill = /*#__PURE__*/makeIcon('ArrowUpLeftCircleFill', ''); // eslint-disable-next-line + + var BIconArrowUpLeftSquare = /*#__PURE__*/makeIcon('ArrowUpLeftSquare', ''); // eslint-disable-next-line + + var BIconArrowUpLeftSquareFill = /*#__PURE__*/makeIcon('ArrowUpLeftSquareFill', ''); // eslint-disable-next-line + + var BIconArrowUpRight = /*#__PURE__*/makeIcon('ArrowUpRight', ''); // eslint-disable-next-line + + var BIconArrowUpRightCircle = /*#__PURE__*/makeIcon('ArrowUpRightCircle', ''); // eslint-disable-next-line + + var BIconArrowUpRightCircleFill = /*#__PURE__*/makeIcon('ArrowUpRightCircleFill', ''); // eslint-disable-next-line + + var BIconArrowUpRightSquare = /*#__PURE__*/makeIcon('ArrowUpRightSquare', ''); // eslint-disable-next-line + + var BIconArrowUpRightSquareFill = /*#__PURE__*/makeIcon('ArrowUpRightSquareFill', ''); // eslint-disable-next-line + + var BIconArrowUpShort = /*#__PURE__*/makeIcon('ArrowUpShort', ''); // eslint-disable-next-line + + var BIconArrowUpSquare = /*#__PURE__*/makeIcon('ArrowUpSquare', ''); // eslint-disable-next-line + + var BIconArrowUpSquareFill = /*#__PURE__*/makeIcon('ArrowUpSquareFill', ''); // eslint-disable-next-line + + var BIconArrowsAngleContract = /*#__PURE__*/makeIcon('ArrowsAngleContract', ''); // eslint-disable-next-line + + var BIconArrowsAngleExpand = /*#__PURE__*/makeIcon('ArrowsAngleExpand', ''); // eslint-disable-next-line + + var BIconArrowsCollapse = /*#__PURE__*/makeIcon('ArrowsCollapse', ''); // eslint-disable-next-line + + var BIconArrowsExpand = /*#__PURE__*/makeIcon('ArrowsExpand', ''); // eslint-disable-next-line + + var BIconArrowsFullscreen = /*#__PURE__*/makeIcon('ArrowsFullscreen', ''); // eslint-disable-next-line + + var BIconArrowsMove = /*#__PURE__*/makeIcon('ArrowsMove', ''); // eslint-disable-next-line + + var BIconAspectRatio = /*#__PURE__*/makeIcon('AspectRatio', ''); // eslint-disable-next-line + + var BIconAspectRatioFill = /*#__PURE__*/makeIcon('AspectRatioFill', ''); // eslint-disable-next-line + + var BIconAsterisk = /*#__PURE__*/makeIcon('Asterisk', ''); // eslint-disable-next-line + + var BIconAt = /*#__PURE__*/makeIcon('At', ''); // eslint-disable-next-line + + var BIconAward = /*#__PURE__*/makeIcon('Award', ''); // eslint-disable-next-line + + var BIconAwardFill = /*#__PURE__*/makeIcon('AwardFill', ''); // eslint-disable-next-line + + var BIconBackspace = /*#__PURE__*/makeIcon('Backspace', ''); // eslint-disable-next-line + + var BIconBackspaceFill = /*#__PURE__*/makeIcon('BackspaceFill', ''); // eslint-disable-next-line + + var BIconBackspaceReverse = /*#__PURE__*/makeIcon('BackspaceReverse', ''); // eslint-disable-next-line + + var BIconBackspaceReverseFill = /*#__PURE__*/makeIcon('BackspaceReverseFill', ''); // eslint-disable-next-line + + var BIconBag = /*#__PURE__*/makeIcon('Bag', ''); // eslint-disable-next-line + + var BIconBagCheck = /*#__PURE__*/makeIcon('BagCheck', ''); // eslint-disable-next-line + + var BIconBagDash = /*#__PURE__*/makeIcon('BagDash', ''); // eslint-disable-next-line + + var BIconBagFill = /*#__PURE__*/makeIcon('BagFill', ''); // eslint-disable-next-line + + var BIconBagPlus = /*#__PURE__*/makeIcon('BagPlus', ''); // eslint-disable-next-line + + var BIconBarChart = /*#__PURE__*/makeIcon('BarChart', ''); // eslint-disable-next-line + + var BIconBarChartFill = /*#__PURE__*/makeIcon('BarChartFill', ''); // eslint-disable-next-line + + var BIconBasket = /*#__PURE__*/makeIcon('Basket', ''); // eslint-disable-next-line + + var BIconBasket2 = /*#__PURE__*/makeIcon('Basket2', ''); // eslint-disable-next-line + + var BIconBasket2Fill = /*#__PURE__*/makeIcon('Basket2Fill', ''); // eslint-disable-next-line + + var BIconBasket3 = /*#__PURE__*/makeIcon('Basket3', ''); // eslint-disable-next-line + + var BIconBasket3Fill = /*#__PURE__*/makeIcon('Basket3Fill', ''); // eslint-disable-next-line + + var BIconBasketFill = /*#__PURE__*/makeIcon('BasketFill', ''); // eslint-disable-next-line + + var BIconBattery = /*#__PURE__*/makeIcon('Battery', ''); // eslint-disable-next-line + + var BIconBatteryCharging = /*#__PURE__*/makeIcon('BatteryCharging', ''); // eslint-disable-next-line + + var BIconBatteryFull = /*#__PURE__*/makeIcon('BatteryFull', ''); // eslint-disable-next-line + + var BIconBatteryHalf = /*#__PURE__*/makeIcon('BatteryHalf', ''); // eslint-disable-next-line + + var BIconBell = /*#__PURE__*/makeIcon('Bell', ''); // eslint-disable-next-line + + var BIconBellFill = /*#__PURE__*/makeIcon('BellFill', ''); // eslint-disable-next-line + + var BIconBlockquoteLeft = /*#__PURE__*/makeIcon('BlockquoteLeft', ''); // eslint-disable-next-line + + var BIconBlockquoteRight = /*#__PURE__*/makeIcon('BlockquoteRight', ''); // eslint-disable-next-line + + var BIconBook = /*#__PURE__*/makeIcon('Book', ''); // eslint-disable-next-line + + var BIconBookHalf = /*#__PURE__*/makeIcon('BookHalf', ''); // eslint-disable-next-line + + var BIconBookmark = /*#__PURE__*/makeIcon('Bookmark', ''); // eslint-disable-next-line + + var BIconBookmarkCheck = /*#__PURE__*/makeIcon('BookmarkCheck', ''); // eslint-disable-next-line + + var BIconBookmarkDash = /*#__PURE__*/makeIcon('BookmarkDash', ''); // eslint-disable-next-line + + var BIconBookmarkFill = /*#__PURE__*/makeIcon('BookmarkFill', ''); // eslint-disable-next-line + + var BIconBookmarkPlus = /*#__PURE__*/makeIcon('BookmarkPlus', ''); // eslint-disable-next-line + + var BIconBookmarks = /*#__PURE__*/makeIcon('Bookmarks', ''); // eslint-disable-next-line + + var BIconBookmarksFill = /*#__PURE__*/makeIcon('BookmarksFill', ''); // eslint-disable-next-line + + var BIconBootstrap = /*#__PURE__*/makeIcon('Bootstrap', ''); // eslint-disable-next-line + + var BIconBootstrapFill = /*#__PURE__*/makeIcon('BootstrapFill', ''); // eslint-disable-next-line + + var BIconBootstrapReboot = /*#__PURE__*/makeIcon('BootstrapReboot', ''); // eslint-disable-next-line + + var BIconBoundingBox = /*#__PURE__*/makeIcon('BoundingBox', ''); // eslint-disable-next-line + + var BIconBoundingBoxCircles = /*#__PURE__*/makeIcon('BoundingBoxCircles', ''); // eslint-disable-next-line + + var BIconBox = /*#__PURE__*/makeIcon('Box', ''); // eslint-disable-next-line + + var BIconBoxArrowDown = /*#__PURE__*/makeIcon('BoxArrowDown', ''); // eslint-disable-next-line + + var BIconBoxArrowDownLeft = /*#__PURE__*/makeIcon('BoxArrowDownLeft', ''); // eslint-disable-next-line + + var BIconBoxArrowDownRight = /*#__PURE__*/makeIcon('BoxArrowDownRight', ''); // eslint-disable-next-line + + var BIconBoxArrowInDown = /*#__PURE__*/makeIcon('BoxArrowInDown', ''); // eslint-disable-next-line + + var BIconBoxArrowInDownLeft = /*#__PURE__*/makeIcon('BoxArrowInDownLeft', ''); // eslint-disable-next-line + + var BIconBoxArrowInDownRight = /*#__PURE__*/makeIcon('BoxArrowInDownRight', ''); // eslint-disable-next-line + + var BIconBoxArrowInLeft = /*#__PURE__*/makeIcon('BoxArrowInLeft', ''); // eslint-disable-next-line + + var BIconBoxArrowInRight = /*#__PURE__*/makeIcon('BoxArrowInRight', ''); // eslint-disable-next-line + + var BIconBoxArrowInUp = /*#__PURE__*/makeIcon('BoxArrowInUp', ''); // eslint-disable-next-line + + var BIconBoxArrowInUpLeft = /*#__PURE__*/makeIcon('BoxArrowInUpLeft', ''); // eslint-disable-next-line + + var BIconBoxArrowInUpRight = /*#__PURE__*/makeIcon('BoxArrowInUpRight', ''); // eslint-disable-next-line + + var BIconBoxArrowLeft = /*#__PURE__*/makeIcon('BoxArrowLeft', ''); // eslint-disable-next-line + + var BIconBoxArrowRight = /*#__PURE__*/makeIcon('BoxArrowRight', ''); // eslint-disable-next-line + + var BIconBoxArrowUp = /*#__PURE__*/makeIcon('BoxArrowUp', ''); // eslint-disable-next-line + + var BIconBoxArrowUpLeft = /*#__PURE__*/makeIcon('BoxArrowUpLeft', ''); // eslint-disable-next-line + + var BIconBoxArrowUpRight = /*#__PURE__*/makeIcon('BoxArrowUpRight', ''); // eslint-disable-next-line + + var BIconBoxSeam = /*#__PURE__*/makeIcon('BoxSeam', ''); // eslint-disable-next-line + + var BIconBraces = /*#__PURE__*/makeIcon('Braces', ''); // eslint-disable-next-line + + var BIconBriefcase = /*#__PURE__*/makeIcon('Briefcase', ''); // eslint-disable-next-line + + var BIconBriefcaseFill = /*#__PURE__*/makeIcon('BriefcaseFill', ''); // eslint-disable-next-line + + var BIconBrightnessAltHigh = /*#__PURE__*/makeIcon('BrightnessAltHigh', ''); // eslint-disable-next-line + + var BIconBrightnessAltHighFill = /*#__PURE__*/makeIcon('BrightnessAltHighFill', ''); // eslint-disable-next-line + + var BIconBrightnessAltLow = /*#__PURE__*/makeIcon('BrightnessAltLow', ''); // eslint-disable-next-line + + var BIconBrightnessAltLowFill = /*#__PURE__*/makeIcon('BrightnessAltLowFill', ''); // eslint-disable-next-line + + var BIconBrightnessHigh = /*#__PURE__*/makeIcon('BrightnessHigh', ''); // eslint-disable-next-line + + var BIconBrightnessHighFill = /*#__PURE__*/makeIcon('BrightnessHighFill', ''); // eslint-disable-next-line + + var BIconBrightnessLow = /*#__PURE__*/makeIcon('BrightnessLow', ''); // eslint-disable-next-line + + var BIconBrightnessLowFill = /*#__PURE__*/makeIcon('BrightnessLowFill', ''); // eslint-disable-next-line + + var BIconBrush = /*#__PURE__*/makeIcon('Brush', ''); // eslint-disable-next-line + + var BIconBucket = /*#__PURE__*/makeIcon('Bucket', ''); // eslint-disable-next-line + + var BIconBucketFill = /*#__PURE__*/makeIcon('BucketFill', ''); // eslint-disable-next-line + + var BIconBuilding = /*#__PURE__*/makeIcon('Building', ''); // eslint-disable-next-line + + var BIconBullseye = /*#__PURE__*/makeIcon('Bullseye', ''); // eslint-disable-next-line + + var BIconCalendar = /*#__PURE__*/makeIcon('Calendar', ''); // eslint-disable-next-line + + var BIconCalendar2 = /*#__PURE__*/makeIcon('Calendar2', ''); // eslint-disable-next-line + + var BIconCalendar2Check = /*#__PURE__*/makeIcon('Calendar2Check', ''); // eslint-disable-next-line + + var BIconCalendar2CheckFill = /*#__PURE__*/makeIcon('Calendar2CheckFill', ''); // eslint-disable-next-line + + var BIconCalendar2Date = /*#__PURE__*/makeIcon('Calendar2Date', ''); // eslint-disable-next-line + + var BIconCalendar2DateFill = /*#__PURE__*/makeIcon('Calendar2DateFill', ''); // eslint-disable-next-line + + var BIconCalendar2Day = /*#__PURE__*/makeIcon('Calendar2Day', ''); // eslint-disable-next-line + + var BIconCalendar2DayFill = /*#__PURE__*/makeIcon('Calendar2DayFill', ''); // eslint-disable-next-line + + var BIconCalendar2Fill = /*#__PURE__*/makeIcon('Calendar2Fill', ''); // eslint-disable-next-line + + var BIconCalendar2Minus = /*#__PURE__*/makeIcon('Calendar2Minus', ''); // eslint-disable-next-line + + var BIconCalendar2MinusFill = /*#__PURE__*/makeIcon('Calendar2MinusFill', ''); // eslint-disable-next-line + + var BIconCalendar2Month = /*#__PURE__*/makeIcon('Calendar2Month', ''); // eslint-disable-next-line + + var BIconCalendar2MonthFill = /*#__PURE__*/makeIcon('Calendar2MonthFill', ''); // eslint-disable-next-line + + var BIconCalendar2Plus = /*#__PURE__*/makeIcon('Calendar2Plus', ''); // eslint-disable-next-line + + var BIconCalendar2PlusFill = /*#__PURE__*/makeIcon('Calendar2PlusFill', ''); // eslint-disable-next-line + + var BIconCalendar3 = /*#__PURE__*/makeIcon('Calendar3', ''); // eslint-disable-next-line + + var BIconCalendar3Fill = /*#__PURE__*/makeIcon('Calendar3Fill', ''); // eslint-disable-next-line + + var BIconCalendar4 = /*#__PURE__*/makeIcon('Calendar4', ''); // eslint-disable-next-line + + var BIconCalendarCheck = /*#__PURE__*/makeIcon('CalendarCheck', ''); // eslint-disable-next-line + + var BIconCalendarCheckFill = /*#__PURE__*/makeIcon('CalendarCheckFill', ''); // eslint-disable-next-line + + var BIconCalendarDate = /*#__PURE__*/makeIcon('CalendarDate', ''); // eslint-disable-next-line + + var BIconCalendarDateFill = /*#__PURE__*/makeIcon('CalendarDateFill', ''); // eslint-disable-next-line + + var BIconCalendarDay = /*#__PURE__*/makeIcon('CalendarDay', ''); // eslint-disable-next-line + + var BIconCalendarDayFill = /*#__PURE__*/makeIcon('CalendarDayFill', ''); // eslint-disable-next-line + + var BIconCalendarFill = /*#__PURE__*/makeIcon('CalendarFill', ''); // eslint-disable-next-line + + var BIconCalendarMinus = /*#__PURE__*/makeIcon('CalendarMinus', ''); // eslint-disable-next-line + + var BIconCalendarMinusFill = /*#__PURE__*/makeIcon('CalendarMinusFill', ''); // eslint-disable-next-line + + var BIconCalendarMonth = /*#__PURE__*/makeIcon('CalendarMonth', ''); // eslint-disable-next-line + + var BIconCalendarMonthFill = /*#__PURE__*/makeIcon('CalendarMonthFill', ''); // eslint-disable-next-line + + var BIconCalendarPlus = /*#__PURE__*/makeIcon('CalendarPlus', ''); // eslint-disable-next-line + + var BIconCalendarPlusFill = /*#__PURE__*/makeIcon('CalendarPlusFill', ''); // eslint-disable-next-line + + var BIconCamera = /*#__PURE__*/makeIcon('Camera', ''); // eslint-disable-next-line + + var BIconCameraVideo = /*#__PURE__*/makeIcon('CameraVideo', ''); // eslint-disable-next-line + + var BIconCameraVideoFill = /*#__PURE__*/makeIcon('CameraVideoFill', ''); // eslint-disable-next-line + + var BIconCameraVideoOff = /*#__PURE__*/makeIcon('CameraVideoOff', ''); // eslint-disable-next-line + + var BIconCameraVideoOffFill = /*#__PURE__*/makeIcon('CameraVideoOffFill', ''); // eslint-disable-next-line + + var BIconCapslock = /*#__PURE__*/makeIcon('Capslock', ''); // eslint-disable-next-line + + var BIconCapslockFill = /*#__PURE__*/makeIcon('CapslockFill', ''); // eslint-disable-next-line + + var BIconCardChecklist = /*#__PURE__*/makeIcon('CardChecklist', ''); // eslint-disable-next-line + + var BIconCardHeading = /*#__PURE__*/makeIcon('CardHeading', ''); // eslint-disable-next-line + + var BIconCardImage = /*#__PURE__*/makeIcon('CardImage', ''); // eslint-disable-next-line + + var BIconCardList = /*#__PURE__*/makeIcon('CardList', ''); // eslint-disable-next-line + + var BIconCardText = /*#__PURE__*/makeIcon('CardText', ''); // eslint-disable-next-line + + var BIconCaretDown = /*#__PURE__*/makeIcon('CaretDown', ''); // eslint-disable-next-line + + var BIconCaretDownFill = /*#__PURE__*/makeIcon('CaretDownFill', ''); // eslint-disable-next-line + + var BIconCaretDownSquare = /*#__PURE__*/makeIcon('CaretDownSquare', ''); // eslint-disable-next-line + + var BIconCaretDownSquareFill = /*#__PURE__*/makeIcon('CaretDownSquareFill', ''); // eslint-disable-next-line + + var BIconCaretLeft = /*#__PURE__*/makeIcon('CaretLeft', ''); // eslint-disable-next-line + + var BIconCaretLeftFill = /*#__PURE__*/makeIcon('CaretLeftFill', ''); // eslint-disable-next-line + + var BIconCaretLeftSquare = /*#__PURE__*/makeIcon('CaretLeftSquare', ''); // eslint-disable-next-line + + var BIconCaretLeftSquareFill = /*#__PURE__*/makeIcon('CaretLeftSquareFill', ''); // eslint-disable-next-line + + var BIconCaretRight = /*#__PURE__*/makeIcon('CaretRight', ''); // eslint-disable-next-line + + var BIconCaretRightFill = /*#__PURE__*/makeIcon('CaretRightFill', ''); // eslint-disable-next-line + + var BIconCaretRightSquare = /*#__PURE__*/makeIcon('CaretRightSquare', ''); // eslint-disable-next-line + + var BIconCaretRightSquareFill = /*#__PURE__*/makeIcon('CaretRightSquareFill', ''); // eslint-disable-next-line + + var BIconCaretUp = /*#__PURE__*/makeIcon('CaretUp', ''); // eslint-disable-next-line + + var BIconCaretUpFill = /*#__PURE__*/makeIcon('CaretUpFill', ''); // eslint-disable-next-line + + var BIconCaretUpSquare = /*#__PURE__*/makeIcon('CaretUpSquare', ''); // eslint-disable-next-line + + var BIconCaretUpSquareFill = /*#__PURE__*/makeIcon('CaretUpSquareFill', ''); // eslint-disable-next-line + + var BIconCart = /*#__PURE__*/makeIcon('Cart', ''); // eslint-disable-next-line + + var BIconCart2 = /*#__PURE__*/makeIcon('Cart2', ''); // eslint-disable-next-line + + var BIconCart3 = /*#__PURE__*/makeIcon('Cart3', ''); // eslint-disable-next-line + + var BIconCart4 = /*#__PURE__*/makeIcon('Cart4', ''); // eslint-disable-next-line + + var BIconCartCheck = /*#__PURE__*/makeIcon('CartCheck', ''); // eslint-disable-next-line + + var BIconCartDash = /*#__PURE__*/makeIcon('CartDash', ''); // eslint-disable-next-line + + var BIconCartFill = /*#__PURE__*/makeIcon('CartFill', ''); // eslint-disable-next-line + + var BIconCartPlus = /*#__PURE__*/makeIcon('CartPlus', ''); // eslint-disable-next-line + + var BIconChat = /*#__PURE__*/makeIcon('Chat', ''); // eslint-disable-next-line + + var BIconChatDots = /*#__PURE__*/makeIcon('ChatDots', ''); // eslint-disable-next-line + + var BIconChatDotsFill = /*#__PURE__*/makeIcon('ChatDotsFill', ''); // eslint-disable-next-line + + var BIconChatFill = /*#__PURE__*/makeIcon('ChatFill', ''); // eslint-disable-next-line + + var BIconChatQuote = /*#__PURE__*/makeIcon('ChatQuote', ''); // eslint-disable-next-line + + var BIconChatQuoteFill = /*#__PURE__*/makeIcon('ChatQuoteFill', ''); // eslint-disable-next-line + + var BIconChatSquare = /*#__PURE__*/makeIcon('ChatSquare', ''); // eslint-disable-next-line + + var BIconChatSquareDots = /*#__PURE__*/makeIcon('ChatSquareDots', ''); // eslint-disable-next-line + + var BIconChatSquareDotsFill = /*#__PURE__*/makeIcon('ChatSquareDotsFill', ''); // eslint-disable-next-line + + var BIconChatSquareFill = /*#__PURE__*/makeIcon('ChatSquareFill', ''); // eslint-disable-next-line + + var BIconChatSquareQuote = /*#__PURE__*/makeIcon('ChatSquareQuote', ''); // eslint-disable-next-line + + var BIconChatSquareQuoteFill = /*#__PURE__*/makeIcon('ChatSquareQuoteFill', ''); // eslint-disable-next-line + + var BIconCheck = /*#__PURE__*/makeIcon('Check', ''); // eslint-disable-next-line + + var BIconCheck2 = /*#__PURE__*/makeIcon('Check2', ''); // eslint-disable-next-line + + var BIconCheck2All = /*#__PURE__*/makeIcon('Check2All', ''); // eslint-disable-next-line + + var BIconCheck2Circle = /*#__PURE__*/makeIcon('Check2Circle', ''); // eslint-disable-next-line + + var BIconCheck2Square = /*#__PURE__*/makeIcon('Check2Square', ''); // eslint-disable-next-line + + var BIconCheckAll = /*#__PURE__*/makeIcon('CheckAll', ''); // eslint-disable-next-line + + var BIconCheckCircle = /*#__PURE__*/makeIcon('CheckCircle', ''); // eslint-disable-next-line + + var BIconCheckCircleFill = /*#__PURE__*/makeIcon('CheckCircleFill', ''); // eslint-disable-next-line + + var BIconCheckSquare = /*#__PURE__*/makeIcon('CheckSquare', ''); // eslint-disable-next-line + + var BIconCheckSquareFill = /*#__PURE__*/makeIcon('CheckSquareFill', ''); // eslint-disable-next-line + + var BIconChevronBarContract = /*#__PURE__*/makeIcon('ChevronBarContract', ''); // eslint-disable-next-line + + var BIconChevronBarDown = /*#__PURE__*/makeIcon('ChevronBarDown', ''); // eslint-disable-next-line + + var BIconChevronBarExpand = /*#__PURE__*/makeIcon('ChevronBarExpand', ''); // eslint-disable-next-line + + var BIconChevronBarLeft = /*#__PURE__*/makeIcon('ChevronBarLeft', ''); // eslint-disable-next-line + + var BIconChevronBarRight = /*#__PURE__*/makeIcon('ChevronBarRight', ''); // eslint-disable-next-line + + var BIconChevronBarUp = /*#__PURE__*/makeIcon('ChevronBarUp', ''); // eslint-disable-next-line + + var BIconChevronCompactDown = /*#__PURE__*/makeIcon('ChevronCompactDown', ''); // eslint-disable-next-line + + var BIconChevronCompactLeft = /*#__PURE__*/makeIcon('ChevronCompactLeft', ''); // eslint-disable-next-line + + var BIconChevronCompactRight = /*#__PURE__*/makeIcon('ChevronCompactRight', ''); // eslint-disable-next-line + + var BIconChevronCompactUp = /*#__PURE__*/makeIcon('ChevronCompactUp', ''); // eslint-disable-next-line + + var BIconChevronContract = /*#__PURE__*/makeIcon('ChevronContract', ''); // eslint-disable-next-line + + var BIconChevronDoubleDown = /*#__PURE__*/makeIcon('ChevronDoubleDown', ''); // eslint-disable-next-line + + var BIconChevronDoubleLeft = /*#__PURE__*/makeIcon('ChevronDoubleLeft', ''); // eslint-disable-next-line + + var BIconChevronDoubleRight = /*#__PURE__*/makeIcon('ChevronDoubleRight', ''); // eslint-disable-next-line + + var BIconChevronDoubleUp = /*#__PURE__*/makeIcon('ChevronDoubleUp', ''); // eslint-disable-next-line + + var BIconChevronDown = /*#__PURE__*/makeIcon('ChevronDown', ''); // eslint-disable-next-line + + var BIconChevronExpand = /*#__PURE__*/makeIcon('ChevronExpand', ''); // eslint-disable-next-line + + var BIconChevronLeft = /*#__PURE__*/makeIcon('ChevronLeft', ''); // eslint-disable-next-line + + var BIconChevronRight = /*#__PURE__*/makeIcon('ChevronRight', ''); // eslint-disable-next-line + + var BIconChevronUp = /*#__PURE__*/makeIcon('ChevronUp', ''); // eslint-disable-next-line + + var BIconCircle = /*#__PURE__*/makeIcon('Circle', ''); // eslint-disable-next-line + + var BIconCircleFill = /*#__PURE__*/makeIcon('CircleFill', ''); // eslint-disable-next-line + + var BIconCircleHalf = /*#__PURE__*/makeIcon('CircleHalf', ''); // eslint-disable-next-line + + var BIconCircleSquare = /*#__PURE__*/makeIcon('CircleSquare', ''); // eslint-disable-next-line + + var BIconClipboard = /*#__PURE__*/makeIcon('Clipboard', ''); // eslint-disable-next-line + + var BIconClipboardData = /*#__PURE__*/makeIcon('ClipboardData', ''); // eslint-disable-next-line + + var BIconClock = /*#__PURE__*/makeIcon('Clock', ''); // eslint-disable-next-line + + var BIconClockFill = /*#__PURE__*/makeIcon('ClockFill', ''); // eslint-disable-next-line + + var BIconClockHistory = /*#__PURE__*/makeIcon('ClockHistory', ''); // eslint-disable-next-line + + var BIconCloud = /*#__PURE__*/makeIcon('Cloud', ''); // eslint-disable-next-line + + var BIconCloudDownload = /*#__PURE__*/makeIcon('CloudDownload', ''); // eslint-disable-next-line + + var BIconCloudFill = /*#__PURE__*/makeIcon('CloudFill', ''); // eslint-disable-next-line + + var BIconCloudSlash = /*#__PURE__*/makeIcon('CloudSlash', ''); // eslint-disable-next-line + + var BIconCloudSlashFill = /*#__PURE__*/makeIcon('CloudSlashFill', ''); // eslint-disable-next-line + + var BIconCloudUpload = /*#__PURE__*/makeIcon('CloudUpload', ''); // eslint-disable-next-line + + var BIconCode = /*#__PURE__*/makeIcon('Code', ''); // eslint-disable-next-line + + var BIconCodeSlash = /*#__PURE__*/makeIcon('CodeSlash', ''); // eslint-disable-next-line + + var BIconCollection = /*#__PURE__*/makeIcon('Collection', ''); // eslint-disable-next-line + + var BIconCollectionFill = /*#__PURE__*/makeIcon('CollectionFill', ''); // eslint-disable-next-line + + var BIconCollectionPlay = /*#__PURE__*/makeIcon('CollectionPlay', ''); // eslint-disable-next-line + + var BIconCollectionPlayFill = /*#__PURE__*/makeIcon('CollectionPlayFill', ''); // eslint-disable-next-line + + var BIconColumns = /*#__PURE__*/makeIcon('Columns', ''); // eslint-disable-next-line + + var BIconColumnsGap = /*#__PURE__*/makeIcon('ColumnsGap', ''); // eslint-disable-next-line + + var BIconCommand = /*#__PURE__*/makeIcon('Command', ''); // eslint-disable-next-line + + var BIconCompass = /*#__PURE__*/makeIcon('Compass', ''); // eslint-disable-next-line + + var BIconCone = /*#__PURE__*/makeIcon('Cone', ''); // eslint-disable-next-line + + var BIconConeStriped = /*#__PURE__*/makeIcon('ConeStriped', ''); // eslint-disable-next-line + + var BIconController = /*#__PURE__*/makeIcon('Controller', ''); // eslint-disable-next-line + + var BIconCreditCard = /*#__PURE__*/makeIcon('CreditCard', ''); // eslint-disable-next-line + + var BIconCrop = /*#__PURE__*/makeIcon('Crop', ''); // eslint-disable-next-line + + var BIconCup = /*#__PURE__*/makeIcon('Cup', ''); // eslint-disable-next-line + + var BIconCursor = /*#__PURE__*/makeIcon('Cursor', ''); // eslint-disable-next-line + + var BIconCursorFill = /*#__PURE__*/makeIcon('CursorFill', ''); // eslint-disable-next-line + + var BIconCursorText = /*#__PURE__*/makeIcon('CursorText', ''); // eslint-disable-next-line + + var BIconDash = /*#__PURE__*/makeIcon('Dash', ''); // eslint-disable-next-line + + var BIconDashCircle = /*#__PURE__*/makeIcon('DashCircle', ''); // eslint-disable-next-line + + var BIconDashCircleFill = /*#__PURE__*/makeIcon('DashCircleFill', ''); // eslint-disable-next-line + + var BIconDashSquare = /*#__PURE__*/makeIcon('DashSquare', ''); // eslint-disable-next-line + + var BIconDashSquareFill = /*#__PURE__*/makeIcon('DashSquareFill', ''); // eslint-disable-next-line + + var BIconDiamond = /*#__PURE__*/makeIcon('Diamond', ''); // eslint-disable-next-line + + var BIconDiamondFill = /*#__PURE__*/makeIcon('DiamondFill', ''); // eslint-disable-next-line + + var BIconDiamondHalf = /*#__PURE__*/makeIcon('DiamondHalf', ''); // eslint-disable-next-line + + var BIconDisplay = /*#__PURE__*/makeIcon('Display', ''); // eslint-disable-next-line + + var BIconDisplayFill = /*#__PURE__*/makeIcon('DisplayFill', ''); // eslint-disable-next-line + + var BIconDoorClosed = /*#__PURE__*/makeIcon('DoorClosed', ''); // eslint-disable-next-line + + var BIconDoorClosedFill = /*#__PURE__*/makeIcon('DoorClosedFill', ''); // eslint-disable-next-line + + var BIconDot = /*#__PURE__*/makeIcon('Dot', ''); // eslint-disable-next-line + + var BIconDownload = /*#__PURE__*/makeIcon('Download', ''); // eslint-disable-next-line + + var BIconDroplet = /*#__PURE__*/makeIcon('Droplet', ''); // eslint-disable-next-line + + var BIconDropletFill = /*#__PURE__*/makeIcon('DropletFill', ''); // eslint-disable-next-line + + var BIconDropletHalf = /*#__PURE__*/makeIcon('DropletHalf', ''); // eslint-disable-next-line + + var BIconEgg = /*#__PURE__*/makeIcon('Egg', ''); // eslint-disable-next-line + + var BIconEggFill = /*#__PURE__*/makeIcon('EggFill', ''); // eslint-disable-next-line + + var BIconEggFried = /*#__PURE__*/makeIcon('EggFried', ''); // eslint-disable-next-line + + var BIconEject = /*#__PURE__*/makeIcon('Eject', ''); // eslint-disable-next-line + + var BIconEjectFill = /*#__PURE__*/makeIcon('EjectFill', ''); // eslint-disable-next-line + + var BIconEmojiAngry = /*#__PURE__*/makeIcon('EmojiAngry', ''); // eslint-disable-next-line + + var BIconEmojiDizzy = /*#__PURE__*/makeIcon('EmojiDizzy', ''); // eslint-disable-next-line + + var BIconEmojiFrown = /*#__PURE__*/makeIcon('EmojiFrown', ''); // eslint-disable-next-line + + var BIconEmojiLaughing = /*#__PURE__*/makeIcon('EmojiLaughing', ''); // eslint-disable-next-line + + var BIconEmojiNeutral = /*#__PURE__*/makeIcon('EmojiNeutral', ''); // eslint-disable-next-line + + var BIconEmojiSmile = /*#__PURE__*/makeIcon('EmojiSmile', ''); // eslint-disable-next-line + + var BIconEmojiSmileUpsideDown = /*#__PURE__*/makeIcon('EmojiSmileUpsideDown', ''); // eslint-disable-next-line + + var BIconEmojiSunglasses = /*#__PURE__*/makeIcon('EmojiSunglasses', ''); // eslint-disable-next-line + + var BIconEnvelope = /*#__PURE__*/makeIcon('Envelope', ''); // eslint-disable-next-line + + var BIconEnvelopeFill = /*#__PURE__*/makeIcon('EnvelopeFill', ''); // eslint-disable-next-line + + var BIconEnvelopeOpen = /*#__PURE__*/makeIcon('EnvelopeOpen', ''); // eslint-disable-next-line + + var BIconEnvelopeOpenFill = /*#__PURE__*/makeIcon('EnvelopeOpenFill', ''); // eslint-disable-next-line + + var BIconExclamation = /*#__PURE__*/makeIcon('Exclamation', ''); // eslint-disable-next-line + + var BIconExclamationCircle = /*#__PURE__*/makeIcon('ExclamationCircle', ''); // eslint-disable-next-line + + var BIconExclamationCircleFill = /*#__PURE__*/makeIcon('ExclamationCircleFill', ''); // eslint-disable-next-line + + var BIconExclamationDiamond = /*#__PURE__*/makeIcon('ExclamationDiamond', ''); // eslint-disable-next-line + + var BIconExclamationDiamondFill = /*#__PURE__*/makeIcon('ExclamationDiamondFill', ''); // eslint-disable-next-line + + var BIconExclamationOctagon = /*#__PURE__*/makeIcon('ExclamationOctagon', ''); // eslint-disable-next-line + + var BIconExclamationOctagonFill = /*#__PURE__*/makeIcon('ExclamationOctagonFill', ''); // eslint-disable-next-line + + var BIconExclamationSquare = /*#__PURE__*/makeIcon('ExclamationSquare', ''); // eslint-disable-next-line + + var BIconExclamationSquareFill = /*#__PURE__*/makeIcon('ExclamationSquareFill', ''); // eslint-disable-next-line + + var BIconExclamationTriangle = /*#__PURE__*/makeIcon('ExclamationTriangle', ''); // eslint-disable-next-line + + var BIconExclamationTriangleFill = /*#__PURE__*/makeIcon('ExclamationTriangleFill', ''); // eslint-disable-next-line + + var BIconExclude = /*#__PURE__*/makeIcon('Exclude', ''); // eslint-disable-next-line + + var BIconEye = /*#__PURE__*/makeIcon('Eye', ''); // eslint-disable-next-line + + var BIconEyeFill = /*#__PURE__*/makeIcon('EyeFill', ''); // eslint-disable-next-line + + var BIconEyeSlash = /*#__PURE__*/makeIcon('EyeSlash', ''); // eslint-disable-next-line + + var BIconEyeSlashFill = /*#__PURE__*/makeIcon('EyeSlashFill', ''); // eslint-disable-next-line + + var BIconFile = /*#__PURE__*/makeIcon('File', ''); // eslint-disable-next-line + + var BIconFileArrowDown = /*#__PURE__*/makeIcon('FileArrowDown', ''); // eslint-disable-next-line + + var BIconFileArrowUp = /*#__PURE__*/makeIcon('FileArrowUp', ''); // eslint-disable-next-line + + var BIconFileBreak = /*#__PURE__*/makeIcon('FileBreak', ''); // eslint-disable-next-line + + var BIconFileCheck = /*#__PURE__*/makeIcon('FileCheck', ''); // eslint-disable-next-line + + var BIconFileCode = /*#__PURE__*/makeIcon('FileCode', ''); // eslint-disable-next-line + + var BIconFileDiff = /*#__PURE__*/makeIcon('FileDiff', ''); // eslint-disable-next-line + + var BIconFileEarmark = /*#__PURE__*/makeIcon('FileEarmark', ''); // eslint-disable-next-line + + var BIconFileEarmarkArrowDown = /*#__PURE__*/makeIcon('FileEarmarkArrowDown', ''); // eslint-disable-next-line + + var BIconFileEarmarkArrowUp = /*#__PURE__*/makeIcon('FileEarmarkArrowUp', ''); // eslint-disable-next-line + + var BIconFileEarmarkBreak = /*#__PURE__*/makeIcon('FileEarmarkBreak', ''); // eslint-disable-next-line + + var BIconFileEarmarkCheck = /*#__PURE__*/makeIcon('FileEarmarkCheck', ''); // eslint-disable-next-line + + var BIconFileEarmarkCode = /*#__PURE__*/makeIcon('FileEarmarkCode', ''); // eslint-disable-next-line + + var BIconFileEarmarkDiff = /*#__PURE__*/makeIcon('FileEarmarkDiff', ''); // eslint-disable-next-line + + var BIconFileEarmarkMinus = /*#__PURE__*/makeIcon('FileEarmarkMinus', ''); // eslint-disable-next-line + + var BIconFileEarmarkPlus = /*#__PURE__*/makeIcon('FileEarmarkPlus', ''); // eslint-disable-next-line + + var BIconFileEarmarkRuled = /*#__PURE__*/makeIcon('FileEarmarkRuled', ''); // eslint-disable-next-line + + var BIconFileEarmarkSpreadsheet = /*#__PURE__*/makeIcon('FileEarmarkSpreadsheet', ''); // eslint-disable-next-line + + var BIconFileEarmarkText = /*#__PURE__*/makeIcon('FileEarmarkText', ''); // eslint-disable-next-line + + var BIconFileEarmarkZip = /*#__PURE__*/makeIcon('FileEarmarkZip', ''); // eslint-disable-next-line + + var BIconFileMinus = /*#__PURE__*/makeIcon('FileMinus', ''); // eslint-disable-next-line + + var BIconFilePlus = /*#__PURE__*/makeIcon('FilePlus', ''); // eslint-disable-next-line + + var BIconFilePost = /*#__PURE__*/makeIcon('FilePost', ''); // eslint-disable-next-line + + var BIconFileRichtext = /*#__PURE__*/makeIcon('FileRichtext', ''); // eslint-disable-next-line + + var BIconFileRuled = /*#__PURE__*/makeIcon('FileRuled', ''); // eslint-disable-next-line + + var BIconFileSpreadsheet = /*#__PURE__*/makeIcon('FileSpreadsheet', ''); // eslint-disable-next-line + + var BIconFileText = /*#__PURE__*/makeIcon('FileText', ''); // eslint-disable-next-line + + var BIconFileZip = /*#__PURE__*/makeIcon('FileZip', ''); // eslint-disable-next-line + + var BIconFiles = /*#__PURE__*/makeIcon('Files', ''); // eslint-disable-next-line + + var BIconFilesAlt = /*#__PURE__*/makeIcon('FilesAlt', ''); // eslint-disable-next-line + + var BIconFilm = /*#__PURE__*/makeIcon('Film', ''); // eslint-disable-next-line + + var BIconFilter = /*#__PURE__*/makeIcon('Filter', ''); // eslint-disable-next-line + + var BIconFilterLeft = /*#__PURE__*/makeIcon('FilterLeft', ''); // eslint-disable-next-line + + var BIconFilterRight = /*#__PURE__*/makeIcon('FilterRight', ''); // eslint-disable-next-line + + var BIconFlag = /*#__PURE__*/makeIcon('Flag', ''); // eslint-disable-next-line + + var BIconFlagFill = /*#__PURE__*/makeIcon('FlagFill', ''); // eslint-disable-next-line + + var BIconFolder = /*#__PURE__*/makeIcon('Folder', ''); // eslint-disable-next-line + + var BIconFolderCheck = /*#__PURE__*/makeIcon('FolderCheck', ''); // eslint-disable-next-line + + var BIconFolderFill = /*#__PURE__*/makeIcon('FolderFill', ''); // eslint-disable-next-line + + var BIconFolderMinus = /*#__PURE__*/makeIcon('FolderMinus', ''); // eslint-disable-next-line + + var BIconFolderPlus = /*#__PURE__*/makeIcon('FolderPlus', ''); // eslint-disable-next-line + + var BIconFolderSymlink = /*#__PURE__*/makeIcon('FolderSymlink', ''); // eslint-disable-next-line + + var BIconFolderSymlinkFill = /*#__PURE__*/makeIcon('FolderSymlinkFill', ''); // eslint-disable-next-line + + var BIconFonts = /*#__PURE__*/makeIcon('Fonts', ''); // eslint-disable-next-line + + var BIconForward = /*#__PURE__*/makeIcon('Forward', ''); // eslint-disable-next-line + + var BIconForwardFill = /*#__PURE__*/makeIcon('ForwardFill', ''); // eslint-disable-next-line + + var BIconFullscreen = /*#__PURE__*/makeIcon('Fullscreen', ''); // eslint-disable-next-line + + var BIconFullscreenExit = /*#__PURE__*/makeIcon('FullscreenExit', ''); // eslint-disable-next-line + + var BIconFunnel = /*#__PURE__*/makeIcon('Funnel', ''); // eslint-disable-next-line + + var BIconFunnelFill = /*#__PURE__*/makeIcon('FunnelFill', ''); // eslint-disable-next-line + + var BIconGear = /*#__PURE__*/makeIcon('Gear', ''); // eslint-disable-next-line + + var BIconGearFill = /*#__PURE__*/makeIcon('GearFill', ''); // eslint-disable-next-line + + var BIconGearWide = /*#__PURE__*/makeIcon('GearWide', ''); // eslint-disable-next-line + + var BIconGearWideConnected = /*#__PURE__*/makeIcon('GearWideConnected', ''); // eslint-disable-next-line + + var BIconGem = /*#__PURE__*/makeIcon('Gem', ''); // eslint-disable-next-line + + var BIconGeo = /*#__PURE__*/makeIcon('Geo', ''); // eslint-disable-next-line + + var BIconGeoAlt = /*#__PURE__*/makeIcon('GeoAlt', ''); // eslint-disable-next-line + + var BIconGift = /*#__PURE__*/makeIcon('Gift', ''); // eslint-disable-next-line + + var BIconGiftFill = /*#__PURE__*/makeIcon('GiftFill', ''); // eslint-disable-next-line + + var BIconGraphDown = /*#__PURE__*/makeIcon('GraphDown', ''); // eslint-disable-next-line + + var BIconGraphUp = /*#__PURE__*/makeIcon('GraphUp', ''); // eslint-disable-next-line + + var BIconGrid = /*#__PURE__*/makeIcon('Grid', ''); // eslint-disable-next-line + + var BIconGrid1x2 = /*#__PURE__*/makeIcon('Grid1x2', ''); // eslint-disable-next-line + + var BIconGrid1x2Fill = /*#__PURE__*/makeIcon('Grid1x2Fill', ''); // eslint-disable-next-line + + var BIconGrid3x2 = /*#__PURE__*/makeIcon('Grid3x2', ''); // eslint-disable-next-line + + var BIconGrid3x2Gap = /*#__PURE__*/makeIcon('Grid3x2Gap', ''); // eslint-disable-next-line + + var BIconGrid3x2GapFill = /*#__PURE__*/makeIcon('Grid3x2GapFill', ''); // eslint-disable-next-line + + var BIconGrid3x3 = /*#__PURE__*/makeIcon('Grid3x3', ''); // eslint-disable-next-line + + var BIconGrid3x3Gap = /*#__PURE__*/makeIcon('Grid3x3Gap', ''); // eslint-disable-next-line + + var BIconGrid3x3GapFill = /*#__PURE__*/makeIcon('Grid3x3GapFill', ''); // eslint-disable-next-line + + var BIconGridFill = /*#__PURE__*/makeIcon('GridFill', ''); // eslint-disable-next-line + + var BIconGripHorizontal = /*#__PURE__*/makeIcon('GripHorizontal', ''); // eslint-disable-next-line + + var BIconGripVertical = /*#__PURE__*/makeIcon('GripVertical', ''); // eslint-disable-next-line + + var BIconHammer = /*#__PURE__*/makeIcon('Hammer', ''); // eslint-disable-next-line + + var BIconHandIndex = /*#__PURE__*/makeIcon('HandIndex', ''); // eslint-disable-next-line + + var BIconHandIndexThumb = /*#__PURE__*/makeIcon('HandIndexThumb', ''); // eslint-disable-next-line + + var BIconHandThumbsDown = /*#__PURE__*/makeIcon('HandThumbsDown', ''); // eslint-disable-next-line + + var BIconHandThumbsUp = /*#__PURE__*/makeIcon('HandThumbsUp', ''); // eslint-disable-next-line + + var BIconHandbag = /*#__PURE__*/makeIcon('Handbag', ''); // eslint-disable-next-line + + var BIconHandbagFill = /*#__PURE__*/makeIcon('HandbagFill', ''); // eslint-disable-next-line + + var BIconHash = /*#__PURE__*/makeIcon('Hash', ''); // eslint-disable-next-line + + var BIconHeadphones = /*#__PURE__*/makeIcon('Headphones', ''); // eslint-disable-next-line + + var BIconHeart = /*#__PURE__*/makeIcon('Heart', ''); // eslint-disable-next-line + + var BIconHeartFill = /*#__PURE__*/makeIcon('HeartFill', ''); // eslint-disable-next-line + + var BIconHeartHalf = /*#__PURE__*/makeIcon('HeartHalf', ''); // eslint-disable-next-line + + var BIconHexagon = /*#__PURE__*/makeIcon('Hexagon', ''); // eslint-disable-next-line + + var BIconHexagonFill = /*#__PURE__*/makeIcon('HexagonFill', ''); // eslint-disable-next-line + + var BIconHexagonHalf = /*#__PURE__*/makeIcon('HexagonHalf', ''); // eslint-disable-next-line + + var BIconHouse = /*#__PURE__*/makeIcon('House', ''); // eslint-disable-next-line + + var BIconHouseDoor = /*#__PURE__*/makeIcon('HouseDoor', ''); // eslint-disable-next-line + + var BIconHouseDoorFill = /*#__PURE__*/makeIcon('HouseDoorFill', ''); // eslint-disable-next-line + + var BIconHouseFill = /*#__PURE__*/makeIcon('HouseFill', ''); // eslint-disable-next-line + + var BIconHr = /*#__PURE__*/makeIcon('Hr', ''); // eslint-disable-next-line + + var BIconImage = /*#__PURE__*/makeIcon('Image', ''); // eslint-disable-next-line + + var BIconImageAlt = /*#__PURE__*/makeIcon('ImageAlt', ''); // eslint-disable-next-line + + var BIconImageFill = /*#__PURE__*/makeIcon('ImageFill', ''); // eslint-disable-next-line + + var BIconImages = /*#__PURE__*/makeIcon('Images', ''); // eslint-disable-next-line + + var BIconInbox = /*#__PURE__*/makeIcon('Inbox', ''); // eslint-disable-next-line + + var BIconInboxFill = /*#__PURE__*/makeIcon('InboxFill', ''); // eslint-disable-next-line + + var BIconInboxes = /*#__PURE__*/makeIcon('Inboxes', ''); // eslint-disable-next-line + + var BIconInboxesFill = /*#__PURE__*/makeIcon('InboxesFill', ''); // eslint-disable-next-line + + var BIconInfo = /*#__PURE__*/makeIcon('Info', ''); // eslint-disable-next-line + + var BIconInfoCircle = /*#__PURE__*/makeIcon('InfoCircle', ''); // eslint-disable-next-line + + var BIconInfoCircleFill = /*#__PURE__*/makeIcon('InfoCircleFill', ''); // eslint-disable-next-line + + var BIconInfoSquare = /*#__PURE__*/makeIcon('InfoSquare', ''); // eslint-disable-next-line + + var BIconInfoSquareFill = /*#__PURE__*/makeIcon('InfoSquareFill', ''); // eslint-disable-next-line + + var BIconIntersect = /*#__PURE__*/makeIcon('Intersect', ''); // eslint-disable-next-line + + var BIconJustify = /*#__PURE__*/makeIcon('Justify', ''); // eslint-disable-next-line + + var BIconJustifyLeft = /*#__PURE__*/makeIcon('JustifyLeft', ''); // eslint-disable-next-line + + var BIconJustifyRight = /*#__PURE__*/makeIcon('JustifyRight', ''); // eslint-disable-next-line + + var BIconKanban = /*#__PURE__*/makeIcon('Kanban', ''); // eslint-disable-next-line + + var BIconKanbanFill = /*#__PURE__*/makeIcon('KanbanFill', ''); // eslint-disable-next-line + + var BIconLaptop = /*#__PURE__*/makeIcon('Laptop', ''); // eslint-disable-next-line + + var BIconLayers = /*#__PURE__*/makeIcon('Layers', ''); // eslint-disable-next-line + + var BIconLayersFill = /*#__PURE__*/makeIcon('LayersFill', ''); // eslint-disable-next-line + + var BIconLayersHalf = /*#__PURE__*/makeIcon('LayersHalf', ''); // eslint-disable-next-line + + var BIconLayoutSidebar = /*#__PURE__*/makeIcon('LayoutSidebar', ''); // eslint-disable-next-line + + var BIconLayoutSidebarInset = /*#__PURE__*/makeIcon('LayoutSidebarInset', ''); // eslint-disable-next-line + + var BIconLayoutSidebarInsetReverse = /*#__PURE__*/makeIcon('LayoutSidebarInsetReverse', ''); // eslint-disable-next-line + + var BIconLayoutSidebarReverse = /*#__PURE__*/makeIcon('LayoutSidebarReverse', ''); // eslint-disable-next-line + + var BIconLayoutSplit = /*#__PURE__*/makeIcon('LayoutSplit', ''); // eslint-disable-next-line + + var BIconLayoutTextSidebar = /*#__PURE__*/makeIcon('LayoutTextSidebar', ''); // eslint-disable-next-line + + var BIconLayoutTextSidebarReverse = /*#__PURE__*/makeIcon('LayoutTextSidebarReverse', ''); // eslint-disable-next-line + + var BIconLayoutTextWindow = /*#__PURE__*/makeIcon('LayoutTextWindow', ''); // eslint-disable-next-line + + var BIconLayoutTextWindowReverse = /*#__PURE__*/makeIcon('LayoutTextWindowReverse', ''); // eslint-disable-next-line + + var BIconLayoutThreeColumns = /*#__PURE__*/makeIcon('LayoutThreeColumns', ''); // eslint-disable-next-line + + var BIconLayoutWtf = /*#__PURE__*/makeIcon('LayoutWtf', ''); // eslint-disable-next-line + + var BIconLifePreserver = /*#__PURE__*/makeIcon('LifePreserver', ''); // eslint-disable-next-line + + var BIconLightning = /*#__PURE__*/makeIcon('Lightning', ''); // eslint-disable-next-line + + var BIconLightningFill = /*#__PURE__*/makeIcon('LightningFill', ''); // eslint-disable-next-line + + var BIconLink = /*#__PURE__*/makeIcon('Link', ''); // eslint-disable-next-line + + var BIconLink45deg = /*#__PURE__*/makeIcon('Link45deg', ''); // eslint-disable-next-line + + var BIconList = /*#__PURE__*/makeIcon('List', ''); // eslint-disable-next-line + + var BIconListCheck = /*#__PURE__*/makeIcon('ListCheck', ''); // eslint-disable-next-line + + var BIconListNested = /*#__PURE__*/makeIcon('ListNested', ''); // eslint-disable-next-line + + var BIconListOl = /*#__PURE__*/makeIcon('ListOl', ''); // eslint-disable-next-line + + var BIconListTask = /*#__PURE__*/makeIcon('ListTask', ''); // eslint-disable-next-line + + var BIconListUl = /*#__PURE__*/makeIcon('ListUl', ''); // eslint-disable-next-line + + var BIconLock = /*#__PURE__*/makeIcon('Lock', ''); // eslint-disable-next-line + + var BIconLockFill = /*#__PURE__*/makeIcon('LockFill', ''); // eslint-disable-next-line + + var BIconMap = /*#__PURE__*/makeIcon('Map', ''); // eslint-disable-next-line + + var BIconMic = /*#__PURE__*/makeIcon('Mic', ''); // eslint-disable-next-line + + var BIconMicFill = /*#__PURE__*/makeIcon('MicFill', ''); // eslint-disable-next-line + + var BIconMicMute = /*#__PURE__*/makeIcon('MicMute', ''); // eslint-disable-next-line + + var BIconMicMuteFill = /*#__PURE__*/makeIcon('MicMuteFill', ''); // eslint-disable-next-line + + var BIconMinecart = /*#__PURE__*/makeIcon('Minecart', ''); // eslint-disable-next-line + + var BIconMinecartLoaded = /*#__PURE__*/makeIcon('MinecartLoaded', ''); // eslint-disable-next-line + + var BIconMoon = /*#__PURE__*/makeIcon('Moon', ''); // eslint-disable-next-line + + var BIconMusicNote = /*#__PURE__*/makeIcon('MusicNote', ''); // eslint-disable-next-line + + var BIconMusicNoteBeamed = /*#__PURE__*/makeIcon('MusicNoteBeamed', ''); // eslint-disable-next-line + + var BIconMusicNoteList = /*#__PURE__*/makeIcon('MusicNoteList', ''); // eslint-disable-next-line + + var BIconMusicPlayer = /*#__PURE__*/makeIcon('MusicPlayer', ''); // eslint-disable-next-line + + var BIconMusicPlayerFill = /*#__PURE__*/makeIcon('MusicPlayerFill', ''); // eslint-disable-next-line + + var BIconNewspaper = /*#__PURE__*/makeIcon('Newspaper', ''); // eslint-disable-next-line + + var BIconOctagon = /*#__PURE__*/makeIcon('Octagon', ''); // eslint-disable-next-line + + var BIconOctagonFill = /*#__PURE__*/makeIcon('OctagonFill', ''); // eslint-disable-next-line + + var BIconOctagonHalf = /*#__PURE__*/makeIcon('OctagonHalf', ''); // eslint-disable-next-line + + var BIconOption = /*#__PURE__*/makeIcon('Option', ''); // eslint-disable-next-line + + var BIconOutlet = /*#__PURE__*/makeIcon('Outlet', ''); // eslint-disable-next-line + + var BIconPaperclip = /*#__PURE__*/makeIcon('Paperclip', ''); // eslint-disable-next-line + + var BIconPause = /*#__PURE__*/makeIcon('Pause', ''); // eslint-disable-next-line + + var BIconPauseFill = /*#__PURE__*/makeIcon('PauseFill', ''); // eslint-disable-next-line + + var BIconPen = /*#__PURE__*/makeIcon('Pen', ''); // eslint-disable-next-line + + var BIconPencil = /*#__PURE__*/makeIcon('Pencil', ''); // eslint-disable-next-line + + var BIconPencilSquare = /*#__PURE__*/makeIcon('PencilSquare', ''); // eslint-disable-next-line + + var BIconPentagon = /*#__PURE__*/makeIcon('Pentagon', ''); // eslint-disable-next-line + + var BIconPentagonFill = /*#__PURE__*/makeIcon('PentagonFill', ''); // eslint-disable-next-line + + var BIconPentagonHalf = /*#__PURE__*/makeIcon('PentagonHalf', ''); // eslint-disable-next-line + + var BIconPeople = /*#__PURE__*/makeIcon('People', ''); // eslint-disable-next-line + + var BIconPeopleFill = /*#__PURE__*/makeIcon('PeopleFill', ''); // eslint-disable-next-line + + var BIconPerson = /*#__PURE__*/makeIcon('Person', ''); // eslint-disable-next-line + + var BIconPersonBoundingBox = /*#__PURE__*/makeIcon('PersonBoundingBox', ''); // eslint-disable-next-line + + var BIconPersonCheck = /*#__PURE__*/makeIcon('PersonCheck', ''); // eslint-disable-next-line + + var BIconPersonCheckFill = /*#__PURE__*/makeIcon('PersonCheckFill', ''); // eslint-disable-next-line + + var BIconPersonCircle = /*#__PURE__*/makeIcon('PersonCircle', ''); // eslint-disable-next-line + + var BIconPersonDash = /*#__PURE__*/makeIcon('PersonDash', ''); // eslint-disable-next-line + + var BIconPersonDashFill = /*#__PURE__*/makeIcon('PersonDashFill', ''); // eslint-disable-next-line + + var BIconPersonFill = /*#__PURE__*/makeIcon('PersonFill', ''); // eslint-disable-next-line + + var BIconPersonLinesFill = /*#__PURE__*/makeIcon('PersonLinesFill', ''); // eslint-disable-next-line + + var BIconPersonPlus = /*#__PURE__*/makeIcon('PersonPlus', ''); // eslint-disable-next-line + + var BIconPersonPlusFill = /*#__PURE__*/makeIcon('PersonPlusFill', ''); // eslint-disable-next-line + + var BIconPersonSquare = /*#__PURE__*/makeIcon('PersonSquare', ''); // eslint-disable-next-line + + var BIconPhone = /*#__PURE__*/makeIcon('Phone', ''); // eslint-disable-next-line + + var BIconPhoneLandscape = /*#__PURE__*/makeIcon('PhoneLandscape', ''); // eslint-disable-next-line + + var BIconPieChart = /*#__PURE__*/makeIcon('PieChart', ''); // eslint-disable-next-line + + var BIconPieChartFill = /*#__PURE__*/makeIcon('PieChartFill', ''); // eslint-disable-next-line + + var BIconPip = /*#__PURE__*/makeIcon('Pip', ''); // eslint-disable-next-line + + var BIconPipFill = /*#__PURE__*/makeIcon('PipFill', ''); // eslint-disable-next-line + + var BIconPlay = /*#__PURE__*/makeIcon('Play', ''); // eslint-disable-next-line + + var BIconPlayFill = /*#__PURE__*/makeIcon('PlayFill', ''); // eslint-disable-next-line + + var BIconPlug = /*#__PURE__*/makeIcon('Plug', ''); // eslint-disable-next-line + + var BIconPlus = /*#__PURE__*/makeIcon('Plus', ''); // eslint-disable-next-line + + var BIconPlusCircle = /*#__PURE__*/makeIcon('PlusCircle', ''); // eslint-disable-next-line + + var BIconPlusCircleFill = /*#__PURE__*/makeIcon('PlusCircleFill', ''); // eslint-disable-next-line + + var BIconPlusSquare = /*#__PURE__*/makeIcon('PlusSquare', ''); // eslint-disable-next-line + + var BIconPlusSquareFill = /*#__PURE__*/makeIcon('PlusSquareFill', ''); // eslint-disable-next-line + + var BIconPower = /*#__PURE__*/makeIcon('Power', ''); // eslint-disable-next-line + + var BIconPuzzle = /*#__PURE__*/makeIcon('Puzzle', ''); // eslint-disable-next-line + + var BIconPuzzleFill = /*#__PURE__*/makeIcon('PuzzleFill', ''); // eslint-disable-next-line + + var BIconQuestion = /*#__PURE__*/makeIcon('Question', ''); // eslint-disable-next-line + + var BIconQuestionCircle = /*#__PURE__*/makeIcon('QuestionCircle', ''); // eslint-disable-next-line + + var BIconQuestionCircleFill = /*#__PURE__*/makeIcon('QuestionCircleFill', ''); // eslint-disable-next-line + + var BIconQuestionDiamond = /*#__PURE__*/makeIcon('QuestionDiamond', ''); // eslint-disable-next-line + + var BIconQuestionDiamondFill = /*#__PURE__*/makeIcon('QuestionDiamondFill', ''); // eslint-disable-next-line + + var BIconQuestionOctagon = /*#__PURE__*/makeIcon('QuestionOctagon', ''); // eslint-disable-next-line + + var BIconQuestionOctagonFill = /*#__PURE__*/makeIcon('QuestionOctagonFill', ''); // eslint-disable-next-line + + var BIconQuestionSquare = /*#__PURE__*/makeIcon('QuestionSquare', ''); // eslint-disable-next-line + + var BIconQuestionSquareFill = /*#__PURE__*/makeIcon('QuestionSquareFill', ''); // eslint-disable-next-line + + var BIconReceipt = /*#__PURE__*/makeIcon('Receipt', ''); // eslint-disable-next-line + + var BIconReceiptCutoff = /*#__PURE__*/makeIcon('ReceiptCutoff', ''); // eslint-disable-next-line + + var BIconReply = /*#__PURE__*/makeIcon('Reply', ''); // eslint-disable-next-line + + var BIconReplyAll = /*#__PURE__*/makeIcon('ReplyAll', ''); // eslint-disable-next-line + + var BIconReplyAllFill = /*#__PURE__*/makeIcon('ReplyAllFill', ''); // eslint-disable-next-line + + var BIconReplyFill = /*#__PURE__*/makeIcon('ReplyFill', ''); // eslint-disable-next-line + + var BIconScrewdriver = /*#__PURE__*/makeIcon('Screwdriver', ''); // eslint-disable-next-line + + var BIconSearch = /*#__PURE__*/makeIcon('Search', ''); // eslint-disable-next-line + + var BIconServer = /*#__PURE__*/makeIcon('Server', ''); // eslint-disable-next-line + + var BIconShield = /*#__PURE__*/makeIcon('Shield', ''); // eslint-disable-next-line + + var BIconShieldFill = /*#__PURE__*/makeIcon('ShieldFill', ''); // eslint-disable-next-line + + var BIconShieldLock = /*#__PURE__*/makeIcon('ShieldLock', ''); // eslint-disable-next-line + + var BIconShieldLockFill = /*#__PURE__*/makeIcon('ShieldLockFill', ''); // eslint-disable-next-line + + var BIconShieldShaded = /*#__PURE__*/makeIcon('ShieldShaded', ''); // eslint-disable-next-line + + var BIconShieldSlash = /*#__PURE__*/makeIcon('ShieldSlash', ''); // eslint-disable-next-line + + var BIconShieldSlashFill = /*#__PURE__*/makeIcon('ShieldSlashFill', ''); // eslint-disable-next-line + + var BIconShift = /*#__PURE__*/makeIcon('Shift', ''); // eslint-disable-next-line + + var BIconShiftFill = /*#__PURE__*/makeIcon('ShiftFill', ''); // eslint-disable-next-line + + var BIconShop = /*#__PURE__*/makeIcon('Shop', ''); // eslint-disable-next-line + + var BIconShopWindow = /*#__PURE__*/makeIcon('ShopWindow', ''); // eslint-disable-next-line + + var BIconShuffle = /*#__PURE__*/makeIcon('Shuffle', ''); // eslint-disable-next-line + + var BIconSkipBackward = /*#__PURE__*/makeIcon('SkipBackward', ''); // eslint-disable-next-line + + var BIconSkipBackwardFill = /*#__PURE__*/makeIcon('SkipBackwardFill', ''); // eslint-disable-next-line + + var BIconSkipEnd = /*#__PURE__*/makeIcon('SkipEnd', ''); // eslint-disable-next-line + + var BIconSkipEndFill = /*#__PURE__*/makeIcon('SkipEndFill', ''); // eslint-disable-next-line + + var BIconSkipForward = /*#__PURE__*/makeIcon('SkipForward', ''); // eslint-disable-next-line + + var BIconSkipForwardFill = /*#__PURE__*/makeIcon('SkipForwardFill', ''); // eslint-disable-next-line + + var BIconSkipStart = /*#__PURE__*/makeIcon('SkipStart', ''); // eslint-disable-next-line + + var BIconSkipStartFill = /*#__PURE__*/makeIcon('SkipStartFill', ''); // eslint-disable-next-line + + var BIconSlash = /*#__PURE__*/makeIcon('Slash', ''); // eslint-disable-next-line + + var BIconSlashCircle = /*#__PURE__*/makeIcon('SlashCircle', ''); // eslint-disable-next-line + + var BIconSlashCircleFill = /*#__PURE__*/makeIcon('SlashCircleFill', ''); // eslint-disable-next-line + + var BIconSlashSquare = /*#__PURE__*/makeIcon('SlashSquare', ''); // eslint-disable-next-line + + var BIconSlashSquareFill = /*#__PURE__*/makeIcon('SlashSquareFill', ''); // eslint-disable-next-line + + var BIconSliders = /*#__PURE__*/makeIcon('Sliders', ''); // eslint-disable-next-line + + var BIconSoundwave = /*#__PURE__*/makeIcon('Soundwave', ''); // eslint-disable-next-line + + var BIconSpeaker = /*#__PURE__*/makeIcon('Speaker', ''); // eslint-disable-next-line + + var BIconSquare = /*#__PURE__*/makeIcon('Square', ''); // eslint-disable-next-line + + var BIconSquareFill = /*#__PURE__*/makeIcon('SquareFill', ''); // eslint-disable-next-line + + var BIconSquareHalf = /*#__PURE__*/makeIcon('SquareHalf', ''); // eslint-disable-next-line + + var BIconStar = /*#__PURE__*/makeIcon('Star', ''); // eslint-disable-next-line + + var BIconStarFill = /*#__PURE__*/makeIcon('StarFill', ''); // eslint-disable-next-line + + var BIconStarHalf = /*#__PURE__*/makeIcon('StarHalf', ''); // eslint-disable-next-line + + var BIconStop = /*#__PURE__*/makeIcon('Stop', ''); // eslint-disable-next-line + + var BIconStopFill = /*#__PURE__*/makeIcon('StopFill', ''); // eslint-disable-next-line + + var BIconStopwatch = /*#__PURE__*/makeIcon('Stopwatch', ''); // eslint-disable-next-line + + var BIconStopwatchFill = /*#__PURE__*/makeIcon('StopwatchFill', ''); // eslint-disable-next-line + + var BIconSubtract = /*#__PURE__*/makeIcon('Subtract', ''); // eslint-disable-next-line + + var BIconSun = /*#__PURE__*/makeIcon('Sun', ''); // eslint-disable-next-line + + var BIconTable = /*#__PURE__*/makeIcon('Table', ''); // eslint-disable-next-line + + var BIconTablet = /*#__PURE__*/makeIcon('Tablet', ''); // eslint-disable-next-line + + var BIconTabletLandscape = /*#__PURE__*/makeIcon('TabletLandscape', ''); // eslint-disable-next-line + + var BIconTag = /*#__PURE__*/makeIcon('Tag', ''); // eslint-disable-next-line + + var BIconTagFill = /*#__PURE__*/makeIcon('TagFill', ''); // eslint-disable-next-line + + var BIconTerminal = /*#__PURE__*/makeIcon('Terminal', ''); // eslint-disable-next-line + + var BIconTerminalFill = /*#__PURE__*/makeIcon('TerminalFill', ''); // eslint-disable-next-line + + var BIconTextCenter = /*#__PURE__*/makeIcon('TextCenter', ''); // eslint-disable-next-line + + var BIconTextIndentLeft = /*#__PURE__*/makeIcon('TextIndentLeft', ''); // eslint-disable-next-line + + var BIconTextIndentRight = /*#__PURE__*/makeIcon('TextIndentRight', ''); // eslint-disable-next-line + + var BIconTextLeft = /*#__PURE__*/makeIcon('TextLeft', ''); // eslint-disable-next-line + + var BIconTextRight = /*#__PURE__*/makeIcon('TextRight', ''); // eslint-disable-next-line + + var BIconTextarea = /*#__PURE__*/makeIcon('Textarea', ''); // eslint-disable-next-line + + var BIconTextareaT = /*#__PURE__*/makeIcon('TextareaT', ''); // eslint-disable-next-line + + var BIconThreeDots = /*#__PURE__*/makeIcon('ThreeDots', ''); // eslint-disable-next-line + + var BIconThreeDotsVertical = /*#__PURE__*/makeIcon('ThreeDotsVertical', ''); // eslint-disable-next-line + + var BIconToggleOff = /*#__PURE__*/makeIcon('ToggleOff', ''); // eslint-disable-next-line + + var BIconToggleOn = /*#__PURE__*/makeIcon('ToggleOn', ''); // eslint-disable-next-line + + var BIconToggles = /*#__PURE__*/makeIcon('Toggles', ''); // eslint-disable-next-line + + var BIconTools = /*#__PURE__*/makeIcon('Tools', ''); // eslint-disable-next-line + + var BIconTrash = /*#__PURE__*/makeIcon('Trash', ''); // eslint-disable-next-line + + var BIconTrash2 = /*#__PURE__*/makeIcon('Trash2', ''); // eslint-disable-next-line + + var BIconTrash2Fill = /*#__PURE__*/makeIcon('Trash2Fill', ''); // eslint-disable-next-line + + var BIconTrashFill = /*#__PURE__*/makeIcon('TrashFill', ''); // eslint-disable-next-line + + var BIconTriangle = /*#__PURE__*/makeIcon('Triangle', ''); // eslint-disable-next-line + + var BIconTriangleFill = /*#__PURE__*/makeIcon('TriangleFill', ''); // eslint-disable-next-line + + var BIconTriangleHalf = /*#__PURE__*/makeIcon('TriangleHalf', ''); // eslint-disable-next-line + + var BIconTrophy = /*#__PURE__*/makeIcon('Trophy', ''); // eslint-disable-next-line + + var BIconTruck = /*#__PURE__*/makeIcon('Truck', ''); // eslint-disable-next-line + + var BIconTruckFlatbed = /*#__PURE__*/makeIcon('TruckFlatbed', ''); // eslint-disable-next-line + + var BIconTv = /*#__PURE__*/makeIcon('Tv', ''); // eslint-disable-next-line + + var BIconTvFill = /*#__PURE__*/makeIcon('TvFill', ''); // eslint-disable-next-line + + var BIconType = /*#__PURE__*/makeIcon('Type', ''); // eslint-disable-next-line + + var BIconTypeBold = /*#__PURE__*/makeIcon('TypeBold', ''); // eslint-disable-next-line + + var BIconTypeH1 = /*#__PURE__*/makeIcon('TypeH1', ''); // eslint-disable-next-line + + var BIconTypeH2 = /*#__PURE__*/makeIcon('TypeH2', ''); // eslint-disable-next-line + + var BIconTypeH3 = /*#__PURE__*/makeIcon('TypeH3', ''); // eslint-disable-next-line + + var BIconTypeItalic = /*#__PURE__*/makeIcon('TypeItalic', ''); // eslint-disable-next-line + + var BIconTypeStrikethrough = /*#__PURE__*/makeIcon('TypeStrikethrough', ''); // eslint-disable-next-line + + var BIconTypeUnderline = /*#__PURE__*/makeIcon('TypeUnderline', ''); // eslint-disable-next-line + + var BIconUnion = /*#__PURE__*/makeIcon('Union', ''); // eslint-disable-next-line + + var BIconUnlock = /*#__PURE__*/makeIcon('Unlock', ''); // eslint-disable-next-line + + var BIconUnlockFill = /*#__PURE__*/makeIcon('UnlockFill', ''); // eslint-disable-next-line + + var BIconUpc = /*#__PURE__*/makeIcon('Upc', ''); // eslint-disable-next-line + + var BIconUpcScan = /*#__PURE__*/makeIcon('UpcScan', ''); // eslint-disable-next-line + + var BIconUpload = /*#__PURE__*/makeIcon('Upload', ''); // eslint-disable-next-line + + var BIconViewList = /*#__PURE__*/makeIcon('ViewList', ''); // eslint-disable-next-line + + var BIconViewStacked = /*#__PURE__*/makeIcon('ViewStacked', ''); // eslint-disable-next-line + + var BIconVolumeDown = /*#__PURE__*/makeIcon('VolumeDown', ''); // eslint-disable-next-line + + var BIconVolumeDownFill = /*#__PURE__*/makeIcon('VolumeDownFill', ''); // eslint-disable-next-line + + var BIconVolumeMute = /*#__PURE__*/makeIcon('VolumeMute', ''); // eslint-disable-next-line + + var BIconVolumeMuteFill = /*#__PURE__*/makeIcon('VolumeMuteFill', ''); // eslint-disable-next-line + + var BIconVolumeOff = /*#__PURE__*/makeIcon('VolumeOff', ''); // eslint-disable-next-line + + var BIconVolumeOffFill = /*#__PURE__*/makeIcon('VolumeOffFill', ''); // eslint-disable-next-line + + var BIconVolumeUp = /*#__PURE__*/makeIcon('VolumeUp', ''); // eslint-disable-next-line + + var BIconVolumeUpFill = /*#__PURE__*/makeIcon('VolumeUpFill', ''); // eslint-disable-next-line + + var BIconVr = /*#__PURE__*/makeIcon('Vr', ''); // eslint-disable-next-line + + var BIconWallet = /*#__PURE__*/makeIcon('Wallet', ''); // eslint-disable-next-line + + var BIconWallet2 = /*#__PURE__*/makeIcon('Wallet2', ''); // eslint-disable-next-line + + var BIconWatch = /*#__PURE__*/makeIcon('Watch', ''); // eslint-disable-next-line + + var BIconWifi = /*#__PURE__*/makeIcon('Wifi', ''); // eslint-disable-next-line + + var BIconWindow = /*#__PURE__*/makeIcon('Window', ''); // eslint-disable-next-line + + var BIconWrench = /*#__PURE__*/makeIcon('Wrench', ''); // eslint-disable-next-line + + var BIconX = /*#__PURE__*/makeIcon('X', ''); // eslint-disable-next-line + + var BIconXCircle = /*#__PURE__*/makeIcon('XCircle', ''); // eslint-disable-next-line + + var BIconXCircleFill = /*#__PURE__*/makeIcon('XCircleFill', ''); // eslint-disable-next-line + + var BIconXDiamond = /*#__PURE__*/makeIcon('XDiamond', ''); // eslint-disable-next-line + + var BIconXDiamondFill = /*#__PURE__*/makeIcon('XDiamondFill', ''); // eslint-disable-next-line + + var BIconXOctagon = /*#__PURE__*/makeIcon('XOctagon', ''); // eslint-disable-next-line + + var BIconXOctagonFill = /*#__PURE__*/makeIcon('XOctagonFill', ''); // eslint-disable-next-line + + var BIconXSquare = /*#__PURE__*/makeIcon('XSquare', ''); // eslint-disable-next-line + + var BIconXSquareFill = /*#__PURE__*/makeIcon('XSquareFill', ''); // --- END AUTO-GENERATED FILE --- + + var RX_ICON_PREFIX = /^BIcon/; // Helper BIcon component + // Requires the requested icon component to be installed + + var BIcon = /*#__PURE__*/Vue.extend({ + name: 'BIcon', + functional: true, + props: _objectSpread2(_objectSpread2({ + icon: { + type: String, + default: null + } + }, commonIconProps), {}, { + stacked: { + type: Boolean, + default: false + } + }), + render: function render(h, _ref) { + var data = _ref.data, + props = _ref.props, + parent = _ref.parent; + var icon = pascalCase(trim(props.icon || '')).replace(RX_ICON_PREFIX, ''); + var iconName = "BIcon".concat(icon); // If parent context exists, we check to see if the icon has been registered + // Either locally in the parent component, or globally at the `$root` level + // If not registered, we render a blank icon + + var components = ((parent || {}).$options || {}).components; + var componentRefOrName = icon && components ? components[iconName] || BIconBlank : icon ? iconName : BIconBlank; + return h(componentRefOrName, a(data, { + props: _objectSpread2(_objectSpread2({}, props), {}, { + icon: null + }) + })); + } + }); + + var BIconstack = /*#__PURE__*/Vue.extend({ + name: 'BIconstack', + functional: true, + props: _objectSpread2({}, commonIconProps), + render: function render(h, _ref) { + var data = _ref.data, + props = _ref.props, + children = _ref.children; + return h(BVIconBase, a(data, { + staticClass: 'b-iconstack', + props: _objectSpread2(_objectSpread2({}, props), {}, { + stacked: false + }) + }), children); + } + }); + + // --- BEGIN AUTO-GENERATED FILE --- + + var IconsPlugin = /*#__PURE__*/pluginFactoryNoConfig({ + components: { + // Icon helper component + BIcon: BIcon, + // Icon stacking component + BIconstack: BIconstack, + // BootstrapVue custom icon components + BIconBlank: BIconBlank, + // Bootstrap icon components + BIconAlarm: BIconAlarm, + BIconAlarmFill: BIconAlarmFill, + BIconAlt: BIconAlt, + BIconApp: BIconApp, + BIconAppIndicator: BIconAppIndicator, + BIconArchive: BIconArchive, + BIconArchiveFill: BIconArchiveFill, + BIconArrow90degDown: BIconArrow90degDown, + BIconArrow90degLeft: BIconArrow90degLeft, + BIconArrow90degRight: BIconArrow90degRight, + BIconArrow90degUp: BIconArrow90degUp, + BIconArrowBarDown: BIconArrowBarDown, + BIconArrowBarLeft: BIconArrowBarLeft, + BIconArrowBarRight: BIconArrowBarRight, + BIconArrowBarUp: BIconArrowBarUp, + BIconArrowClockwise: BIconArrowClockwise, + BIconArrowCounterclockwise: BIconArrowCounterclockwise, + BIconArrowDown: BIconArrowDown, + BIconArrowDownCircle: BIconArrowDownCircle, + BIconArrowDownCircleFill: BIconArrowDownCircleFill, + BIconArrowDownLeft: BIconArrowDownLeft, + BIconArrowDownLeftCircle: BIconArrowDownLeftCircle, + BIconArrowDownLeftCircleFill: BIconArrowDownLeftCircleFill, + BIconArrowDownLeftSquare: BIconArrowDownLeftSquare, + BIconArrowDownLeftSquareFill: BIconArrowDownLeftSquareFill, + BIconArrowDownRight: BIconArrowDownRight, + BIconArrowDownRightCircle: BIconArrowDownRightCircle, + BIconArrowDownRightCircleFill: BIconArrowDownRightCircleFill, + BIconArrowDownRightSquare: BIconArrowDownRightSquare, + BIconArrowDownRightSquareFill: BIconArrowDownRightSquareFill, + BIconArrowDownShort: BIconArrowDownShort, + BIconArrowDownSquare: BIconArrowDownSquare, + BIconArrowDownSquareFill: BIconArrowDownSquareFill, + BIconArrowDownUp: BIconArrowDownUp, + BIconArrowLeft: BIconArrowLeft, + BIconArrowLeftCircle: BIconArrowLeftCircle, + BIconArrowLeftCircleFill: BIconArrowLeftCircleFill, + BIconArrowLeftRight: BIconArrowLeftRight, + BIconArrowLeftShort: BIconArrowLeftShort, + BIconArrowLeftSquare: BIconArrowLeftSquare, + BIconArrowLeftSquareFill: BIconArrowLeftSquareFill, + BIconArrowRepeat: BIconArrowRepeat, + BIconArrowReturnLeft: BIconArrowReturnLeft, + BIconArrowReturnRight: BIconArrowReturnRight, + BIconArrowRight: BIconArrowRight, + BIconArrowRightCircle: BIconArrowRightCircle, + BIconArrowRightCircleFill: BIconArrowRightCircleFill, + BIconArrowRightShort: BIconArrowRightShort, + BIconArrowRightSquare: BIconArrowRightSquare, + BIconArrowRightSquareFill: BIconArrowRightSquareFill, + BIconArrowUp: BIconArrowUp, + BIconArrowUpCircle: BIconArrowUpCircle, + BIconArrowUpCircleFill: BIconArrowUpCircleFill, + BIconArrowUpLeft: BIconArrowUpLeft, + BIconArrowUpLeftCircle: BIconArrowUpLeftCircle, + BIconArrowUpLeftCircleFill: BIconArrowUpLeftCircleFill, + BIconArrowUpLeftSquare: BIconArrowUpLeftSquare, + BIconArrowUpLeftSquareFill: BIconArrowUpLeftSquareFill, + BIconArrowUpRight: BIconArrowUpRight, + BIconArrowUpRightCircle: BIconArrowUpRightCircle, + BIconArrowUpRightCircleFill: BIconArrowUpRightCircleFill, + BIconArrowUpRightSquare: BIconArrowUpRightSquare, + BIconArrowUpRightSquareFill: BIconArrowUpRightSquareFill, + BIconArrowUpShort: BIconArrowUpShort, + BIconArrowUpSquare: BIconArrowUpSquare, + BIconArrowUpSquareFill: BIconArrowUpSquareFill, + BIconArrowsAngleContract: BIconArrowsAngleContract, + BIconArrowsAngleExpand: BIconArrowsAngleExpand, + BIconArrowsCollapse: BIconArrowsCollapse, + BIconArrowsExpand: BIconArrowsExpand, + BIconArrowsFullscreen: BIconArrowsFullscreen, + BIconArrowsMove: BIconArrowsMove, + BIconAspectRatio: BIconAspectRatio, + BIconAspectRatioFill: BIconAspectRatioFill, + BIconAsterisk: BIconAsterisk, + BIconAt: BIconAt, + BIconAward: BIconAward, + BIconAwardFill: BIconAwardFill, + BIconBackspace: BIconBackspace, + BIconBackspaceFill: BIconBackspaceFill, + BIconBackspaceReverse: BIconBackspaceReverse, + BIconBackspaceReverseFill: BIconBackspaceReverseFill, + BIconBag: BIconBag, + BIconBagCheck: BIconBagCheck, + BIconBagDash: BIconBagDash, + BIconBagFill: BIconBagFill, + BIconBagPlus: BIconBagPlus, + BIconBarChart: BIconBarChart, + BIconBarChartFill: BIconBarChartFill, + BIconBasket: BIconBasket, + BIconBasket2: BIconBasket2, + BIconBasket2Fill: BIconBasket2Fill, + BIconBasket3: BIconBasket3, + BIconBasket3Fill: BIconBasket3Fill, + BIconBasketFill: BIconBasketFill, + BIconBattery: BIconBattery, + BIconBatteryCharging: BIconBatteryCharging, + BIconBatteryFull: BIconBatteryFull, + BIconBatteryHalf: BIconBatteryHalf, + BIconBell: BIconBell, + BIconBellFill: BIconBellFill, + BIconBlockquoteLeft: BIconBlockquoteLeft, + BIconBlockquoteRight: BIconBlockquoteRight, + BIconBook: BIconBook, + BIconBookHalf: BIconBookHalf, + BIconBookmark: BIconBookmark, + BIconBookmarkCheck: BIconBookmarkCheck, + BIconBookmarkDash: BIconBookmarkDash, + BIconBookmarkFill: BIconBookmarkFill, + BIconBookmarkPlus: BIconBookmarkPlus, + BIconBookmarks: BIconBookmarks, + BIconBookmarksFill: BIconBookmarksFill, + BIconBootstrap: BIconBootstrap, + BIconBootstrapFill: BIconBootstrapFill, + BIconBootstrapReboot: BIconBootstrapReboot, + BIconBoundingBox: BIconBoundingBox, + BIconBoundingBoxCircles: BIconBoundingBoxCircles, + BIconBox: BIconBox, + BIconBoxArrowDown: BIconBoxArrowDown, + BIconBoxArrowDownLeft: BIconBoxArrowDownLeft, + BIconBoxArrowDownRight: BIconBoxArrowDownRight, + BIconBoxArrowInDown: BIconBoxArrowInDown, + BIconBoxArrowInDownLeft: BIconBoxArrowInDownLeft, + BIconBoxArrowInDownRight: BIconBoxArrowInDownRight, + BIconBoxArrowInLeft: BIconBoxArrowInLeft, + BIconBoxArrowInRight: BIconBoxArrowInRight, + BIconBoxArrowInUp: BIconBoxArrowInUp, + BIconBoxArrowInUpLeft: BIconBoxArrowInUpLeft, + BIconBoxArrowInUpRight: BIconBoxArrowInUpRight, + BIconBoxArrowLeft: BIconBoxArrowLeft, + BIconBoxArrowRight: BIconBoxArrowRight, + BIconBoxArrowUp: BIconBoxArrowUp, + BIconBoxArrowUpLeft: BIconBoxArrowUpLeft, + BIconBoxArrowUpRight: BIconBoxArrowUpRight, + BIconBoxSeam: BIconBoxSeam, + BIconBraces: BIconBraces, + BIconBriefcase: BIconBriefcase, + BIconBriefcaseFill: BIconBriefcaseFill, + BIconBrightnessAltHigh: BIconBrightnessAltHigh, + BIconBrightnessAltHighFill: BIconBrightnessAltHighFill, + BIconBrightnessAltLow: BIconBrightnessAltLow, + BIconBrightnessAltLowFill: BIconBrightnessAltLowFill, + BIconBrightnessHigh: BIconBrightnessHigh, + BIconBrightnessHighFill: BIconBrightnessHighFill, + BIconBrightnessLow: BIconBrightnessLow, + BIconBrightnessLowFill: BIconBrightnessLowFill, + BIconBrush: BIconBrush, + BIconBucket: BIconBucket, + BIconBucketFill: BIconBucketFill, + BIconBuilding: BIconBuilding, + BIconBullseye: BIconBullseye, + BIconCalendar: BIconCalendar, + BIconCalendar2: BIconCalendar2, + BIconCalendar2Check: BIconCalendar2Check, + BIconCalendar2CheckFill: BIconCalendar2CheckFill, + BIconCalendar2Date: BIconCalendar2Date, + BIconCalendar2DateFill: BIconCalendar2DateFill, + BIconCalendar2Day: BIconCalendar2Day, + BIconCalendar2DayFill: BIconCalendar2DayFill, + BIconCalendar2Fill: BIconCalendar2Fill, + BIconCalendar2Minus: BIconCalendar2Minus, + BIconCalendar2MinusFill: BIconCalendar2MinusFill, + BIconCalendar2Month: BIconCalendar2Month, + BIconCalendar2MonthFill: BIconCalendar2MonthFill, + BIconCalendar2Plus: BIconCalendar2Plus, + BIconCalendar2PlusFill: BIconCalendar2PlusFill, + BIconCalendar3: BIconCalendar3, + BIconCalendar3Fill: BIconCalendar3Fill, + BIconCalendar4: BIconCalendar4, + BIconCalendarCheck: BIconCalendarCheck, + BIconCalendarCheckFill: BIconCalendarCheckFill, + BIconCalendarDate: BIconCalendarDate, + BIconCalendarDateFill: BIconCalendarDateFill, + BIconCalendarDay: BIconCalendarDay, + BIconCalendarDayFill: BIconCalendarDayFill, + BIconCalendarFill: BIconCalendarFill, + BIconCalendarMinus: BIconCalendarMinus, + BIconCalendarMinusFill: BIconCalendarMinusFill, + BIconCalendarMonth: BIconCalendarMonth, + BIconCalendarMonthFill: BIconCalendarMonthFill, + BIconCalendarPlus: BIconCalendarPlus, + BIconCalendarPlusFill: BIconCalendarPlusFill, + BIconCamera: BIconCamera, + BIconCameraVideo: BIconCameraVideo, + BIconCameraVideoFill: BIconCameraVideoFill, + BIconCameraVideoOff: BIconCameraVideoOff, + BIconCameraVideoOffFill: BIconCameraVideoOffFill, + BIconCapslock: BIconCapslock, + BIconCapslockFill: BIconCapslockFill, + BIconCardChecklist: BIconCardChecklist, + BIconCardHeading: BIconCardHeading, + BIconCardImage: BIconCardImage, + BIconCardList: BIconCardList, + BIconCardText: BIconCardText, + BIconCaretDown: BIconCaretDown, + BIconCaretDownFill: BIconCaretDownFill, + BIconCaretDownSquare: BIconCaretDownSquare, + BIconCaretDownSquareFill: BIconCaretDownSquareFill, + BIconCaretLeft: BIconCaretLeft, + BIconCaretLeftFill: BIconCaretLeftFill, + BIconCaretLeftSquare: BIconCaretLeftSquare, + BIconCaretLeftSquareFill: BIconCaretLeftSquareFill, + BIconCaretRight: BIconCaretRight, + BIconCaretRightFill: BIconCaretRightFill, + BIconCaretRightSquare: BIconCaretRightSquare, + BIconCaretRightSquareFill: BIconCaretRightSquareFill, + BIconCaretUp: BIconCaretUp, + BIconCaretUpFill: BIconCaretUpFill, + BIconCaretUpSquare: BIconCaretUpSquare, + BIconCaretUpSquareFill: BIconCaretUpSquareFill, + BIconCart: BIconCart, + BIconCart2: BIconCart2, + BIconCart3: BIconCart3, + BIconCart4: BIconCart4, + BIconCartCheck: BIconCartCheck, + BIconCartDash: BIconCartDash, + BIconCartFill: BIconCartFill, + BIconCartPlus: BIconCartPlus, + BIconChat: BIconChat, + BIconChatDots: BIconChatDots, + BIconChatDotsFill: BIconChatDotsFill, + BIconChatFill: BIconChatFill, + BIconChatQuote: BIconChatQuote, + BIconChatQuoteFill: BIconChatQuoteFill, + BIconChatSquare: BIconChatSquare, + BIconChatSquareDots: BIconChatSquareDots, + BIconChatSquareDotsFill: BIconChatSquareDotsFill, + BIconChatSquareFill: BIconChatSquareFill, + BIconChatSquareQuote: BIconChatSquareQuote, + BIconChatSquareQuoteFill: BIconChatSquareQuoteFill, + BIconCheck: BIconCheck, + BIconCheck2: BIconCheck2, + BIconCheck2All: BIconCheck2All, + BIconCheck2Circle: BIconCheck2Circle, + BIconCheck2Square: BIconCheck2Square, + BIconCheckAll: BIconCheckAll, + BIconCheckCircle: BIconCheckCircle, + BIconCheckCircleFill: BIconCheckCircleFill, + BIconCheckSquare: BIconCheckSquare, + BIconCheckSquareFill: BIconCheckSquareFill, + BIconChevronBarContract: BIconChevronBarContract, + BIconChevronBarDown: BIconChevronBarDown, + BIconChevronBarExpand: BIconChevronBarExpand, + BIconChevronBarLeft: BIconChevronBarLeft, + BIconChevronBarRight: BIconChevronBarRight, + BIconChevronBarUp: BIconChevronBarUp, + BIconChevronCompactDown: BIconChevronCompactDown, + BIconChevronCompactLeft: BIconChevronCompactLeft, + BIconChevronCompactRight: BIconChevronCompactRight, + BIconChevronCompactUp: BIconChevronCompactUp, + BIconChevronContract: BIconChevronContract, + BIconChevronDoubleDown: BIconChevronDoubleDown, + BIconChevronDoubleLeft: BIconChevronDoubleLeft, + BIconChevronDoubleRight: BIconChevronDoubleRight, + BIconChevronDoubleUp: BIconChevronDoubleUp, + BIconChevronDown: BIconChevronDown, + BIconChevronExpand: BIconChevronExpand, + BIconChevronLeft: BIconChevronLeft, + BIconChevronRight: BIconChevronRight, + BIconChevronUp: BIconChevronUp, + BIconCircle: BIconCircle, + BIconCircleFill: BIconCircleFill, + BIconCircleHalf: BIconCircleHalf, + BIconCircleSquare: BIconCircleSquare, + BIconClipboard: BIconClipboard, + BIconClipboardData: BIconClipboardData, + BIconClock: BIconClock, + BIconClockFill: BIconClockFill, + BIconClockHistory: BIconClockHistory, + BIconCloud: BIconCloud, + BIconCloudDownload: BIconCloudDownload, + BIconCloudFill: BIconCloudFill, + BIconCloudSlash: BIconCloudSlash, + BIconCloudSlashFill: BIconCloudSlashFill, + BIconCloudUpload: BIconCloudUpload, + BIconCode: BIconCode, + BIconCodeSlash: BIconCodeSlash, + BIconCollection: BIconCollection, + BIconCollectionFill: BIconCollectionFill, + BIconCollectionPlay: BIconCollectionPlay, + BIconCollectionPlayFill: BIconCollectionPlayFill, + BIconColumns: BIconColumns, + BIconColumnsGap: BIconColumnsGap, + BIconCommand: BIconCommand, + BIconCompass: BIconCompass, + BIconCone: BIconCone, + BIconConeStriped: BIconConeStriped, + BIconController: BIconController, + BIconCreditCard: BIconCreditCard, + BIconCrop: BIconCrop, + BIconCup: BIconCup, + BIconCursor: BIconCursor, + BIconCursorFill: BIconCursorFill, + BIconCursorText: BIconCursorText, + BIconDash: BIconDash, + BIconDashCircle: BIconDashCircle, + BIconDashCircleFill: BIconDashCircleFill, + BIconDashSquare: BIconDashSquare, + BIconDashSquareFill: BIconDashSquareFill, + BIconDiamond: BIconDiamond, + BIconDiamondFill: BIconDiamondFill, + BIconDiamondHalf: BIconDiamondHalf, + BIconDisplay: BIconDisplay, + BIconDisplayFill: BIconDisplayFill, + BIconDoorClosed: BIconDoorClosed, + BIconDoorClosedFill: BIconDoorClosedFill, + BIconDot: BIconDot, + BIconDownload: BIconDownload, + BIconDroplet: BIconDroplet, + BIconDropletFill: BIconDropletFill, + BIconDropletHalf: BIconDropletHalf, + BIconEgg: BIconEgg, + BIconEggFill: BIconEggFill, + BIconEggFried: BIconEggFried, + BIconEject: BIconEject, + BIconEjectFill: BIconEjectFill, + BIconEmojiAngry: BIconEmojiAngry, + BIconEmojiDizzy: BIconEmojiDizzy, + BIconEmojiFrown: BIconEmojiFrown, + BIconEmojiLaughing: BIconEmojiLaughing, + BIconEmojiNeutral: BIconEmojiNeutral, + BIconEmojiSmile: BIconEmojiSmile, + BIconEmojiSmileUpsideDown: BIconEmojiSmileUpsideDown, + BIconEmojiSunglasses: BIconEmojiSunglasses, + BIconEnvelope: BIconEnvelope, + BIconEnvelopeFill: BIconEnvelopeFill, + BIconEnvelopeOpen: BIconEnvelopeOpen, + BIconEnvelopeOpenFill: BIconEnvelopeOpenFill, + BIconExclamation: BIconExclamation, + BIconExclamationCircle: BIconExclamationCircle, + BIconExclamationCircleFill: BIconExclamationCircleFill, + BIconExclamationDiamond: BIconExclamationDiamond, + BIconExclamationDiamondFill: BIconExclamationDiamondFill, + BIconExclamationOctagon: BIconExclamationOctagon, + BIconExclamationOctagonFill: BIconExclamationOctagonFill, + BIconExclamationSquare: BIconExclamationSquare, + BIconExclamationSquareFill: BIconExclamationSquareFill, + BIconExclamationTriangle: BIconExclamationTriangle, + BIconExclamationTriangleFill: BIconExclamationTriangleFill, + BIconExclude: BIconExclude, + BIconEye: BIconEye, + BIconEyeFill: BIconEyeFill, + BIconEyeSlash: BIconEyeSlash, + BIconEyeSlashFill: BIconEyeSlashFill, + BIconFile: BIconFile, + BIconFileArrowDown: BIconFileArrowDown, + BIconFileArrowUp: BIconFileArrowUp, + BIconFileBreak: BIconFileBreak, + BIconFileCheck: BIconFileCheck, + BIconFileCode: BIconFileCode, + BIconFileDiff: BIconFileDiff, + BIconFileEarmark: BIconFileEarmark, + BIconFileEarmarkArrowDown: BIconFileEarmarkArrowDown, + BIconFileEarmarkArrowUp: BIconFileEarmarkArrowUp, + BIconFileEarmarkBreak: BIconFileEarmarkBreak, + BIconFileEarmarkCheck: BIconFileEarmarkCheck, + BIconFileEarmarkCode: BIconFileEarmarkCode, + BIconFileEarmarkDiff: BIconFileEarmarkDiff, + BIconFileEarmarkMinus: BIconFileEarmarkMinus, + BIconFileEarmarkPlus: BIconFileEarmarkPlus, + BIconFileEarmarkRuled: BIconFileEarmarkRuled, + BIconFileEarmarkSpreadsheet: BIconFileEarmarkSpreadsheet, + BIconFileEarmarkText: BIconFileEarmarkText, + BIconFileEarmarkZip: BIconFileEarmarkZip, + BIconFileMinus: BIconFileMinus, + BIconFilePlus: BIconFilePlus, + BIconFilePost: BIconFilePost, + BIconFileRichtext: BIconFileRichtext, + BIconFileRuled: BIconFileRuled, + BIconFileSpreadsheet: BIconFileSpreadsheet, + BIconFileText: BIconFileText, + BIconFileZip: BIconFileZip, + BIconFiles: BIconFiles, + BIconFilesAlt: BIconFilesAlt, + BIconFilm: BIconFilm, + BIconFilter: BIconFilter, + BIconFilterLeft: BIconFilterLeft, + BIconFilterRight: BIconFilterRight, + BIconFlag: BIconFlag, + BIconFlagFill: BIconFlagFill, + BIconFolder: BIconFolder, + BIconFolderCheck: BIconFolderCheck, + BIconFolderFill: BIconFolderFill, + BIconFolderMinus: BIconFolderMinus, + BIconFolderPlus: BIconFolderPlus, + BIconFolderSymlink: BIconFolderSymlink, + BIconFolderSymlinkFill: BIconFolderSymlinkFill, + BIconFonts: BIconFonts, + BIconForward: BIconForward, + BIconForwardFill: BIconForwardFill, + BIconFullscreen: BIconFullscreen, + BIconFullscreenExit: BIconFullscreenExit, + BIconFunnel: BIconFunnel, + BIconFunnelFill: BIconFunnelFill, + BIconGear: BIconGear, + BIconGearFill: BIconGearFill, + BIconGearWide: BIconGearWide, + BIconGearWideConnected: BIconGearWideConnected, + BIconGem: BIconGem, + BIconGeo: BIconGeo, + BIconGeoAlt: BIconGeoAlt, + BIconGift: BIconGift, + BIconGiftFill: BIconGiftFill, + BIconGraphDown: BIconGraphDown, + BIconGraphUp: BIconGraphUp, + BIconGrid: BIconGrid, + BIconGrid1x2: BIconGrid1x2, + BIconGrid1x2Fill: BIconGrid1x2Fill, + BIconGrid3x2: BIconGrid3x2, + BIconGrid3x2Gap: BIconGrid3x2Gap, + BIconGrid3x2GapFill: BIconGrid3x2GapFill, + BIconGrid3x3: BIconGrid3x3, + BIconGrid3x3Gap: BIconGrid3x3Gap, + BIconGrid3x3GapFill: BIconGrid3x3GapFill, + BIconGridFill: BIconGridFill, + BIconGripHorizontal: BIconGripHorizontal, + BIconGripVertical: BIconGripVertical, + BIconHammer: BIconHammer, + BIconHandIndex: BIconHandIndex, + BIconHandIndexThumb: BIconHandIndexThumb, + BIconHandThumbsDown: BIconHandThumbsDown, + BIconHandThumbsUp: BIconHandThumbsUp, + BIconHandbag: BIconHandbag, + BIconHandbagFill: BIconHandbagFill, + BIconHash: BIconHash, + BIconHeadphones: BIconHeadphones, + BIconHeart: BIconHeart, + BIconHeartFill: BIconHeartFill, + BIconHeartHalf: BIconHeartHalf, + BIconHexagon: BIconHexagon, + BIconHexagonFill: BIconHexagonFill, + BIconHexagonHalf: BIconHexagonHalf, + BIconHouse: BIconHouse, + BIconHouseDoor: BIconHouseDoor, + BIconHouseDoorFill: BIconHouseDoorFill, + BIconHouseFill: BIconHouseFill, + BIconHr: BIconHr, + BIconImage: BIconImage, + BIconImageAlt: BIconImageAlt, + BIconImageFill: BIconImageFill, + BIconImages: BIconImages, + BIconInbox: BIconInbox, + BIconInboxFill: BIconInboxFill, + BIconInboxes: BIconInboxes, + BIconInboxesFill: BIconInboxesFill, + BIconInfo: BIconInfo, + BIconInfoCircle: BIconInfoCircle, + BIconInfoCircleFill: BIconInfoCircleFill, + BIconInfoSquare: BIconInfoSquare, + BIconInfoSquareFill: BIconInfoSquareFill, + BIconIntersect: BIconIntersect, + BIconJustify: BIconJustify, + BIconJustifyLeft: BIconJustifyLeft, + BIconJustifyRight: BIconJustifyRight, + BIconKanban: BIconKanban, + BIconKanbanFill: BIconKanbanFill, + BIconLaptop: BIconLaptop, + BIconLayers: BIconLayers, + BIconLayersFill: BIconLayersFill, + BIconLayersHalf: BIconLayersHalf, + BIconLayoutSidebar: BIconLayoutSidebar, + BIconLayoutSidebarInset: BIconLayoutSidebarInset, + BIconLayoutSidebarInsetReverse: BIconLayoutSidebarInsetReverse, + BIconLayoutSidebarReverse: BIconLayoutSidebarReverse, + BIconLayoutSplit: BIconLayoutSplit, + BIconLayoutTextSidebar: BIconLayoutTextSidebar, + BIconLayoutTextSidebarReverse: BIconLayoutTextSidebarReverse, + BIconLayoutTextWindow: BIconLayoutTextWindow, + BIconLayoutTextWindowReverse: BIconLayoutTextWindowReverse, + BIconLayoutThreeColumns: BIconLayoutThreeColumns, + BIconLayoutWtf: BIconLayoutWtf, + BIconLifePreserver: BIconLifePreserver, + BIconLightning: BIconLightning, + BIconLightningFill: BIconLightningFill, + BIconLink: BIconLink, + BIconLink45deg: BIconLink45deg, + BIconList: BIconList, + BIconListCheck: BIconListCheck, + BIconListNested: BIconListNested, + BIconListOl: BIconListOl, + BIconListTask: BIconListTask, + BIconListUl: BIconListUl, + BIconLock: BIconLock, + BIconLockFill: BIconLockFill, + BIconMap: BIconMap, + BIconMic: BIconMic, + BIconMicFill: BIconMicFill, + BIconMicMute: BIconMicMute, + BIconMicMuteFill: BIconMicMuteFill, + BIconMinecart: BIconMinecart, + BIconMinecartLoaded: BIconMinecartLoaded, + BIconMoon: BIconMoon, + BIconMusicNote: BIconMusicNote, + BIconMusicNoteBeamed: BIconMusicNoteBeamed, + BIconMusicNoteList: BIconMusicNoteList, + BIconMusicPlayer: BIconMusicPlayer, + BIconMusicPlayerFill: BIconMusicPlayerFill, + BIconNewspaper: BIconNewspaper, + BIconOctagon: BIconOctagon, + BIconOctagonFill: BIconOctagonFill, + BIconOctagonHalf: BIconOctagonHalf, + BIconOption: BIconOption, + BIconOutlet: BIconOutlet, + BIconPaperclip: BIconPaperclip, + BIconPause: BIconPause, + BIconPauseFill: BIconPauseFill, + BIconPen: BIconPen, + BIconPencil: BIconPencil, + BIconPencilSquare: BIconPencilSquare, + BIconPentagon: BIconPentagon, + BIconPentagonFill: BIconPentagonFill, + BIconPentagonHalf: BIconPentagonHalf, + BIconPeople: BIconPeople, + BIconPeopleFill: BIconPeopleFill, + BIconPerson: BIconPerson, + BIconPersonBoundingBox: BIconPersonBoundingBox, + BIconPersonCheck: BIconPersonCheck, + BIconPersonCheckFill: BIconPersonCheckFill, + BIconPersonCircle: BIconPersonCircle, + BIconPersonDash: BIconPersonDash, + BIconPersonDashFill: BIconPersonDashFill, + BIconPersonFill: BIconPersonFill, + BIconPersonLinesFill: BIconPersonLinesFill, + BIconPersonPlus: BIconPersonPlus, + BIconPersonPlusFill: BIconPersonPlusFill, + BIconPersonSquare: BIconPersonSquare, + BIconPhone: BIconPhone, + BIconPhoneLandscape: BIconPhoneLandscape, + BIconPieChart: BIconPieChart, + BIconPieChartFill: BIconPieChartFill, + BIconPip: BIconPip, + BIconPipFill: BIconPipFill, + BIconPlay: BIconPlay, + BIconPlayFill: BIconPlayFill, + BIconPlug: BIconPlug, + BIconPlus: BIconPlus, + BIconPlusCircle: BIconPlusCircle, + BIconPlusCircleFill: BIconPlusCircleFill, + BIconPlusSquare: BIconPlusSquare, + BIconPlusSquareFill: BIconPlusSquareFill, + BIconPower: BIconPower, + BIconPuzzle: BIconPuzzle, + BIconPuzzleFill: BIconPuzzleFill, + BIconQuestion: BIconQuestion, + BIconQuestionCircle: BIconQuestionCircle, + BIconQuestionCircleFill: BIconQuestionCircleFill, + BIconQuestionDiamond: BIconQuestionDiamond, + BIconQuestionDiamondFill: BIconQuestionDiamondFill, + BIconQuestionOctagon: BIconQuestionOctagon, + BIconQuestionOctagonFill: BIconQuestionOctagonFill, + BIconQuestionSquare: BIconQuestionSquare, + BIconQuestionSquareFill: BIconQuestionSquareFill, + BIconReceipt: BIconReceipt, + BIconReceiptCutoff: BIconReceiptCutoff, + BIconReply: BIconReply, + BIconReplyAll: BIconReplyAll, + BIconReplyAllFill: BIconReplyAllFill, + BIconReplyFill: BIconReplyFill, + BIconScrewdriver: BIconScrewdriver, + BIconSearch: BIconSearch, + BIconServer: BIconServer, + BIconShield: BIconShield, + BIconShieldFill: BIconShieldFill, + BIconShieldLock: BIconShieldLock, + BIconShieldLockFill: BIconShieldLockFill, + BIconShieldShaded: BIconShieldShaded, + BIconShieldSlash: BIconShieldSlash, + BIconShieldSlashFill: BIconShieldSlashFill, + BIconShift: BIconShift, + BIconShiftFill: BIconShiftFill, + BIconShop: BIconShop, + BIconShopWindow: BIconShopWindow, + BIconShuffle: BIconShuffle, + BIconSkipBackward: BIconSkipBackward, + BIconSkipBackwardFill: BIconSkipBackwardFill, + BIconSkipEnd: BIconSkipEnd, + BIconSkipEndFill: BIconSkipEndFill, + BIconSkipForward: BIconSkipForward, + BIconSkipForwardFill: BIconSkipForwardFill, + BIconSkipStart: BIconSkipStart, + BIconSkipStartFill: BIconSkipStartFill, + BIconSlash: BIconSlash, + BIconSlashCircle: BIconSlashCircle, + BIconSlashCircleFill: BIconSlashCircleFill, + BIconSlashSquare: BIconSlashSquare, + BIconSlashSquareFill: BIconSlashSquareFill, + BIconSliders: BIconSliders, + BIconSoundwave: BIconSoundwave, + BIconSpeaker: BIconSpeaker, + BIconSquare: BIconSquare, + BIconSquareFill: BIconSquareFill, + BIconSquareHalf: BIconSquareHalf, + BIconStar: BIconStar, + BIconStarFill: BIconStarFill, + BIconStarHalf: BIconStarHalf, + BIconStop: BIconStop, + BIconStopFill: BIconStopFill, + BIconStopwatch: BIconStopwatch, + BIconStopwatchFill: BIconStopwatchFill, + BIconSubtract: BIconSubtract, + BIconSun: BIconSun, + BIconTable: BIconTable, + BIconTablet: BIconTablet, + BIconTabletLandscape: BIconTabletLandscape, + BIconTag: BIconTag, + BIconTagFill: BIconTagFill, + BIconTerminal: BIconTerminal, + BIconTerminalFill: BIconTerminalFill, + BIconTextCenter: BIconTextCenter, + BIconTextIndentLeft: BIconTextIndentLeft, + BIconTextIndentRight: BIconTextIndentRight, + BIconTextLeft: BIconTextLeft, + BIconTextRight: BIconTextRight, + BIconTextarea: BIconTextarea, + BIconTextareaT: BIconTextareaT, + BIconThreeDots: BIconThreeDots, + BIconThreeDotsVertical: BIconThreeDotsVertical, + BIconToggleOff: BIconToggleOff, + BIconToggleOn: BIconToggleOn, + BIconToggles: BIconToggles, + BIconTools: BIconTools, + BIconTrash: BIconTrash, + BIconTrash2: BIconTrash2, + BIconTrash2Fill: BIconTrash2Fill, + BIconTrashFill: BIconTrashFill, + BIconTriangle: BIconTriangle, + BIconTriangleFill: BIconTriangleFill, + BIconTriangleHalf: BIconTriangleHalf, + BIconTrophy: BIconTrophy, + BIconTruck: BIconTruck, + BIconTruckFlatbed: BIconTruckFlatbed, + BIconTv: BIconTv, + BIconTvFill: BIconTvFill, + BIconType: BIconType, + BIconTypeBold: BIconTypeBold, + BIconTypeH1: BIconTypeH1, + BIconTypeH2: BIconTypeH2, + BIconTypeH3: BIconTypeH3, + BIconTypeItalic: BIconTypeItalic, + BIconTypeStrikethrough: BIconTypeStrikethrough, + BIconTypeUnderline: BIconTypeUnderline, + BIconUnion: BIconUnion, + BIconUnlock: BIconUnlock, + BIconUnlockFill: BIconUnlockFill, + BIconUpc: BIconUpc, + BIconUpcScan: BIconUpcScan, + BIconUpload: BIconUpload, + BIconViewList: BIconViewList, + BIconViewStacked: BIconViewStacked, + BIconVolumeDown: BIconVolumeDown, + BIconVolumeDownFill: BIconVolumeDownFill, + BIconVolumeMute: BIconVolumeMute, + BIconVolumeMuteFill: BIconVolumeMuteFill, + BIconVolumeOff: BIconVolumeOff, + BIconVolumeOffFill: BIconVolumeOffFill, + BIconVolumeUp: BIconVolumeUp, + BIconVolumeUpFill: BIconVolumeUpFill, + BIconVr: BIconVr, + BIconWallet: BIconWallet, + BIconWallet2: BIconWallet2, + BIconWatch: BIconWatch, + BIconWifi: BIconWifi, + BIconWindow: BIconWindow, + BIconWrench: BIconWrench, + BIconX: BIconX, + BIconXCircle: BIconXCircle, + BIconXCircleFill: BIconXCircleFill, + BIconXDiamond: BIconXDiamond, + BIconXDiamondFill: BIconXDiamondFill, + BIconXOctagon: BIconXOctagon, + BIconXOctagonFill: BIconXOctagonFill, + BIconXSquare: BIconXSquare, + BIconXSquareFill: BIconXSquareFill + } + }); // Export the BootstrapVueIcons plugin installer + // Mainly for the stand-alone bootstrap-vue-icons.xxx.js builds + + var BootstrapVueIcons = /*#__PURE__*/pluginFactoryNoConfig({ + plugins: { + IconsPlugin: IconsPlugin + } + }, { + NAME: 'BootstrapVueIcons' + }); // --- END AUTO-GENERATED FILE --- + + // Main entry point for the browser icons-only build + + vueUse(BootstrapVueIcons); + + return BootstrapVueIcons; + +}))); +//# sourceMappingURL=bootstrap-vue-icons.js.map diff --git a/docs/js/bootstrap-vue-icons.min.js b/docs/js/bootstrap-vue-icons.min.js new file mode 100644 index 0000000..cc5e0aa --- /dev/null +++ b/docs/js/bootstrap-vue-icons.min.js @@ -0,0 +1,11 @@ +/*! + * BootstrapVueIcons 2.15.0 + * + * @link https://bootstrap-vue.org + * @source https://github.com/bootstrap-vue/bootstrap-vue + * @copyright (c) 2016-2020 BootstrapVue + * @license MIT + * https://github.com/bootstrap-vue/bootstrap-vue/blob/master/LICENSE + */ +var a,l;a=this,l=function(a){"use strict";function l(a,l,e){return l in a?Object.defineProperty(a,l,{value:e,enumerable:!0,configurable:!0,writable:!0}):a[l]=e,a}function e(a,l){var e=Object.keys(a);if(Object.getOwnPropertySymbols){var h=Object.getOwnPropertySymbols(a);l&&(h=h.filter((function(l){return Object.getOwnPropertyDescriptor(a,l).enumerable}))),e.push.apply(e,h)}return e}function h(a){for(var h=1;h0,p=(/msie|trident/.test(i),function(){if(c)try{var a={get passive(){!0}};window.addEventListener("test",a,a),window.removeEventListener("test",a,a)}catch(a){!1}}(),function(){return function(a){var l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,e="undefined"!=typeof process&&process&&process.env||{};return a?e[a]||l:e}("BOOTSTRAP_VUE_NO_WARN")}),u=function(a){return function(a){return void 0===a}(a)||function(a){return null===a}(a)},f=function(a){return a},V=(d=!1,o=["Multiple instances of Vue detected!","You may need to set up an alias for Vue in your bundler config.","See: https://bootstrap-vue.org/docs#using-module-bundlers"].join("\n"),function(l){d||a===l||M||function(a){var l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;p()||console.warn("[BootstrapVue warn]: ".concat(l?"".concat(l," - "):"").concat(a))}(o),d=!0}),H=function(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},l=a.components,e=a.directives,h=a.plugins,d=function a(d){a.installed||(a.installed=!0,V(d),L(d,l),s(d,e),A(d,h))};return d.installed=!1,d},m=function(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return h(h({},l),{},{install:H(a)})},A=function(a){var l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(var e in l)e&&l[e]&&a.use(l[e])},B=function(a,l,e){a&&l&&e&&a.component(l,e)},L=function(a){var l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(var e in l)B(a,e,l[e])},I=function(a,l,e){a&&l&&e&&a.directive(l.replace(/^VB/,"B"),e)},s=function(a){var l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(var e in l)I(a,e,l[e])},C=function(){return(C=Object.assign||function(a){for(var l,e=1,h=arguments.length;e1&&void 0!==arguments[1]?arguments[1]:2;return u(a)?"":v(a)||n(a)&&a.toString===Object.prototype.toString?JSON.stringify(a,null,l):String(a)}(a).trim()},q=Math.max,b=function(a){var l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:NaN,e=parseFloat(a);return isNaN(e)?l:e},U={variant:{type:String,default:null},fontScale:{type:[Number,String],default:1},scale:{type:[Number,String],default:1},rotate:{type:[Number,String],default:0},flipH:{type:Boolean,default:!1},flipV:{type:Boolean,default:!1},shiftH:{type:[Number,String],default:0},shiftV:{type:[Number,String],default:0},animation:{type:String,default:null}},O={viewBox:"0 0 16 16",width:"1em",height:"1em",focusable:"false",role:"img",alt:"icon"},G={width:null,height:null,focusable:null,role:null,alt:null},j=a.extend({name:"BVIconBase",functional:!0,props:h({content:{type:String},stacked:{type:Boolean,default:!1}},U),render:function(a,e){var h,d=e.data,o=e.props,v=e.children,n=q(b(o.fontScale,1),0)||1,z=q(b(o.scale,1),0)||1,r=b(o.rotate,0),t=b(o.shiftH,0),c=b(o.shiftV,0),i=o.flipH,M=o.flipV,p=o.animation,V=i||M||1!==z,H=V||r,m=t||c,A=[H?"translate(8 8)":null,V?"scale(".concat((i?-1:1)*z," ").concat((M?-1:1)*z,")"):null,r?"rotate(".concat(r,")"):null,H?"translate(-8 -8)":null].filter(f),B=o.stacked,L=!u(o.content),I=a("g",{attrs:{transform:A.join(" ")||null},domProps:L?{innerHTML:o.content||""}:{}},v);return m&&(I=a("g",{attrs:{transform:"translate(".concat(16*t/16," ").concat(-16*c/16,")")}},[I])),B&&(I=a("g",{},[I])),a("svg",y({staticClass:"b-icon bi",class:(h={},l(h,"text-".concat(o.variant),!!o.variant),l(h,"b-icon-animation-".concat(p),!!p),h),attrs:O,style:B?{}:{fontSize:1===n?null:"".concat(100*n,"%")}},d,B?{attrs:G}:{},{attrs:{xmlns:B?null:"http://www.w3.org/2000/svg",fill:"currentColor"}}),[I])}}),N=function(l,e){var d="BIcon".concat(T(l)),o="bi-".concat(R(l)),v=E(e||"");return a.extend({name:d,functional:!0,props:h(h({},U),{},{stacked:{type:Boolean,default:!1}}),render:function(a,l){var e=l.data,d=l.props;return a(j,y(e,{staticClass:o,props:h(h({},d),{},{content:v})}))}})},Q=N("Blank",""),W=N("Alarm",''),X=N("AlarmFill",''),J=N("Alt",''),Z=N("App",''),K=N("AppIndicator",''),_=N("Archive",''),$=N("ArchiveFill",''),Y=N("Arrow90degDown",''),aa=N("Arrow90degLeft",''),la=N("Arrow90degRight",''),ea=N("Arrow90degUp",''),ha=N("ArrowBarDown",''),da=N("ArrowBarLeft",''),oa=N("ArrowBarRight",''),va=N("ArrowBarUp",''),na=N("ArrowClockwise",''),za=N("ArrowCounterclockwise",''),ra=N("ArrowDown",''),ta=N("ArrowDownCircle",''),ca=N("ArrowDownCircleFill",''),ia=N("ArrowDownLeft",''),Ma=N("ArrowDownLeftCircle",''),pa=N("ArrowDownLeftCircleFill",''),ua=N("ArrowDownLeftSquare",''),fa=N("ArrowDownLeftSquareFill",''),Va=N("ArrowDownRight",''),Ha=N("ArrowDownRightCircle",''),ma=N("ArrowDownRightCircleFill",''),Aa=N("ArrowDownRightSquare",''),Ba=N("ArrowDownRightSquareFill",''),La=N("ArrowDownShort",''),Ia=N("ArrowDownSquare",''),sa=N("ArrowDownSquareFill",''),Ca=N("ArrowDownUp",''),Fa=N("ArrowLeft",''),wa=N("ArrowLeftCircle",''),ga=N("ArrowLeftCircleFill",''),Sa=N("ArrowLeftRight",''),ka=N("ArrowLeftShort",''),ya=N("ArrowLeftSquare",''),xa=N("ArrowLeftSquareFill",''),Da=N("ArrowRepeat",''),Pa=N("ArrowReturnLeft",''),Ra=N("ArrowReturnRight",''),Ta=N("ArrowRight",''),Ea=N("ArrowRightCircle",''),qa=N("ArrowRightCircleFill",''),ba=N("ArrowRightShort",''),Ua=N("ArrowRightSquare",''),Oa=N("ArrowRightSquareFill",''),Ga=N("ArrowUp",''),ja=N("ArrowUpCircle",''),Na=N("ArrowUpCircleFill",''),Qa=N("ArrowUpLeft",''),Wa=N("ArrowUpLeftCircle",''),Xa=N("ArrowUpLeftCircleFill",''),Ja=N("ArrowUpLeftSquare",''),Za=N("ArrowUpLeftSquareFill",''),Ka=N("ArrowUpRight",''),_a=N("ArrowUpRightCircle",''),$a=N("ArrowUpRightCircleFill",''),Ya=N("ArrowUpRightSquare",''),al=N("ArrowUpRightSquareFill",''),ll=N("ArrowUpShort",''),el=N("ArrowUpSquare",''),hl=N("ArrowUpSquareFill",''),dl=N("ArrowsAngleContract",''),ol=N("ArrowsAngleExpand",''),vl=N("ArrowsCollapse",''),nl=N("ArrowsExpand",''),zl=N("ArrowsFullscreen",''),rl=N("ArrowsMove",''),tl=N("AspectRatio",''),cl=N("AspectRatioFill",''),il=N("Asterisk",''),Ml=N("At",''),pl=N("Award",''),ul=N("AwardFill",''),fl=N("Backspace",''),Vl=N("BackspaceFill",''),Hl=N("BackspaceReverse",''),ml=N("BackspaceReverseFill",''),Al=N("Bag",''),Bl=N("BagCheck",''),Ll=N("BagDash",''),Il=N("BagFill",''),sl=N("BagPlus",''),Cl=N("BarChart",''),Fl=N("BarChartFill",''),wl=N("Basket",''),gl=N("Basket2",''),Sl=N("Basket2Fill",''),kl=N("Basket3",''),yl=N("Basket3Fill",''),xl=N("BasketFill",''),Dl=N("Battery",''),Pl=N("BatteryCharging",''),Rl=N("BatteryFull",''),Tl=N("BatteryHalf",''),El=N("Bell",''),ql=N("BellFill",''),bl=N("BlockquoteLeft",''),Ul=N("BlockquoteRight",''),Ol=N("Book",''),Gl=N("BookHalf",''),jl=N("Bookmark",''),Nl=N("BookmarkCheck",''),Ql=N("BookmarkDash",''),Wl=N("BookmarkFill",''),Xl=N("BookmarkPlus",''),Jl=N("Bookmarks",''),Zl=N("BookmarksFill",''),Kl=N("Bootstrap",''),_l=N("BootstrapFill",''),$l=N("BootstrapReboot",''),Yl=N("BoundingBox",''),ae=N("BoundingBoxCircles",''),le=N("Box",''),ee=N("BoxArrowDown",''),he=N("BoxArrowDownLeft",''),de=N("BoxArrowDownRight",''),oe=N("BoxArrowInDown",''),ve=N("BoxArrowInDownLeft",''),ne=N("BoxArrowInDownRight",''),ze=N("BoxArrowInLeft",''),re=N("BoxArrowInRight",''),te=N("BoxArrowInUp",''),ce=N("BoxArrowInUpLeft",''),ie=N("BoxArrowInUpRight",''),Me=N("BoxArrowLeft",''),pe=N("BoxArrowRight",''),ue=N("BoxArrowUp",''),fe=N("BoxArrowUpLeft",''),Ve=N("BoxArrowUpRight",''),He=N("BoxSeam",''),me=N("Braces",''),Ae=N("Briefcase",''),Be=N("BriefcaseFill",''),Le=N("BrightnessAltHigh",''),Ie=N("BrightnessAltHighFill",''),se=N("BrightnessAltLow",''),Ce=N("BrightnessAltLowFill",''),Fe=N("BrightnessHigh",''),we=N("BrightnessHighFill",''),ge=N("BrightnessLow",''),Se=N("BrightnessLowFill",''),ke=N("Brush",''),ye=N("Bucket",''),xe=N("BucketFill",''),De=N("Building",''),Pe=N("Bullseye",''),Re=N("Calendar",''),Te=N("Calendar2",''),Ee=N("Calendar2Check",''),qe=N("Calendar2CheckFill",''),be=N("Calendar2Date",''),Ue=N("Calendar2DateFill",''),Oe=N("Calendar2Day",''),Ge=N("Calendar2DayFill",''),je=N("Calendar2Fill",''),Ne=N("Calendar2Minus",''),Qe=N("Calendar2MinusFill",''),We=N("Calendar2Month",''),Xe=N("Calendar2MonthFill",''),Je=N("Calendar2Plus",''),Ze=N("Calendar2PlusFill",''),Ke=N("Calendar3",''),_e=N("Calendar3Fill",''),$e=N("Calendar4",''),Ye=N("CalendarCheck",''),ah=N("CalendarCheckFill",''),lh=N("CalendarDate",''),eh=N("CalendarDateFill",''),hh=N("CalendarDay",''),dh=N("CalendarDayFill",''),oh=N("CalendarFill",''),vh=N("CalendarMinus",''),nh=N("CalendarMinusFill",''),zh=N("CalendarMonth",''),rh=N("CalendarMonthFill",''),th=N("CalendarPlus",''),ch=N("CalendarPlusFill",''),ih=N("Camera",''),Mh=N("CameraVideo",''),ph=N("CameraVideoFill",''),uh=N("CameraVideoOff",''),fh=N("CameraVideoOffFill",''),Vh=N("Capslock",''),Hh=N("CapslockFill",''),mh=N("CardChecklist",''),Ah=N("CardHeading",''),Bh=N("CardImage",''),Lh=N("CardList",''),Ih=N("CardText",''),sh=N("CaretDown",''),Ch=N("CaretDownFill",''),Fh=N("CaretDownSquare",''),wh=N("CaretDownSquareFill",''),gh=N("CaretLeft",''),Sh=N("CaretLeftFill",''),kh=N("CaretLeftSquare",''),yh=N("CaretLeftSquareFill",''),xh=N("CaretRight",''),Dh=N("CaretRightFill",''),Ph=N("CaretRightSquare",''),Rh=N("CaretRightSquareFill",''),Th=N("CaretUp",''),Eh=N("CaretUpFill",''),qh=N("CaretUpSquare",''),bh=N("CaretUpSquareFill",''),Uh=N("Cart",''),Oh=N("Cart2",''),Gh=N("Cart3",''),jh=N("Cart4",''),Nh=N("CartCheck",''),Qh=N("CartDash",''),Wh=N("CartFill",''),Xh=N("CartPlus",''),Jh=N("Chat",''),Zh=N("ChatDots",''),Kh=N("ChatDotsFill",''),_h=N("ChatFill",''),$h=N("ChatQuote",''),Yh=N("ChatQuoteFill",''),ad=N("ChatSquare",''),ld=N("ChatSquareDots",''),ed=N("ChatSquareDotsFill",''),hd=N("ChatSquareFill",''),dd=N("ChatSquareQuote",''),od=N("ChatSquareQuoteFill",''),vd=N("Check",''),nd=N("Check2",''),zd=N("Check2All",''),rd=N("Check2Circle",''),td=N("Check2Square",''),cd=N("CheckAll",''),id=N("CheckCircle",''),Md=N("CheckCircleFill",''),pd=N("CheckSquare",''),ud=N("CheckSquareFill",''),fd=N("ChevronBarContract",''),Vd=N("ChevronBarDown",''),Hd=N("ChevronBarExpand",''),md=N("ChevronBarLeft",''),Ad=N("ChevronBarRight",''),Bd=N("ChevronBarUp",''),Ld=N("ChevronCompactDown",''),Id=N("ChevronCompactLeft",''),sd=N("ChevronCompactRight",''),Cd=N("ChevronCompactUp",''),Fd=N("ChevronContract",''),wd=N("ChevronDoubleDown",''),gd=N("ChevronDoubleLeft",''),Sd=N("ChevronDoubleRight",''),kd=N("ChevronDoubleUp",''),yd=N("ChevronDown",''),xd=N("ChevronExpand",''),Dd=N("ChevronLeft",''),Pd=N("ChevronRight",''),Rd=N("ChevronUp",''),Td=N("Circle",''),Ed=N("CircleFill",''),qd=N("CircleHalf",''),bd=N("CircleSquare",''),Ud=N("Clipboard",''),Od=N("ClipboardData",''),Gd=N("Clock",''),jd=N("ClockFill",''),Nd=N("ClockHistory",''),Qd=N("Cloud",''),Wd=N("CloudDownload",''),Xd=N("CloudFill",''),Jd=N("CloudSlash",''),Zd=N("CloudSlashFill",''),Kd=N("CloudUpload",''),_d=N("Code",''),$d=N("CodeSlash",''),Yd=N("Collection",''),ao=N("CollectionFill",''),lo=N("CollectionPlay",''),eo=N("CollectionPlayFill",''),ho=N("Columns",''),oo=N("ColumnsGap",''),vo=N("Command",''),no=N("Compass",''),zo=N("Cone",''),ro=N("ConeStriped",''),to=N("Controller",''),co=N("CreditCard",''),io=N("Crop",''),Mo=N("Cup",''),po=N("Cursor",''),uo=N("CursorFill",''),fo=N("CursorText",''),Vo=N("Dash",''),Ho=N("DashCircle",''),mo=N("DashCircleFill",''),Ao=N("DashSquare",''),Bo=N("DashSquareFill",''),Lo=N("Diamond",''),Io=N("DiamondFill",''),so=N("DiamondHalf",''),Co=N("Display",''),Fo=N("DisplayFill",''),wo=N("DoorClosed",''),go=N("DoorClosedFill",''),So=N("Dot",''),ko=N("Download",''),yo=N("Droplet",''),xo=N("DropletFill",''),Do=N("DropletHalf",''),Po=N("Egg",''),Ro=N("EggFill",''),To=N("EggFried",''),Eo=N("Eject",''),qo=N("EjectFill",''),bo=N("EmojiAngry",''),Uo=N("EmojiDizzy",''),Oo=N("EmojiFrown",''),Go=N("EmojiLaughing",''),jo=N("EmojiNeutral",''),No=N("EmojiSmile",''),Qo=N("EmojiSmileUpsideDown",''),Wo=N("EmojiSunglasses",''),Xo=N("Envelope",''),Jo=N("EnvelopeFill",''),Zo=N("EnvelopeOpen",''),Ko=N("EnvelopeOpenFill",''),_o=N("Exclamation",''),$o=N("ExclamationCircle",''),Yo=N("ExclamationCircleFill",''),av=N("ExclamationDiamond",''),lv=N("ExclamationDiamondFill",''),ev=N("ExclamationOctagon",''),hv=N("ExclamationOctagonFill",''),dv=N("ExclamationSquare",''),ov=N("ExclamationSquareFill",''),vv=N("ExclamationTriangle",''),nv=N("ExclamationTriangleFill",''),zv=N("Exclude",''),rv=N("Eye",''),tv=N("EyeFill",''),cv=N("EyeSlash",''),iv=N("EyeSlashFill",''),Mv=N("File",''),pv=N("FileArrowDown",''),uv=N("FileArrowUp",''),fv=N("FileBreak",''),Vv=N("FileCheck",''),Hv=N("FileCode",''),mv=N("FileDiff",''),Av=N("FileEarmark",''),Bv=N("FileEarmarkArrowDown",''),Lv=N("FileEarmarkArrowUp",''),Iv=N("FileEarmarkBreak",''),sv=N("FileEarmarkCheck",''),Cv=N("FileEarmarkCode",''),Fv=N("FileEarmarkDiff",''),wv=N("FileEarmarkMinus",''),gv=N("FileEarmarkPlus",''),Sv=N("FileEarmarkRuled",''),kv=N("FileEarmarkSpreadsheet",''),yv=N("FileEarmarkText",''),xv=N("FileEarmarkZip",''),Dv=N("FileMinus",''),Pv=N("FilePlus",''),Rv=N("FilePost",''),Tv=N("FileRichtext",''),Ev=N("FileRuled",''),qv=N("FileSpreadsheet",''),bv=N("FileText",''),Uv=N("FileZip",''),Ov=N("Files",''),Gv=N("FilesAlt",''),jv=N("Film",''),Nv=N("Filter",''),Qv=N("FilterLeft",''),Wv=N("FilterRight",''),Xv=N("Flag",''),Jv=N("FlagFill",''),Zv=N("Folder",''),Kv=N("FolderCheck",''),_v=N("FolderFill",''),$v=N("FolderMinus",''),Yv=N("FolderPlus",''),an=N("FolderSymlink",''),ln=N("FolderSymlinkFill",''),en=N("Fonts",''),hn=N("Forward",''),dn=N("ForwardFill",''),on=N("Fullscreen",''),vn=N("FullscreenExit",''),nn=N("Funnel",''),zn=N("FunnelFill",''),rn=N("Gear",''),tn=N("GearFill",''),cn=N("GearWide",''),Mn=N("GearWideConnected",''),pn=N("Gem",''),un=N("Geo",''),fn=N("GeoAlt",''),Vn=N("Gift",''),Hn=N("GiftFill",''),mn=N("GraphDown",''),An=N("GraphUp",''),Bn=N("Grid",''),Ln=N("Grid1x2",''),In=N("Grid1x2Fill",''),sn=N("Grid3x2",''),Cn=N("Grid3x2Gap",''),Fn=N("Grid3x2GapFill",''),wn=N("Grid3x3",''),gn=N("Grid3x3Gap",''),Sn=N("Grid3x3GapFill",''),kn=N("GridFill",''),yn=N("GripHorizontal",''),xn=N("GripVertical",''),Dn=N("Hammer",''),Pn=N("HandIndex",''),Rn=N("HandIndexThumb",''),Tn=N("HandThumbsDown",''),En=N("HandThumbsUp",''),qn=N("Handbag",''),bn=N("HandbagFill",''),Un=N("Hash",''),On=N("Headphones",''),Gn=N("Heart",''),jn=N("HeartFill",''),Nn=N("HeartHalf",''),Qn=N("Hexagon",''),Wn=N("HexagonFill",''),Xn=N("HexagonHalf",''),Jn=N("House",''),Zn=N("HouseDoor",''),Kn=N("HouseDoorFill",''),_n=N("HouseFill",''),$n=N("Hr",''),Yn=N("Image",''),az=N("ImageAlt",''),lz=N("ImageFill",''),ez=N("Images",''),hz=N("Inbox",''),dz=N("InboxFill",''),oz=N("Inboxes",''),vz=N("InboxesFill",''),nz=N("Info",''),zz=N("InfoCircle",''),rz=N("InfoCircleFill",''),tz=N("InfoSquare",''),cz=N("InfoSquareFill",''),iz=N("Intersect",''),Mz=N("Justify",''),pz=N("JustifyLeft",''),uz=N("JustifyRight",''),fz=N("Kanban",''),Vz=N("KanbanFill",''),Hz=N("Laptop",''),mz=N("Layers",''),Az=N("LayersFill",''),Bz=N("LayersHalf",''),Lz=N("LayoutSidebar",''),Iz=N("LayoutSidebarInset",''),sz=N("LayoutSidebarInsetReverse",''),Cz=N("LayoutSidebarReverse",''),Fz=N("LayoutSplit",''),wz=N("LayoutTextSidebar",''),gz=N("LayoutTextSidebarReverse",''),Sz=N("LayoutTextWindow",''),kz=N("LayoutTextWindowReverse",''),yz=N("LayoutThreeColumns",''),xz=N("LayoutWtf",''),Dz=N("LifePreserver",''),Pz=N("Lightning",''),Rz=N("LightningFill",''),Tz=N("Link",''),Ez=N("Link45deg",''),qz=N("List",''),bz=N("ListCheck",''),Uz=N("ListNested",''),Oz=N("ListOl",''),Gz=N("ListTask",''),jz=N("ListUl",''),Nz=N("Lock",''),Qz=N("LockFill",''),Wz=N("Map",''),Xz=N("Mic",''),Jz=N("MicFill",''),Zz=N("MicMute",''),Kz=N("MicMuteFill",''),_z=N("Minecart",''),$z=N("MinecartLoaded",''),Yz=N("Moon",''),ar=N("MusicNote",''),lr=N("MusicNoteBeamed",''),er=N("MusicNoteList",''),hr=N("MusicPlayer",''),dr=N("MusicPlayerFill",''),or=N("Newspaper",''),vr=N("Octagon",''),nr=N("OctagonFill",''),zr=N("OctagonHalf",''),rr=N("Option",''),tr=N("Outlet",''),cr=N("Paperclip",''),ir=N("Pause",''),Mr=N("PauseFill",''),pr=N("Pen",''),ur=N("Pencil",''),fr=N("PencilSquare",''),Vr=N("Pentagon",''),Hr=N("PentagonFill",''),mr=N("PentagonHalf",''),Ar=N("People",''),Br=N("PeopleFill",''),Lr=N("Person",''),Ir=N("PersonBoundingBox",''),sr=N("PersonCheck",''),Cr=N("PersonCheckFill",''),Fr=N("PersonCircle",''),wr=N("PersonDash",''),gr=N("PersonDashFill",''),Sr=N("PersonFill",''),kr=N("PersonLinesFill",''),yr=N("PersonPlus",''),xr=N("PersonPlusFill",''),Dr=N("PersonSquare",''),Pr=N("Phone",''),Rr=N("PhoneLandscape",''),Tr=N("PieChart",''),Er=N("PieChartFill",''),qr=N("Pip",''),br=N("PipFill",''),Ur=N("Play",''),Or=N("PlayFill",''),Gr=N("Plug",''),jr=N("Plus",''),Nr=N("PlusCircle",''),Qr=N("PlusCircleFill",''),Wr=N("PlusSquare",''),Xr=N("PlusSquareFill",''),Jr=N("Power",''),Zr=N("Puzzle",''),Kr=N("PuzzleFill",''),_r=N("Question",''),$r=N("QuestionCircle",''),Yr=N("QuestionCircleFill",''),at=N("QuestionDiamond",''),lt=N("QuestionDiamondFill",''),et=N("QuestionOctagon",''),ht=N("QuestionOctagonFill",''),dt=N("QuestionSquare",''),ot=N("QuestionSquareFill",''),vt=N("Receipt",''),nt=N("ReceiptCutoff",''),zt=N("Reply",''),rt=N("ReplyAll",''),tt=N("ReplyAllFill",''),ct=N("ReplyFill",''),it=N("Screwdriver",''),Mt=N("Search",''),pt=N("Server",''),ut=N("Shield",''),ft=N("ShieldFill",''),Vt=N("ShieldLock",''),Ht=N("ShieldLockFill",''),mt=N("ShieldShaded",''),At=N("ShieldSlash",''),Bt=N("ShieldSlashFill",''),Lt=N("Shift",''),It=N("ShiftFill",''),st=N("Shop",''),Ct=N("ShopWindow",''),Ft=N("Shuffle",''),wt=N("SkipBackward",''),gt=N("SkipBackwardFill",''),St=N("SkipEnd",''),kt=N("SkipEndFill",''),yt=N("SkipForward",''),xt=N("SkipForwardFill",''),Dt=N("SkipStart",''),Pt=N("SkipStartFill",''),Rt=N("Slash",''),Tt=N("SlashCircle",''),Et=N("SlashCircleFill",''),qt=N("SlashSquare",''),bt=N("SlashSquareFill",''),Ut=N("Sliders",''),Ot=N("Soundwave",''),Gt=N("Speaker",''),jt=N("Square",''),Nt=N("SquareFill",''),Qt=N("SquareHalf",''),Wt=N("Star",''),Xt=N("StarFill",''),Jt=N("StarHalf",''),Zt=N("Stop",''),Kt=N("StopFill",''),_t=N("Stopwatch",''),$t=N("StopwatchFill",''),Yt=N("Subtract",''),ac=N("Sun",''),lc=N("Table",''),ec=N("Tablet",''),hc=N("TabletLandscape",''),dc=N("Tag",''),oc=N("TagFill",''),vc=N("Terminal",''),nc=N("TerminalFill",''),zc=N("TextCenter",''),rc=N("TextIndentLeft",''),tc=N("TextIndentRight",''),cc=N("TextLeft",''),ic=N("TextRight",''),Mc=N("Textarea",''),pc=N("TextareaT",''),uc=N("ThreeDots",''),fc=N("ThreeDotsVertical",''),Vc=N("ToggleOff",''),Hc=N("ToggleOn",''),mc=N("Toggles",''),Ac=N("Tools",''),Bc=N("Trash",''),Lc=N("Trash2",''),Ic=N("Trash2Fill",''),sc=N("TrashFill",''),Cc=N("Triangle",''),Fc=N("TriangleFill",''),wc=N("TriangleHalf",''),gc=N("Trophy",''),Sc=N("Truck",''),kc=N("TruckFlatbed",''),yc=N("Tv",''),xc=N("TvFill",''),Dc=N("Type",''),Pc=N("TypeBold",''),Rc=N("TypeH1",''),Tc=N("TypeH2",''),Ec=N("TypeH3",''),qc=N("TypeItalic",''),bc=N("TypeStrikethrough",''),Uc=N("TypeUnderline",''),Oc=N("Union",''),Gc=N("Unlock",''),jc=N("UnlockFill",''),Nc=N("Upc",''),Qc=N("UpcScan",''),Wc=N("Upload",''),Xc=N("ViewList",''),Jc=N("ViewStacked",''),Zc=N("VolumeDown",''),Kc=N("VolumeDownFill",''),_c=N("VolumeMute",''),$c=N("VolumeMuteFill",''),Yc=N("VolumeOff",''),ai=N("VolumeOffFill",''),li=N("VolumeUp",''),ei=N("VolumeUpFill",''),hi=N("Vr",''),di=N("Wallet",''),oi=N("Wallet2",''),vi=N("Watch",''),ni=N("Wifi",''),zi=N("Window",''),ri=N("Wrench",''),ti=N("X",''),ci=N("XCircle",''),ii=N("XCircleFill",''),Mi=N("XDiamond",''),pi=N("XDiamondFill",''),ui=N("XOctagon",''),fi=N("XOctagonFill",''),Vi=N("XSquare",''),Hi=N("XSquareFill",''),mi=/^BIcon/,Ai=m({plugins:{IconsPlugin:m({components:{BIcon:a.extend({name:"BIcon",functional:!0,props:h(h({icon:{type:String,default:null}},U),{},{stacked:{type:Boolean,default:!1}}),render:function(a,l){var e=l.data,d=l.props,o=l.parent,v=T(E(d.icon||"")).replace(mi,""),n="BIcon".concat(v),z=((o||{}).$options||{}).components;return a(v&&z?z[n]||Q:v?n:Q,y(e,{props:h(h({},d),{},{icon:null})}))}}),BIconstack:a.extend({name:"BIconstack",functional:!0,props:h({},U),render:function(a,l){var e=l.data,d=l.props,o=l.children;return a(j,y(e,{staticClass:"b-iconstack",props:h(h({},d),{},{stacked:!1})}),o)}}),BIconBlank:Q,BIconAlarm:W,BIconAlarmFill:X,BIconAlt:J,BIconApp:Z,BIconAppIndicator:K,BIconArchive:_,BIconArchiveFill:$,BIconArrow90degDown:Y,BIconArrow90degLeft:aa,BIconArrow90degRight:la,BIconArrow90degUp:ea,BIconArrowBarDown:ha,BIconArrowBarLeft:da,BIconArrowBarRight:oa,BIconArrowBarUp:va,BIconArrowClockwise:na,BIconArrowCounterclockwise:za,BIconArrowDown:ra,BIconArrowDownCircle:ta,BIconArrowDownCircleFill:ca,BIconArrowDownLeft:ia,BIconArrowDownLeftCircle:Ma,BIconArrowDownLeftCircleFill:pa,BIconArrowDownLeftSquare:ua,BIconArrowDownLeftSquareFill:fa,BIconArrowDownRight:Va,BIconArrowDownRightCircle:Ha,BIconArrowDownRightCircleFill:ma,BIconArrowDownRightSquare:Aa,BIconArrowDownRightSquareFill:Ba,BIconArrowDownShort:La,BIconArrowDownSquare:Ia,BIconArrowDownSquareFill:sa,BIconArrowDownUp:Ca,BIconArrowLeft:Fa,BIconArrowLeftCircle:wa,BIconArrowLeftCircleFill:ga,BIconArrowLeftRight:Sa,BIconArrowLeftShort:ka,BIconArrowLeftSquare:ya,BIconArrowLeftSquareFill:xa,BIconArrowRepeat:Da,BIconArrowReturnLeft:Pa,BIconArrowReturnRight:Ra,BIconArrowRight:Ta,BIconArrowRightCircle:Ea,BIconArrowRightCircleFill:qa,BIconArrowRightShort:ba,BIconArrowRightSquare:Ua,BIconArrowRightSquareFill:Oa,BIconArrowUp:Ga,BIconArrowUpCircle:ja,BIconArrowUpCircleFill:Na,BIconArrowUpLeft:Qa,BIconArrowUpLeftCircle:Wa,BIconArrowUpLeftCircleFill:Xa,BIconArrowUpLeftSquare:Ja,BIconArrowUpLeftSquareFill:Za,BIconArrowUpRight:Ka,BIconArrowUpRightCircle:_a,BIconArrowUpRightCircleFill:$a,BIconArrowUpRightSquare:Ya,BIconArrowUpRightSquareFill:al,BIconArrowUpShort:ll,BIconArrowUpSquare:el,BIconArrowUpSquareFill:hl,BIconArrowsAngleContract:dl,BIconArrowsAngleExpand:ol,BIconArrowsCollapse:vl,BIconArrowsExpand:nl,BIconArrowsFullscreen:zl,BIconArrowsMove:rl,BIconAspectRatio:tl,BIconAspectRatioFill:cl,BIconAsterisk:il,BIconAt:Ml,BIconAward:pl,BIconAwardFill:ul,BIconBackspace:fl,BIconBackspaceFill:Vl,BIconBackspaceReverse:Hl,BIconBackspaceReverseFill:ml,BIconBag:Al,BIconBagCheck:Bl,BIconBagDash:Ll,BIconBagFill:Il,BIconBagPlus:sl,BIconBarChart:Cl,BIconBarChartFill:Fl,BIconBasket:wl,BIconBasket2:gl,BIconBasket2Fill:Sl,BIconBasket3:kl,BIconBasket3Fill:yl,BIconBasketFill:xl,BIconBattery:Dl,BIconBatteryCharging:Pl,BIconBatteryFull:Rl,BIconBatteryHalf:Tl,BIconBell:El,BIconBellFill:ql,BIconBlockquoteLeft:bl,BIconBlockquoteRight:Ul,BIconBook:Ol,BIconBookHalf:Gl,BIconBookmark:jl,BIconBookmarkCheck:Nl,BIconBookmarkDash:Ql,BIconBookmarkFill:Wl,BIconBookmarkPlus:Xl,BIconBookmarks:Jl,BIconBookmarksFill:Zl,BIconBootstrap:Kl,BIconBootstrapFill:_l,BIconBootstrapReboot:$l,BIconBoundingBox:Yl,BIconBoundingBoxCircles:ae,BIconBox:le,BIconBoxArrowDown:ee,BIconBoxArrowDownLeft:he,BIconBoxArrowDownRight:de,BIconBoxArrowInDown:oe,BIconBoxArrowInDownLeft:ve,BIconBoxArrowInDownRight:ne,BIconBoxArrowInLeft:ze,BIconBoxArrowInRight:re,BIconBoxArrowInUp:te,BIconBoxArrowInUpLeft:ce,BIconBoxArrowInUpRight:ie,BIconBoxArrowLeft:Me,BIconBoxArrowRight:pe,BIconBoxArrowUp:ue,BIconBoxArrowUpLeft:fe,BIconBoxArrowUpRight:Ve,BIconBoxSeam:He,BIconBraces:me,BIconBriefcase:Ae,BIconBriefcaseFill:Be,BIconBrightnessAltHigh:Le,BIconBrightnessAltHighFill:Ie,BIconBrightnessAltLow:se,BIconBrightnessAltLowFill:Ce,BIconBrightnessHigh:Fe,BIconBrightnessHighFill:we,BIconBrightnessLow:ge,BIconBrightnessLowFill:Se,BIconBrush:ke,BIconBucket:ye,BIconBucketFill:xe,BIconBuilding:De,BIconBullseye:Pe,BIconCalendar:Re,BIconCalendar2:Te,BIconCalendar2Check:Ee,BIconCalendar2CheckFill:qe,BIconCalendar2Date:be,BIconCalendar2DateFill:Ue,BIconCalendar2Day:Oe,BIconCalendar2DayFill:Ge,BIconCalendar2Fill:je,BIconCalendar2Minus:Ne,BIconCalendar2MinusFill:Qe,BIconCalendar2Month:We,BIconCalendar2MonthFill:Xe,BIconCalendar2Plus:Je,BIconCalendar2PlusFill:Ze,BIconCalendar3:Ke,BIconCalendar3Fill:_e,BIconCalendar4:$e,BIconCalendarCheck:Ye,BIconCalendarCheckFill:ah,BIconCalendarDate:lh,BIconCalendarDateFill:eh,BIconCalendarDay:hh,BIconCalendarDayFill:dh,BIconCalendarFill:oh,BIconCalendarMinus:vh,BIconCalendarMinusFill:nh,BIconCalendarMonth:zh,BIconCalendarMonthFill:rh,BIconCalendarPlus:th,BIconCalendarPlusFill:ch,BIconCamera:ih,BIconCameraVideo:Mh,BIconCameraVideoFill:ph,BIconCameraVideoOff:uh,BIconCameraVideoOffFill:fh,BIconCapslock:Vh,BIconCapslockFill:Hh,BIconCardChecklist:mh,BIconCardHeading:Ah,BIconCardImage:Bh,BIconCardList:Lh,BIconCardText:Ih,BIconCaretDown:sh,BIconCaretDownFill:Ch,BIconCaretDownSquare:Fh,BIconCaretDownSquareFill:wh,BIconCaretLeft:gh,BIconCaretLeftFill:Sh,BIconCaretLeftSquare:kh,BIconCaretLeftSquareFill:yh,BIconCaretRight:xh,BIconCaretRightFill:Dh,BIconCaretRightSquare:Ph,BIconCaretRightSquareFill:Rh,BIconCaretUp:Th,BIconCaretUpFill:Eh,BIconCaretUpSquare:qh,BIconCaretUpSquareFill:bh,BIconCart:Uh,BIconCart2:Oh,BIconCart3:Gh,BIconCart4:jh,BIconCartCheck:Nh,BIconCartDash:Qh,BIconCartFill:Wh,BIconCartPlus:Xh,BIconChat:Jh,BIconChatDots:Zh,BIconChatDotsFill:Kh,BIconChatFill:_h,BIconChatQuote:$h,BIconChatQuoteFill:Yh,BIconChatSquare:ad,BIconChatSquareDots:ld,BIconChatSquareDotsFill:ed,BIconChatSquareFill:hd,BIconChatSquareQuote:dd,BIconChatSquareQuoteFill:od,BIconCheck:vd,BIconCheck2:nd,BIconCheck2All:zd,BIconCheck2Circle:rd,BIconCheck2Square:td,BIconCheckAll:cd,BIconCheckCircle:id,BIconCheckCircleFill:Md,BIconCheckSquare:pd,BIconCheckSquareFill:ud,BIconChevronBarContract:fd,BIconChevronBarDown:Vd,BIconChevronBarExpand:Hd,BIconChevronBarLeft:md,BIconChevronBarRight:Ad,BIconChevronBarUp:Bd,BIconChevronCompactDown:Ld,BIconChevronCompactLeft:Id,BIconChevronCompactRight:sd,BIconChevronCompactUp:Cd,BIconChevronContract:Fd,BIconChevronDoubleDown:wd,BIconChevronDoubleLeft:gd,BIconChevronDoubleRight:Sd,BIconChevronDoubleUp:kd,BIconChevronDown:yd,BIconChevronExpand:xd,BIconChevronLeft:Dd,BIconChevronRight:Pd,BIconChevronUp:Rd,BIconCircle:Td,BIconCircleFill:Ed,BIconCircleHalf:qd,BIconCircleSquare:bd,BIconClipboard:Ud,BIconClipboardData:Od,BIconClock:Gd,BIconClockFill:jd,BIconClockHistory:Nd,BIconCloud:Qd,BIconCloudDownload:Wd,BIconCloudFill:Xd,BIconCloudSlash:Jd,BIconCloudSlashFill:Zd,BIconCloudUpload:Kd,BIconCode:_d,BIconCodeSlash:$d,BIconCollection:Yd,BIconCollectionFill:ao,BIconCollectionPlay:lo,BIconCollectionPlayFill:eo,BIconColumns:ho,BIconColumnsGap:oo,BIconCommand:vo,BIconCompass:no,BIconCone:zo,BIconConeStriped:ro,BIconController:to,BIconCreditCard:co,BIconCrop:io,BIconCup:Mo,BIconCursor:po,BIconCursorFill:uo,BIconCursorText:fo,BIconDash:Vo,BIconDashCircle:Ho,BIconDashCircleFill:mo,BIconDashSquare:Ao,BIconDashSquareFill:Bo,BIconDiamond:Lo,BIconDiamondFill:Io,BIconDiamondHalf:so,BIconDisplay:Co,BIconDisplayFill:Fo,BIconDoorClosed:wo,BIconDoorClosedFill:go,BIconDot:So,BIconDownload:ko,BIconDroplet:yo,BIconDropletFill:xo,BIconDropletHalf:Do,BIconEgg:Po,BIconEggFill:Ro,BIconEggFried:To,BIconEject:Eo,BIconEjectFill:qo,BIconEmojiAngry:bo,BIconEmojiDizzy:Uo,BIconEmojiFrown:Oo,BIconEmojiLaughing:Go,BIconEmojiNeutral:jo,BIconEmojiSmile:No,BIconEmojiSmileUpsideDown:Qo,BIconEmojiSunglasses:Wo,BIconEnvelope:Xo,BIconEnvelopeFill:Jo,BIconEnvelopeOpen:Zo,BIconEnvelopeOpenFill:Ko,BIconExclamation:_o,BIconExclamationCircle:$o,BIconExclamationCircleFill:Yo,BIconExclamationDiamond:av,BIconExclamationDiamondFill:lv,BIconExclamationOctagon:ev,BIconExclamationOctagonFill:hv,BIconExclamationSquare:dv,BIconExclamationSquareFill:ov,BIconExclamationTriangle:vv,BIconExclamationTriangleFill:nv,BIconExclude:zv,BIconEye:rv,BIconEyeFill:tv,BIconEyeSlash:cv,BIconEyeSlashFill:iv,BIconFile:Mv,BIconFileArrowDown:pv,BIconFileArrowUp:uv,BIconFileBreak:fv,BIconFileCheck:Vv,BIconFileCode:Hv,BIconFileDiff:mv,BIconFileEarmark:Av,BIconFileEarmarkArrowDown:Bv,BIconFileEarmarkArrowUp:Lv,BIconFileEarmarkBreak:Iv,BIconFileEarmarkCheck:sv,BIconFileEarmarkCode:Cv,BIconFileEarmarkDiff:Fv,BIconFileEarmarkMinus:wv,BIconFileEarmarkPlus:gv,BIconFileEarmarkRuled:Sv,BIconFileEarmarkSpreadsheet:kv,BIconFileEarmarkText:yv,BIconFileEarmarkZip:xv,BIconFileMinus:Dv,BIconFilePlus:Pv,BIconFilePost:Rv,BIconFileRichtext:Tv,BIconFileRuled:Ev,BIconFileSpreadsheet:qv,BIconFileText:bv,BIconFileZip:Uv,BIconFiles:Ov,BIconFilesAlt:Gv,BIconFilm:jv,BIconFilter:Nv,BIconFilterLeft:Qv,BIconFilterRight:Wv,BIconFlag:Xv,BIconFlagFill:Jv,BIconFolder:Zv,BIconFolderCheck:Kv,BIconFolderFill:_v,BIconFolderMinus:$v,BIconFolderPlus:Yv,BIconFolderSymlink:an,BIconFolderSymlinkFill:ln,BIconFonts:en,BIconForward:hn,BIconForwardFill:dn,BIconFullscreen:on,BIconFullscreenExit:vn,BIconFunnel:nn,BIconFunnelFill:zn,BIconGear:rn,BIconGearFill:tn,BIconGearWide:cn,BIconGearWideConnected:Mn,BIconGem:pn,BIconGeo:un,BIconGeoAlt:fn,BIconGift:Vn,BIconGiftFill:Hn,BIconGraphDown:mn,BIconGraphUp:An,BIconGrid:Bn,BIconGrid1x2:Ln,BIconGrid1x2Fill:In,BIconGrid3x2:sn,BIconGrid3x2Gap:Cn,BIconGrid3x2GapFill:Fn,BIconGrid3x3:wn,BIconGrid3x3Gap:gn,BIconGrid3x3GapFill:Sn,BIconGridFill:kn,BIconGripHorizontal:yn,BIconGripVertical:xn,BIconHammer:Dn,BIconHandIndex:Pn,BIconHandIndexThumb:Rn,BIconHandThumbsDown:Tn,BIconHandThumbsUp:En,BIconHandbag:qn,BIconHandbagFill:bn,BIconHash:Un,BIconHeadphones:On,BIconHeart:Gn,BIconHeartFill:jn,BIconHeartHalf:Nn,BIconHexagon:Qn,BIconHexagonFill:Wn,BIconHexagonHalf:Xn,BIconHouse:Jn,BIconHouseDoor:Zn,BIconHouseDoorFill:Kn,BIconHouseFill:_n,BIconHr:$n,BIconImage:Yn,BIconImageAlt:az,BIconImageFill:lz,BIconImages:ez,BIconInbox:hz,BIconInboxFill:dz,BIconInboxes:oz,BIconInboxesFill:vz,BIconInfo:nz,BIconInfoCircle:zz,BIconInfoCircleFill:rz,BIconInfoSquare:tz,BIconInfoSquareFill:cz,BIconIntersect:iz,BIconJustify:Mz,BIconJustifyLeft:pz,BIconJustifyRight:uz,BIconKanban:fz,BIconKanbanFill:Vz,BIconLaptop:Hz,BIconLayers:mz,BIconLayersFill:Az,BIconLayersHalf:Bz,BIconLayoutSidebar:Lz,BIconLayoutSidebarInset:Iz,BIconLayoutSidebarInsetReverse:sz,BIconLayoutSidebarReverse:Cz,BIconLayoutSplit:Fz,BIconLayoutTextSidebar:wz,BIconLayoutTextSidebarReverse:gz,BIconLayoutTextWindow:Sz,BIconLayoutTextWindowReverse:kz,BIconLayoutThreeColumns:yz,BIconLayoutWtf:xz,BIconLifePreserver:Dz,BIconLightning:Pz,BIconLightningFill:Rz,BIconLink:Tz,BIconLink45deg:Ez,BIconList:qz,BIconListCheck:bz,BIconListNested:Uz,BIconListOl:Oz,BIconListTask:Gz,BIconListUl:jz,BIconLock:Nz,BIconLockFill:Qz,BIconMap:Wz,BIconMic:Xz,BIconMicFill:Jz,BIconMicMute:Zz,BIconMicMuteFill:Kz,BIconMinecart:_z,BIconMinecartLoaded:$z,BIconMoon:Yz,BIconMusicNote:ar,BIconMusicNoteBeamed:lr,BIconMusicNoteList:er,BIconMusicPlayer:hr,BIconMusicPlayerFill:dr,BIconNewspaper:or,BIconOctagon:vr,BIconOctagonFill:nr,BIconOctagonHalf:zr,BIconOption:rr,BIconOutlet:tr,BIconPaperclip:cr,BIconPause:ir,BIconPauseFill:Mr,BIconPen:pr,BIconPencil:ur,BIconPencilSquare:fr,BIconPentagon:Vr,BIconPentagonFill:Hr,BIconPentagonHalf:mr,BIconPeople:Ar,BIconPeopleFill:Br,BIconPerson:Lr,BIconPersonBoundingBox:Ir,BIconPersonCheck:sr,BIconPersonCheckFill:Cr,BIconPersonCircle:Fr,BIconPersonDash:wr,BIconPersonDashFill:gr,BIconPersonFill:Sr,BIconPersonLinesFill:kr,BIconPersonPlus:yr,BIconPersonPlusFill:xr,BIconPersonSquare:Dr,BIconPhone:Pr,BIconPhoneLandscape:Rr,BIconPieChart:Tr,BIconPieChartFill:Er,BIconPip:qr,BIconPipFill:br,BIconPlay:Ur,BIconPlayFill:Or,BIconPlug:Gr,BIconPlus:jr,BIconPlusCircle:Nr,BIconPlusCircleFill:Qr,BIconPlusSquare:Wr,BIconPlusSquareFill:Xr,BIconPower:Jr,BIconPuzzle:Zr,BIconPuzzleFill:Kr,BIconQuestion:_r,BIconQuestionCircle:$r,BIconQuestionCircleFill:Yr,BIconQuestionDiamond:at,BIconQuestionDiamondFill:lt,BIconQuestionOctagon:et,BIconQuestionOctagonFill:ht,BIconQuestionSquare:dt,BIconQuestionSquareFill:ot,BIconReceipt:vt,BIconReceiptCutoff:nt,BIconReply:zt,BIconReplyAll:rt,BIconReplyAllFill:tt,BIconReplyFill:ct,BIconScrewdriver:it,BIconSearch:Mt,BIconServer:pt,BIconShield:ut,BIconShieldFill:ft,BIconShieldLock:Vt,BIconShieldLockFill:Ht,BIconShieldShaded:mt,BIconShieldSlash:At,BIconShieldSlashFill:Bt,BIconShift:Lt,BIconShiftFill:It,BIconShop:st,BIconShopWindow:Ct,BIconShuffle:Ft,BIconSkipBackward:wt,BIconSkipBackwardFill:gt,BIconSkipEnd:St,BIconSkipEndFill:kt,BIconSkipForward:yt,BIconSkipForwardFill:xt,BIconSkipStart:Dt,BIconSkipStartFill:Pt,BIconSlash:Rt,BIconSlashCircle:Tt,BIconSlashCircleFill:Et,BIconSlashSquare:qt,BIconSlashSquareFill:bt,BIconSliders:Ut,BIconSoundwave:Ot,BIconSpeaker:Gt,BIconSquare:jt,BIconSquareFill:Nt,BIconSquareHalf:Qt,BIconStar:Wt,BIconStarFill:Xt,BIconStarHalf:Jt,BIconStop:Zt,BIconStopFill:Kt,BIconStopwatch:_t,BIconStopwatchFill:$t,BIconSubtract:Yt,BIconSun:ac,BIconTable:lc,BIconTablet:ec,BIconTabletLandscape:hc,BIconTag:dc,BIconTagFill:oc,BIconTerminal:vc,BIconTerminalFill:nc,BIconTextCenter:zc,BIconTextIndentLeft:rc,BIconTextIndentRight:tc,BIconTextLeft:cc,BIconTextRight:ic,BIconTextarea:Mc,BIconTextareaT:pc,BIconThreeDots:uc,BIconThreeDotsVertical:fc,BIconToggleOff:Vc,BIconToggleOn:Hc,BIconToggles:mc,BIconTools:Ac,BIconTrash:Bc,BIconTrash2:Lc,BIconTrash2Fill:Ic,BIconTrashFill:sc,BIconTriangle:Cc,BIconTriangleFill:Fc,BIconTriangleHalf:wc,BIconTrophy:gc,BIconTruck:Sc,BIconTruckFlatbed:kc,BIconTv:yc,BIconTvFill:xc,BIconType:Dc,BIconTypeBold:Pc,BIconTypeH1:Rc,BIconTypeH2:Tc,BIconTypeH3:Ec,BIconTypeItalic:qc,BIconTypeStrikethrough:bc,BIconTypeUnderline:Uc,BIconUnion:Oc,BIconUnlock:Gc,BIconUnlockFill:jc,BIconUpc:Nc,BIconUpcScan:Qc,BIconUpload:Wc,BIconViewList:Xc,BIconViewStacked:Jc,BIconVolumeDown:Zc,BIconVolumeDownFill:Kc,BIconVolumeMute:_c,BIconVolumeMuteFill:$c,BIconVolumeOff:Yc,BIconVolumeOffFill:ai,BIconVolumeUp:li,BIconVolumeUpFill:ei,BIconVr:hi,BIconWallet:di,BIconWallet2:oi,BIconWatch:vi,BIconWifi:ni,BIconWindow:zi,BIconWrench:ri,BIconX:ti,BIconXCircle:ci,BIconXCircleFill:ii,BIconXDiamond:Mi,BIconXDiamondFill:pi,BIconXOctagon:ui,BIconXOctagonFill:fi,BIconXSquare:Vi,BIconXSquareFill:Hi}})}},{NAME:"BootstrapVueIcons"});return x=Ai,z&&window.Vue&&window.Vue.use(x),z&&x.NAME&&(window[x.NAME]=x),Ai},"object"==typeof exports&&"undefined"!=typeof module?module.exports=l(require("vue")):"function"==typeof define&&define.amd?define(["vue"],l):(a=a||self).bootstrapVueIcons=l(a.Vue); +//# sourceMappingURL=bootstrap-vue-icons.min.js.map \ No newline at end of file diff --git a/docs/js/bootstrap-vue.js b/docs/js/bootstrap-vue.js new file mode 100644 index 0000000..ec90691 --- /dev/null +++ b/docs/js/bootstrap-vue.js @@ -0,0 +1,33093 @@ +/*! + * BootstrapVue 2.15.0 + * + * @link https://bootstrap-vue.org + * @source https://github.com/bootstrap-vue/bootstrap-vue + * @copyright (c) 2016-2020 BootstrapVue + * @license MIT + * https://github.com/bootstrap-vue/bootstrap-vue/blob/master/LICENSE + */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('vue')) : + typeof define === 'function' && define.amd ? define(['vue'], factory) : + (global = global || self, global.bootstrapVue = factory(global.Vue)); +}(this, (function (Vue) { 'use strict'; + + Vue = Vue && Object.prototype.hasOwnProperty.call(Vue, 'default') ? Vue['default'] : Vue; + + function _typeof(obj) { + "@babel/helpers - typeof"; + + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function (obj) { + return typeof obj; + }; + } else { + _typeof = function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } + + return _typeof(obj); + } + + 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; + } + + function _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; + } + + function ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + if (enumerableOnly) symbols = symbols.filter(function (sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + }); + keys.push.apply(keys, symbols); + } + + return keys; + } + + function _objectSpread2(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] != null ? arguments[i] : {}; + + if (i % 2) { + ownKeys(Object(source), true).forEach(function (key) { + _defineProperty(target, key, source[key]); + }); + } else if (Object.getOwnPropertyDescriptors) { + Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); + } else { + ownKeys(Object(source)).forEach(function (key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); + } + } + + return target; + } + + function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function"); + } + + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + writable: true, + configurable: true + } + }); + if (superClass) _setPrototypeOf(subClass, superClass); + } + + function _getPrototypeOf(o) { + _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { + return o.__proto__ || Object.getPrototypeOf(o); + }; + return _getPrototypeOf(o); + } + + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + + return _setPrototypeOf(o, p); + } + + function _isNativeReflectConstruct() { + if (typeof Reflect === "undefined" || !Reflect.construct) return false; + if (Reflect.construct.sham) return false; + if (typeof Proxy === "function") return true; + + try { + Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); + return true; + } catch (e) { + return false; + } + } + + function _construct(Parent, args, Class) { + if (_isNativeReflectConstruct()) { + _construct = Reflect.construct; + } else { + _construct = function _construct(Parent, args, Class) { + var a = [null]; + a.push.apply(a, args); + var Constructor = Function.bind.apply(Parent, a); + var instance = new Constructor(); + if (Class) _setPrototypeOf(instance, Class.prototype); + return instance; + }; + } + + return _construct.apply(null, arguments); + } + + function _isNativeFunction(fn) { + return Function.toString.call(fn).indexOf("[native code]") !== -1; + } + + function _wrapNativeSuper(Class) { + var _cache = typeof Map === "function" ? new Map() : undefined; + + _wrapNativeSuper = function _wrapNativeSuper(Class) { + if (Class === null || !_isNativeFunction(Class)) return Class; + + if (typeof Class !== "function") { + throw new TypeError("Super expression must either be null or a function"); + } + + if (typeof _cache !== "undefined") { + if (_cache.has(Class)) return _cache.get(Class); + + _cache.set(Class, Wrapper); + } + + function Wrapper() { + return _construct(Class, arguments, _getPrototypeOf(this).constructor); + } + + Wrapper.prototype = Object.create(Class.prototype, { + constructor: { + value: Wrapper, + enumerable: false, + writable: true, + configurable: true + } + }); + return _setPrototypeOf(Wrapper, Class); + }; + + return _wrapNativeSuper(Class); + } + + function _assertThisInitialized(self) { + if (self === void 0) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return self; + } + + function _possibleConstructorReturn(self, call) { + if (call && (typeof call === "object" || typeof call === "function")) { + return call; + } + + return _assertThisInitialized(self); + } + + function _createSuper(Derived) { + var hasNativeReflectConstruct = _isNativeReflectConstruct(); + + return function () { + var Super = _getPrototypeOf(Derived), + result; + + if (hasNativeReflectConstruct) { + var NewTarget = _getPrototypeOf(this).constructor; + + result = Reflect.construct(Super, arguments, NewTarget); + } else { + result = Super.apply(this, arguments); + } + + return _possibleConstructorReturn(this, result); + }; + } + + function _superPropBase(object, property) { + while (!Object.prototype.hasOwnProperty.call(object, property)) { + object = _getPrototypeOf(object); + if (object === null) break; + } + + return object; + } + + function _get(target, property, receiver) { + if (typeof Reflect !== "undefined" && Reflect.get) { + _get = Reflect.get; + } else { + _get = function _get(target, property, receiver) { + var base = _superPropBase(target, property); + + if (!base) return; + var desc = Object.getOwnPropertyDescriptor(base, property); + + if (desc.get) { + return desc.get.call(receiver); + } + + return desc.value; + }; + } + + return _get(target, property, receiver || target); + } + + function _slicedToArray(arr, i) { + return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); + } + + function _toConsumableArray(arr) { + return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); + } + + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) return _arrayLikeToArray(arr); + } + + function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; + } + + function _iterableToArray(iter) { + if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); + } + + function _iterableToArrayLimit(arr, i) { + if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; + + try { + for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"] != null) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; + } + + function _unsupportedIterableToArray(o, minLen) { + if (!o) return; + if (typeof o === "string") return _arrayLikeToArray(o, minLen); + var n = Object.prototype.toString.call(o).slice(8, -1); + if (n === "Object" && o.constructor) n = o.constructor.name; + if (n === "Map" || n === "Set") return Array.from(o); + if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); + } + + function _arrayLikeToArray(arr, len) { + if (len == null || len > arr.length) len = arr.length; + + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + + return arr2; + } + + function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + // --- Static --- + var from = function from() { + return Array.from.apply(Array, arguments); + }; + var isArray = function isArray(val) { + return Array.isArray(val); + }; // --- Instance --- + + var arrayIncludes = function arrayIncludes(array, value) { + return array.indexOf(value) !== -1; + }; + var concat = function concat() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return Array.prototype.concat.apply([], args); + }; + + var assign = function assign() { + return Object.assign.apply(Object, arguments); + }; + var create = function create(proto, optionalProps) { + return Object.create(proto, optionalProps); + }; + var defineProperties = function defineProperties(obj, props) { + return Object.defineProperties(obj, props); + }; + var defineProperty = function defineProperty(obj, prop, descriptor) { + return Object.defineProperty(obj, prop, descriptor); + }; + var freeze = function freeze(obj) { + return Object.freeze(obj); + }; + var getOwnPropertyNames = function getOwnPropertyNames(obj) { + return Object.getOwnPropertyNames(obj); + }; + var keys = function keys(obj) { + return Object.keys(obj); + }; // --- "Instance" --- + + var hasOwnProperty = function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); + }; + var toString = function toString(obj) { + return Object.prototype.toString.call(obj); + }; // --- Utilities --- + + /** + * Quick object check - this is primarily used to tell + * Objects from primitive values when we know the value + * is a JSON-compliant type. + * Note object could be a complex type like array, date, etc. + */ + + var isObject = function isObject(obj) { + return obj !== null && _typeof(obj) === 'object'; + }; + /** + * Strict object type check. Only returns true + * for plain JavaScript objects. + */ + + var isPlainObject = function isPlainObject(obj) { + return Object.prototype.toString.call(obj) === '[object Object]'; + }; + /** + * Shallow copy an object. If the passed in object + * is null or undefined, returns an empty object + */ + + var clone = function clone(obj) { + return _objectSpread2({}, obj); + }; + /** + * Return a shallow copy of object with the specified properties only + * @link https://gist.github.com/bisubus/2da8af7e801ffd813fab7ac221aa7afc + */ + + var pick = function pick(obj, props) { + return keys(obj).filter(function (key) { + return props.indexOf(key) !== -1; + }).reduce(function (result, key) { + return _objectSpread2(_objectSpread2({}, result), {}, _defineProperty({}, key, obj[key])); + }, {}); + }; + /** + * Return a shallow copy of object with the specified properties omitted + * @link https://gist.github.com/bisubus/2da8af7e801ffd813fab7ac221aa7afc + */ + + var omit = function omit(obj, props) { + return keys(obj).filter(function (key) { + return props.indexOf(key) === -1; + }).reduce(function (result, key) { + return _objectSpread2(_objectSpread2({}, result), {}, _defineProperty({}, key, obj[key])); + }, {}); + }; + /** + * Convenience method to create a read-only descriptor + */ + + var readonlyDescriptor = function readonlyDescriptor() { + return { + enumerable: true, + configurable: false, + writable: false + }; + }; + /** + * Deep-freezes and object, making it immutable / read-only. + * Returns the same object passed-in, but frozen. + * Freezes inner object/array/values first. + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze + * Note: this method will not work for property values using Symbol() as a key + */ + + var deepFreeze = function deepFreeze(obj) { + // Retrieve the property names defined on object/array + // Note: `keys` will ignore properties that are keyed by a `Symbol()` + var props = keys(obj); // Iterate over each prop and recursively freeze it + + props.forEach(function (prop) { + var value = obj[prop]; // If value is a plain object or array, we deepFreeze it + + obj[prop] = value && (isPlainObject(value) || isArray(value)) ? deepFreeze(value) : value; + }); + return freeze(obj); + }; + + /** + * Utilities to get information about the current environment + */ + // --- Constants --- + var hasWindowSupport = typeof window !== 'undefined'; + var hasDocumentSupport = typeof document !== 'undefined'; + var hasNavigatorSupport = typeof navigator !== 'undefined'; + var hasPromiseSupport = typeof Promise !== 'undefined'; + /* istanbul ignore next: JSDOM always returns false */ + + var hasMutationObserverSupport = typeof MutationObserver !== 'undefined' || typeof WebKitMutationObserver !== 'undefined' || typeof MozMutationObserver !== 'undefined'; + var isBrowser = hasWindowSupport && hasDocumentSupport && hasNavigatorSupport; // Browser type sniffing + + var userAgent = isBrowser ? window.navigator.userAgent.toLowerCase() : ''; + var isJSDOM = userAgent.indexOf('jsdom') > 0; + var isIE = /msie|trident/.test(userAgent); // Determine if the browser supports the option passive for events + + var hasPassiveEventSupport = function () { + var passiveEventSupported = false; + + if (isBrowser) { + try { + var options = { + get passive() { + // This function will be called when the browser + // attempts to access the passive property. + + /* istanbul ignore next: will never be called in JSDOM */ + passiveEventSupported = true; + } + + }; + window.addEventListener('test', options, options); + window.removeEventListener('test', options, options); + } catch (err) { + /* istanbul ignore next: will never be called in JSDOM */ + passiveEventSupported = false; + } + } + + return passiveEventSupported; + }(); + var hasTouchSupport = isBrowser && ('ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0); + var hasPointerEventSupport = isBrowser && Boolean(window.PointerEvent || window.MSPointerEvent); + /* istanbul ignore next: JSDOM only checks for 'IntersectionObserver' */ + + var hasIntersectionObserverSupport = isBrowser && 'IntersectionObserver' in window && 'IntersectionObserverEntry' in window && // Edge 15 and UC Browser lack support for `isIntersecting` + // but we an use intersectionRatio > 0 instead + // 'isIntersecting' in window.IntersectionObserverEntry.prototype && + 'intersectionRatio' in window.IntersectionObserverEntry.prototype; // --- Getters --- + + var getEnv = function getEnv(key) { + var fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + var env = typeof process !== 'undefined' && process ? process.env || {} : {}; + + if (!key) { + /* istanbul ignore next */ + return env; + } + + return env[key] || fallback; + }; + var getNoWarn = function getNoWarn() { + return getEnv('BOOTSTRAP_VUE_NO_WARN'); + }; + + var w = hasWindowSupport ? window : {}; + var Element$1 = hasWindowSupport ? w.Element : /*#__PURE__*/function (_Object) { + _inherits(Element, _Object); + + var _super = _createSuper(Element); + + function Element() { + _classCallCheck(this, Element); + + return _super.apply(this, arguments); + } + + return Element; + }( /*#__PURE__*/_wrapNativeSuper(Object)); + var HTMLElement = hasWindowSupport ? w.HTMLElement : /*#__PURE__*/function (_Element) { + _inherits(HTMLElement, _Element); + + var _super2 = _createSuper(HTMLElement); + + function HTMLElement() { + _classCallCheck(this, HTMLElement); + + return _super2.apply(this, arguments); + } + + return HTMLElement; + }(Element$1); + var SVGElement = hasWindowSupport ? w.SVGElement : /*#__PURE__*/function (_Element2) { + _inherits(SVGElement, _Element2); + + var _super3 = _createSuper(SVGElement); + + function SVGElement() { + _classCallCheck(this, SVGElement); + + return _super3.apply(this, arguments); + } + + return SVGElement; + }(Element$1); + var File = hasWindowSupport ? w.File : /*#__PURE__*/function (_Object2) { + _inherits(File, _Object2); + + var _super4 = _createSuper(File); + + function File() { + _classCallCheck(this, File); + + return _super4.apply(this, arguments); + } + + return File; + }( /*#__PURE__*/_wrapNativeSuper(Object)); + + var toType = function toType(val) { + return _typeof(val); + }; + var toRawType = function toRawType(val) { + return Object.prototype.toString.call(val).slice(8, -1); + }; + var isUndefined = function isUndefined(val) { + return val === undefined; + }; + var isNull = function isNull(val) { + return val === null; + }; + var isUndefinedOrNull = function isUndefinedOrNull(val) { + return isUndefined(val) || isNull(val); + }; + var isFunction = function isFunction(val) { + return toType(val) === 'function'; + }; + var isBoolean = function isBoolean(val) { + return toType(val) === 'boolean'; + }; + var isString = function isString(val) { + return toType(val) === 'string'; + }; + var isNumber = function isNumber(val) { + return toType(val) === 'number'; + }; + var isDate = function isDate(val) { + return val instanceof Date; + }; + var isEvent = function isEvent(val) { + return val instanceof Event; + }; + var isFile = function isFile(val) { + return val instanceof File; + }; + var isRegExp = function isRegExp(val) { + return toRawType(val) === 'RegExp'; + }; + var isPromise = function isPromise(val) { + return !isUndefinedOrNull(val) && isFunction(val.then) && isFunction(val.catch); + }; // Extra convenience named re-exports + + var cloneDeep = function cloneDeep(obj) { + var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : obj; + + if (isArray(obj)) { + return obj.reduce(function (result, val) { + return [].concat(_toConsumableArray(result), [cloneDeep(val, val)]); + }, []); + } + + if (isPlainObject(obj)) { + return keys(obj).reduce(function (result, key) { + return _objectSpread2(_objectSpread2({}, result), {}, _defineProperty({}, key, cloneDeep(obj[key], obj[key]))); + }, {}); + } + + return defaultValue; + }; + + var identity = function identity(x) { + return x; + }; + + var RX_ARRAY_NOTATION = /\[(\d+)]/g; + /** + * Get property defined by dot/array notation in string, returns undefined if not found + * + * @link https://gist.github.com/jeneg/9767afdcca45601ea44930ea03e0febf#gistcomment-1935901 + * + * @param {Object} obj + * @param {string|Array} path + * @return {*} + */ + + var getRaw = function getRaw(obj, path) { + var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined; + // Handle array of path values + path = isArray(path) ? path.join('.') : path; // If no path or no object passed + + if (!path || !isObject(obj)) { + return defaultValue; + } // Handle edge case where user has dot(s) in top-level item field key + // See https://github.com/bootstrap-vue/bootstrap-vue/issues/2762 + // Switched to `in` operator vs `hasOwnProperty` to handle obj.prototype getters + // https://github.com/bootstrap-vue/bootstrap-vue/issues/3463 + + + if (path in obj) { + return obj[path]; + } // Handle string array notation (numeric indices only) + + + path = String(path).replace(RX_ARRAY_NOTATION, '.$1'); + var steps = path.split('.').filter(identity); // Handle case where someone passes a string of only dots + + if (steps.length === 0) { + return defaultValue; + } // Traverse path in object to find result + // Switched to `in` operator vs `hasOwnProperty` to handle obj.prototype getters + // https://github.com/bootstrap-vue/bootstrap-vue/issues/3463 + + + return steps.every(function (step) { + return isObject(obj) && step in obj && !isUndefinedOrNull(obj = obj[step]); + }) ? obj : isNull(obj) ? null : defaultValue; + }; + /** + * Get property defined by dot/array notation in string. + * + * @link https://gist.github.com/jeneg/9767afdcca45601ea44930ea03e0febf#gistcomment-1935901 + * + * @param {Object} obj + * @param {string|Array} path + * @param {*} defaultValue (optional) + * @return {*} + */ + + var get = function get(obj, path) { + var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + var val = getRaw(obj, path); + return isUndefinedOrNull(val) ? defaultValue : val; + }; + + /** + * Log a warning message to the console with BootstrapVue formatting + * @param {string} message + */ + + var warn = function warn(message) + /* istanbul ignore next */ + { + var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + + if (!getNoWarn()) { + console.warn("[BootstrapVue warn]: ".concat(source ? "".concat(source, " - ") : '').concat(message)); + } + }; + /** + * Warn when no Promise support is given + * @param {string} source + * @returns {boolean} warned + */ + + var warnNotClient = function warnNotClient(source) { + /* istanbul ignore else */ + if (isBrowser) { + return false; + } else { + warn("".concat(source, ": Can not be called during SSR.")); + return true; + } + }; + /** + * Warn when no Promise support is given + * @param {string} source + * @returns {boolean} warned + */ + + var warnNoPromiseSupport = function warnNoPromiseSupport(source) { + /* istanbul ignore else */ + if (hasPromiseSupport) { + return false; + } else { + warn("".concat(source, ": Requires Promise support.")); + return true; + } + }; + /** + * Warn when no MutationObserver support is given + * @param {string} source + * @returns {boolean} warned + */ + + var warnNoMutationObserverSupport = function warnNoMutationObserverSupport(source) { + /* istanbul ignore else */ + if (hasMutationObserverSupport) { + return false; + } else { + warn("".concat(source, ": Requires MutationObserver support.")); + return true; + } + }; + + // NOTES + // + // The global config SHALL NOT be used to set defaults for Boolean props, as the props + // would loose their semantic meaning, and force people writing 3rd party components to + // explicitly set a true or false value using the v-bind syntax on boolean props + // + // Supported config values (depending on the prop's supported type(s)): + // `String`, `Array`, `Object`, `null` or `undefined` + // BREAKPOINT DEFINITIONS + // + // Some components (`` and ``) generate props based on breakpoints, + // and this occurs when the component is first loaded (evaluated), which may happen + // before the config is created/modified + // + // To get around this we make these components' props async (lazy evaluation) + // The component definition is only called/executed when the first access to the + // component is used (and cached on subsequent uses) + // PROP DEFAULTS + // + // For default values on props, we use the default value factory function approach so + // that the default values are pulled in at each component instantiation + // + // props: { + // variant: { + // type: String, + // default: () => getConfigComponent('BAlert', 'variant') + // } + // } + // + // We also provide a cached getter for breakpoints, which are "frozen" on first access + // prettier-ignore + + var DEFAULTS = deepFreeze({ + // Breakpoints + breakpoints: ['xs', 'sm', 'md', 'lg', 'xl'], + // Form controls + formControls: { + size: undefined + }, + // Component specific defaults are keyed by the component + // name (PascalCase) and prop name (camelCase) + BAlert: { + dismissLabel: 'Close', + variant: 'info' + }, + BAvatar: { + variant: 'secondary', + badgeVariant: 'primary' + }, + BBadge: { + variant: 'secondary' + }, + BButton: { + size: undefined, + variant: 'secondary' + }, + BButtonClose: { + content: '×', + // `textVariant` is `null` to inherit the current text color + textVariant: undefined, + ariaLabel: 'Close' + }, + BCalendar: { + // BFormDate will choose these first if not provided in BFormDate section + labelPrevDecade: 'Previous decade', + labelPrevYear: 'Previous year', + labelPrevMonth: 'Previous month', + labelCurrentMonth: 'Current month', + labelNextMonth: 'Next month', + labelNextYear: 'Next year', + labelNextDecade: 'Next decade', + labelToday: 'Today', + labelSelected: 'Selected date', + labelNoDateSelected: 'No date selected', + labelCalendar: 'Calendar', + labelNav: 'Calendar navigation', + labelHelp: 'Use cursor keys to navigate calendar dates' + }, + BCardSubTitle: { + // `` and `` also inherit this prop + subTitleTextVariant: 'muted' + }, + BCarousel: { + labelPrev: 'Previous Slide', + labelNext: 'Next Slide', + labelGotoSlide: 'Goto Slide', + labelIndicators: 'Select a slide to display' + }, + BDropdown: { + toggleText: 'Toggle Dropdown', + size: undefined, + variant: 'secondary', + splitVariant: undefined + }, + BFormDatepicker: { + // BFormDatepicker will choose from BCalendar first if not provided here + labelPrevDecade: undefined, + labelPrevYear: undefined, + labelPrevMonth: undefined, + labelCurrentMonth: undefined, + labelNextMonth: undefined, + labelNextYear: undefined, + labelNextDecade: undefined, + labelToday: undefined, + labelSelected: undefined, + labelNoDateSelected: undefined, + labelCalendar: undefined, + labelNav: undefined, + labelHelp: undefined, + // These props are specific to BFormDatepicker + labelTodayButton: 'Select today', + labelResetButton: 'Reset', + labelCloseButton: 'Close' + }, + BFormFile: { + browseText: 'Browse', + // Chrome default file prompt + placeholder: 'No file chosen', + dropPlaceholder: 'Drop files here' + }, + BFormRating: { + variant: null, + color: null + }, + BFormTag: { + removeLabel: 'Remove tag', + variant: 'secondary' + }, + BFormTags: { + addButtonText: 'Add', + addButtonVariant: 'outline-secondary', + duplicateTagText: 'Duplicate tag(s)', + invalidTagText: 'Invalid tag(s)', + placeholder: 'Add tag...', + tagRemoveLabel: 'Remove tag', + tagRemovedLabel: 'Tag removed', + tagVariant: 'secondary' + }, + BFormText: { + textVariant: 'muted' + }, + BFormTimepicker: { + // Fallback to BTime + labelNoTimeSelected: undefined, + labelSelected: undefined, + labelHours: undefined, + labelMinutes: undefined, + labelSeconds: undefined, + labelAmpm: undefined, + labelAm: undefined, + labelPm: undefined, + // Fallback to BTime then BFormSpinbutton + labelDecrement: undefined, + labelIncrement: undefined, + // These props are specific to BFormTimepicker + labelNowButton: 'Select now', + labelResetButton: 'Reset', + labelCloseButton: 'Close' + }, + BFormSpinbutton: { + labelDecrement: 'Decrement', + labelIncrement: 'Increment' + }, + BImg: { + blankColor: 'transparent' + }, + BImgLazy: { + blankColor: 'transparent' + }, + BInputGroup: { + size: undefined + }, + BJumbotron: { + bgVariant: undefined, + borderVariant: undefined, + textVariant: undefined + }, + BLink: { + routerComponentName: undefined + }, + BListGroupItem: { + variant: undefined + }, + BModal: { + titleTag: 'h5', + size: 'md', + headerBgVariant: undefined, + headerBorderVariant: undefined, + headerTextVariant: undefined, + headerCloseVariant: undefined, + bodyBgVariant: undefined, + bodyTextVariant: undefined, + footerBgVariant: undefined, + footerBorderVariant: undefined, + footerTextVariant: undefined, + cancelTitle: 'Cancel', + cancelVariant: 'secondary', + okTitle: 'OK', + okVariant: 'primary', + headerCloseContent: '×', + headerCloseLabel: 'Close' + }, + BNavbar: { + variant: null + }, + BNavbarToggle: { + label: 'Toggle navigation' + }, + BPagination: { + size: undefined + }, + BPaginationNav: { + size: undefined + }, + BPopover: { + boundary: 'scrollParent', + boundaryPadding: 5, + customClass: undefined, + delay: 50, + variant: undefined + }, + BProgress: { + variant: undefined + }, + BProgressBar: { + variant: undefined + }, + BSpinner: { + variant: undefined + }, + BSidebar: { + bgVariant: 'light', + textVariant: 'dark', + shadow: false, + width: undefined, + tag: 'div', + backdropVariant: 'dark' + }, + BTable: { + selectedVariant: 'active', + headVariant: undefined, + footVariant: undefined + }, + BTime: { + labelNoTimeSelected: 'No time selected', + labelSelected: 'Selected time', + labelHours: 'Hours', + labelMinutes: 'Minutes', + labelSeconds: 'Seconds', + labelAmpm: 'AM/PM', + // It would be nice to be able to get these from Intl.DateTimeFormat somehow + labelAm: 'AM', + labelPm: 'PM', + // The following inherit from BFormSpinbutton if not provided + labelIncrement: undefined, + labelDecrement: undefined + }, + BToast: { + toaster: 'b-toaster-top-right', + autoHideDelay: 5000, + variant: undefined, + toastClass: undefined, + headerClass: undefined, + bodyClass: undefined + }, + BToaster: { + ariaLive: undefined, + ariaAtomic: undefined, + role: undefined + }, + BTooltip: { + boundary: 'scrollParent', + boundaryPadding: 5, + customClass: undefined, + delay: 50, + variant: undefined + } + }); + + var NAME = 'BvConfig'; + var PROP_NAME = '$bvConfig'; // Config manager class + + var BvConfig = /*#__PURE__*/function () { + function BvConfig() { + _classCallCheck(this, BvConfig); + + // TODO: pre-populate with default config values (needs updated tests) + // this.$_config = cloneDeep(DEFAULTS) + this.$_config = {}; + this.$_cachedBreakpoints = null; + } + /* istanbul ignore next */ + + + _createClass(BvConfig, [{ + key: "getDefaults", + // Returns the defaults + + /* istanbul ignore next */ + value: function getDefaults() + /* istanbul ignore next */ + { + return this.defaults; + } // Method to merge in user config parameters + + }, { + key: "setConfig", + value: function setConfig() { + var _this = this; + + var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + if (!isPlainObject(config)) { + /* istanbul ignore next */ + return; + } + + var configKeys = getOwnPropertyNames(config); + configKeys.forEach(function (cmpName) { + /* istanbul ignore next */ + if (!hasOwnProperty(DEFAULTS, cmpName)) { + warn("Unknown config property \"".concat(cmpName, "\""), NAME); + return; + } + + var cmpConfig = config[cmpName]; + + if (cmpName === 'breakpoints') { + // Special case for breakpoints + var breakpoints = config.breakpoints; + /* istanbul ignore if */ + + if (!isArray(breakpoints) || breakpoints.length < 2 || breakpoints.some(function (b) { + return !isString(b) || b.length === 0; + })) { + warn('"breakpoints" must be an array of at least 2 breakpoint names', NAME); + } else { + _this.$_config.breakpoints = cloneDeep(breakpoints); + } + } else if (isPlainObject(cmpConfig)) { + // Component prop defaults + var props = getOwnPropertyNames(cmpConfig); + props.forEach(function (prop) { + /* istanbul ignore if */ + if (!hasOwnProperty(DEFAULTS[cmpName], prop)) { + warn("Unknown config property \"".concat(cmpName, ".").concat(prop, "\""), NAME); + } else { + // TODO: If we pre-populate the config with defaults, we can skip this line + _this.$_config[cmpName] = _this.$_config[cmpName] || {}; + + if (!isUndefined(cmpConfig[prop])) { + _this.$_config[cmpName][prop] = cloneDeep(cmpConfig[prop]); + } + } + }); + } + }); + } // Clear the config. For testing purposes only + + }, { + key: "resetConfig", + value: function resetConfig() { + this.$_config = {}; + } // Returns a deep copy of the user config + + }, { + key: "getConfig", + value: function getConfig() { + return cloneDeep(this.$_config); + } + }, { + key: "getConfigValue", + value: function getConfigValue(key) { + // First we try the user config, and if key not found we fall back to default value + // NOTE: If we deep clone DEFAULTS into config, then we can skip the fallback for get + return cloneDeep(getRaw(this.$_config, key, getRaw(DEFAULTS, key))); + } + }, { + key: "defaults", + + /* istanbul ignore next */ + get: function get() + /* istanbul ignore next */ + { + return DEFAULTS; + } + }], [{ + key: "Defaults", + get: function get() + /* istanbul ignore next */ + { + return DEFAULTS; + } + }]); + + return BvConfig; + }(); // Method for applying a global config + + + var setConfig = function setConfig() { + var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var Vue$1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Vue; + // Ensure we have a $bvConfig Object on the Vue prototype. + // We set on Vue and OurVue just in case consumer has not set an alias of `vue`. + Vue$1.prototype[PROP_NAME] = Vue.prototype[PROP_NAME] = Vue$1.prototype[PROP_NAME] || Vue.prototype[PROP_NAME] || new BvConfig(); // Apply the config values + + Vue$1.prototype[PROP_NAME].setConfig(config); + }; // Method for resetting the user config. Exported for testing purposes only. + + /** + * Checks if there are multiple instances of Vue, and warns (once) about possible issues. + * @param {object} Vue + */ + + var checkMultipleVue = function () { + var checkMultipleVueWarned = false; + var MULTIPLE_VUE_WARNING = ['Multiple instances of Vue detected!', 'You may need to set up an alias for Vue in your bundler config.', 'See: https://bootstrap-vue.org/docs#using-module-bundlers'].join('\n'); + return function (Vue$1) { + /* istanbul ignore next */ + if (!checkMultipleVueWarned && Vue !== Vue$1 && !isJSDOM) { + warn(MULTIPLE_VUE_WARNING); + } + + checkMultipleVueWarned = true; + }; + }(); + /** + * Plugin install factory function. + * @param {object} { components, directives } + * @returns {function} plugin install function + */ + + var installFactory = function installFactory() { + var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + components = _ref.components, + directives = _ref.directives, + plugins = _ref.plugins; + + var install = function install(Vue) { + var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + if (install.installed) { + /* istanbul ignore next */ + return; + } + + install.installed = true; + checkMultipleVue(Vue); + setConfig(config, Vue); + registerComponents(Vue, components); + registerDirectives(Vue, directives); + registerPlugins(Vue, plugins); + }; + + install.installed = false; + return install; + }; + /** + * Plugin object factory function. + * @param {object} { components, directives, plugins } + * @returns {object} plugin install object + */ + + var pluginFactory = function pluginFactory() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var extend = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return _objectSpread2(_objectSpread2({}, extend), {}, { + install: installFactory(options) + }); + }; + /** + * Load a group of plugins. + * @param {object} Vue + * @param {object} Plugin definitions + */ + + var registerPlugins = function registerPlugins(Vue) { + var plugins = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + for (var plugin in plugins) { + if (plugin && plugins[plugin]) { + Vue.use(plugins[plugin]); + } + } + }; + /** + * Load a component. + * @param {object} Vue + * @param {string} Component name + * @param {object} Component definition + */ + + var registerComponent = function registerComponent(Vue, name, def) { + if (Vue && name && def) { + Vue.component(name, def); + } + }; + /** + * Load a group of components. + * @param {object} Vue + * @param {object} Object of component definitions + */ + + var registerComponents = function registerComponents(Vue) { + var components = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + for (var component in components) { + registerComponent(Vue, component, components[component]); + } + }; + /** + * Load a directive. + * @param {object} Vue + * @param {string} Directive name + * @param {object} Directive definition + */ + + var registerDirective = function registerDirective(Vue, name, def) { + if (Vue && name && def) { + // Ensure that any leading V is removed from the + // name, as Vue adds it automatically + Vue.directive(name.replace(/^VB/, 'B'), def); + } + }; + /** + * Load a group of directives. + * @param {object} Vue + * @param {object} Object of directive definitions + */ + + var registerDirectives = function registerDirectives(Vue) { + var directives = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + for (var directive in directives) { + registerDirective(Vue, directive, directives[directive]); + } + }; + /** + * Install plugin if window.Vue available + * @param {object} Plugin definition + */ + + var vueUse = function vueUse(VuePlugin) { + /* istanbul ignore next */ + if (hasWindowSupport && window.Vue) { + window.Vue.use(VuePlugin); + } + /* istanbul ignore next */ + + + if (hasWindowSupport && VuePlugin.NAME) { + window[VuePlugin.NAME] = VuePlugin; + } + }; + + var memoize = function memoize(fn) { + var cache = create(null); + return function () { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + var argsKey = JSON.stringify(args); + return cache[argsKey] = cache[argsKey] || fn.apply(null, args); + }; + }; + + var PROP_NAME$1 = '$bvConfig'; + var VueProto = Vue.prototype; // --- Getter methods --- + + var getConfigValue = function getConfigValue(key) { + return VueProto[PROP_NAME$1] ? VueProto[PROP_NAME$1].getConfigValue(key) : cloneDeep(getRaw(DEFAULTS, key)); + }; // Method to grab a config value for a particular component + + var getComponentConfig = function getComponentConfig(cmpName) { + var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + // Return the particular config value for key for if specified, + // otherwise we return the full config (or an empty object if not found) + return key ? getConfigValue("".concat(cmpName, ".").concat(key)) : getConfigValue(cmpName) || {}; + }; // Convenience method for getting all breakpoint names + + var getBreakpoints = function getBreakpoints() { + return getConfigValue('breakpoints'); + }; // Private function for caching / locking-in breakpoint names + + var _getBreakpointsCached = memoize(function () { + return getBreakpoints(); + }); // Convenience method for getting all breakpoint names. + // Caches the results after first access. + + + var getBreakpointsCached = function getBreakpointsCached() { + return cloneDeep(_getBreakpointsCached()); + }; // Convenience method for getting breakpoints with + // the smallest breakpoint set as ''. + // Useful for components that create breakpoint specific props. + // Caches the results after first access. + + var getBreakpointsUpCached = memoize(function () { + var breakpoints = getBreakpointsCached(); + breakpoints[0] = ''; + return breakpoints; + }); // Convenience method for getting breakpoints with + + // Number utilities + // Converts a value (string, number, etc) to an integer number + // Assumes radix base 10 + var toInteger = function toInteger(value) { + var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : NaN; + var integer = parseInt(value, 10); + return isNaN(integer) ? defaultValue : integer; + }; // Converts a value (string, number, etc) to a number + + var toFloat = function toFloat(value) { + var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : NaN; + var float = parseFloat(value); + return isNaN(float) ? defaultValue : float; + }; // Converts a value (string, number, etc) to a string + // representation with `precision` digits after the decimal + // Returns the string 'NaN' if the value cannot be converted + + var toFixed = function toFixed(val, precision) { + return toFloat(val).toFixed(toInteger(precision, 0)); + }; + + // String utilities + + var RX_TRIM_LEFT = /^\s+/; + var RX_REGEXP_REPLACE = /[-/\\^$*+?.()|[\]{}]/g; + var RX_UN_KEBAB = /-(\w)/g; + var RX_HYPHENATE = /\B([A-Z])/g; // --- Utilities --- + // Converts PascalCase or camelCase to kebab-case + + var kebabCase = function kebabCase(str) { + return str.replace(RX_HYPHENATE, '-$1').toLowerCase(); + }; // Converts a kebab-case or camelCase string to PascalCase + + var pascalCase = function pascalCase(str) { + str = kebabCase(str).replace(RX_UN_KEBAB, function (_, c) { + return c ? c.toUpperCase() : ''; + }); + return str.charAt(0).toUpperCase() + str.slice(1); + }; // Lowercases the first letter of a string and returns a new string + + var lowerFirst = function lowerFirst(str) { + str = isString(str) ? str.trim() : String(str); + return str.charAt(0).toLowerCase() + str.slice(1); + }; // Uppercases the first letter of a string and returns a new string + + var upperFirst = function upperFirst(str) { + str = isString(str) ? str.trim() : String(str); + return str.charAt(0).toUpperCase() + str.slice(1); + }; // Escape characters to be used in building a regular expression + + var escapeRegExp = function escapeRegExp(str) { + return str.replace(RX_REGEXP_REPLACE, '\\$&'); + }; // Convert a value to a string that can be rendered + // `undefined`/`null` will be converted to `''` + // Plain objects and arrays will be JSON stringified + + var toString$1 = function toString(val) { + var spaces = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2; + return isUndefinedOrNull(val) ? '' : isArray(val) || isPlainObject(val) && val.toString === Object.prototype.toString ? JSON.stringify(val, null, spaces) : String(val); + }; // Remove leading white space from a string + + var trimLeft = function trimLeft(str) { + return toString$1(str).replace(RX_TRIM_LEFT, ''); + }; // Remove Trailing white space from a string + + var trim = function trim(str) { + return toString$1(str).trim(); + }; // Lower case a string + + var lowerCase = function lowerCase(str) { + return toString$1(str).toLowerCase(); + }; // Upper case a string + + var TABABLE_SELECTOR = ['button', '[href]:not(.disabled)', 'input', 'select', 'textarea', '[tabindex]', '[contenteditable]'].map(function (s) { + return "".concat(s, ":not(:disabled):not([disabled])"); + }).join(', '); + var w$1 = hasWindowSupport ? window : {}; + var d = hasDocumentSupport ? document : {}; + var elProto = typeof Element !== 'undefined' ? Element.prototype : {}; // --- Normalization utils --- + // See: https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill + + /* istanbul ignore next */ + + var matchesEl = elProto.matches || elProto.msMatchesSelector || elProto.webkitMatchesSelector; // See: https://developer.mozilla.org/en-US/docs/Web/API/Element/closest + + /* istanbul ignore next */ + + var closestEl = elProto.closest || function (sel) + /* istanbul ignore next */ + { + var el = this; + + do { + // Use our "patched" matches function + if (matches(el, sel)) { + return el; + } + + el = el.parentElement || el.parentNode; + } while (!isNull(el) && el.nodeType === Node.ELEMENT_NODE); + + return null; + }; // `requestAnimationFrame()` convenience method + + /* istanbul ignore next: JSDOM always returns the first option */ + + var requestAF = w$1.requestAnimationFrame || w$1.webkitRequestAnimationFrame || w$1.mozRequestAnimationFrame || w$1.msRequestAnimationFrame || w$1.oRequestAnimationFrame || // Fallback, but not a true polyfill + // Only needed for Opera Mini + + /* istanbul ignore next */ + function (cb) { + return setTimeout(cb, 16); + }; + var MutationObs = w$1.MutationObserver || w$1.WebKitMutationObserver || w$1.MozMutationObserver || null; // --- Utils --- + // Remove a node from DOM + + var removeNode = function removeNode(el) { + return el && el.parentNode && el.parentNode.removeChild(el); + }; // Determine if an element is an HTML element + + var isElement = function isElement(el) { + return !!(el && el.nodeType === Node.ELEMENT_NODE); + }; // Get the currently active HTML element + + var getActiveElement = function getActiveElement() { + var excludes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + var activeElement = d.activeElement; + return activeElement && !excludes.some(function (el) { + return el === activeElement; + }) ? activeElement : null; + }; // Returns `true` if a tag's name equals `name` + + var isTag = function isTag(tag, name) { + return toString$1(tag).toLowerCase() === toString$1(name).toLowerCase(); + }; // Determine if an HTML element is the currently active element + + var isActiveElement = function isActiveElement(el) { + return isElement(el) && el === getActiveElement(); + }; // Determine if an HTML element is visible - Faster than CSS check + + var isVisible = function isVisible(el) { + if (!isElement(el) || !el.parentNode || !contains(d.body, el)) { + // Note this can fail for shadow dom elements since they + // are not a direct descendant of document.body + return false; + } + + if (el.style.display === 'none') { + // We do this check to help with vue-test-utils when using v-show + + /* istanbul ignore next */ + return false; + } // All browsers support getBoundingClientRect(), except JSDOM as it returns all 0's for values :( + // So any tests that need isVisible will fail in JSDOM + // Except when we override the getBCR prototype in some tests + + + var bcr = getBCR(el); + return !!(bcr && bcr.height > 0 && bcr.width > 0); + }; // Determine if an element is disabled + + var isDisabled = function isDisabled(el) { + return !isElement(el) || el.disabled || hasAttr(el, 'disabled') || hasClass(el, 'disabled'); + }; // Cause/wait-for an element to reflow its content (adjusting its height/width) + + var reflow = function reflow(el) { + // Requesting an elements offsetHight will trigger a reflow of the element content + + /* istanbul ignore next: reflow doesn't happen in JSDOM */ + return isElement(el) && el.offsetHeight; + }; // Select all elements matching selector. Returns `[]` if none found + + var selectAll = function selectAll(selector, root) { + return from((isElement(root) ? root : d).querySelectorAll(selector)); + }; // Select a single element, returns `null` if not found + + var select = function select(selector, root) { + return (isElement(root) ? root : d).querySelector(selector) || null; + }; // Determine if an element matches a selector + + var matches = function matches(el, selector) { + return isElement(el) ? matchesEl.call(el, selector) : false; + }; // Finds closest element matching selector. Returns `null` if not found + + var closest = function closest(selector, root) { + var includeRoot = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + + if (!isElement(root)) { + return null; + } + + var el = closestEl.call(root, selector); // Native closest behaviour when `includeRoot` is truthy, + // else emulate jQuery closest and return `null` if match is + // the passed in root element when `includeRoot` is falsey + + return includeRoot ? el : el === root ? null : el; + }; // Returns true if the parent element contains the child element + + var contains = function contains(parent, child) { + return parent && isFunction(parent.contains) ? parent.contains(child) : false; + }; // Get an element given an ID + + var getById = function getById(id) { + return d.getElementById(/^#/.test(id) ? id.slice(1) : id) || null; + }; // Add a class to an element + + var addClass = function addClass(el, className) { + // We are checking for `el.classList` existence here since IE 11 + // returns `undefined` for some elements (e.g. SVG elements) + // See https://github.com/bootstrap-vue/bootstrap-vue/issues/2713 + if (className && isElement(el) && el.classList) { + el.classList.add(className); + } + }; // Remove a class from an element + + var removeClass = function removeClass(el, className) { + // We are checking for `el.classList` existence here since IE 11 + // returns `undefined` for some elements (e.g. SVG elements) + // See https://github.com/bootstrap-vue/bootstrap-vue/issues/2713 + if (className && isElement(el) && el.classList) { + el.classList.remove(className); + } + }; // Test if an element has a class + + var hasClass = function hasClass(el, className) { + // We are checking for `el.classList` existence here since IE 11 + // returns `undefined` for some elements (e.g. SVG elements) + // See https://github.com/bootstrap-vue/bootstrap-vue/issues/2713 + if (className && isElement(el) && el.classList) { + return el.classList.contains(className); + } + + return false; + }; // Set an attribute on an element + + var setAttr = function setAttr(el, attr, val) { + if (attr && isElement(el)) { + el.setAttribute(attr, val); + } + }; // Remove an attribute from an element + + var removeAttr = function removeAttr(el, attr) { + if (attr && isElement(el)) { + el.removeAttribute(attr); + } + }; // Get an attribute value from an element + // Returns `null` if not found + + var getAttr = function getAttr(el, attr) { + return attr && isElement(el) ? el.getAttribute(attr) : null; + }; // Determine if an attribute exists on an element + // Returns `true` or `false`, or `null` if element not found + + var hasAttr = function hasAttr(el, attr) { + return attr && isElement(el) ? el.hasAttribute(attr) : null; + }; // Return the Bounding Client Rect of an element + // Returns `null` if not an element + + /* istanbul ignore next: getBoundingClientRect() doesn't work in JSDOM */ + + var getBCR = function getBCR(el) { + return isElement(el) ? el.getBoundingClientRect() : null; + }; // Get computed style object for an element + + /* istanbul ignore next: getComputedStyle() doesn't work in JSDOM */ + + var getCS = function getCS(el) { + return hasWindowSupport && isElement(el) ? w$1.getComputedStyle(el) : {}; + }; // Returns a `Selection` object representing the range of text selected + // Returns `null` if no window support is given + + /* istanbul ignore next: getSelection() doesn't work in JSDOM */ + + var getSel = function getSel() { + return hasWindowSupport && w$1.getSelection ? w$1.getSelection() : null; + }; // Return an element's offset with respect to document element + // https://j11y.io/jquery/#v=git&fn=jQuery.fn.offset + + var offset = function offset(el) + /* istanbul ignore next: getBoundingClientRect(), getClientRects() doesn't work in JSDOM */ + { + var _offset = { + top: 0, + left: 0 + }; + + if (!isElement(el) || el.getClientRects().length === 0) { + return _offset; + } + + var bcr = getBCR(el); + + if (bcr) { + var win = el.ownerDocument.defaultView; + _offset.top = bcr.top + win.pageYOffset; + _offset.left = bcr.left + win.pageXOffset; + } + + return _offset; + }; // Return an element's offset with respect to to its offsetParent + // https://j11y.io/jquery/#v=git&fn=jQuery.fn.position + + var position = function position(el) + /* istanbul ignore next: getBoundingClientRect() doesn't work in JSDOM */ + { + var _offset = { + top: 0, + left: 0 + }; + + if (!isElement(el)) { + return _offset; + } + + var parentOffset = { + top: 0, + left: 0 + }; + var elStyles = getCS(el); + + if (elStyles.position === 'fixed') { + _offset = getBCR(el) || _offset; + } else { + _offset = offset(el); + var doc = el.ownerDocument; + var offsetParent = el.offsetParent || doc.documentElement; + + while (offsetParent && (offsetParent === doc.body || offsetParent === doc.documentElement) && getCS(offsetParent).position === 'static') { + offsetParent = offsetParent.parentNode; + } + + if (offsetParent && offsetParent !== el && offsetParent.nodeType === Node.ELEMENT_NODE) { + parentOffset = offset(offsetParent); + var offsetParentStyles = getCS(offsetParent); + parentOffset.top += toFloat(offsetParentStyles.borderTopWidth, 0); + parentOffset.left += toFloat(offsetParentStyles.borderLeftWidth, 0); + } + } + + return { + top: _offset.top - parentOffset.top - toFloat(elStyles.marginTop, 0), + left: _offset.left - parentOffset.left - toFloat(elStyles.marginLeft, 0) + }; + }; // Find all tabable elements in the given element + // Assumes users have not used `tabindex` > `0` on elements + + var getTabables = function getTabables() { + var rootEl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document; + return selectAll(TABABLE_SELECTOR, rootEl).filter(isVisible).filter(function (el) { + return el.tabIndex > -1 && !el.disabled; + }); + }; // Attempt to focus an element, and return `true` if successful + + var attemptFocus = function attemptFocus(el) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + try { + el.focus(options); + } catch (_unused) {} + + return isActiveElement(el); + }; // Attempt to blur an element, and return `true` if successful + + var attemptBlur = function attemptBlur(el) { + try { + el.blur(); + } catch (_unused2) {} + + return !isActiveElement(el); + }; + + var e=function(){return (e=Object.assign||function(e){for(var t,r=1,s=arguments.length;r 1 && arguments[1] !== undefined ? arguments[1] : {}; + var $slots = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + // Ensure names is an array + names = concat(names).filter(identity); // Returns true if the either a $scopedSlot or $slot exists with the specified name + + return names.some(function (name) { + return $scopedSlots[name] || $slots[name]; + }); + }; + /** + * Returns VNodes for named slot either scoped or unscoped + * + * @param {String, Array} name or name[] + * @param {String} scope + * @param {Object} scopedSlots + * @param {Object} slots + * @returns {Array|undefined} VNodes + */ + + + var normalizeSlot = function normalizeSlot(names) { + var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + var $scopedSlots = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var $slots = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + // Ensure names is an array + names = concat(names).filter(identity); + var slot; + + for (var i = 0; i < names.length && !slot; i++) { + var name = names[i]; + slot = $scopedSlots[name] || $slots[name]; + } // Note: in Vue 2.6.x, all named slots are also scoped slots + + + return isFunction(slot) ? slot(scope) : slot; + }; // Named exports + + var normalizeSlotMixin = { + methods: { + hasNormalizedSlot: function hasNormalizedSlot$1(names) { + // Returns true if the either a $scopedSlot or $slot exists with the specified name + // `names` can be a string name or an array of names + return hasNormalizedSlot(names, this.$scopedSlots, this.$slots); + }, + normalizeSlot: function normalizeSlot$1(names) { + var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + // Returns an array of rendered VNodes if slot found. + // Returns undefined if not found. + // `names` can be a string name or an array of names + var vNodes = normalizeSlot(names, scope, this.$scopedSlots, this.$slots); + + return vNodes ? concat(vNodes) : vNodes; + } + } + }; + + var NAME$1 = 'BButtonClose'; + var props = { + content: { + type: String, + default: function _default() { + return getComponentConfig(NAME$1, 'content'); + } + }, + disabled: { + type: Boolean, + default: false + }, + ariaLabel: { + type: String, + default: function _default() { + return getComponentConfig(NAME$1, 'ariaLabel'); + } + }, + textVariant: { + type: String, + default: function _default() { + return getComponentConfig(NAME$1, 'textVariant'); + } + } + }; // @vue/component + + var BButtonClose = /*#__PURE__*/Vue.extend({ + name: NAME$1, + functional: true, + props: props, + render: function render(h, _ref) { + var props = _ref.props, + data = _ref.data, + slots = _ref.slots, + scopedSlots = _ref.scopedSlots; + var $slots = slots(); + var $scopedSlots = scopedSlots || {}; + var componentData = { + staticClass: 'close', + class: _defineProperty({}, "text-".concat(props.textVariant), props.textVariant), + attrs: { + type: 'button', + disabled: props.disabled, + 'aria-label': props.ariaLabel ? String(props.ariaLabel) : null + }, + on: { + click: function click(evt) { + // Ensure click on button HTML content is also disabled + + /* istanbul ignore if: bug in JSDOM still emits click on inner element */ + if (props.disabled && isEvent(evt)) { + evt.stopPropagation(); + evt.preventDefault(); + } + } + } + }; // Careful not to override the default slot with innerHTML + + if (!hasNormalizedSlot('default', $scopedSlots, $slots)) { + componentData.domProps = { + innerHTML: props.content + }; + } + + return h('button', a(data, componentData), normalizeSlot('default', {}, $scopedSlots, $slots)); + } + }); + + var NAME$2 = 'BAlert'; // Convert `show` value to a number + + var parseCountDown = function parseCountDown(show) { + if (show === '' || isBoolean(show)) { + return 0; + } + + show = toInteger(show, 0); + return show > 0 ? show : 0; + }; // Convert `show` value to a boolean + + + var parseShow = function parseShow(show) { + if (show === '' || show === true) { + return true; + } + + if (toInteger(show, 0) < 1) { + // Boolean will always return false for the above comparison + return false; + } + + return !!show; + }; // Is a value number like (i.e. a number or a number as string) + + + var isNumericLike = function isNumericLike(value) { + return !isNaN(toInteger(value)); + }; // @vue/component + + + var BAlert = /*#__PURE__*/Vue.extend({ + name: NAME$2, + mixins: [normalizeSlotMixin], + model: { + prop: 'show', + event: 'input' + }, + props: { + variant: { + type: String, + default: function _default() { + return getComponentConfig(NAME$2, 'variant'); + } + }, + dismissible: { + type: Boolean, + default: false + }, + dismissLabel: { + type: String, + default: function _default() { + return getComponentConfig(NAME$2, 'dismissLabel'); + } + }, + show: { + type: [Boolean, Number, String], + default: false + }, + fade: { + type: Boolean, + default: false + } + }, + data: function data() { + return { + countDown: 0, + countDownTimeout: null, + // If initially shown, we need to set these for SSR + localShow: parseShow(this.show) + }; + }, + watch: { + show: function show(newVal) { + this.countDown = parseCountDown(newVal); + this.localShow = parseShow(newVal); + }, + countDown: function countDown(newVal) { + var _this = this; + + this.clearCountDownInterval(); + + if (isNumericLike(this.show)) { + // Ignore if this.show transitions to a boolean value. + this.$emit('dismiss-count-down', newVal); + + if (this.show !== newVal) { + // Update the v-model if needed + this.$emit('input', newVal); + } + + if (newVal > 0) { + this.localShow = true; + this.countDownTimeout = setTimeout(function () { + _this.countDown--; + }, 1000); + } else { + // Slightly delay the hide to allow any UI updates + this.$nextTick(function () { + requestAF(function () { + _this.localShow = false; + }); + }); + } + } + }, + localShow: function localShow(newVal) { + if (!newVal && (this.dismissible || isNumericLike(this.show))) { + // Only emit dismissed events for dismissible or auto dismissing alerts + this.$emit('dismissed'); + } + + if (!isNumericLike(this.show) && this.show !== newVal) { + // Only emit booleans if we weren't passed a number via `this.show` + this.$emit('input', newVal); + } + } + }, + created: function created() { + this.countDown = parseCountDown(this.show); + this.localShow = parseShow(this.show); + }, + mounted: function mounted() { + this.countDown = parseCountDown(this.show); + this.localShow = parseShow(this.show); + }, + beforeDestroy: function beforeDestroy() { + this.clearCountDownInterval(); + }, + methods: { + dismiss: function dismiss() { + this.clearCountDownInterval(); + this.countDown = 0; + this.localShow = false; + }, + clearCountDownInterval: function clearCountDownInterval() { + if (this.countDownTimeout) { + clearTimeout(this.countDownTimeout); + this.countDownTimeout = null; + } + } + }, + render: function render(h) { + var $alert; // undefined + + if (this.localShow) { + var $dismissBtn = h(); + + if (this.dismissible) { + // Add dismiss button + $dismissBtn = h(BButtonClose, { + attrs: { + 'aria-label': this.dismissLabel + }, + on: { + click: this.dismiss + } + }, [this.normalizeSlot('dismiss')]); + } + + $alert = h('div', { + key: this._uid, + staticClass: 'alert', + class: _defineProperty({ + 'alert-dismissible': this.dismissible + }, "alert-".concat(this.variant), this.variant), + attrs: { + role: 'alert', + 'aria-live': 'polite', + 'aria-atomic': true + } + }, [$dismissBtn, this.normalizeSlot('default')]); + $alert = [$alert]; + } + + return h(BVTransition, { + props: { + noFade: !this.fade + } + }, $alert); + } + }); + + var AlertPlugin = /*#__PURE__*/pluginFactory({ + components: { + BAlert: BAlert + } + }); + + // Math utilty functions + var mathMin = Math.min; + var mathMax = Math.max; + var mathAbs = Math.abs; + var mathCeil = Math.ceil; + var mathFloor = Math.floor; + var mathPow = Math.pow; + var mathRound = Math.round; + + var NAME$3 = 'BAspect'; + var CLASS_NAME = 'b-aspect'; + var RX_ASPECT = /^\d+(\.\d*)?[/:]\d+(\.\d*)?$/; + var RX_SEPARATOR = /[/:]/; // --- Main Component --- + + var BAspect = /*#__PURE__*/Vue.extend({ + name: NAME$3, + mixins: [normalizeSlotMixin], + props: { + aspect: { + // Accepts a number (i.e. `16 / 9`, `1`, `4 / 3`) + // Or a string (i.e. '16/9', '16:9', '4:3' '1:1') + type: [Number, String], + default: '1:1' + }, + tag: { + type: String, + default: 'div' + } + }, + computed: { + padding: function padding() { + var aspect = this.aspect; + var ratio = 1; + + if (RX_ASPECT.test(aspect)) { + // Width and/or Height can be a decimal value below `1`, so + // we only fallback to `1` if the value is `0` or `NaN` + var _aspect$split$map = aspect.split(RX_SEPARATOR).map(function (v) { + return toFloat(v) || 1; + }), + _aspect$split$map2 = _slicedToArray(_aspect$split$map, 2), + width = _aspect$split$map2[0], + height = _aspect$split$map2[1]; + + ratio = width / height; + } else { + ratio = toFloat(aspect) || 1; + } + + return "".concat(100 / mathAbs(ratio), "%"); + } + }, + render: function render(h) { + var $sizer = h('div', { + staticClass: "".concat(CLASS_NAME, "-sizer flex-grow-1"), + style: { + paddingBottom: this.padding, + height: 0 + } + }); + var $content = h('div', { + staticClass: "".concat(CLASS_NAME, "-content flex-grow-1 w-100 mw-100"), + style: { + marginLeft: '-100%' + } + }, [this.normalizeSlot('default')]); + return h(this.tag, { + staticClass: "".concat(CLASS_NAME, " d-flex") + }, [$sizer, $content]); + } + }); + + var AspectPlugin = /*#__PURE__*/pluginFactory({ + components: { + BAspect: BAspect + } + }); + + var prefixPropName = function prefixPropName(prefix, value) { + return prefix + upperFirst(value); + }; // Remove a prefix from a property + + var unprefixPropName = function unprefixPropName(prefix, value) { + return lowerFirst(value.replace(prefix, '')); + }; // Suffix can be a falsey value so nothing is appended to string + // (helps when looping over props & some shouldn't change) + // Use data last parameters to allow for currying + + var suffixPropName = function suffixPropName(suffix, str) { + return str + (suffix ? upperFirst(suffix) : ''); + }; // Copies props from one array/object to a new array/object + // Prop values are also cloned as new references to prevent possible + // mutation of original prop object values + // Optionally accepts a function to transform the prop name + + var copyProps = function copyProps(props) { + var transformFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : identity; + + if (isArray(props)) { + return props.map(transformFn); + } + + var copied = {}; + + for (var prop in props) { + /* istanbul ignore else */ + if (hasOwnProperty(props, prop)) { + // If the prop value is an object, do a shallow clone + // to prevent potential mutations to the original object + copied[transformFn(prop)] = isObject(props[prop]) ? clone(props[prop]) : props[prop]; + } + } + + return copied; + }; // Given an array of properties or an object of property keys, + // plucks all the values off the target object, returning a new object + // that has props that reference the original prop values + + var pluckProps = function pluckProps(keysToPluck, objToPluck) { + var transformFn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : identity; + return (isArray(keysToPluck) ? keysToPluck.slice() : keys(keysToPluck)).reduce(function (memo, prop) { + memo[transformFn(prop)] = objToPluck[prop]; + return memo; + }, {}); + }; + + var ANCHOR_TAG = 'a'; // Precompile RegExp + + var commaRE = /%2C/g; + var encodeReserveRE = /[!'()*]/g; + var plusRE = /\+/g; + var queryStartRE = /^(\?|#|&)/; // Method to replace reserved chars + + var encodeReserveReplacer = function encodeReserveReplacer(c) { + return '%' + c.charCodeAt(0).toString(16); + }; // Fixed encodeURIComponent which is more conformant to RFC3986: + // - escapes [!'()*] + // - preserve commas + + + var encode = function encode(str) { + return encodeURIComponent(toString$1(str)).replace(encodeReserveRE, encodeReserveReplacer).replace(commaRE, ','); + }; + + var decode = decodeURIComponent; // Stringifies an object of query parameters + // See: https://github.com/vuejs/vue-router/blob/dev/src/util/query.js + + var stringifyQueryObj = function stringifyQueryObj(obj) { + if (!isPlainObject(obj)) { + return ''; + } + + var query = keys(obj).map(function (key) { + var val = obj[key]; + + if (isUndefined(val)) { + return ''; + } else if (isNull(val)) { + return encode(key); + } else if (isArray(val)) { + return val.reduce(function (results, val2) { + if (isNull(val2)) { + results.push(encode(key)); + } else if (!isUndefined(val2)) { + // Faster than string interpolation + results.push(encode(key) + '=' + encode(val2)); + } + + return results; + }, []).join('&'); + } // Faster than string interpolation + + + return encode(key) + '=' + encode(val); + }) + /* must check for length, as we only want to filter empty strings, not things that look falsey! */ + .filter(function (x) { + return x.length > 0; + }).join('&'); + return query ? "?".concat(query) : ''; + }; + var parseQuery = function parseQuery(query) { + var parsed = {}; + query = toString$1(query).trim().replace(queryStartRE, ''); + + if (!query) { + return parsed; + } + + query.split('&').forEach(function (param) { + var parts = param.replace(plusRE, ' ').split('='); + var key = decode(parts.shift()); + var val = parts.length > 0 ? decode(parts.join('=')) : null; + + if (isUndefined(parsed[key])) { + parsed[key] = val; + } else if (isArray(parsed[key])) { + parsed[key].push(val); + } else { + parsed[key] = [parsed[key], val]; + } + }); + return parsed; + }; + var isLink = function isLink(props) { + return !!(props.href || props.to); + }; + var isRouterLink = function isRouterLink(tag) { + return !isTag(tag, ANCHOR_TAG); + }; + var computeTag = function computeTag() { + var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + to = _ref.to, + disabled = _ref.disabled, + routerComponentName = _ref.routerComponentName; + + var thisOrParent = arguments.length > 1 ? arguments[1] : undefined; + var hasRouter = thisOrParent.$router; + + if (!hasRouter || hasRouter && disabled || hasRouter && !to) { + return ANCHOR_TAG; + } // TODO: + // Check registered components for existence of user supplied router link component name + // We would need to check PascalCase, kebab-case, and camelCase versions of name: + // const name = routerComponentName + // const names = [name, PascalCase(name), KebabCase(name), CamelCase(name)] + // exists = names.some(name => !!thisOrParent.$options.components[name]) + // And may want to cache the result for performance or we just let the render fail + // if the component is not registered + + + return routerComponentName || (thisOrParent.$nuxt ? 'nuxt-link' : 'router-link'); + }; + var computeRel = function computeRel() { + var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + target = _ref2.target, + rel = _ref2.rel; + + if (target === '_blank' && isNull(rel)) { + return 'noopener'; + } + + return rel || null; + }; + var computeHref = function computeHref() { + var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + href = _ref3.href, + to = _ref3.to; + + var tag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ANCHOR_TAG; + var fallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '#'; + var toFallback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '/'; + + // We've already checked the $router in computeTag(), so isRouterLink() indicates a live router. + // When deferring to Vue Router's router-link, don't use the href attribute at all. + // We return null, and then remove href from the attributes passed to router-link + if (isRouterLink(tag)) { + return null; + } // Return `href` when explicitly provided + + + if (href) { + return href; + } // Reconstruct `href` when `to` used, but no router + + + if (to) { + // Fallback to `to` prop (if `to` is a string) + if (isString(to)) { + return to || toFallback; + } // Fallback to `to.path + to.query + to.hash` prop (if `to` is an object) + + + if (isPlainObject(to) && (to.path || to.query || to.hash)) { + var path = toString$1(to.path); + var query = stringifyQueryObj(to.query); + var hash = toString$1(to.hash); + hash = !hash || hash.charAt(0) === '#' ? hash : "#".concat(hash); + return "".concat(path).concat(query).concat(hash) || toFallback; + } + } // If nothing is provided return the fallback + + + return fallback; + }; + + /* + * Key Codes (events) + */ + var KEY_CODES = freeze({ + SPACE: 32, + ENTER: 13, + ESC: 27, + LEFT: 37, + UP: 38, + RIGHT: 39, + DOWN: 40, + PAGEUP: 33, + PAGEDOWN: 34, + HOME: 36, + END: 35, + TAB: 9, + SHIFT: 16, + CTRL: 17, + BACKSPACE: 8, + ALT: 18, + PAUSE: 19, + BREAK: 19, + INSERT: 45, + INS: 45, + DELETE: 46 + }); + + var makePropWatcher = function makePropWatcher(propName) { + return { + handler: function handler(newVal, oldVal) { + for (var key in oldVal) { + if (!hasOwnProperty(newVal, key)) { + this.$delete(this.$data[propName], key); + } + } + + for (var _key in newVal) { + this.$set(this.$data[propName], _key, newVal[_key]); + } + } + }; + }; + var makePropCacheMixin = function makePropCacheMixin(propName, proxyPropName) { + return { + data: function data() { + return _defineProperty({}, proxyPropName, {}); + }, + watch: _defineProperty({}, propName, makePropWatcher(proxyPropName)), + created: function created() { + this[proxyPropName] = _objectSpread2({}, this[propName]); + } + }; + }; + + var attrsMixin = makePropCacheMixin('$attrs', 'bvAttrs'); + + var listenersMixin = makePropCacheMixin('$listeners', 'bvListeners'); + + var NAME$4 = 'BLink'; // --- Props --- + // specific props + + var routerLinkProps = { + to: { + type: [String, Object], + default: null + }, + append: { + type: Boolean, + default: false + }, + replace: { + type: Boolean, + default: false + }, + event: { + type: [String, Array], + default: 'click' + }, + activeClass: { + type: String // default: undefined + + }, + exact: { + type: Boolean, + default: false + }, + exactActiveClass: { + type: String // default: undefined + + }, + routerTag: { + type: String, + default: 'a' + } + }; // specific props + + var nuxtLinkProps = { + prefetch: { + type: Boolean, + // Must be `null` to fall back to the value defined in the + // `nuxt.config.js` configuration file for `router.prefetchLinks` + // We convert `null` to `undefined`, so that Nuxt.js will use the + // compiled default. Vue treats `undefined` as default of `false` + // for Boolean props, so we must set it as `null` here to be a + // true tri-state prop + default: null + }, + noPrefetch: { + type: Boolean, + default: false + } + }; + var props$1 = _objectSpread2(_objectSpread2(_objectSpread2({ + href: { + type: String, + default: null + }, + rel: { + type: String, + // Must be `null` if no value provided + default: null + }, + target: { + type: String, + default: '_self' + }, + active: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + } + }, routerLinkProps), nuxtLinkProps), {}, { + // To support 3rd party router links based on `` (i.e. `g-link` for Gridsome) + // Default is to auto choose between `` and `` + // Gridsome doesn't provide a mechanism to auto detect and has caveats + // such as not supporting FQDN URLs or hash only URLs + routerComponentName: { + type: String, + default: function _default() { + return getComponentConfig(NAME$4, 'routerComponentName'); + } + } + }); // --- Main component --- + // @vue/component + + var BLink = /*#__PURE__*/Vue.extend({ + name: 'BLink', + // Mixin order is important! + mixins: [attrsMixin, listenersMixin, normalizeSlotMixin], + inheritAttrs: false, + props: props$1, + computed: { + computedTag: function computedTag() { + // We don't pass `this` as the first arg as we need reactivity of the props + var to = this.to, + disabled = this.disabled, + routerComponentName = this.routerComponentName; + return computeTag({ + to: to, + disabled: disabled, + routerComponentName: routerComponentName + }, this); + }, + isRouterLink: function isRouterLink$1() { + return isRouterLink(this.computedTag); + }, + computedRel: function computedRel() { + // We don't pass `this` as the first arg as we need reactivity of the props + return computeRel({ + target: this.target, + rel: this.rel + }); + }, + computedHref: function computedHref() { + // We don't pass `this` as the first arg as we need reactivity of the props + return computeHref({ + to: this.to, + href: this.href + }, this.computedTag); + }, + computedProps: function computedProps() { + var prefetch = this.prefetch; + return this.isRouterLink ? _objectSpread2(_objectSpread2({}, pluckProps(_objectSpread2(_objectSpread2({}, routerLinkProps), nuxtLinkProps), this)), {}, { + // Coerce `prefetch` value `null` to be `undefined` + prefetch: isBoolean(prefetch) ? prefetch : undefined, + // Pass `router-tag` as `tag` prop + tag: this.routerTag + }) : {}; + }, + computedAttrs: function computedAttrs() { + var bvAttrs = this.bvAttrs, + href = this.computedHref, + rel = this.computedRel, + disabled = this.disabled, + target = this.target, + routerTag = this.routerTag, + isRouterLink = this.isRouterLink; + return _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, bvAttrs), href ? { + href: href + } : {}), isRouterLink && routerTag !== 'a' && routerTag !== 'area' ? {} : { + rel: rel, + target: target + }), {}, { + tabindex: disabled ? '-1' : isUndefined(bvAttrs.tabindex) ? null : bvAttrs.tabindex, + 'aria-disabled': disabled ? 'true' : null + }); + }, + computedListeners: function computedListeners() { + return _objectSpread2(_objectSpread2({}, this.bvListeners), {}, { + // We want to overwrite any click handler since our callback + // will invoke the user supplied handler(s) if `!this.disabled` + click: this.onClick + }); + } + }, + methods: { + onClick: function onClick(evt) { + var _arguments = arguments; + var evtIsEvent = isEvent(evt); + var isRouterLink = this.isRouterLink; + var suppliedHandler = this.bvListeners.click; + + if (evtIsEvent && this.disabled) { + // Stop event from bubbling up + evt.stopPropagation(); // Kill the event loop attached to this specific `EventTarget` + // Needed to prevent `vue-router` for doing its thing + + evt.stopImmediatePropagation(); + } else { + /* istanbul ignore next: difficult to test, but we know it works */ + if (isRouterLink && evt.currentTarget.__vue__) { + // Router links do not emit instance `click` events, so we + // add in an `$emit('click', evt)` on its Vue instance + evt.currentTarget.__vue__.$emit('click', evt); + } // Call the suppliedHandler(s), if any provided + + + concat(suppliedHandler).filter(function (h) { + return isFunction(h); + }).forEach(function (handler) { + handler.apply(void 0, _toConsumableArray(_arguments)); + }); // Emit the global `$root` click event + + this.$root.$emit('clicked::link', evt); + } // Stop scroll-to-top behavior or navigation on + // regular links when href is just '#' + + + if (evtIsEvent && (this.disabled || !isRouterLink && this.computedHref === '#')) { + evt.preventDefault(); + } + }, + focus: function focus() { + attemptFocus(this.$el); + }, + blur: function blur() { + attemptBlur(this.$el); + } + }, + render: function render(h) { + var active = this.active, + disabled = this.disabled; + return h(this.computedTag, _defineProperty({ + class: { + active: active, + disabled: disabled + }, + attrs: this.computedAttrs, + props: this.computedProps + }, this.isRouterLink ? 'nativeOn' : 'on', this.computedListeners), this.normalizeSlot('default')); + } + }); + + var NAME$5 = 'BButton'; // --- Props --- + + var linkProps = omit(props$1, ['event', 'routerTag']); + delete linkProps.href.default; + delete linkProps.to.default; + var btnProps = { + block: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + }, + size: { + type: String, + default: function _default() { + return getComponentConfig(NAME$5, 'size'); + } + }, + variant: { + type: String, + default: function _default() { + return getComponentConfig(NAME$5, 'variant'); + } + }, + type: { + type: String, + default: 'button' + }, + tag: { + type: String, + default: 'button' + }, + pill: { + type: Boolean, + default: false + }, + squared: { + type: Boolean, + default: false + }, + pressed: { + // Tri-state: `true`, `false` or `null` + // => On, off, not a toggle + type: Boolean, + default: null + } + }; + var props$2 = _objectSpread2(_objectSpread2({}, btnProps), linkProps); // --- Helper methods --- + // Focus handler for toggle buttons + // Needs class of 'focus' when focused + + var handleFocus = function handleFocus(evt) { + if (evt.type === 'focusin') { + addClass(evt.target, 'focus'); + } else if (evt.type === 'focusout') { + removeClass(evt.target, 'focus'); + } + }; // Is the requested button a link? + // If tag prop is set to `a`, we use a to get proper disabled handling + + + var isLink$1 = function isLink$1(props) { + return isLink(props) || isTag(props.tag, 'a'); + }; // Is the button to be a toggle button? + + + var isToggle = function isToggle(props) { + return isBoolean(props.pressed); + }; // Is the button "really" a button? + + + var isButton = function isButton(props) { + return !(isLink$1(props) || props.tag && !isTag(props.tag, 'button')); + }; // Is the requested tag not a button or link? + + + var isNonStandardTag = function isNonStandardTag(props) { + return !isLink$1(props) && !isButton(props); + }; // Compute required classes (non static classes) + + + var computeClass = function computeClass(props) { + var _ref; + + return ["btn-".concat(props.variant || getComponentConfig(NAME$5, 'variant')), (_ref = {}, _defineProperty(_ref, "btn-".concat(props.size), props.size), _defineProperty(_ref, 'btn-block', props.block), _defineProperty(_ref, 'rounded-pill', props.pill), _defineProperty(_ref, 'rounded-0', props.squared && !props.pill), _defineProperty(_ref, "disabled", props.disabled), _defineProperty(_ref, "active", props.pressed), _ref)]; + }; // Compute the link props to pass to b-link (if required) + + + var computeLinkProps = function computeLinkProps(props) { + return isLink$1(props) ? pluckProps(linkProps, props) : {}; + }; // Compute the attributes for a button + + + var computeAttrs = function computeAttrs(props, data) { + var button = isButton(props); + var link = isLink$1(props); + var toggle = isToggle(props); + var nonStandardTag = isNonStandardTag(props); + var hashLink = link && props.href === '#'; + var role = data.attrs && data.attrs.role ? data.attrs.role : null; + var tabindex = data.attrs ? data.attrs.tabindex : null; + + if (nonStandardTag || hashLink) { + tabindex = '0'; + } + + return { + // Type only used for "real" buttons + type: button && !link ? props.type : null, + // Disabled only set on "real" buttons + disabled: button ? props.disabled : null, + // We add a role of button when the tag is not a link or button for ARIA + // Don't bork any role provided in `data.attrs` when `isLink` or `isButton` + // Except when link has `href` of `#` + role: nonStandardTag || hashLink ? 'button' : role, + // We set the `aria-disabled` state for non-standard tags + 'aria-disabled': nonStandardTag ? String(props.disabled) : null, + // For toggles, we need to set the pressed state for ARIA + 'aria-pressed': toggle ? String(props.pressed) : null, + // `autocomplete="off"` is needed in toggle mode to prevent some browsers + // from remembering the previous setting when using the back button + autocomplete: toggle ? 'off' : null, + // `tabindex` is used when the component is not a button + // Links are tabbable, but don't allow disabled, while non buttons or links + // are not tabbable, so we mimic that functionality by disabling tabbing + // when disabled, and adding a `tabindex="0"` to non buttons or non links + tabindex: props.disabled && !button ? '-1' : tabindex + }; + }; // --- Main component --- + // @vue/component + + + var BButton = /*#__PURE__*/Vue.extend({ + name: NAME$5, + functional: true, + props: props$2, + render: function render(h, _ref2) { + var props = _ref2.props, + data = _ref2.data, + listeners = _ref2.listeners, + children = _ref2.children; + var toggle = isToggle(props); + var link = isLink$1(props); + var nonStandardTag = isNonStandardTag(props); + var hashLink = link && props.href === '#'; + var on = { + keydown: function keydown(evt) { + // When the link is a `href="#"` or a non-standard tag (has `role="button"`), + // we add a keydown handlers for SPACE/ENTER + + /* istanbul ignore next */ + if (props.disabled || !(nonStandardTag || hashLink)) { + return; + } + + var keyCode = evt.keyCode; // Add SPACE handler for `href="#"` and ENTER handler for non-standard tags + + if (keyCode === KEY_CODES.SPACE || keyCode === KEY_CODES.ENTER && nonStandardTag) { + var target = evt.currentTarget || evt.target; + evt.preventDefault(); + target.click(); + } + }, + click: function click(evt) { + /* istanbul ignore if: blink/button disabled should handle this */ + if (props.disabled && isEvent(evt)) { + evt.stopPropagation(); + evt.preventDefault(); + } else if (toggle && listeners && listeners['update:pressed']) { + // Send `.sync` updates to any "pressed" prop (if `.sync` listeners) + // `concat()` will normalize the value to an array without + // double wrapping an array value in an array + concat(listeners['update:pressed']).forEach(function (fn) { + if (isFunction(fn)) { + fn(!props.pressed); + } + }); + } + } + }; + + if (toggle) { + on.focusin = handleFocus; + on.focusout = handleFocus; + } + + var componentData = { + staticClass: 'btn', + class: computeClass(props), + props: computeLinkProps(props), + attrs: computeAttrs(props, data), + on: on + }; + return h(link ? BLink : props.tag, a(data, componentData), children); + } + }); + + var commonIconProps = { + variant: { + type: String, + default: null + }, + fontScale: { + type: [Number, String], + default: 1 + }, + scale: { + type: [Number, String], + default: 1 + }, + rotate: { + type: [Number, String], + default: 0 + }, + flipH: { + type: Boolean, + default: false + }, + flipV: { + type: Boolean, + default: false + }, + shiftH: { + type: [Number, String], + default: 0 + }, + shiftV: { + type: [Number, String], + default: 0 + }, + animation: { + type: String, + default: null + } + }; // Base attributes needed on all icons + + var baseAttrs = { + viewBox: '0 0 16 16', + width: '1em', + height: '1em', + focusable: 'false', + role: 'img', + alt: 'icon' + }; // Attributes that are nulled out when stacked + + var stackedAttrs = { + width: null, + height: null, + focusable: null, + role: null, + alt: null + }; // Shared private base component to reduce bundle/runtime size + // @vue/component + + var BVIconBase = /*#__PURE__*/Vue.extend({ + name: 'BVIconBase', + functional: true, + props: _objectSpread2({ + content: { + type: String + }, + stacked: { + type: Boolean, + default: false + } + }, commonIconProps), + render: function render(h, _ref) { + var _class; + + var data = _ref.data, + props = _ref.props, + children = _ref.children; + var fontScale = mathMax(toFloat(props.fontScale, 1), 0) || 1; + var scale = mathMax(toFloat(props.scale, 1), 0) || 1; + var rotate = toFloat(props.rotate, 0); + var shiftH = toFloat(props.shiftH, 0); + var shiftV = toFloat(props.shiftV, 0); + var flipH = props.flipH; + var flipV = props.flipV; + var animation = props.animation; // Compute the transforms + // Note that order is important as SVG transforms are applied in order from + // left to right and we want flipping/scale to occur before rotation + // Note shifting is applied separately + // Assumes that the viewbox is `0 0 16 16` (`8 8` is the center) + + var hasScale = flipH || flipV || scale !== 1; + var hasTransforms = hasScale || rotate; + var hasShift = shiftH || shiftV; + var transforms = [hasTransforms ? 'translate(8 8)' : null, hasScale ? "scale(".concat((flipH ? -1 : 1) * scale, " ").concat((flipV ? -1 : 1) * scale, ")") : null, rotate ? "rotate(".concat(rotate, ")") : null, hasTransforms ? 'translate(-8 -8)' : null].filter(identity); // Handling stacked icons + + var isStacked = props.stacked; + var hasContent = !isUndefinedOrNull(props.content); // We wrap the content in a `` for handling the transforms (except shift) + + var $inner = h('g', { + attrs: { + transform: transforms.join(' ') || null + }, + domProps: hasContent ? { + innerHTML: props.content || '' + } : {} + }, children); // If needed, we wrap in an additional `` in order to handle the shifting + + if (hasShift) { + $inner = h('g', { + attrs: { + transform: "translate(".concat(16 * shiftH / 16, " ").concat(-16 * shiftV / 16, ")") + } + }, [$inner]); + } + + if (isStacked) { + // Wrap in an additional `` for proper + // animation handling if stacked + $inner = h('g', {}, [$inner]); + } + + return h('svg', a({ + staticClass: 'b-icon bi', + class: (_class = {}, _defineProperty(_class, "text-".concat(props.variant), !!props.variant), _defineProperty(_class, "b-icon-animation-".concat(animation), !!animation), _class), + attrs: baseAttrs, + style: isStacked ? {} : { + fontSize: fontScale === 1 ? null : "".concat(fontScale * 100, "%") + } + }, // Merge in user supplied data + data, // If icon is stacked, null out some attrs + isStacked ? { + attrs: stackedAttrs + } : {}, // These cannot be overridden by users + { + attrs: { + xmlns: isStacked ? null : 'http://www.w3.org/2000/svg', + fill: 'currentColor' + } + }), [$inner]); + } + }); + + /** + * Icon component generator function + * + * @param {string} icon name (minus the leading `BIcon`) + * @param {string} raw `innerHTML` for SVG + * @return {VueComponent} + */ + + var makeIcon = function makeIcon(name, content) { + // For performance reason we pre-compute some values, so that + // they are not computed on each render of the icon component + var iconName = "BIcon".concat(pascalCase(name)); + var iconNameClass = "bi-".concat(kebabCase(name)); + var svgContent = trim(content || ''); // Return the icon component definition + + return /*#__PURE__*/Vue.extend({ + name: iconName, + functional: true, + props: _objectSpread2(_objectSpread2({}, commonIconProps), {}, { + stacked: { + type: Boolean, + default: false + } + }), + render: function render(h, _ref) { + var data = _ref.data, + props = _ref.props; + return h(BVIconBase, a(data, { + staticClass: iconNameClass, + props: _objectSpread2(_objectSpread2({}, props), {}, { + content: svgContent + }) + })); + } + }); + }; + + // --- BEGIN AUTO-GENERATED FILE --- + + var BIconBlank = /*#__PURE__*/makeIcon('Blank', ''); // --- Bootstrap Icons --- + + var BIconCalendar = /*#__PURE__*/makeIcon('Calendar', ''); // eslint-disable-next-line + + var BIconCalendarFill = /*#__PURE__*/makeIcon('CalendarFill', ''); // eslint-disable-next-line + + var BIconChevronBarLeft = /*#__PURE__*/makeIcon('ChevronBarLeft', ''); // eslint-disable-next-line + + var BIconChevronDoubleLeft = /*#__PURE__*/makeIcon('ChevronDoubleLeft', ''); // eslint-disable-next-line + + var BIconChevronDown = /*#__PURE__*/makeIcon('ChevronDown', ''); // eslint-disable-next-line + + var BIconChevronLeft = /*#__PURE__*/makeIcon('ChevronLeft', ''); // eslint-disable-next-line + + var BIconChevronUp = /*#__PURE__*/makeIcon('ChevronUp', ''); // eslint-disable-next-line + + var BIconCircleFill = /*#__PURE__*/makeIcon('CircleFill', ''); // eslint-disable-next-line + + var BIconClock = /*#__PURE__*/makeIcon('Clock', ''); // eslint-disable-next-line + + var BIconClockFill = /*#__PURE__*/makeIcon('ClockFill', ''); // eslint-disable-next-line + + var BIconDash = /*#__PURE__*/makeIcon('Dash', ''); // eslint-disable-next-line + + var BIconPersonFill = /*#__PURE__*/makeIcon('PersonFill', ''); // eslint-disable-next-line + + var BIconPlus = /*#__PURE__*/makeIcon('Plus', ''); // eslint-disable-next-line + + var BIconStar = /*#__PURE__*/makeIcon('Star', ''); // eslint-disable-next-line + + var BIconStarFill = /*#__PURE__*/makeIcon('StarFill', ''); // eslint-disable-next-line + + var BIconStarHalf = /*#__PURE__*/makeIcon('StarHalf', ''); // eslint-disable-next-line + + var BIconX = /*#__PURE__*/makeIcon('X', ''); // eslint-disable-next-line + // --- END AUTO-GENERATED FILE --- + + var RX_ICON_PREFIX = /^BIcon/; // Helper BIcon component + // Requires the requested icon component to be installed + + var BIcon = /*#__PURE__*/Vue.extend({ + name: 'BIcon', + functional: true, + props: _objectSpread2(_objectSpread2({ + icon: { + type: String, + default: null + } + }, commonIconProps), {}, { + stacked: { + type: Boolean, + default: false + } + }), + render: function render(h, _ref) { + var data = _ref.data, + props = _ref.props, + parent = _ref.parent; + var icon = pascalCase(trim(props.icon || '')).replace(RX_ICON_PREFIX, ''); + var iconName = "BIcon".concat(icon); // If parent context exists, we check to see if the icon has been registered + // Either locally in the parent component, or globally at the `$root` level + // If not registered, we render a blank icon + + var components = ((parent || {}).$options || {}).components; + var componentRefOrName = icon && components ? components[iconName] || BIconBlank : icon ? iconName : BIconBlank; + return h(componentRefOrName, a(data, { + props: _objectSpread2(_objectSpread2({}, props), {}, { + icon: null + }) + })); + } + }); + + var NAME$6 = 'BAvatar'; + var CLASS_NAME$1 = 'b-avatar'; + var RX_NUMBER = /^[0-9]*\.?[0-9]+$/; + var FONT_SIZE_SCALE = 0.4; + var BADGE_FONT_SIZE_SCALE = FONT_SIZE_SCALE * 0.7; + var DEFAULT_SIZES = { + sm: '1.5em', + md: '2.5em', + lg: '3.5em' + }; // --- Props --- + + var linkProps$1 = omit(props$1, ['active', 'event', 'routerTag']); + + var props$3 = _objectSpread2(_objectSpread2({ + src: { + type: String // default: null + + }, + text: { + type: String // default: null + + }, + icon: { + type: String // default: null + + }, + alt: { + type: String, + default: 'avatar' + }, + variant: { + type: String, + default: function _default() { + return getComponentConfig(NAME$6, 'variant'); + } + }, + size: { + type: [Number, String], + default: null + }, + square: { + type: Boolean, + default: false + }, + rounded: { + type: [Boolean, String], + default: false + }, + button: { + type: Boolean, + default: false + }, + buttonType: { + type: String, + default: 'button' + }, + badge: { + type: [Boolean, String], + default: false + }, + badgeVariant: { + type: String, + default: function _default() { + return getComponentConfig(NAME$6, 'badgeVariant'); + } + }, + badgeTop: { + type: Boolean, + default: false + }, + badgeLeft: { + type: Boolean, + default: false + }, + badgeOffset: { + type: String, + default: '0px' + } + }, linkProps$1), {}, { + ariaLabel: { + type: String // default: null + + } + }); // --- Utility methods --- + + + var computeSize = function computeSize(value) { + // Default to `md` size when `null`, or parse to + // number when value is a float-like string + value = isUndefinedOrNull(value) || value === '' ? 'md' : isString(value) && RX_NUMBER.test(value) ? toFloat(value, 0) : value; // Convert all numbers to pixel values + // Handle default sizes when `sm`, `md` or `lg` + // Or use value as is + + return isNumber(value) ? "".concat(value, "px") : DEFAULT_SIZES[value] || value; + }; // --- Main component --- + // @vue/component + + var BAvatar = /*#__PURE__*/Vue.extend({ + name: NAME$6, + mixins: [normalizeSlotMixin], + inject: { + bvAvatarGroup: { + default: null + } + }, + props: props$3, + data: function data() { + return { + localSrc: this.src || null + }; + }, + computed: { + computedSize: function computedSize() { + // Always use the avatar group size + return computeSize(this.bvAvatarGroup ? this.bvAvatarGroup.size : this.size); + }, + computedVariant: function computedVariant() { + // Prefer avatar-group variant if provided + var avatarGroup = this.bvAvatarGroup; + return avatarGroup && avatarGroup.variant ? avatarGroup.variant : this.variant; + }, + computedRounded: function computedRounded() { + var avatarGroup = this.bvAvatarGroup; + var square = avatarGroup && avatarGroup.square ? true : this.square; + var rounded = avatarGroup && avatarGroup.rounded ? avatarGroup.rounded : this.rounded; + return square ? '0' : rounded === '' ? true : rounded || 'circle'; + }, + fontStyle: function fontStyle() { + var fontSize = this.computedSize; + fontSize = fontSize ? "calc(".concat(fontSize, " * ").concat(FONT_SIZE_SCALE, ")") : null; + return fontSize ? { + fontSize: fontSize + } : {}; + }, + marginStyle: function marginStyle() { + var avatarGroup = this.bvAvatarGroup; + var overlapScale = avatarGroup ? avatarGroup.overlapScale : 0; + var size = this.computedSize; + var value = size && overlapScale ? "calc(".concat(size, " * -").concat(overlapScale, ")") : null; + return value ? { + marginLeft: value, + marginRight: value + } : {}; + }, + badgeStyle: function badgeStyle() { + var size = this.computedSize, + badgeTop = this.badgeTop, + badgeLeft = this.badgeLeft, + badgeOffset = this.badgeOffset; + var offset = badgeOffset || '0px'; + return { + fontSize: size ? "calc(".concat(size, " * ").concat(BADGE_FONT_SIZE_SCALE, " )") : null, + top: badgeTop ? offset : null, + bottom: badgeTop ? null : offset, + left: badgeLeft ? offset : null, + right: badgeLeft ? null : offset + }; + } + }, + watch: { + src: function src(newSrc, oldSrc) { + if (newSrc !== oldSrc) { + this.localSrc = newSrc || null; + } + } + }, + methods: { + onImgError: function onImgError(evt) { + this.localSrc = null; + this.$emit('img-error', evt); + }, + onClick: function onClick(evt) { + this.$emit('click', evt); + } + }, + render: function render(h) { + var _class2; + + var variant = this.computedVariant, + disabled = this.disabled, + rounded = this.computedRounded, + icon = this.icon, + src = this.localSrc, + text = this.text, + fontStyle = this.fontStyle, + marginStyle = this.marginStyle, + size = this.computedSize, + button = this.button, + type = this.buttonType, + badge = this.badge, + badgeVariant = this.badgeVariant, + badgeStyle = this.badgeStyle; + var link = !button && isLink(this); + var tag = button ? BButton : link ? BLink : 'span'; + var alt = this.alt || null; + var ariaLabel = this.ariaLabel || null; + var $content = null; + + if (this.hasNormalizedSlot('default')) { + // Default slot overrides props + $content = h('span', { + staticClass: 'b-avatar-custom' + }, [this.normalizeSlot('default')]); + } else if (src) { + $content = h('img', { + style: variant ? {} : { + width: '100%', + height: '100%' + }, + attrs: { + src: src, + alt: alt + }, + on: { + error: this.onImgError + } + }); + $content = h('span', { + staticClass: 'b-avatar-img' + }, [$content]); + } else if (icon) { + $content = h(BIcon, { + props: { + icon: icon + }, + attrs: { + 'aria-hidden': 'true', + alt: alt + } + }); + } else if (text) { + $content = h('span', { + staticClass: 'b-avatar-text', + style: fontStyle + }, [h('span', text)]); + } else { + // Fallback default avatar content + $content = h(BIconPersonFill, { + attrs: { + 'aria-hidden': 'true', + alt: alt + } + }); + } + + var $badge = h(); + var hasBadgeSlot = this.hasNormalizedSlot('badge'); + + if (badge || badge === '' || hasBadgeSlot) { + var badgeText = badge === true ? '' : badge; + $badge = h('span', { + staticClass: 'b-avatar-badge', + class: _defineProperty({}, "badge-".concat(badgeVariant), !!badgeVariant), + style: badgeStyle + }, [hasBadgeSlot ? this.normalizeSlot('badge') : badgeText]); + } + + var componentData = { + staticClass: CLASS_NAME$1, + class: (_class2 = {}, _defineProperty(_class2, "badge-".concat(variant), !button && variant), _defineProperty(_class2, "rounded", rounded === true), _defineProperty(_class2, "rounded-".concat(rounded), rounded && rounded !== true), _defineProperty(_class2, "disabled", disabled), _class2), + style: _objectSpread2({ + width: size, + height: size + }, marginStyle), + attrs: { + 'aria-label': ariaLabel || null + }, + props: button ? { + variant: variant, + disabled: disabled, + type: type + } : link ? pluckProps(linkProps$1, this) : {}, + on: button || link ? { + click: this.onClick + } : {} + }; + return h(tag, componentData, [$content, $badge]); + } + }); + + var NAME$7 = 'BAvatarGroup'; // --- Main component --- + // @vue/component + + var BAvatarGroup = /*#__PURE__*/Vue.extend({ + name: NAME$7, + mixins: [normalizeSlotMixin], + provide: function provide() { + return { + bvAvatarGroup: this + }; + }, + props: { + variant: { + // Child avatars will prefer this variant over their own + type: String, + default: null + }, + size: { + // Child avatars will always use this over their own size + type: String, + default: null + }, + overlap: { + type: [Number, String], + default: 0.3 + }, + square: { + // Child avatars will prefer this prop (if set) over their own + type: Boolean, + default: false + }, + rounded: { + // Child avatars will prefer this prop (if set) over their own + type: [Boolean, String], + default: false + }, + tag: { + type: String, + default: 'div' + } + }, + computed: { + computedSize: function computedSize() { + return computeSize(this.size); + }, + overlapScale: function overlapScale() { + return mathMin(mathMax(toFloat(this.overlap, 0), 0), 1) / 2; + }, + paddingStyle: function paddingStyle() { + var value = this.computedSize; + value = value ? "calc(".concat(value, " * ").concat(this.overlapScale, ")") : null; + return value ? { + paddingLeft: value, + paddingRight: value + } : {}; + } + }, + render: function render(h) { + var $inner = h('div', { + staticClass: 'b-avatar-group-inner', + style: this.paddingStyle + }, [this.normalizeSlot('default')]); + return h(this.tag, { + staticClass: 'b-avatar-group', + attrs: { + role: 'group' + } + }, [$inner]); + } + }); + + var AvatarPlugin = /*#__PURE__*/pluginFactory({ + components: { + BAvatar: BAvatar, + BAvatarGroup: BAvatarGroup + } + }); + + var NAME$8 = 'BBadge'; // --- Props --- + + var linkProps$2 = omit(props$1, ['event', 'routerTag']); + delete linkProps$2.href.default; + delete linkProps$2.to.default; + var props$4 = _objectSpread2({ + tag: { + type: String, + default: 'span' + }, + variant: { + type: String, + default: function _default() { + return getComponentConfig(NAME$8, 'variant'); + } + }, + pill: { + type: Boolean, + default: false + } + }, linkProps$2); // --- Main component --- + // @vue/component + + var BBadge = /*#__PURE__*/Vue.extend({ + name: NAME$8, + functional: true, + props: props$4, + render: function render(h, _ref) { + var props = _ref.props, + data = _ref.data, + children = _ref.children; + var link = isLink(props); + var tag = link ? BLink : props.tag; + var componentData = { + staticClass: 'badge', + class: [props.variant ? "badge-".concat(props.variant) : 'badge-secondary', { + 'badge-pill': props.pill, + active: props.active, + disabled: props.disabled + }], + props: link ? pluckProps(linkProps$2, props) : {} + }; + return h(tag, a(data, componentData), children); + } + }); + + var BadgePlugin = /*#__PURE__*/pluginFactory({ + components: { + BBadge: BBadge + } + }); + + var RX_HTML_TAGS = /(<([^>]+)>)/gi; // Removes anything that looks like an HTML tag from the supplied string + + var stripTags = function stripTags() { + var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + return String(text).replace(RX_HTML_TAGS, ''); + }; // Generate a `domProps` object for either `innerHTML`, `textContent` or an empty object + + var htmlOrText = function htmlOrText(innerHTML, textContent) { + return innerHTML ? { + innerHTML: innerHTML + } : textContent ? { + textContent: textContent + } : {}; + }; + + var props$5 = _objectSpread2({ + text: { + type: String, + default: null + }, + html: { + type: String, + default: null + }, + ariaCurrent: { + type: String, + default: 'location' + } + }, omit(props$1, ['event', 'routerTag'])); // --- Main component --- + // @vue/component + + var BBreadcrumbLink = /*#__PURE__*/Vue.extend({ + name: 'BBreadcrumbLink', + functional: true, + props: props$5, + render: function render(h, _ref) { + var suppliedProps = _ref.props, + data = _ref.data, + children = _ref.children; + var active = suppliedProps.active; + var tag = active ? 'span' : BLink; + var componentData = { + attrs: { + 'aria-current': active ? suppliedProps.ariaCurrent : null + }, + props: pluckProps(props$5, suppliedProps) + }; + + if (!children) { + componentData.domProps = htmlOrText(suppliedProps.html, suppliedProps.text); + } + + return h(tag, a(data, componentData), children); + } + }); + + var BBreadcrumbItem = /*#__PURE__*/Vue.extend({ + name: 'BBreadcrumbItem', + functional: true, + props: props$5, + render: function render(h, _ref) { + var props = _ref.props, + data = _ref.data, + children = _ref.children; + return h('li', a(data, { + staticClass: 'breadcrumb-item', + class: { + active: props.active + } + }), [h(BBreadcrumbLink, { + props: props + }, children)]); + } + }); + + var props$6 = { + items: { + type: Array, + default: null + } + }; // @vue/component + + var BBreadcrumb = /*#__PURE__*/Vue.extend({ + name: 'BBreadcrumb', + functional: true, + props: props$6, + render: function render(h, _ref) { + var props = _ref.props, + data = _ref.data, + children = _ref.children; + var childNodes = children; // Build child nodes from items if given. + + if (isArray(props.items)) { + var activeDefined = false; + childNodes = props.items.map(function (item, idx) { + if (!isObject(item)) { + item = { + text: toString$1(item) + }; + } // Copy the value here so we can normalize it. + + + var active = item.active; + + if (active) { + activeDefined = true; + } + + if (!active && !activeDefined) { + // Auto-detect active by position in list. + active = idx + 1 === props.items.length; + } + + return h(BBreadcrumbItem, { + props: _objectSpread2(_objectSpread2({}, item), {}, { + active: active + }) + }); + }); + } + + return h('ol', a(data, { + staticClass: 'breadcrumb' + }), childNodes); + } + }); + + var BreadcrumbPlugin = /*#__PURE__*/pluginFactory({ + components: { + BBreadcrumb: BBreadcrumb, + BBreadcrumbItem: BBreadcrumbItem, + BBreadcrumbLink: BBreadcrumbLink + } + }); + + var ButtonPlugin = /*#__PURE__*/pluginFactory({ + components: { + BButton: BButton, + BBtn: BButton, + BButtonClose: BButtonClose, + BBtnClose: BButtonClose + } + }); + + var NAME$9 = 'BButtonGroup'; + var props$7 = { + vertical: { + type: Boolean, + default: false + }, + size: { + type: String, + default: function _default() { + return getComponentConfig('BButton', 'size'); + } + }, + tag: { + type: String, + default: 'div' + }, + ariaRole: { + type: String, + default: 'group' + } + }; // @vue/component + + var BButtonGroup = /*#__PURE__*/Vue.extend({ + name: NAME$9, + functional: true, + props: props$7, + render: function render(h, _ref) { + var props = _ref.props, + data = _ref.data, + children = _ref.children; + return h(props.tag, a(data, { + class: _defineProperty({ + 'btn-group': !props.vertical, + 'btn-group-vertical': props.vertical + }, "btn-group-".concat(props.size), props.size), + attrs: { + role: props.ariaRole + } + }), children); + } + }); + + var ButtonGroupPlugin = /*#__PURE__*/pluginFactory({ + components: { + BButtonGroup: BButtonGroup, + BBtnGroup: BButtonGroup + } + }); + + var ITEM_SELECTOR = ['.btn:not(.disabled):not([disabled]):not(.dropdown-item)', '.form-control:not(.disabled):not([disabled])', 'select:not(.disabled):not([disabled])', 'input[type="checkbox"]:not(.disabled)', 'input[type="radio"]:not(.disabled)'].join(','); // @vue/component + + var BButtonToolbar = /*#__PURE__*/Vue.extend({ + name: 'BButtonToolbar', + mixins: [normalizeSlotMixin], + props: { + justify: { + type: Boolean, + default: false + }, + keyNav: { + type: Boolean, + default: false + } + }, + mounted: function mounted() { + if (this.keyNav) { + // Pre-set the tabindexes if the markup does not include tabindex="-1" on the toolbar items + this.getItems(); + } + }, + methods: { + onFocusin: function onFocusin(evt) { + if (evt.target === this.$el) { + evt.preventDefault(); + evt.stopPropagation(); + this.focusFirst(evt); + } + }, + stop: function stop(evt) { + evt.preventDefault(); + evt.stopPropagation(); + }, + onKeydown: function onKeydown(evt) { + if (!this.keyNav) { + /* istanbul ignore next: should never happen */ + return; + } + + var key = evt.keyCode; + var shift = evt.shiftKey; + + if (key === KEY_CODES.UP || key === KEY_CODES.LEFT) { + this.stop(evt); + shift ? this.focusFirst(evt) : this.focusPrev(evt); + } else if (key === KEY_CODES.DOWN || key === KEY_CODES.RIGHT) { + this.stop(evt); + shift ? this.focusLast(evt) : this.focusNext(evt); + } + }, + focusFirst: function focusFirst() { + var items = this.getItems(); + attemptFocus(items[0]); + }, + focusPrev: function focusPrev(evt) { + var items = this.getItems(); + var index = items.indexOf(evt.target); + + if (index > -1) { + items = items.slice(0, index).reverse(); + attemptFocus(items[0]); + } + }, + focusNext: function focusNext(evt) { + var items = this.getItems(); + var index = items.indexOf(evt.target); + + if (index > -1) { + items = items.slice(index + 1); + attemptFocus(items[0]); + } + }, + focusLast: function focusLast() { + var items = this.getItems().reverse(); + attemptFocus(items[0]); + }, + getItems: function getItems() { + var items = selectAll(ITEM_SELECTOR, this.$el); + items.forEach(function (item) { + // Ensure tabfocus is -1 on any new elements + item.tabIndex = -1; + }); + return items.filter(function (el) { + return isVisible(el); + }); + } + }, + render: function render(h) { + return h('div', { + staticClass: 'btn-toolbar', + class: { + 'justify-content-between': this.justify + }, + attrs: { + role: 'toolbar', + tabindex: this.keyNav ? '0' : null + }, + on: this.keyNav ? { + focusin: this.onFocusin, + keydown: this.onKeydown + } : {} + }, [this.normalizeSlot('default')]); + } + }); + + var ButtonToolbarPlugin = /*#__PURE__*/pluginFactory({ + components: { + BButtonToolbar: BButtonToolbar, + BBtnToolbar: BButtonToolbar + } + }); + + // Handles when arrays are "sparse" (array.every(...) doesn't handle sparse) + + var compareArrays = function compareArrays(a, b) { + if (a.length !== b.length) { + return false; + } + + var equal = true; + + for (var i = 0; equal && i < a.length; i++) { + equal = looseEqual(a[i], b[i]); + } + + return equal; + }; + /** + * Check if two values are loosely equal - that is, + * if they are plain objects, do they have the same shape? + * Returns boolean true or false + */ + + + var looseEqual = function looseEqual(a, b) { + if (a === b) { + return true; + } + + var aValidType = isDate(a); + var bValidType = isDate(b); + + if (aValidType || bValidType) { + return aValidType && bValidType ? a.getTime() === b.getTime() : false; + } + + aValidType = isArray(a); + bValidType = isArray(b); + + if (aValidType || bValidType) { + return aValidType && bValidType ? compareArrays(a, b) : false; + } + + aValidType = isObject(a); + bValidType = isObject(b); + + if (aValidType || bValidType) { + /* istanbul ignore if: this if will probably never be called */ + if (!aValidType || !bValidType) { + return false; + } + + var aKeysCount = keys(a).length; + var bKeysCount = keys(b).length; + + if (aKeysCount !== bKeysCount) { + return false; + } + + for (var key in a) { + // eslint-disable-next-line no-prototype-builtins + var aHasKey = a.hasOwnProperty(key); // eslint-disable-next-line no-prototype-builtins + + var bHasKey = b.hasOwnProperty(key); + + if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) { + return false; + } + } + } + + return String(a) === String(b); + }; + + // Loose YYYY-MM-DD matching, ignores any appended time inforation + // Matches '1999-12-20', '1999-1-1', '1999-01-20T22:51:49.118Z', '1999-01-02 13:00:00' + + var RX_DATE = /^\d+-\d\d?-\d\d?(?:\s|T|$)/; // Used to split off the date parts of the YYYY-MM-DD string + + var RX_DATE_SPLIT = /-|\s|T/; // --- Date utility methods --- + // Create or clone a date (`new Date(...)` shortcut) + + var createDate = function createDate() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _construct(Date, args); + }; // Parse a date sting, or Date object, into a Date object (with no time information) + + var parseYMD = function parseYMD(date) { + if (isString(date) && RX_DATE.test(date.trim())) { + var _date$split$map = date.split(RX_DATE_SPLIT).map(function (v) { + return toInteger(v, 1); + }), + _date$split$map2 = _slicedToArray(_date$split$map, 3), + year = _date$split$map2[0], + month = _date$split$map2[1], + day = _date$split$map2[2]; + + return createDate(year, month - 1, day); + } else if (isDate(date)) { + return createDate(date.getFullYear(), date.getMonth(), date.getDate()); + } + + return null; + }; // Format a date object as `YYYY-MM-DD` format + + var formatYMD = function formatYMD(date) { + date = parseYMD(date); + + if (!date) { + return null; + } + + var year = date.getFullYear(); + var month = "0".concat(date.getMonth() + 1).slice(-2); + var day = "0".concat(date.getDate()).slice(-2); + return "".concat(year, "-").concat(month, "-").concat(day); + }; // Given a locale (or locales), resolve the browser available locale + + var resolveLocale = function resolveLocale(locales) + /* istanbul ignore next */ + { + var calendar = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'gregory'; + locales = concat(locales).filter(identity); + var fmt = new Intl.DateTimeFormat(locales, { + calendar: calendar + }); + return fmt.resolvedOptions().locale; + }; // Create a `Intl.DateTimeFormat` formatter function + + var createDateFormatter = function createDateFormatter(locale, options) + /* istanbul ignore next */ + { + var dtf = new Intl.DateTimeFormat(locale, options); + return dtf.format; + }; // Determine if two dates are the same date (ignoring time portion) + + var datesEqual = function datesEqual(date1, date2) { + // Returns true of the date portion of two date objects are equal + // We don't compare the time portion + return formatYMD(date1) === formatYMD(date2); + }; // --- Date "math" utility methods (for BCalendar component mainly) --- + + var firstDateOfMonth = function firstDateOfMonth(date) { + date = createDate(date); + date.setDate(1); + return date; + }; + var lastDateOfMonth = function lastDateOfMonth(date) { + date = createDate(date); + date.setMonth(date.getMonth() + 1); + date.setDate(0); + return date; + }; + var addYears = function addYears(date, numberOfYears) { + date = createDate(date); + var month = date.getMonth(); + date.setFullYear(date.getFullYear() + numberOfYears); // Handle Feb 29th for leap years + + if (date.getMonth() !== month) { + date.setDate(0); + } + + return date; + }; + var oneMonthAgo = function oneMonthAgo(date) { + date = createDate(date); + var month = date.getMonth(); + date.setMonth(month - 1); // Handle when days in month are different + + if (date.getMonth() === month) { + date.setDate(0); + } + + return date; + }; + var oneMonthAhead = function oneMonthAhead(date) { + date = createDate(date); + var month = date.getMonth(); + date.setMonth(month + 1); // Handle when days in month are different + + if (date.getMonth() === (month + 2) % 12) { + date.setDate(0); + } + + return date; + }; + var oneYearAgo = function oneYearAgo(date) { + return addYears(date, -1); + }; + var oneYearAhead = function oneYearAhead(date) { + return addYears(date, 1); + }; + var oneDecadeAgo = function oneDecadeAgo(date) { + return addYears(date, -10); + }; + var oneDecadeAhead = function oneDecadeAhead(date) { + return addYears(date, 10); + }; // Helper function to constrain a date between two values + // Always returns a `Date` object or `null` if no date passed + + var constrainDate = function constrainDate(date) { + var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + // Ensure values are `Date` objects (or `null`) + date = parseYMD(date); + min = parseYMD(min) || date; + max = parseYMD(max) || date; // Return a new `Date` object (or `null`) + + return date ? date < min ? min : date > max ? max : date : null; + }; + + // Localization utilities + + var RTL_LANGS = ['ar', 'az', 'ckb', 'fa', 'he', 'ks', 'lrc', 'mzn', 'ps', 'sd', 'te', 'ug', 'ur', 'yi'].map(function (locale) { + return locale.toLowerCase(); + }); // Precompile RegExpr + + var RX_STRIP_MODS = /-u-.+/; // Returns true if the locale is RTL + + var isLocaleRTL = function isLocaleRTL(locale) { + // Determines if the locale is RTL (only single locale supported) + var parts = toString$1(locale).toLowerCase().replace(RX_STRIP_MODS, '').split('-'); + var locale1 = parts.slice(0, 2).join('-'); + var locale2 = parts[0]; + return arrayIncludes(RTL_LANGS, locale1) || arrayIncludes(RTL_LANGS, locale2); + }; + + // SSR safe client-side ID attribute generation + // ID's can only be generated client-side, after mount + // `this._uid` is not synched between server and client + // @vue/component + var idMixin = { + props: { + id: { + type: String // default: null + + } + }, + data: function data() { + return { + localId_: null + }; + }, + computed: { + safeId: function safeId() { + // Computed property that returns a dynamic function for creating the ID + // Reacts to changes in both `.id` and `.localId_` and regenerates a new function + var id = this.id || this.localId_; // We return a function that accepts an optional suffix string + // So this computed prop looks and works like a method + // but benefits from Vue's computed prop caching + + var fn = function fn(suffix) { + if (!id) { + return null; + } + + suffix = String(suffix || '').replace(/\s+/g, '_'); + return suffix ? id + '_' + suffix : id; + }; + + return fn; + } + }, + mounted: function mounted() { + var _this = this; + + // `mounted()` only occurs client-side + this.$nextTick(function () { + // Update DOM with auto-generated ID after mount + // to prevent SSR hydration errors + _this.localId_ = "__BVID__".concat(_this._uid); + }); + } + }; + + var NAME$a = 'BCalendar'; // Key Codes + + var UP = KEY_CODES.UP, + DOWN = KEY_CODES.DOWN, + LEFT = KEY_CODES.LEFT, + RIGHT = KEY_CODES.RIGHT, + PAGEUP = KEY_CODES.PAGEUP, + PAGEDOWN = KEY_CODES.PAGEDOWN, + HOME = KEY_CODES.HOME, + END = KEY_CODES.END, + ENTER = KEY_CODES.ENTER, + SPACE = KEY_CODES.SPACE; // Common calendar option value strings + + var STR_GREGORY = 'gregory'; + var STR_NUMERIC = 'numeric'; + var STR_2_DIGIT = '2-digit'; + var STR_LONG = 'long'; + var STR_SHORT = 'short'; + var STR_NARROW = 'narrow'; // --- BCalendar component --- + // @vue/component + + var BCalendar = Vue.extend({ + name: NAME$a, + // Mixin order is important! + mixins: [attrsMixin, idMixin, normalizeSlotMixin], + model: { + // Even though this is the default that Vue assumes, we need + // to add it for the docs to reflect that this is the model + // And also for some validation libraries to work + prop: 'value', + event: 'input' + }, + props: { + value: { + type: [String, Date] // default: null + + }, + valueAsDate: { + // Always return the `v-model` value as a date object + type: Boolean, + default: false + }, + initialDate: { + // This specifies the calendar year/month/day that will be shown when + // first opening the datepicker if no v-model value is provided + // Default is the current date (or `min`/`max`) + type: [String, Date] // default: null + + }, + disabled: { + type: Boolean, + default: false + }, + readonly: { + type: Boolean, + default: false + }, + min: { + type: [String, Date] // default: null + + }, + max: { + type: [String, Date] // default: null + + }, + dateDisabledFn: { + type: Function // default: null + + }, + startWeekday: { + // `0` (Sunday), `1` (Monday), ... `6` (Saturday) + // Day of week to start calendar on + type: [Number, String], + default: 0 + }, + locale: { + // Locale(s) to use + // Default is to use page/browser default setting + type: [String, Array] // default: null + + }, + direction: { + // 'ltr', 'rtl', or `null` (for auto detect) + type: String // default: null + + }, + selectedVariant: { + // Variant color to use for the selected date + type: String, + default: 'primary' + }, + todayVariant: { + // Variant color to use for today's date (defaults to `variant`) + type: String // default: null + + }, + noHighlightToday: { + // Disable highlighting today's date + type: Boolean, + default: false + }, + dateInfoFn: { + // Function to set a class of (classes) on the date cell + // if passed a string or an array + // TODO: + // If the function returns an object, look for class prop for classes, + // and other props for handling events/details/descriptions + type: Function // default: null + + }, + width: { + // Has no effect if prop `block` is set + type: String, + default: '270px' + }, + block: { + // Makes calendar the full width of its parent container + type: Boolean, + default: false + }, + hideHeader: { + // When true makes the selected date header `sr-only` + type: Boolean, + default: false + }, + showDecadeNav: { + // When `true` enables the decade navigation buttons + type: Boolean, + default: false + }, + hidden: { + // When `true`, renders a comment node, but keeps the component instance active + // Mainly for , so that we can get the component's value and locale + // But we might just use separate date formatters, using the resolved locale + // (adjusted for the gregorian calendar) + type: Boolean, + default: false + }, + ariaControls: { + type: String // default: null + + }, + roleDescription: { + type: String // default: null + + }, + // Labels for buttons and keyboard shortcuts + labelPrevDecade: { + type: String, + default: function _default() { + return getComponentConfig(NAME$a, 'labelPrevDecade'); + } + }, + labelPrevYear: { + type: String, + default: function _default() { + return getComponentConfig(NAME$a, 'labelPrevYear'); + } + }, + labelPrevMonth: { + type: String, + default: function _default() { + return getComponentConfig(NAME$a, 'labelPrevMonth'); + } + }, + labelCurrentMonth: { + type: String, + default: function _default() { + return getComponentConfig(NAME$a, 'labelCurrentMonth'); + } + }, + labelNextMonth: { + type: String, + default: function _default() { + return getComponentConfig(NAME$a, 'labelNextMonth'); + } + }, + labelNextYear: { + type: String, + default: function _default() { + return getComponentConfig(NAME$a, 'labelNextYear'); + } + }, + labelNextDecade: { + type: String, + default: function _default() { + return getComponentConfig(NAME$a, 'labelNextDecade'); + } + }, + labelToday: { + type: String, + default: function _default() { + return getComponentConfig(NAME$a, 'labelToday'); + } + }, + labelSelected: { + type: String, + default: function _default() { + return getComponentConfig(NAME$a, 'labelSelected'); + } + }, + labelNoDateSelected: { + type: String, + default: function _default() { + return getComponentConfig(NAME$a, 'labelNoDateSelected'); + } + }, + labelCalendar: { + type: String, + default: function _default() { + return getComponentConfig(NAME$a, 'labelCalendar'); + } + }, + labelNav: { + type: String, + default: function _default() { + return getComponentConfig(NAME$a, 'labelNav'); + } + }, + labelHelp: { + type: String, + default: function _default() { + return getComponentConfig(NAME$a, 'labelHelp'); + } + }, + dateFormatOptions: { + // `Intl.DateTimeFormat` object + // Note: This value is *not* to be placed in the global config + type: Object, + default: function _default() { + return { + year: STR_NUMERIC, + month: STR_LONG, + day: STR_NUMERIC, + weekday: STR_LONG + }; + } + }, + weekdayHeaderFormat: { + // Format of the weekday names at the top of the calendar + // Note: This value is *not* to be placed in the global config + type: String, + // `short` is typically a 3 letter abbreviation, + // `narrow` is typically a single letter + // `long` is the full week day name + // Although some locales may override this (i.e `ar`, etc) + default: STR_SHORT, + validator: function validator(value) { + return arrayIncludes([STR_LONG, STR_SHORT, STR_NARROW], value); + } + } + }, + data: function data() { + var selected = formatYMD(this.value) || ''; + return { + // Selected date + selectedYMD: selected, + // Date in calendar grid that has `tabindex` of `0` + activeYMD: selected || formatYMD(constrainDate(this.initialDate || this.getToday()), this.min, this.max), + // Will be true if the calendar grid has/contains focus + gridHasFocus: false, + // Flag to enable the `aria-live` region(s) after mount + // to prevent screen reader "outbursts" when mounting + isLive: false + }; + }, + computed: { + valueId: function valueId() { + return this.safeId(); + }, + widgetId: function widgetId() { + return this.safeId('_calendar-wrapper_'); + }, + navId: function navId() { + return this.safeId('_calendar-nav_'); + }, + gridId: function gridId() { + return this.safeId('_calendar-grid_'); + }, + gridCaptionId: function gridCaptionId() { + return this.safeId('_calendar-grid-caption_'); + }, + gridHelpId: function gridHelpId() { + return this.safeId('_calendar-grid-help_'); + }, + activeId: function activeId() { + return this.activeYMD ? this.safeId("_cell-".concat(this.activeYMD, "_")) : null; + }, + // TODO: Use computed props to convert `YYYY-MM-DD` to `Date` object + selectedDate: function selectedDate() { + // Selected as a `Date` object + return parseYMD(this.selectedYMD); + }, + activeDate: function activeDate() { + // Active as a `Date` object + return parseYMD(this.activeYMD); + }, + computedMin: function computedMin() { + return parseYMD(this.min); + }, + computedMax: function computedMax() { + return parseYMD(this.max); + }, + computedWeekStarts: function computedWeekStarts() { + // `startWeekday` is a prop (constrained to `0` through `6`) + return mathMax(toInteger(this.startWeekday, 0), 0) % 7; + }, + computedLocale: function computedLocale() { + // Returns the resolved locale used by the calendar + return resolveLocale(concat(this.locale).filter(identity), STR_GREGORY); + }, + calendarLocale: function calendarLocale() { + // This locale enforces the gregorian calendar (for use in formatter functions) + // Needed because IE 11 resolves `ar-IR` as islamic-civil calendar + // and IE 11 (and some other browsers) do not support the `calendar` option + // And we currently only support the gregorian calendar + var fmt = new Intl.DateTimeFormat(this.computedLocale, { + calendar: STR_GREGORY + }); + var calendar = fmt.resolvedOptions().calendar; + var locale = fmt.resolvedOptions().locale; + /* istanbul ignore if: mainly for IE 11 and a few other browsers, hard to test in JSDOM */ + + if (calendar !== STR_GREGORY) { + // Ensure the locale requests the gregorian calendar + // Mainly for IE 11, and currently we can't handle non-gregorian calendars + // TODO: Should we always return this value? + locale = locale.replace(/-u-.+$/i, '').concat('-u-ca-gregory'); + } + + return locale; + }, + calendarYear: function calendarYear() { + return this.activeDate.getFullYear(); + }, + calendarMonth: function calendarMonth() { + return this.activeDate.getMonth(); + }, + calendarFirstDay: function calendarFirstDay() { + return createDate(this.calendarYear, this.calendarMonth, 1); + }, + calendarDaysInMonth: function calendarDaysInMonth() { + // We create a new date as to not mutate the original + var date = createDate(this.calendarFirstDay); + date.setMonth(date.getMonth() + 1, 0); + return date.getDate(); + }, + computedVariant: function computedVariant() { + return "btn-".concat(this.selectedVariant || 'primary'); + }, + computedTodayVariant: function computedTodayVariant() { + return "btn-outline-".concat(this.todayVariant || this.selectedVariant || 'primary'); + }, + isRTL: function isRTL() { + // `true` if the language requested is RTL + var dir = toString$1(this.direction).toLowerCase(); + + if (dir === 'rtl') { + /* istanbul ignore next */ + return true; + } else if (dir === 'ltr') { + /* istanbul ignore next */ + return false; + } + + return isLocaleRTL(this.computedLocale); + }, + context: function context() { + var selectedYMD = this.selectedYMD; + var selectedDate = parseYMD(selectedYMD); + var activeYMD = this.activeYMD; + var activeDate = parseYMD(activeYMD); + return { + // The current value of the `v-model` + selectedYMD: selectedYMD, + selectedDate: selectedDate, + selectedFormatted: selectedDate ? this.formatDateString(selectedDate) : this.labelNoDateSelected, + // Which date cell is considered active due to navigation + activeYMD: activeYMD, + activeDate: activeDate, + activeFormatted: activeDate ? this.formatDateString(activeDate) : '', + // `true` if the date is disabled (when using keyboard navigation) + disabled: this.dateDisabled(activeDate), + // Locales used in formatting dates + locale: this.computedLocale, + calendarLocale: this.calendarLocale, + rtl: this.isRTL + }; + }, + // Computed props that return a function reference + dateOutOfRange: function dateOutOfRange() { + // Check whether a date is within the min/max range + // returns a new function ref if the pops change + // We do this as we need to trigger the calendar computed prop + // to update when these props update + var min = this.computedMin; + var max = this.computedMax; + return function (date) { + // Handle both `YYYY-MM-DD` and `Date` objects + date = parseYMD(date); + return min && date < min || max && date > max; + }; + }, + dateDisabled: function dateDisabled() { + // Returns a function for validating if a date is within range + // We grab this variables first to ensure a new function ref + // is generated when the props value changes + // We do this as we need to trigger the calendar computed prop + // to update when these props update + var rangeFn = this.dateOutOfRange; + var disabledFn = isFunction(this.dateDisabledFn) ? this.dateDisabledFn : function () { + return false; + }; // Return the function ref + + return function (date) { + // Handle both `YYYY-MM-DD` and `Date` objects + date = parseYMD(date); + var ymd = formatYMD(date); + return !!(rangeFn(date) || disabledFn(ymd, date)); + }; + }, + // Computed props that return date formatter functions + formatDateString: function formatDateString() { + // Returns a date formatter function + return createDateFormatter(this.calendarLocale, _objectSpread2(_objectSpread2({ + // Ensure we have year, month, day shown for screen readers/ARIA + // If users really want to leave one of these out, they can + // pass `undefined` for the property value + year: STR_NUMERIC, + month: STR_2_DIGIT, + day: STR_2_DIGIT + }, this.dateFormatOptions), {}, { + // Ensure hours/minutes/seconds are not shown + // As we do not support the time portion (yet) + hour: undefined, + minute: undefined, + second: undefined, + // Ensure calendar is gregorian + calendar: STR_GREGORY + })); + }, + formatYearMonth: function formatYearMonth() { + // Returns a date formatter function + return createDateFormatter(this.calendarLocale, { + year: STR_NUMERIC, + month: STR_LONG, + calendar: STR_GREGORY + }); + }, + formatWeekdayName: function formatWeekdayName() { + // Long weekday name for weekday header aria-label + return createDateFormatter(this.calendarLocale, { + weekday: STR_LONG, + calendar: STR_GREGORY + }); + }, + formatWeekdayNameShort: function formatWeekdayNameShort() { + // Weekday header cell format + // defaults to 'short' 3 letter days, where possible + return createDateFormatter(this.calendarLocale, { + weekday: this.weekdayHeaderFormat || STR_SHORT, + calendar: STR_GREGORY + }); + }, + formatDay: function formatDay() { + // Calendar grid day number formatter + // We don't use DateTimeFormatter here as it can place extra + // character(s) after the number (i.e the `zh` locale) + var nf = new Intl.NumberFormat([this.computedLocale], { + style: 'decimal', + minimumIntegerDigits: 1, + minimumFractionDigits: 0, + maximumFractionDigits: 0, + notation: 'standard' + }); // Return a formatter function instance + + return function (date) { + return nf.format(date.getDate()); + }; + }, + // Disabled states for the nav buttons + prevDecadeDisabled: function prevDecadeDisabled() { + var min = this.computedMin; + return this.disabled || min && lastDateOfMonth(oneDecadeAgo(this.activeDate)) < min; + }, + prevYearDisabled: function prevYearDisabled() { + var min = this.computedMin; + return this.disabled || min && lastDateOfMonth(oneYearAgo(this.activeDate)) < min; + }, + prevMonthDisabled: function prevMonthDisabled() { + var min = this.computedMin; + return this.disabled || min && lastDateOfMonth(oneMonthAgo(this.activeDate)) < min; + }, + thisMonthDisabled: function thisMonthDisabled() { + // TODO: We could/should check if today is out of range + return this.disabled; + }, + nextMonthDisabled: function nextMonthDisabled() { + var max = this.computedMax; + return this.disabled || max && firstDateOfMonth(oneMonthAhead(this.activeDate)) > max; + }, + nextYearDisabled: function nextYearDisabled() { + var max = this.computedMax; + return this.disabled || max && firstDateOfMonth(oneYearAhead(this.activeDate)) > max; + }, + nextDecadeDisabled: function nextDecadeDisabled() { + var max = this.computedMax; + return this.disabled || max && firstDateOfMonth(oneDecadeAhead(this.activeDate)) > max; + }, + // Calendar dates generation + calendar: function calendar() { + var matrix = []; + var firstDay = this.calendarFirstDay; + var calendarYear = firstDay.getFullYear(); + var calendarMonth = firstDay.getMonth(); + var daysInMonth = this.calendarDaysInMonth; + var startIndex = firstDay.getDay(); // `0`..`6` + + var weekOffset = (this.computedWeekStarts > startIndex ? 7 : 0) - this.computedWeekStarts; // TODO: Change `dateInfoFn` to handle events and notes as well as classes + + var dateInfoFn = isFunction(this.dateInfoFn) ? this.dateInfoFn : function () { + return {}; + }; // Build the calendar matrix + + var currentDay = 0 - weekOffset - startIndex; + + for (var week = 0; week < 6 && currentDay < daysInMonth; week++) { + // For each week + matrix[week] = []; // The following could be a map function + + for (var j = 0; j < 7; j++) { + // For each day in week + currentDay++; + var date = createDate(calendarYear, calendarMonth, currentDay); + var month = date.getMonth(); + var dayYMD = formatYMD(date); + var dayDisabled = this.dateDisabled(date); // TODO: This could be a normalizer method + + var dateInfo = dateInfoFn(dayYMD, parseYMD(dayYMD)); + dateInfo = isString(dateInfo) || isArray(dateInfo) ? + /* istanbul ignore next */ + { + class: dateInfo + } : isPlainObject(dateInfo) ? _objectSpread2({ + class: '' + }, dateInfo) : + /* istanbul ignore next */ + { + class: '' + }; + matrix[week].push({ + ymd: dayYMD, + // Cell content + day: this.formatDay(date), + label: this.formatDateString(date), + // Flags for styling + isThisMonth: month === calendarMonth, + isDisabled: dayDisabled, + // TODO: Handle other dateInfo properties such as notes/events + info: dateInfo + }); + } + } + + return matrix; + }, + calendarHeadings: function calendarHeadings() { + var _this = this; + + return this.calendar[0].map(function (d) { + return { + text: _this.formatWeekdayNameShort(parseYMD(d.ymd)), + label: _this.formatWeekdayName(parseYMD(d.ymd)) + }; + }); + } + }, + watch: { + value: function value(newVal, oldVal) { + var selected = formatYMD(newVal) || ''; + var old = formatYMD(oldVal) || ''; + + if (!datesEqual(selected, old)) { + this.activeYMD = selected || this.activeYMD; + this.selectedYMD = selected; + } + }, + selectedYMD: function selectedYMD(newYMD, oldYMD) { + // TODO: + // Should we compare to `formatYMD(this.value)` and emit + // only if they are different? + if (newYMD !== oldYMD) { + this.$emit('input', this.valueAsDate ? parseYMD(newYMD) || null : newYMD || ''); + } + }, + context: function context(newVal, oldVal) { + if (!looseEqual(newVal, oldVal)) { + this.$emit('context', newVal); + } + }, + hidden: function hidden(newVal) { + // Reset the active focused day when hidden + this.activeYMD = this.selectedYMD || formatYMD(this.value || this.constrainDate(this.initialDate || this.getToday())); // Enable/disable the live regions + + this.setLive(!newVal); + } + }, + created: function created() { + var _this2 = this; + + this.$nextTick(function () { + _this2.$emit('context', _this2.context); + }); + }, + mounted: function mounted() { + this.setLive(true); + }, + + /* istanbul ignore next */ + activated: function activated() + /* istanbul ignore next */ + { + this.setLive(true); + }, + + /* istanbul ignore next */ + deactivated: function deactivated() + /* istanbul ignore next */ + { + this.setLive(false); + }, + beforeDestroy: function beforeDestroy() { + this.setLive(false); + }, + methods: { + // Public method(s) + focus: function focus() { + if (!this.disabled) { + attemptFocus(this.$refs.grid); + } + }, + blur: function blur() { + if (!this.disabled) { + attemptBlur(this.$refs.grid); + } + }, + // Private methods + setLive: function setLive(on) { + var _this3 = this; + + if (on) { + this.$nextTick(function () { + requestAF(function () { + _this3.isLive = true; + }); + }); + } else { + this.isLive = false; + } + }, + getToday: function getToday() { + return parseYMD(createDate()); + }, + constrainDate: function constrainDate$1(date) { + // Constrains a date between min and max + // returns a new `Date` object instance + return constrainDate(date, this.computedMin, this.computedMax); + }, + emitSelected: function emitSelected(date) { + var _this4 = this; + + // Performed in a `$nextTick()` to (probably) ensure + // the input event has emitted first + this.$nextTick(function () { + _this4.$emit('selected', formatYMD(date) || '', parseYMD(date) || null); + }); + }, + // Event handlers + setGridFocusFlag: function setGridFocusFlag(evt) { + // Sets the gridHasFocus flag to make date "button" look focused + this.gridHasFocus = !this.disabled && evt.type === 'focus'; + }, + onKeydownWrapper: function onKeydownWrapper(evt) { + // Calendar keyboard navigation + // Handles PAGEUP/PAGEDOWN/END/HOME/LEFT/UP/RIGHT/DOWN + // Focuses grid after updating + var altKey = evt.altKey, + ctrlKey = evt.ctrlKey, + keyCode = evt.keyCode; + + if (!arrayIncludes([PAGEUP, PAGEDOWN, END, HOME, LEFT, UP, RIGHT, DOWN], keyCode)) { + /* istanbul ignore next */ + return; + } + + evt.preventDefault(); + evt.stopPropagation(); + var activeDate = createDate(this.activeDate); + var checkDate = createDate(this.activeDate); + var day = activeDate.getDate(); + var constrainedToday = this.constrainDate(this.getToday()); + var isRTL = this.isRTL; + + if (keyCode === PAGEUP) { + // PAGEUP - Previous month/year + activeDate = (altKey ? ctrlKey ? oneDecadeAgo : oneYearAgo : oneMonthAgo)(activeDate); // We check the first day of month to be in rage + + checkDate = createDate(activeDate); + checkDate.setDate(1); + } else if (keyCode === PAGEDOWN) { + // PAGEDOWN - Next month/year + activeDate = (altKey ? ctrlKey ? oneDecadeAhead : oneYearAhead : oneMonthAhead)(activeDate); // We check the last day of month to be in rage + + checkDate = createDate(activeDate); + checkDate.setMonth(checkDate.getMonth() + 1); + checkDate.setDate(0); + } else if (keyCode === LEFT) { + // LEFT - Previous day (or next day for RTL) + activeDate.setDate(day + (isRTL ? 1 : -1)); + activeDate = this.constrainDate(activeDate); + checkDate = activeDate; + } else if (keyCode === RIGHT) { + // RIGHT - Next day (or previous day for RTL) + activeDate.setDate(day + (isRTL ? -1 : 1)); + activeDate = this.constrainDate(activeDate); + checkDate = activeDate; + } else if (keyCode === UP) { + // UP - Previous week + activeDate.setDate(day - 7); + activeDate = this.constrainDate(activeDate); + checkDate = activeDate; + } else if (keyCode === DOWN) { + // DOWN - Next week + activeDate.setDate(day + 7); + activeDate = this.constrainDate(activeDate); + checkDate = activeDate; + } else if (keyCode === HOME) { + // HOME - Today + activeDate = constrainedToday; + checkDate = activeDate; + } else if (keyCode === END) { + // END - Selected date, or today if no selected date + activeDate = parseYMD(this.selectedDate) || constrainedToday; + checkDate = activeDate; + } + + if (!this.dateOutOfRange(checkDate) && !datesEqual(activeDate, this.activeDate)) { + // We only jump to date if within min/max + // We don't check for individual disabled dates though (via user function) + this.activeYMD = formatYMD(activeDate); + } // Ensure grid is focused + + + this.focus(); + }, + onKeydownGrid: function onKeydownGrid(evt) { + // Pressing enter/space on grid to select active date + var keyCode = evt.keyCode; + var activeDate = this.activeDate; + + if (keyCode === ENTER || keyCode === SPACE) { + evt.preventDefault(); + evt.stopPropagation(); + + if (!this.disabled && !this.readonly && !this.dateDisabled(activeDate)) { + this.selectedYMD = formatYMD(activeDate); + this.emitSelected(activeDate); + } // Ensure grid is focused + + + this.focus(); + } + }, + onClickDay: function onClickDay(day) { + // Clicking on a date "button" to select it + var selectedDate = this.selectedDate; + var activeDate = this.activeDate; + var clickedDate = parseYMD(day.ymd); + + if (!this.disabled && !day.isDisabled && !this.dateDisabled(clickedDate)) { + if (!this.readonly) { + // If readonly mode, we don't set the selected date, just the active date + // If the clicked date is equal to the already selected date, we don't update the model + this.selectedYMD = formatYMD(datesEqual(clickedDate, selectedDate) ? selectedDate : clickedDate); + this.emitSelected(clickedDate); + } + + this.activeYMD = formatYMD(datesEqual(clickedDate, activeDate) ? activeDate : createDate(clickedDate)); // Ensure grid is focused + + this.focus(); + } + }, + gotoPrevDecade: function gotoPrevDecade() { + this.activeYMD = formatYMD(this.constrainDate(oneDecadeAgo(this.activeDate))); + }, + gotoPrevYear: function gotoPrevYear() { + this.activeYMD = formatYMD(this.constrainDate(oneYearAgo(this.activeDate))); + }, + gotoPrevMonth: function gotoPrevMonth() { + this.activeYMD = formatYMD(this.constrainDate(oneMonthAgo(this.activeDate))); + }, + gotoCurrentMonth: function gotoCurrentMonth() { + // TODO: Maybe this goto date should be configurable? + this.activeYMD = formatYMD(this.constrainDate(this.getToday())); + }, + gotoNextMonth: function gotoNextMonth() { + this.activeYMD = formatYMD(this.constrainDate(oneMonthAhead(this.activeDate))); + }, + gotoNextYear: function gotoNextYear() { + this.activeYMD = formatYMD(this.constrainDate(oneYearAhead(this.activeDate))); + }, + gotoNextDecade: function gotoNextDecade() { + this.activeYMD = formatYMD(this.constrainDate(oneDecadeAhead(this.activeDate))); + }, + onHeaderClick: function onHeaderClick() { + if (!this.disabled) { + this.activeYMD = this.selectedYMD || formatYMD(this.getToday()); + this.focus(); + } + } + }, + render: function render(h) { + var _this5 = this; + + // If `hidden` prop is set, render just a placeholder node + if (this.hidden) { + return h(); + } + + var valueId = this.valueId, + widgetId = this.widgetId, + navId = this.navId, + gridId = this.gridId, + gridCaptionId = this.gridCaptionId, + gridHelpId = this.gridHelpId, + activeId = this.activeId, + isLive = this.isLive, + isRTL = this.isRTL, + activeYMD = this.activeYMD, + selectedYMD = this.selectedYMD, + safeId = this.safeId; + var hideDecadeNav = !this.showDecadeNav; + var todayYMD = formatYMD(this.getToday()); + var highlightToday = !this.noHighlightToday; // Header showing current selected date + + var $header = h('output', { + staticClass: 'form-control form-control-sm text-center', + class: { + 'text-muted': this.disabled, + readonly: this.readonly || this.disabled + }, + attrs: { + id: valueId, + for: gridId, + role: 'status', + tabindex: this.disabled ? null : '-1', + // Mainly for testing purposes, as we do not know + // the exact format `Intl` will format the date string + 'data-selected': toString$1(selectedYMD), + // We wait until after mount to enable `aria-live` + // to prevent initial announcement on page render + 'aria-live': isLive ? 'polite' : 'off', + 'aria-atomic': isLive ? 'true' : null + }, + on: { + // Transfer focus/click to focus grid + // and focus active date (or today if no selection) + click: this.onHeaderClick, + focus: this.onHeaderClick + } + }, this.selectedDate ? [// We use `bdi` elements here in case the label doesn't match the locale + // Although IE 11 does not deal with at all (equivalent to a span) + h('bdi', { + staticClass: 'sr-only' + }, " (".concat(toString$1(this.labelSelected), ") ")), h('bdi', this.formatDateString(this.selectedDate))] : this.labelNoDateSelected || "\xA0" // ' ' + ); + $header = h('header', { + staticClass: 'b-calendar-header', + class: { + 'sr-only': this.hideHeader + }, + attrs: { + title: this.selectedDate ? this.labelSelectedDate || null : null + } + }, [$header]); // Content for the date navigation buttons + + var navScope = { + isRTL: isRTL + }; + var navProps = { + shiftV: 0.5 + }; + + var navPrevProps = _objectSpread2(_objectSpread2({}, navProps), {}, { + flipH: isRTL + }); + + var navNextProps = _objectSpread2(_objectSpread2({}, navProps), {}, { + flipH: !isRTL + }); + + var $prevDecadeIcon = this.normalizeSlot('nav-prev-decade', navScope) || h(BIconChevronBarLeft, { + props: navPrevProps + }); + var $prevYearIcon = this.normalizeSlot('nav-prev-year', navScope) || h(BIconChevronDoubleLeft, { + props: navPrevProps + }); + var $prevMonthIcon = this.normalizeSlot('nav-prev-month', navScope) || h(BIconChevronLeft, { + props: navPrevProps + }); + var $thisMonthIcon = this.normalizeSlot('nav-this-month', navScope) || h(BIconCircleFill, { + props: navProps + }); + var $nextMonthIcon = this.normalizeSlot('nav-next-month', navScope) || h(BIconChevronLeft, { + props: navNextProps + }); + var $nextYearIcon = this.normalizeSlot('nav-next-year', navScope) || h(BIconChevronDoubleLeft, { + props: navNextProps + }); + var $nextDecadeIcon = this.normalizeSlot('nav-next-decade', navScope) || h(BIconChevronBarLeft, { + props: navNextProps + }); // Utility to create the date navigation buttons + + var makeNavBtn = function makeNavBtn(content, label, handler, btnDisabled, shortcut) { + return h('button', { + staticClass: 'btn btn-sm btn-outline-secondary border-0 flex-fill', + class: { + disabled: btnDisabled + }, + attrs: { + title: label || null, + type: 'button', + 'aria-label': label || null, + 'aria-disabled': btnDisabled ? 'true' : null, + 'aria-keyshortcuts': shortcut || null + }, + on: btnDisabled ? {} : { + click: handler + } + }, [h('div', { + attrs: { + 'aria-hidden': 'true' + } + }, [content])]); + }; // Generate the date navigation buttons + + + var $nav = h('div', { + staticClass: 'b-calendar-nav d-flex', + attrs: { + id: navId, + role: 'group', + 'aria-hidden': this.disabled ? 'true' : null, + 'aria-label': this.labelNav || null, + 'aria-controls': gridId + } + }, [hideDecadeNav ? h() : makeNavBtn($prevDecadeIcon, this.labelPrevDecade, this.gotoPrevDecade, this.prevDecadeDisabled, 'Ctrl+Alt+PageDown'), makeNavBtn($prevYearIcon, this.labelPrevYear, this.gotoPrevYear, this.prevYearDisabled, 'Alt+PageDown'), makeNavBtn($prevMonthIcon, this.labelPrevMonth, this.gotoPrevMonth, this.prevMonthDisabled, 'PageDown'), makeNavBtn($thisMonthIcon, this.labelCurrentMonth, this.gotoCurrentMonth, this.thisMonthDisabled, 'Home'), makeNavBtn($nextMonthIcon, this.labelNextMonth, this.gotoNextMonth, this.nextMonthDisabled, 'PageUp'), makeNavBtn($nextYearIcon, this.labelNextYear, this.gotoNextYear, this.nextYearDisabled, 'Alt+PageUp'), hideDecadeNav ? h() : makeNavBtn($nextDecadeIcon, this.labelNextDecade, this.gotoNextDecade, this.nextDecadeDisabled, 'Ctrl+Alt+PageUp')]); // Caption for calendar grid + + var $gridCaption = h('header', { + key: 'grid-caption', + staticClass: 'b-calendar-grid-caption text-center font-weight-bold', + class: { + 'text-muted': this.disabled + }, + attrs: { + id: gridCaptionId, + 'aria-live': isLive ? 'polite' : null, + 'aria-atomic': isLive ? 'true' : null + } + }, this.formatYearMonth(this.calendarFirstDay)); // Calendar weekday headings + + var $gridWeekDays = h('div', { + staticClass: 'b-calendar-grid-weekdays row no-gutters border-bottom', + attrs: { + 'aria-hidden': 'true' + } + }, this.calendarHeadings.map(function (d, idx) { + return h('small', { + key: idx, + staticClass: 'col text-truncate', + class: { + 'text-muted': _this5.disabled + }, + attrs: { + title: d.label === d.text ? null : d.label, + 'aria-label': d.label + } + }, d.text); + })); // Calendar day grid + + var $gridBody = this.calendar.map(function (week) { + var $cells = week.map(function (day, dIndex) { + var _class; + + var isSelected = day.ymd === selectedYMD; + var isActive = day.ymd === activeYMD; + var isToday = day.ymd === todayYMD; + var idCell = safeId("_cell-".concat(day.ymd, "_")); // "fake" button + + var $btn = h('span', { + staticClass: 'btn border-0 rounded-circle text-nowrap', + // Should we add some classes to signify if today/selected/etc? + class: (_class = { + // Give the fake button a focus ring + focus: isActive && _this5.gridHasFocus, + // Styling + disabled: day.isDisabled || _this5.disabled, + active: isSelected + }, _defineProperty(_class, _this5.computedVariant, isSelected), _defineProperty(_class, _this5.computedTodayVariant, isToday && highlightToday && !isSelected && day.isThisMonth), _defineProperty(_class, 'btn-outline-light', !(isToday && highlightToday) && !isSelected && !isActive), _defineProperty(_class, 'btn-light', !(isToday && highlightToday) && !isSelected && isActive), _defineProperty(_class, 'text-muted', !day.isThisMonth && !isSelected), _defineProperty(_class, 'text-dark', !(isToday && highlightToday) && !isSelected && !isActive && day.isThisMonth), _defineProperty(_class, 'font-weight-bold', (isSelected || day.isThisMonth) && !day.isDisabled), _class), + on: { + click: function click() { + return _this5.onClickDay(day); + } + } + }, day.day); + return h('div', // Cell with button + { + key: dIndex, + staticClass: 'col p-0', + class: day.isDisabled ? 'bg-light' : day.info.class || '', + attrs: { + id: idCell, + role: 'button', + 'data-date': day.ymd, + // Primarily for testing purposes + // Only days in the month are presented as buttons to screen readers + 'aria-hidden': day.isThisMonth ? null : 'true', + 'aria-disabled': day.isDisabled || _this5.disabled ? 'true' : null, + 'aria-label': [day.label, isSelected ? "(".concat(_this5.labelSelected, ")") : null, isToday ? "(".concat(_this5.labelToday, ")") : null].filter(identity).join(' '), + // NVDA doesn't convey `aria-selected`, but does `aria-current`, + // ChromeVox doesn't convey `aria-current`, but does `aria-selected`, + // so we set both attributes for robustness + 'aria-selected': isSelected ? 'true' : null, + 'aria-current': isSelected ? 'date' : null + } + }, [$btn]); + }); // Return the week "row" + // We use the first day of the weeks YMD value as a + // key for efficient DOM patching / element re-use + + return h('div', { + key: week[0].ymd, + staticClass: 'row no-gutters' + }, $cells); + }); + $gridBody = h('div', { + // A key is only required on the body if we add in transition support + // key: this.activeYMD.slice(0, -3), + staticClass: 'b-calendar-grid-body', + style: this.disabled ? { + pointerEvents: 'none' + } : {} + }, $gridBody); + var $gridHelp = h('footer', { + staticClass: 'b-calendar-grid-help border-top small text-muted text-center bg-light', + attrs: { + id: gridHelpId + } + }, [h('div', { + staticClass: 'small' + }, this.labelHelp)]); + var $grid = h('div', { + ref: 'grid', + staticClass: 'b-calendar-grid form-control h-auto text-center', + attrs: { + id: gridId, + role: 'application', + tabindex: this.disabled ? null : '0', + 'data-month': activeYMD.slice(0, -3), + // `YYYY-MM`, mainly for testing + 'aria-roledescription': this.labelCalendar || null, + 'aria-labelledby': gridCaptionId, + 'aria-describedby': gridHelpId, + // `aria-readonly` is not considered valid on `role="application"` + // https://www.w3.org/TR/wai-aria-1.1/#aria-readonly + // 'aria-readonly': this.readonly && !this.disabled ? 'true' : null, + 'aria-disabled': this.disabled ? 'true' : null, + 'aria-activedescendant': activeId + }, + on: { + keydown: this.onKeydownGrid, + focus: this.setGridFocusFlag, + blur: this.setGridFocusFlag + } + }, [$gridCaption, $gridWeekDays, $gridBody, $gridHelp]); // Optional bottom slot + + var $slot = this.normalizeSlot('default'); + $slot = $slot ? h('footer', { + staticClass: 'b-calendar-footer' + }, $slot) : h(); + var $widget = h('div', { + staticClass: 'b-calendar-inner', + style: this.block ? {} : { + width: this.width + }, + attrs: { + id: widgetId, + dir: isRTL ? 'rtl' : 'ltr', + lang: this.computedLocale || null, + role: 'group', + 'aria-disabled': this.disabled ? 'true' : null, + // If datepicker controls an input, this will specify the ID of the input + 'aria-controls': this.ariaControls || null, + // This should be a prop (so it can be changed to Date picker, etc, localized + 'aria-roledescription': this.roleDescription || null, + 'aria-describedby': [// Should the attr (if present) go last? + // Or should this attr be a prop? + this.bvAttrs['aria-describedby'], valueId, gridHelpId].filter(identity).join(' ') + }, + on: { + keydown: this.onKeydownWrapper + } + }, [$header, $nav, $grid, $slot]); // Wrap in an outer div that can be styled + + return h('div', { + staticClass: 'b-calendar', + class: { + 'd-block': this.block + } + }, [$widget]); + } + }); + + var CalendarPlugin = /*#__PURE__*/pluginFactory({ + components: { + BCalendar: BCalendar + } + }); + + // @vue/component + var cardMixin = { + props: { + tag: { + type: String, + default: 'div' + }, + bgVariant: { + type: String // default: null + + }, + borderVariant: { + type: String // default: null + + }, + textVariant: { + type: String // default: null + + } + } + }; + + var props$8 = { + title: { + type: String // default: null + + }, + titleTag: { + type: String, + default: 'h4' + } + }; // @vue/component + + var BCardTitle = /*#__PURE__*/Vue.extend({ + name: 'BCardTitle', + functional: true, + props: props$8, + render: function render(h, _ref) { + var props = _ref.props, + data = _ref.data, + children = _ref.children; + return h(props.titleTag, a(data, { + staticClass: 'card-title' + }), children || toString$1(props.title)); + } + }); + + var NAME$b = 'BCardSubTitle'; + var props$9 = { + subTitle: { + type: String // default: null + + }, + subTitleTag: { + type: String, + default: 'h6' + }, + subTitleTextVariant: { + type: String, + default: function _default() { + return getComponentConfig(NAME$b, 'subTitleTextVariant'); + } + } + }; // @vue/component + + var BCardSubTitle = /*#__PURE__*/Vue.extend({ + name: NAME$b, + functional: true, + props: props$9, + render: function render(h, _ref) { + var props = _ref.props, + data = _ref.data, + children = _ref.children; + return h(props.subTitleTag, a(data, { + staticClass: 'card-subtitle', + class: [props.subTitleTextVariant ? "text-".concat(props.subTitleTextVariant) : null] + }), children || toString$1(props.subTitle)); + } + }); + + var props$a = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, copyProps(cardMixin.props, prefixPropName.bind(null, 'body'))), {}, { + bodyClass: { + type: [String, Object, Array] // default: null + + } + }, props$8), props$9), {}, { + overlay: { + type: Boolean, + default: false + } + }); // @vue/component + + var BCardBody = /*#__PURE__*/Vue.extend({ + name: 'BCardBody', + functional: true, + props: props$a, + render: function render(h, _ref) { + var _ref2; + + var props = _ref.props, + data = _ref.data, + children = _ref.children; + var cardTitle = h(); + var cardSubTitle = h(); + var cardContent = children || [h()]; + + if (props.title) { + cardTitle = h(BCardTitle, { + props: pluckProps(props$8, props) + }); + } + + if (props.subTitle) { + cardSubTitle = h(BCardSubTitle, { + props: pluckProps(props$9, props), + class: ['mb-2'] + }); + } + + return h(props.bodyTag, a(data, { + staticClass: 'card-body', + class: [(_ref2 = { + 'card-img-overlay': props.overlay + }, _defineProperty(_ref2, "bg-".concat(props.bodyBgVariant), props.bodyBgVariant), _defineProperty(_ref2, "border-".concat(props.bodyBorderVariant), props.bodyBorderVariant), _defineProperty(_ref2, "text-".concat(props.bodyTextVariant), props.bodyTextVariant), _ref2), props.bodyClass || {}] + }), [cardTitle, cardSubTitle].concat(_toConsumableArray(cardContent))); + } + }); + + var props$b = _objectSpread2(_objectSpread2({}, copyProps(cardMixin.props, prefixPropName.bind(null, 'header'))), {}, { + header: { + type: String // default: null + + }, + headerHtml: { + type: String // default: null + + }, + headerClass: { + type: [String, Object, Array] // default: null + + } + }); // --- Main component --- + // @vue/component + + var BCardHeader = /*#__PURE__*/Vue.extend({ + name: 'BCardHeader', + functional: true, + props: props$b, + render: function render(h, _ref) { + var _ref2; + + var props = _ref.props, + data = _ref.data, + children = _ref.children; + var headerBgVariant = props.headerBgVariant, + headerBorderVariant = props.headerBorderVariant, + headerTextVariant = props.headerTextVariant; + return h(props.headerTag, a(data, { + staticClass: 'card-header', + class: [props.headerClass, (_ref2 = {}, _defineProperty(_ref2, "bg-".concat(headerBgVariant), headerBgVariant), _defineProperty(_ref2, "border-".concat(headerBorderVariant), headerBorderVariant), _defineProperty(_ref2, "text-".concat(headerTextVariant), headerTextVariant), _ref2)], + domProps: children ? {} : htmlOrText(props.headerHtml, props.header) + }), children); + } + }); + + var props$c = _objectSpread2(_objectSpread2({}, copyProps(cardMixin.props, prefixPropName.bind(null, 'footer'))), {}, { + footer: { + type: String // default: null + + }, + footerHtml: { + type: String // default: null + + }, + footerClass: { + type: [String, Object, Array] // default: null + + } + }); // --- Main component --- + // @vue/component + + var BCardFooter = /*#__PURE__*/Vue.extend({ + name: 'BCardFooter', + functional: true, + props: props$c, + render: function render(h, _ref) { + var _ref2; + + var props = _ref.props, + data = _ref.data, + children = _ref.children; + var footerBgVariant = props.footerBgVariant, + footerBorderVariant = props.footerBorderVariant, + footerTextVariant = props.footerTextVariant; + return h(props.footerTag, a(data, { + staticClass: 'card-footer', + class: [props.footerClass, (_ref2 = {}, _defineProperty(_ref2, "bg-".concat(footerBgVariant), footerBgVariant), _defineProperty(_ref2, "border-".concat(footerBorderVariant), footerBorderVariant), _defineProperty(_ref2, "text-".concat(footerTextVariant), footerTextVariant), _ref2)], + domProps: children ? {} : htmlOrText(props.footerHtml, props.footer) + }), children); + } + }); + + var props$d = { + src: { + type: String, + required: true + }, + alt: { + type: String // default: null + + }, + top: { + type: Boolean, + default: false + }, + bottom: { + type: Boolean, + default: false + }, + start: { + type: Boolean, + default: false + }, + left: { + // alias of 'start' + type: Boolean, + default: false + }, + end: { + type: Boolean, + default: false + }, + right: { + // alias of 'end' + type: Boolean, + default: false + }, + height: { + type: [Number, String] // default: null + + }, + width: { + type: [Number, String] // default: null + + } + }; // @vue/component + + var BCardImg = /*#__PURE__*/Vue.extend({ + name: 'BCardImg', + functional: true, + props: props$d, + render: function render(h, _ref) { + var props = _ref.props, + data = _ref.data; + var baseClass = 'card-img'; + + if (props.top) { + baseClass += '-top'; + } else if (props.right || props.end) { + baseClass += '-right'; + } else if (props.bottom) { + baseClass += '-bottom'; + } else if (props.left || props.start) { + baseClass += '-left'; + } + + return h('img', a(data, { + class: [baseClass], + attrs: { + src: props.src || null, + alt: props.alt || null, + height: props.height || null, + width: props.width || null + } + })); + } + }); + + var cardImgProps = copyProps(props$d, prefixPropName.bind(null, 'img')); + cardImgProps.imgSrc.required = false; + var props$e = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, props$a), props$b), props$c), cardImgProps), copyProps(cardMixin.props)), {}, { + align: { + type: String // default: null + + }, + noBody: { + type: Boolean, + default: false + } + }); // @vue/component + + var BCard = /*#__PURE__*/Vue.extend({ + name: 'BCard', + functional: true, + props: props$e, + render: function render(h, _ref) { + var _class; + + var props = _ref.props, + data = _ref.data, + slots = _ref.slots, + scopedSlots = _ref.scopedSlots; + var imgLeft = props.imgLeft, + imgRight = props.imgRight, + imgStart = props.imgStart, + imgEnd = props.imgEnd, + header = props.header, + headerHtml = props.headerHtml, + footer = props.footer, + footerHtml = props.footerHtml, + align = props.align, + textVariant = props.textVariant, + bgVariant = props.bgVariant, + borderVariant = props.borderVariant; + var $scopedSlots = scopedSlots || {}; + var $slots = slots(); + var slotScope = {}; + var $imgFirst = h(); + var $imgLast = h(); + + if (props.imgSrc) { + var $img = h(BCardImg, { + props: pluckProps(cardImgProps, props, unprefixPropName.bind(null, 'img')) + }); + + if (props.imgBottom) { + $imgLast = $img; + } else { + $imgFirst = $img; + } + } + + var $header = h(); + var hasHeaderSlot = hasNormalizedSlot('header', $scopedSlots, $slots); + + if (hasHeaderSlot || header || headerHtml) { + $header = h(BCardHeader, { + props: pluckProps(props$b, props), + domProps: hasHeaderSlot ? {} : htmlOrText(headerHtml, header) + }, normalizeSlot('header', slotScope, $scopedSlots, $slots)); + } + + var $content = normalizeSlot('default', slotScope, $scopedSlots, $slots); // Wrap content in when `noBody` prop set + + if (!props.noBody) { + $content = h(BCardBody, { + props: pluckProps(props$a, props) + }, $content); + } + + var $footer = h(); + var hasFooterSlot = hasNormalizedSlot('footer', $scopedSlots, $slots); + + if (hasFooterSlot || footer || footerHtml) { + $footer = h(BCardFooter, { + props: pluckProps(props$c, props), + domProps: hasHeaderSlot ? {} : htmlOrText(footerHtml, footer) + }, normalizeSlot('footer', slotScope, $scopedSlots, $slots)); + } + + return h(props.tag, a(data, { + staticClass: 'card', + class: (_class = { + 'flex-row': imgLeft || imgStart, + 'flex-row-reverse': (imgRight || imgEnd) && !(imgLeft || imgStart) + }, _defineProperty(_class, "text-".concat(align), align), _defineProperty(_class, "bg-".concat(bgVariant), bgVariant), _defineProperty(_class, "border-".concat(borderVariant), borderVariant), _defineProperty(_class, "text-".concat(textVariant), textVariant), _class) + }), [$imgFirst, $header, $content, $footer, $imgLast]); + } + }); + + var OBSERVER_PROP_NAME = '__bv__visibility_observer'; + var RX_ONLY_DIGITS = /^\d+$/; + + var VisibilityObserver = /*#__PURE__*/function () { + function VisibilityObserver(el, options, vnode) { + _classCallCheck(this, VisibilityObserver); + + this.el = el; + this.callback = options.callback; + this.margin = options.margin || 0; + this.once = options.once || false; + this.observer = null; + this.visible = undefined; + this.doneOnce = false; // Create the observer instance (if possible) + + this.createObserver(vnode); + } + + _createClass(VisibilityObserver, [{ + key: "createObserver", + value: function createObserver(vnode) { + var _this = this; + + // Remove any previous observer + if (this.observer) { + /* istanbul ignore next */ + this.stop(); + } // Should only be called once and `callback` prop should be a function + + + if (this.doneOnce || !isFunction(this.callback)) { + /* istanbul ignore next */ + return; + } // Create the observer instance + + + try { + // Future: Possibly add in other modifiers for left/right/top/bottom + // offsets, root element reference, and thresholds + this.observer = new IntersectionObserver(this.handler.bind(this), { + // `null` = 'viewport' + root: null, + // Pixels away from view port to consider "visible" + rootMargin: this.margin, + // Intersection ratio of el and root (as a value from 0 to 1) + threshold: 0 + }); + } catch (_unused) { + // No IntersectionObserver support, so just stop trying to observe + this.doneOnce = true; + this.observer = undefined; + this.callback(null); + return; + } // Start observing in a `$nextTick()` (to allow DOM to complete rendering) + + /* istanbul ignore next: IntersectionObserver not supported in JSDOM */ + + + vnode.context.$nextTick(function () { + requestAF(function () { + // Placed in an `if` just in case we were destroyed before + // this `requestAnimationFrame` runs + if (_this.observer) { + _this.observer.observe(_this.el); + } + }); + }); + } + /* istanbul ignore next */ + + }, { + key: "handler", + value: function handler(entries) + /* istanbul ignore next: IntersectionObserver not supported in JSDOM */ + { + var entry = entries ? entries[0] : {}; + var isIntersecting = Boolean(entry.isIntersecting || entry.intersectionRatio > 0.0); + + if (isIntersecting !== this.visible) { + this.visible = isIntersecting; + this.callback(isIntersecting); + + if (this.once && this.visible) { + this.doneOnce = true; + this.stop(); + } + } + } + }, { + key: "stop", + value: function stop() { + /* istanbul ignore next */ + this.observer && this.observer.disconnect(); + this.observer = null; + } + }]); + + return VisibilityObserver; + }(); + + var destroy = function destroy(el) { + var observer = el[OBSERVER_PROP_NAME]; + + if (observer && observer.stop) { + observer.stop(); + } + + delete el[OBSERVER_PROP_NAME]; + }; + + var bind = function bind(el, _ref, vnode) { + var value = _ref.value, + modifiers = _ref.modifiers; + // `value` is the callback function + var options = { + margin: '0px', + once: false, + callback: value + }; // Parse modifiers + + keys(modifiers).forEach(function (mod) { + /* istanbul ignore else: Until is switched to use this directive */ + if (RX_ONLY_DIGITS.test(mod)) { + options.margin = "".concat(mod, "px"); + } else if (mod.toLowerCase() === 'once') { + options.once = true; + } + }); // Destroy any previous observer + + destroy(el); // Create new observer + + el[OBSERVER_PROP_NAME] = new VisibilityObserver(el, options, vnode); // Store the current modifiers on the object (cloned) + + el[OBSERVER_PROP_NAME]._prevModifiers = clone(modifiers); + }; // When the directive options may have been updated (or element) + + + var componentUpdated = function componentUpdated(el, _ref2, vnode) { + var value = _ref2.value, + oldValue = _ref2.oldValue, + modifiers = _ref2.modifiers; + // Compare value/oldValue and modifiers to see if anything has changed + // and if so, destroy old observer and create new observer + + /* istanbul ignore next */ + modifiers = clone(modifiers); + /* istanbul ignore next */ + + if (el && (value !== oldValue || !el[OBSERVER_PROP_NAME] || !looseEqual(modifiers, el[OBSERVER_PROP_NAME]._prevModifiers))) { + // Re-bind on element + bind(el, { + value: value, + modifiers: modifiers + }, vnode); + } + }; // When directive un-binds from element + + + var unbind = function unbind(el) { + // Remove the observer + destroy(el); + }; // Export the directive + + + var VBVisible = { + bind: bind, + componentUpdated: componentUpdated, + unbind: unbind + }; + + var NAME$c = 'BImg'; // Blank image with fill template + + var BLANK_TEMPLATE = '' + '' + ''; + var props$f = { + src: { + type: String // default: null + + }, + srcset: { + type: [String, Array] // default: null + + }, + sizes: { + type: [String, Array] // default: null + + }, + alt: { + type: String // default: null + + }, + width: { + type: [Number, String] // default: null + + }, + height: { + type: [Number, String] // default: null + + }, + block: { + type: Boolean, + default: false + }, + fluid: { + type: Boolean, + default: false + }, + fluidGrow: { + // Gives fluid images class `w-100` to make them grow to fit container + type: Boolean, + default: false + }, + rounded: { + // rounded can be: + // false: no rounding of corners + // true: slightly rounded corners + // 'top': top corners rounded + // 'right': right corners rounded + // 'bottom': bottom corners rounded + // 'left': left corners rounded + // 'circle': circle/oval + // '0': force rounding off + type: [Boolean, String], + default: false + }, + thumbnail: { + type: Boolean, + default: false + }, + left: { + type: Boolean, + default: false + }, + right: { + type: Boolean, + default: false + }, + center: { + type: Boolean, + default: false + }, + blank: { + type: Boolean, + default: false + }, + blankColor: { + type: String, + default: function _default() { + return getComponentConfig(NAME$c, 'blankColor'); + } + } + }; // --- Helper methods --- + + var makeBlankImgSrc = function makeBlankImgSrc(width, height, color) { + var src = encodeURIComponent(BLANK_TEMPLATE.replace('%{w}', toString$1(width)).replace('%{h}', toString$1(height)).replace('%{f}', color)); + return "data:image/svg+xml;charset=UTF-8,".concat(src); + }; // @vue/component + + + var BImg = /*#__PURE__*/Vue.extend({ + name: NAME$c, + functional: true, + props: props$f, + render: function render(h, _ref) { + var _class; + + var props = _ref.props, + data = _ref.data; + var src = props.src; + var width = toInteger(props.width) || null; + var height = toInteger(props.height) || null; + var align = null; + var block = props.block; + var srcset = concat(props.srcset).filter(identity).join(','); + var sizes = concat(props.sizes).filter(identity).join(','); + + if (props.blank) { + if (!height && width) { + height = width; + } else if (!width && height) { + width = height; + } + + if (!width && !height) { + width = 1; + height = 1; + } // Make a blank SVG image + + + src = makeBlankImgSrc(width, height, props.blankColor || 'transparent'); // Disable srcset and sizes + + srcset = null; + sizes = null; + } + + if (props.left) { + align = 'float-left'; + } else if (props.right) { + align = 'float-right'; + } else if (props.center) { + align = 'mx-auto'; + block = true; + } + + return h('img', a(data, { + attrs: { + src: src, + alt: props.alt || null, + width: width ? toString$1(width) : null, + height: height ? toString$1(height) : null, + srcset: srcset || null, + sizes: sizes || null + }, + class: (_class = { + 'img-thumbnail': props.thumbnail, + 'img-fluid': props.fluid || props.fluidGrow, + 'w-100': props.fluidGrow, + rounded: props.rounded === '' || props.rounded === true + }, _defineProperty(_class, "rounded-".concat(props.rounded), isString(props.rounded) && props.rounded !== ''), _defineProperty(_class, align, align), _defineProperty(_class, 'd-block', block), _class) + })); + } + }); + + var NAME$d = 'BImgLazy'; + var props$g = { + src: { + type: String, + required: true + }, + srcset: { + type: [String, Array] // default: null + + }, + sizes: { + type: [String, Array] // default: null + + }, + alt: { + type: String // default: null + + }, + width: { + type: [Number, String] // default: null + + }, + height: { + type: [Number, String] // default: null + + }, + blankSrc: { + // If null, a blank image is generated + type: String, + default: null + }, + blankColor: { + type: String, + default: function _default() { + return getComponentConfig(NAME$d, 'blankColor'); + } + }, + blankWidth: { + type: [Number, String] // default: null + + }, + blankHeight: { + type: [Number, String] // default: null + + }, + show: { + type: Boolean, + default: false + }, + fluid: { + type: Boolean, + default: false + }, + fluidGrow: { + type: Boolean, + default: false + }, + block: { + type: Boolean, + default: false + }, + thumbnail: { + type: Boolean, + default: false + }, + rounded: { + type: [Boolean, String], + default: false + }, + left: { + type: Boolean, + default: false + }, + right: { + type: Boolean, + default: false + }, + center: { + type: Boolean, + default: false + }, + offset: { + // Distance away from viewport (in pixels) before being + // considered "visible" + type: [Number, String], + default: 360 + } + }; // @vue/component + + var BImgLazy = /*#__PURE__*/Vue.extend({ + name: NAME$d, + directives: { + bVisible: VBVisible + }, + props: props$g, + data: function data() { + return { + isShown: this.show + }; + }, + computed: { + computedSrc: function computedSrc() { + return !this.blankSrc || this.isShown ? this.src : this.blankSrc; + }, + computedBlank: function computedBlank() { + return !(this.isShown || this.blankSrc); + }, + computedWidth: function computedWidth() { + return this.isShown ? this.width : this.blankWidth || this.width; + }, + computedHeight: function computedHeight() { + return this.isShown ? this.height : this.blankHeight || this.height; + }, + computedSrcset: function computedSrcset() { + var srcset = concat(this.srcset).filter(identity).join(','); + return !this.blankSrc || this.isShown ? srcset : null; + }, + computedSizes: function computedSizes() { + var sizes = concat(this.sizes).filter(identity).join(','); + return !this.blankSrc || this.isShown ? sizes : null; + } + }, + watch: { + show: function show(newVal, oldVal) { + if (newVal !== oldVal) { + // If IntersectionObserver support is not available, image is always shown + var visible = hasIntersectionObserverSupport ? newVal : true; + this.isShown = visible; + + if (visible !== newVal) { + // Ensure the show prop is synced (when no IntersectionObserver) + this.$nextTick(this.updateShowProp); + } + } + }, + isShown: function isShown(newVal, oldVal) { + if (newVal !== oldVal) { + // Update synched show prop + this.updateShowProp(); + } + } + }, + mounted: function mounted() { + // If IntersectionObserver is not available, image is always shown + this.isShown = hasIntersectionObserverSupport ? this.show : true; + }, + methods: { + updateShowProp: function updateShowProp() { + this.$emit('update:show', this.isShown); + }, + doShow: function doShow(visible) { + // If IntersectionObserver is not supported, the callback + // will be called with `null` rather than `true` or `false` + if ((visible || visible === null) && !this.isShown) { + this.isShown = true; + } + } + }, + render: function render(h) { + var directives = []; + + if (!this.isShown) { + var _modifiers; + + // We only add the visible directive if we are not shown + directives.push({ + // Visible directive will silently do nothing if + // IntersectionObserver is not supported + name: 'b-visible', + // Value expects a callback (passed one arg of `visible` = `true` or `false`) + value: this.doShow, + modifiers: (_modifiers = {}, _defineProperty(_modifiers, "".concat(toInteger(this.offset, 0)), true), _defineProperty(_modifiers, "once", true), _modifiers) + }); + } + + return h(BImg, { + directives: directives, + props: { + // Computed value props + src: this.computedSrc, + blank: this.computedBlank, + width: this.computedWidth, + height: this.computedHeight, + srcset: this.computedSrcset || null, + sizes: this.computedSizes || null, + // Passthrough props + alt: this.alt, + blankColor: this.blankColor, + fluid: this.fluid, + fluidGrow: this.fluidGrow, + block: this.block, + thumbnail: this.thumbnail, + rounded: this.rounded, + left: this.left, + right: this.right, + center: this.center + } + }); + } + }); + + // The `omit()` util creates a new object, so we can just pass the original props + + var lazyProps = omit(props$g, ['left', 'right', 'center', 'block', 'rounded', 'thumbnail', 'fluid', 'fluidGrow']); + var props$h = _objectSpread2(_objectSpread2({}, lazyProps), {}, { + top: { + type: Boolean, + default: false + }, + bottom: { + type: Boolean, + default: false + }, + start: { + type: Boolean, + default: false + }, + left: { + // alias of 'start' + type: Boolean, + default: false + }, + end: { + type: Boolean, + default: false + }, + right: { + // alias of 'end' + type: Boolean, + default: false + } + }); // @vue/component + + var BCardImgLazy = /*#__PURE__*/Vue.extend({ + name: 'BCardImgLazy', + functional: true, + props: props$h, + render: function render(h, _ref) { + var props = _ref.props, + data = _ref.data; + var baseClass = 'card-img'; + + if (props.top) { + baseClass += '-top'; + } else if (props.right || props.end) { + baseClass += '-right'; + } else if (props.bottom) { + baseClass += '-bottom'; + } else if (props.left || props.start) { + baseClass += '-left'; + } // False out the left/center/right props before passing to b-img-lazy + + + var lazyProps = _objectSpread2(_objectSpread2({}, props), {}, { + left: false, + right: false, + center: false + }); + + return h(BImgLazy, a(data, { + class: [baseClass], + props: lazyProps + })); + } + }); + + var props$i = { + textTag: { + type: String, + default: 'p' + } + }; // @vue/component + + var BCardText = /*#__PURE__*/Vue.extend({ + name: 'BCardText', + functional: true, + props: props$i, + render: function render(h, _ref) { + var props = _ref.props, + data = _ref.data, + children = _ref.children; + return h(props.textTag, a(data, { + staticClass: 'card-text' + }), children); + } + }); + + var props$j = { + tag: { + type: String, + default: 'div' + }, + deck: { + type: Boolean, + default: false + }, + columns: { + type: Boolean, + default: false + } + }; // @vue/component + + var BCardGroup = /*#__PURE__*/Vue.extend({ + name: 'BCardGroup', + functional: true, + props: props$j, + render: function render(h, _ref) { + var props = _ref.props, + data = _ref.data, + children = _ref.children; + return h(props.tag, a(data, { + class: props.deck ? 'card-deck' : props.columns ? 'card-columns' : 'card-group' + }), children); + } + }); + + var CardPlugin = /*#__PURE__*/pluginFactory({ + components: { + BCard: BCard, + BCardHeader: BCardHeader, + BCardBody: BCardBody, + BCardTitle: BCardTitle, + BCardSubTitle: BCardSubTitle, + BCardFooter: BCardFooter, + BCardImg: BCardImg, + BCardImgLazy: BCardImgLazy, + BCardText: BCardText, + BCardGroup: BCardGroup + } + }); + + var noop = function noop() {}; + + /** + * Observe a DOM element changes, falls back to eventListener mode + * @param {Element} el The DOM element to observe + * @param {Function} callback callback to be called on change + * @param {object} [options={childList: true, subtree: true}] observe options + * @see https://stackoverflow.com/questions/3219758 + */ + + var observeDom = function observeDom(el, callback, options) + /* istanbul ignore next: difficult to test in JSDOM */ + { + // Handle cases where we might be passed a Vue instance + el = el ? el.$el || el : null; // Early exit when we have no element + + /* istanbul ignore next: difficult to test in JSDOM */ + + if (!isElement(el)) { + return null; + } // Exit and throw a warning when `MutationObserver` isn't available + + + if (warnNoMutationObserverSupport('observeDom')) { + return null; + } // Define a new observer + + + var obs = new MutationObs(function (mutations) { + var changed = false; // A mutation can contain several change records, so we loop + // through them to see what has changed + // We break out of the loop early if any "significant" change + // has been detected + + for (var i = 0; i < mutations.length && !changed; i++) { + // The mutation record + var mutation = mutations[i]; // Mutation type + + var type = mutation.type; // DOM node (could be any DOM node type - HTMLElement, Text, comment, etc.) + + var target = mutation.target; // Detect whether a change happened based on type and target + + if (type === 'characterData' && target.nodeType === Node.TEXT_NODE) { + // We ignore nodes that are not TEXT (i.e. comments, etc) + // as they don't change layout + changed = true; + } else if (type === 'attributes') { + changed = true; + } else if (type === 'childList' && (mutation.addedNodes.length > 0 || mutation.removedNodes.length > 0)) { + // This includes HTMLElement and text nodes being + // added/removed/re-arranged + changed = true; + } + } // We only call the callback if a change that could affect + // layout/size truly happened + + + if (changed) { + callback(); + } + }); // Have the observer observe foo for changes in children, etc + + obs.observe(el, _objectSpread2({ + childList: true, + subtree: true + }, options)); // We return a reference to the observer so that `obs.disconnect()` + // can be called if necessary + // To reduce overhead when the root element is hidden + + return obs; + }; + + var EVENT_OPTIONS_PASSIVE = { + passive: true + }; + var EVENT_OPTIONS_NO_CAPTURE = { + passive: true, + capture: false + }; // --- Utils --- + // Normalize event options based on support of passive option + // Exported only for testing purposes + + var parseEventOptions = function parseEventOptions(options) { + /* istanbul ignore else: can't test in JSDOM, as it supports passive */ + if (hasPassiveEventSupport) { + return isObject(options) ? options : { + capture: !!options || false + }; + } else { + // Need to translate to actual Boolean value + return !!(isObject(options) ? options.capture : options); + } + }; // Attach an event listener to an element + + var eventOn = function eventOn(el, evtName, handler, options) { + if (el && el.addEventListener) { + el.addEventListener(evtName, handler, parseEventOptions(options)); + } + }; // Remove an event listener from an element + + var eventOff = function eventOff(el, evtName, handler, options) { + if (el && el.removeEventListener) { + el.removeEventListener(evtName, handler, parseEventOptions(options)); + } + }; // Utility method to add/remove a event listener based on first argument (boolean) + // It passes all other arguments to the `eventOn()` or `eventOff` method + + var eventOnOff = function eventOnOff(on) { + var method = on ? eventOn : eventOff; + + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + method.apply(void 0, args); + }; + + var NAME$e = 'BCarousel'; // Slide directional classes + + var DIRECTION = { + next: { + dirClass: 'carousel-item-left', + overlayClass: 'carousel-item-next' + }, + prev: { + dirClass: 'carousel-item-right', + overlayClass: 'carousel-item-prev' + } + }; // Fallback Transition duration (with a little buffer) in ms + + var TRANS_DURATION = 600 + 50; // Time for mouse compat events to fire after touch + + var TOUCH_EVENT_COMPAT_WAIT = 500; // Number of pixels to consider touch move a swipe + + var SWIPE_THRESHOLD = 40; // PointerEvent pointer types + + var PointerType = { + TOUCH: 'touch', + PEN: 'pen' + }; // Transition Event names + + var TransitionEndEvents = { + WebkitTransition: 'webkitTransitionEnd', + MozTransition: 'transitionend', + OTransition: 'otransitionend oTransitionEnd', + transition: 'transitionend' + }; // Return the browser specific transitionEnd event name + + var getTransitionEndEvent = function getTransitionEndEvent(el) { + for (var name in TransitionEndEvents) { + if (!isUndefined(el.style[name])) { + return TransitionEndEvents[name]; + } + } // Fallback + + /* istanbul ignore next */ + + + return null; + }; // @vue/component + + + var BCarousel = /*#__PURE__*/Vue.extend({ + name: NAME$e, + mixins: [idMixin, normalizeSlotMixin], + provide: function provide() { + return { + bvCarousel: this + }; + }, + model: { + prop: 'value', + event: 'input' + }, + props: { + labelPrev: { + type: String, + default: function _default() { + return getComponentConfig(NAME$e, 'labelPrev'); + } + }, + labelNext: { + type: String, + default: function _default() { + return getComponentConfig(NAME$e, 'labelNext'); + } + }, + labelGotoSlide: { + type: String, + default: function _default() { + return getComponentConfig(NAME$e, 'labelGotoSlide'); + } + }, + labelIndicators: { + type: String, + default: function _default() { + return getComponentConfig(NAME$e, 'labelIndicators'); + } + }, + interval: { + type: Number, + default: 5000 + }, + indicators: { + type: Boolean, + default: false + }, + controls: { + type: Boolean, + default: false + }, + noAnimation: { + // Disable slide/fade animation + type: Boolean, + default: false + }, + fade: { + // Enable cross-fade animation instead of slide animation + type: Boolean, + default: false + }, + noWrap: { + // Disable wrapping/looping when start/end is reached + type: Boolean, + default: false + }, + noTouch: { + // Sniffed by carousel-slide + type: Boolean, + default: false + }, + noHoverPause: { + // Disable pause on hover + type: Boolean, + default: false + }, + imgWidth: { + // Sniffed by carousel-slide + type: [Number, String] // default: undefined + + }, + imgHeight: { + // Sniffed by carousel-slide + type: [Number, String] // default: undefined + + }, + background: { + type: String // default: undefined + + }, + value: { + type: Number, + default: 0 + } + }, + data: function data() { + return { + index: this.value || 0, + isSliding: false, + transitionEndEvent: null, + slides: [], + direction: null, + isPaused: !(toInteger(this.interval, 0) > 0), + // Touch event handling values + touchStartX: 0, + touchDeltaX: 0 + }; + }, + computed: { + numSlides: function numSlides() { + return this.slides.length; + } + }, + watch: { + value: function value(newVal, oldVal) { + if (newVal !== oldVal) { + this.setSlide(toInteger(newVal, 0)); + } + }, + interval: function interval(newVal, oldVal) { + if (newVal === oldVal) { + /* istanbul ignore next */ + return; + } + + if (!newVal) { + // Pausing slide show + this.pause(false); + } else { + // Restarting or Changing interval + this.pause(true); + this.start(false); + } + }, + isPaused: function isPaused(newVal, oldVal) { + if (newVal !== oldVal) { + this.$emit(newVal ? 'paused' : 'unpaused'); + } + }, + index: function index(to, from) { + if (to === from || this.isSliding) { + /* istanbul ignore next */ + return; + } + + this.doSlide(to, from); + } + }, + created: function created() { + // Create private non-reactive props + this.$_interval = null; + this.$_animationTimeout = null; + this.$_touchTimeout = null; + this.$_observer = null; // Set initial paused state + + this.isPaused = !(toInteger(this.interval, 0) > 0); + }, + mounted: function mounted() { + // Cache current browser transitionend event name + this.transitionEndEvent = getTransitionEndEvent(this.$el) || null; // Get all slides + + this.updateSlides(); // Observe child changes so we can update slide list + + this.setObserver(true); + }, + beforeDestroy: function beforeDestroy() { + this.clearInterval(); + this.clearAnimationTimeout(); + this.clearTouchTimeout(); + this.setObserver(false); + }, + methods: { + clearInterval: function (_clearInterval) { + function clearInterval() { + return _clearInterval.apply(this, arguments); + } + + clearInterval.toString = function () { + return _clearInterval.toString(); + }; + + return clearInterval; + }(function () { + clearInterval(this.$_interval); + this.$_interval = null; + }), + clearAnimationTimeout: function clearAnimationTimeout() { + clearTimeout(this.$_animationTimeout); + this.$_animationTimeout = null; + }, + clearTouchTimeout: function clearTouchTimeout() { + clearTimeout(this.$_touchTimeout); + this.$_touchTimeout = null; + }, + setObserver: function setObserver() { + var on = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + this.$_observer && this.$_observer.disconnect(); + this.$_observer = null; + + if (on) { + this.$_observer = observeDom(this.$refs.inner, this.updateSlides.bind(this), { + subtree: false, + childList: true, + attributes: true, + attributeFilter: ['id'] + }); + } + }, + // Set slide + setSlide: function setSlide(slide) { + var _this = this; + + var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + + // Don't animate when page is not visible + + /* istanbul ignore if: difficult to test */ + if (isBrowser && document.visibilityState && document.hidden) { + return; + } + + var noWrap = this.noWrap; + var numSlides = this.numSlides; // Make sure we have an integer (you never know!) + + slide = mathFloor(slide); // Don't do anything if nothing to slide to + + if (numSlides === 0) { + return; + } // Don't change slide while transitioning, wait until transition is done + + + if (this.isSliding) { + // Schedule slide after sliding complete + this.$once('sliding-end', function () { + return _this.setSlide(slide, direction); + }); + return; + } + + this.direction = direction; // Set new slide index + // Wrap around if necessary (if no-wrap not enabled) + + this.index = slide >= numSlides ? noWrap ? numSlides - 1 : 0 : slide < 0 ? noWrap ? 0 : numSlides - 1 : slide; // Ensure the v-model is synched up if no-wrap is enabled + // and user tried to slide pass either ends + + if (noWrap && this.index !== slide && this.index !== this.value) { + this.$emit('input', this.index); + } + }, + // Previous slide + prev: function prev() { + this.setSlide(this.index - 1, 'prev'); + }, + // Next slide + next: function next() { + this.setSlide(this.index + 1, 'next'); + }, + // Pause auto rotation + pause: function pause(evt) { + if (!evt) { + this.isPaused = true; + } + + this.clearInterval(); + }, + // Start auto rotate slides + start: function start(evt) { + if (!evt) { + this.isPaused = false; + } + /* istanbul ignore next: most likely will never happen, but just in case */ + + + this.clearInterval(); // Don't start if no interval, or less than 2 slides + + if (this.interval && this.numSlides > 1) { + this.$_interval = setInterval(this.next, mathMax(1000, this.interval)); + } + }, + // Restart auto rotate slides when focus/hover leaves the carousel + + /* istanbul ignore next */ + restart: function restart() + /* istanbul ignore next: difficult to test */ + { + if (!this.$el.contains(getActiveElement())) { + this.start(); + } + }, + doSlide: function doSlide(to, from) { + var _this2 = this; + + var isCycling = Boolean(this.interval); // Determine sliding direction + + var direction = this.calcDirection(this.direction, from, to); + var overlayClass = direction.overlayClass; + var dirClass = direction.dirClass; // Determine current and next slides + + var currentSlide = this.slides[from]; + var nextSlide = this.slides[to]; // Don't do anything if there aren't any slides to slide to + + if (!currentSlide || !nextSlide) { + /* istanbul ignore next */ + return; + } // Start animating + + + this.isSliding = true; + + if (isCycling) { + this.pause(false); + } + + this.$emit('sliding-start', to); // Update v-model + + this.$emit('input', this.index); + + if (this.noAnimation) { + addClass(nextSlide, 'active'); + removeClass(currentSlide, 'active'); + this.isSliding = false; // Notify ourselves that we're done sliding (slid) + + this.$nextTick(function () { + return _this2.$emit('sliding-end', to); + }); + } else { + addClass(nextSlide, overlayClass); // Trigger a reflow of next slide + + reflow(nextSlide); + addClass(currentSlide, dirClass); + addClass(nextSlide, dirClass); // Transition End handler + + var called = false; + /* istanbul ignore next: difficult to test */ + + var onceTransEnd = function onceTransEnd() { + if (called) { + return; + } + + called = true; + /* istanbul ignore if: transition events cant be tested in JSDOM */ + + if (_this2.transitionEndEvent) { + var events = _this2.transitionEndEvent.split(/\s+/); + + events.forEach(function (evt) { + return eventOff(currentSlide, evt, onceTransEnd, EVENT_OPTIONS_NO_CAPTURE); + }); + } + + _this2.clearAnimationTimeout(); + + removeClass(nextSlide, dirClass); + removeClass(nextSlide, overlayClass); + addClass(nextSlide, 'active'); + removeClass(currentSlide, 'active'); + removeClass(currentSlide, dirClass); + removeClass(currentSlide, overlayClass); + setAttr(currentSlide, 'aria-current', 'false'); + setAttr(nextSlide, 'aria-current', 'true'); + setAttr(currentSlide, 'aria-hidden', 'true'); + setAttr(nextSlide, 'aria-hidden', 'false'); + _this2.isSliding = false; + _this2.direction = null; // Notify ourselves that we're done sliding (slid) + + _this2.$nextTick(function () { + return _this2.$emit('sliding-end', to); + }); + }; // Set up transitionend handler + + /* istanbul ignore if: transition events cant be tested in JSDOM */ + + + if (this.transitionEndEvent) { + var events = this.transitionEndEvent.split(/\s+/); + events.forEach(function (event) { + return eventOn(currentSlide, event, onceTransEnd, EVENT_OPTIONS_NO_CAPTURE); + }); + } // Fallback to setTimeout() + + + this.$_animationTimeout = setTimeout(onceTransEnd, TRANS_DURATION); + } + + if (isCycling) { + this.start(false); + } + }, + // Update slide list + updateSlides: function updateSlides() { + this.pause(true); // Get all slides as DOM elements + + this.slides = selectAll('.carousel-item', this.$refs.inner); + var numSlides = this.slides.length; // Keep slide number in range + + var index = mathMax(0, mathMin(mathFloor(this.index), numSlides - 1)); + this.slides.forEach(function (slide, idx) { + var n = idx + 1; + + if (idx === index) { + addClass(slide, 'active'); + setAttr(slide, 'aria-current', 'true'); + } else { + removeClass(slide, 'active'); + setAttr(slide, 'aria-current', 'false'); + } + + setAttr(slide, 'aria-posinset', String(n)); + setAttr(slide, 'aria-setsize', String(numSlides)); + }); // Set slide as active + + this.setSlide(index); + this.start(this.isPaused); + }, + calcDirection: function calcDirection() { + var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + var curIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + var nextIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; + + if (!direction) { + return nextIndex > curIndex ? DIRECTION.next : DIRECTION.prev; + } + + return DIRECTION[direction]; + }, + handleClick: function handleClick(evt, fn) { + var keyCode = evt.keyCode; + + if (evt.type === 'click' || keyCode === KEY_CODES.SPACE || keyCode === KEY_CODES.ENTER) { + evt.preventDefault(); + evt.stopPropagation(); + fn(); + } + }, + + /* istanbul ignore next */ + handleSwipe: function handleSwipe() + /* istanbul ignore next: JSDOM doesn't support touch events */ + { + var absDeltaX = mathAbs(this.touchDeltaX); + + if (absDeltaX <= SWIPE_THRESHOLD) { + return; + } + + var direction = absDeltaX / this.touchDeltaX; // Reset touch delta X + // https://github.com/twbs/bootstrap/pull/28558 + + this.touchDeltaX = 0; + + if (direction > 0) { + // Swipe left + this.prev(); + } else if (direction < 0) { + // Swipe right + this.next(); + } + }, + + /* istanbul ignore next */ + touchStart: function touchStart(evt) + /* istanbul ignore next: JSDOM doesn't support touch events */ + { + if (hasPointerEventSupport && PointerType[evt.pointerType.toUpperCase()]) { + this.touchStartX = evt.clientX; + } else if (!hasPointerEventSupport) { + this.touchStartX = evt.touches[0].clientX; + } + }, + + /* istanbul ignore next */ + touchMove: function touchMove(evt) + /* istanbul ignore next: JSDOM doesn't support touch events */ + { + // Ensure swiping with one touch and not pinching + if (evt.touches && evt.touches.length > 1) { + this.touchDeltaX = 0; + } else { + this.touchDeltaX = evt.touches[0].clientX - this.touchStartX; + } + }, + + /* istanbul ignore next */ + touchEnd: function touchEnd(evt) + /* istanbul ignore next: JSDOM doesn't support touch events */ + { + if (hasPointerEventSupport && PointerType[evt.pointerType.toUpperCase()]) { + this.touchDeltaX = evt.clientX - this.touchStartX; + } + + this.handleSwipe(); // If it's a touch-enabled device, mouseenter/leave are fired as + // part of the mouse compatibility events on first tap - the carousel + // would stop cycling until user tapped out of it; + // here, we listen for touchend, explicitly pause the carousel + // (as if it's the second time we tap on it, mouseenter compat event + // is NOT fired) and after a timeout (to allow for mouse compatibility + // events to fire) we explicitly restart cycling + + this.pause(false); + this.clearTouchTimeout(); + this.$_touchTimeout = setTimeout(this.start, TOUCH_EVENT_COMPAT_WAIT + mathMax(1000, this.interval)); + } + }, + render: function render(h) { + var _this3 = this; + + // Wrapper for slides + var inner = h('div', { + ref: 'inner', + class: ['carousel-inner'], + attrs: { + id: this.safeId('__BV_inner_'), + role: 'list' + } + }, [this.normalizeSlot('default')]); // Prev and next controls + + var controls = h(); + + if (this.controls) { + var prevHandler = function prevHandler(evt) { + /* istanbul ignore next */ + if (!_this3.isSliding) { + _this3.handleClick(evt, _this3.prev); + } else { + evt.preventDefault(); + } + }; + + var nextHandler = function nextHandler(evt) { + /* istanbul ignore next */ + if (!_this3.isSliding) { + _this3.handleClick(evt, _this3.next); + } else { + evt.preventDefault(); + } + }; + + controls = [h('a', { + class: ['carousel-control-prev'], + attrs: { + href: '#', + role: 'button', + 'aria-controls': this.safeId('__BV_inner_'), + 'aria-disabled': this.isSliding ? 'true' : null + }, + on: { + click: prevHandler, + keydown: prevHandler + } + }, [h('span', { + class: ['carousel-control-prev-icon'], + attrs: { + 'aria-hidden': 'true' + } + }), h('span', { + class: ['sr-only'] + }, [this.labelPrev])]), h('a', { + class: ['carousel-control-next'], + attrs: { + href: '#', + role: 'button', + 'aria-controls': this.safeId('__BV_inner_'), + 'aria-disabled': this.isSliding ? 'true' : null + }, + on: { + click: nextHandler, + keydown: nextHandler + } + }, [h('span', { + class: ['carousel-control-next-icon'], + attrs: { + 'aria-hidden': 'true' + } + }), h('span', { + class: ['sr-only'] + }, [this.labelNext])])]; + } // Indicators + + + var indicators = h('ol', { + class: ['carousel-indicators'], + directives: [{ + name: 'show', + rawName: 'v-show', + value: this.indicators, + expression: 'indicators' + }], + attrs: { + id: this.safeId('__BV_indicators_'), + 'aria-hidden': this.indicators ? 'false' : 'true', + 'aria-label': this.labelIndicators, + 'aria-owns': this.safeId('__BV_inner_') + } + }, this.slides.map(function (slide, n) { + return h('li', { + key: "slide_".concat(n), + class: { + active: n === _this3.index + }, + attrs: { + role: 'button', + id: _this3.safeId("__BV_indicator_".concat(n + 1, "_")), + tabindex: _this3.indicators ? '0' : '-1', + 'aria-current': n === _this3.index ? 'true' : 'false', + 'aria-label': "".concat(_this3.labelGotoSlide, " ").concat(n + 1), + 'aria-describedby': _this3.slides[n].id || null, + 'aria-controls': _this3.safeId('__BV_inner_') + }, + on: { + click: function click(evt) { + _this3.handleClick(evt, function () { + _this3.setSlide(n); + }); + }, + keydown: function keydown(evt) { + _this3.handleClick(evt, function () { + _this3.setSlide(n); + }); + } + } + }); + })); + var on = { + mouseenter: this.noHoverPause ? noop : this.pause, + mouseleave: this.noHoverPause ? noop : this.restart, + focusin: this.pause, + focusout: this.restart, + keydown: function keydown(evt) { + if (/input|textarea/i.test(evt.target.tagName)) { + /* istanbul ignore next */ + return; + } + + var keyCode = evt.keyCode; + + if (keyCode === KEY_CODES.LEFT || keyCode === KEY_CODES.RIGHT) { + evt.preventDefault(); + evt.stopPropagation(); + + _this3[keyCode === KEY_CODES.LEFT ? 'prev' : 'next'](); + } + } + }; // Touch support event handlers for environment + + if (!this.noTouch && hasTouchSupport) { + // Attach appropriate listeners (prepend event name with '&' for passive mode) + + /* istanbul ignore next: JSDOM doesn't support touch events */ + if (hasPointerEventSupport) { + on['&pointerdown'] = this.touchStart; + on['&pointerup'] = this.touchEnd; + } else { + on['&touchstart'] = this.touchStart; + on['&touchmove'] = this.touchMove; + on['&touchend'] = this.touchEnd; + } + } // Return the carousel + + + return h('div', { + staticClass: 'carousel', + class: { + slide: !this.noAnimation, + 'carousel-fade': !this.noAnimation && this.fade, + 'pointer-event': !this.noTouch && hasTouchSupport && hasPointerEventSupport + }, + style: { + background: this.background + }, + attrs: { + role: 'region', + id: this.safeId(), + 'aria-busy': this.isSliding ? 'true' : 'false' + }, + on: on + }, [inner, controls, indicators]); + } + }); + + var imgProps = { + imgSrc: { + type: String // default: undefined + + }, + imgAlt: { + type: String // default: undefined + + }, + imgWidth: { + type: [Number, String] // default: undefined + + }, + imgHeight: { + type: [Number, String] // default: undefined + + }, + imgBlank: { + type: Boolean, + default: false + }, + imgBlankColor: { + type: String, + default: 'transparent' + } + }; + var props$k = _objectSpread2(_objectSpread2({}, imgProps), {}, { + contentVisibleUp: { + type: String + }, + contentTag: { + type: String, + default: 'div' + }, + caption: { + type: String + }, + captionHtml: { + type: String + }, + captionTag: { + type: String, + default: 'h3' + }, + text: { + type: String + }, + textHtml: { + type: String + }, + textTag: { + type: String, + default: 'p' + }, + background: { + type: String + } + }); // --- Main component --- + // @vue/component + + var BCarouselSlide = /*#__PURE__*/Vue.extend({ + name: 'BCarouselSlide', + mixins: [idMixin, normalizeSlotMixin], + inject: { + bvCarousel: { + default: function _default() { + return { + // Explicitly disable touch if not a child of carousel + noTouch: true + }; + } + } + }, + props: props$k, + computed: { + contentClasses: function contentClasses() { + return [this.contentVisibleUp ? 'd-none' : '', this.contentVisibleUp ? "d-".concat(this.contentVisibleUp, "-block") : '']; + }, + computedWidth: function computedWidth() { + // Use local width, or try parent width + return this.imgWidth || this.bvCarousel.imgWidth || null; + }, + computedHeight: function computedHeight() { + // Use local height, or try parent height + return this.imgHeight || this.bvCarousel.imgHeight || null; + } + }, + render: function render(h) { + var $img = this.normalizeSlot('img'); + + if (!$img && (this.imgSrc || this.imgBlank)) { + var on = {}; // Touch support event handler + + /* istanbul ignore if: difficult to test in JSDOM */ + + if (!this.bvCarousel.noTouch && hasTouchSupport) { + on.dragstart = function (evt) { + evt.preventDefault(); + }; + } + + $img = h(BImg, { + props: _objectSpread2(_objectSpread2({}, pluckProps(imgProps, this.$props, unprefixPropName.bind(null, 'img'))), {}, { + width: this.computedWidth, + height: this.computedHeight, + fluidGrow: true, + block: true + }), + on: on + }); + } + + var $contentChildren = [// Caption + this.caption || this.captionHtml ? h(this.captionTag, { + domProps: htmlOrText(this.captionHtml, this.caption) + }) : false, // Text + this.text || this.textHtml ? h(this.textTag, { + domProps: htmlOrText(this.textHtml, this.text) + }) : false, // Children + this.normalizeSlot('default') || false]; + var $content = h(); + + if ($contentChildren.some(Boolean)) { + $content = h(this.contentTag, { + staticClass: 'carousel-caption', + class: this.contentClasses + }, $contentChildren.map(function ($child) { + return $child || h(); + })); + } + + return h('div', { + staticClass: 'carousel-item', + style: { + background: this.background || this.bvCarousel.background || null + }, + attrs: { + id: this.safeId(), + role: 'listitem' + } + }, [$img, $content]); + } + }); + + var CarouselPlugin = + /*#__PURE*/ + pluginFactory({ + components: { + BCarousel: BCarousel, + BCarouselSlide: BCarouselSlide + } + }); + + // Generic collapse transion helper component + + var onEnter = function onEnter(el) { + el.style.height = 0; // Animaton frame delay needed for `appear` to work + + requestAF(function () { + reflow(el); + el.style.height = "".concat(el.scrollHeight, "px"); + }); + }; + + var onAfterEnter = function onAfterEnter(el) { + el.style.height = null; + }; + + var onLeave = function onLeave(el) { + el.style.height = 'auto'; + el.style.display = 'block'; + el.style.height = "".concat(getBCR(el).height, "px"); + reflow(el); + el.style.height = 0; + }; + + var onAfterLeave = function onAfterLeave(el) { + el.style.height = null; + }; // Default transition props + // `appear` will use the enter classes + + + var TRANSITION_PROPS = { + css: true, + enterClass: '', + enterActiveClass: 'collapsing', + enterToClass: 'collapse show', + leaveClass: 'collapse show', + leaveActiveClass: 'collapsing', + leaveToClass: 'collapse' + }; // Default transition handlers + // `appear` will use the enter handlers + + var TRANSITION_HANDLERS = { + enter: onEnter, + afterEnter: onAfterEnter, + leave: onLeave, + afterLeave: onAfterLeave + }; // @vue/component + + var BVCollapse = /*#__PURE__*/Vue.extend({ + name: 'BVCollapse', + functional: true, + props: { + appear: { + // If `true` (and `visible` is `true` on mount), animate initially visible + type: Boolean, + default: false + } + }, + render: function render(h, _ref) { + var props = _ref.props, + data = _ref.data, + children = _ref.children; + return h('transition', // We merge in the `appear` prop last + a(data, { + props: TRANSITION_PROPS, + on: TRANSITION_HANDLERS + }, { + props: props + }), // Note: `` supports a single root element only + children); + } + }); + + // @vue/component + var listenOnRootMixin = { + methods: { + /** + * Safely register event listeners on the root Vue node + * While Vue automatically removes listeners for individual components, + * when a component registers a listener on root and is destroyed, + * this orphans a callback because the node is gone, + * but the root does not clear the callback + * + * When registering a `$root` listener, it also registers a listener on + * the component's `beforeDestroy()` hook to automatically remove the + * event listener from the `$root` instance + * + * @param {string} event + * @param {function} callback + */ + listenOnRoot: function listenOnRoot(event, callback) { + var _this = this; + + this.$root.$on(event, callback); + this.$on('hook:beforeDestroy', function () { + _this.$root.$off(event, callback); + }); + }, + + /** + * Safely register a `$once()` event listener on the root Vue node + * While Vue automatically removes listeners for individual components, + * when a component registers a listener on root and is destroyed, + * this orphans a callback because the node is gone, + * but the root does not clear the callback + * + * When registering a $root listener, it also registers a listener on + * the component's `beforeDestroy` hook to automatically remove the + * event listener from the $root instance. + * + * @param {string} event + * @param {function} callback + */ + listenOnRootOnce: function listenOnRootOnce(event, callback) { + var _this2 = this; + + this.$root.$once(event, callback); + this.$on('hook:beforeDestroy', function () { + _this2.$root.$off(event, callback); + }); + }, + + /** + * Convenience method for calling `vm.$emit()` on `vm.$root` + * + * @param {string} event + * @param {*} args + */ + emitOnRoot: function emitOnRoot(event) { + var _this$$root; + + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + (_this$$root = this.$root).$emit.apply(_this$$root, [event].concat(args)); + } + } + }; + + var ENTER$1 = KEY_CODES.ENTER, + SPACE$1 = KEY_CODES.SPACE; // Classes to apply to trigger element + + var CLASS_BV_TOGGLE_COLLAPSED = 'collapsed'; + var CLASS_BV_TOGGLE_NOT_COLLAPSED = 'not-collapsed'; // Property key for handler storage + + var BV_BASE = '__BV_toggle'; // Root event listener property (Function) + + var BV_TOGGLE_ROOT_HANDLER = "".concat(BV_BASE, "_HANDLER__"); // Trigger element click handler property (Function) + + var BV_TOGGLE_CLICK_HANDLER = "".concat(BV_BASE, "_CLICK__"); // Target visibility state property (Boolean) + + var BV_TOGGLE_STATE = "".concat(BV_BASE, "_STATE__"); // Target ID list property (Array) + + var BV_TOGGLE_TARGETS = "".concat(BV_BASE, "_TARGETS__"); // Commonly used strings + + var STRING_FALSE = 'false'; + var STRING_TRUE = 'true'; // Commonly used attribute names + + var ATTR_ARIA_CONTROLS = 'aria-controls'; + var ATTR_ARIA_EXPANDED = 'aria-expanded'; + var ATTR_ROLE = 'role'; + var ATTR_TABINDEX = 'tabindex'; // Emitted control event for collapse (emitted to collapse) + + var EVENT_TOGGLE = 'bv::toggle::collapse'; // Listen to event for toggle state update (emitted by collapse) + + var EVENT_STATE = 'bv::collapse::state'; // Private event emitted on `$root` to ensure the toggle state is always synced + // Gets emitted even if the state of b-collapse has not changed + // This event is NOT to be documented as people should not be using it + + var EVENT_STATE_SYNC = 'bv::collapse::sync::state'; // Private event we send to collapse to request state update sync event + + var EVENT_STATE_REQUEST = 'bv::request::collapse::state'; + var KEYDOWN_KEY_CODES = [ENTER$1, SPACE$1]; + var RX_HASH = /^#/; + var RX_HASH_ID = /^#[A-Za-z]+[\w\-:.]*$/; + var RX_SPLIT_SEPARATOR = /\s+/; // --- Helper methods --- + + var isNonStandardTag$1 = function isNonStandardTag(el) { + return !arrayIncludes(['button', 'a'], el.tagName.toLowerCase()); + }; + + var getTargets = function getTargets(_ref, el) { + var modifiers = _ref.modifiers, + arg = _ref.arg, + value = _ref.value; + // Any modifiers are considered target IDs + var targets = keys(modifiers || {}); // If value is a string, split out individual targets (if space delimited) + + value = isString(value) ? value.split(RX_SPLIT_SEPARATOR) : value; // Support target ID as link href (`href="#id"`) + + if (isTag(el.tagName, 'a')) { + var href = getAttr(el, 'href') || ''; + + if (RX_HASH_ID.test(href)) { + targets.push(href.replace(RX_HASH, '')); + } + } // Add ID from `arg` (if provided), and support value + // as a single string ID or an array of string IDs + // If `value` is not an array or string, then it gets filtered out + + + concat(arg, value).forEach(function (t) { + return isString(t) && targets.push(t); + }); // Return only unique and truthy target IDs + + return targets.filter(function (t, index, arr) { + return t && arr.indexOf(t) === index; + }); + }; + + var removeClickListener = function removeClickListener(el) { + var handler = el[BV_TOGGLE_CLICK_HANDLER]; + + if (handler) { + eventOff(el, 'click', handler); + eventOff(el, 'keydown', handler); + } + + el[BV_TOGGLE_CLICK_HANDLER] = null; + }; + + var addClickListener = function addClickListener(el, vnode) { + removeClickListener(el); + + if (vnode.context) { + var handler = function handler(evt) { + if (!(evt.type === 'keydown' && !arrayIncludes(KEYDOWN_KEY_CODES, evt.keyCode)) && !isDisabled(el)) { + var targets = el[BV_TOGGLE_TARGETS] || []; + targets.forEach(function (target) { + vnode.context.$root.$emit(EVENT_TOGGLE, target); + }); + } + }; + + el[BV_TOGGLE_CLICK_HANDLER] = handler; + eventOn(el, 'click', handler); + + if (isNonStandardTag$1(el)) { + eventOn(el, 'keydown', handler); + } + } + }; + + var removeRootListeners = function removeRootListeners(el, vnode) { + if (el[BV_TOGGLE_ROOT_HANDLER] && vnode.context) { + vnode.context.$root.$off([EVENT_STATE, EVENT_STATE_SYNC], el[BV_TOGGLE_ROOT_HANDLER]); + } + + el[BV_TOGGLE_ROOT_HANDLER] = null; + }; + + var addRootListeners = function addRootListeners(el, vnode) { + removeRootListeners(el, vnode); + + if (vnode.context) { + var handler = function handler(id, state) { + // `state` will be `true` if target is expanded + if (arrayIncludes(el[BV_TOGGLE_TARGETS] || [], id)) { + // Set/Clear 'collapsed' visibility class state + el[BV_TOGGLE_STATE] = state; // Set `aria-expanded` and class state on trigger element + + setToggleState(el, state); + } + }; + + el[BV_TOGGLE_ROOT_HANDLER] = handler; // Listen for toggle state changes (public) and sync (private) + + vnode.context.$root.$on([EVENT_STATE, EVENT_STATE_SYNC], handler); + } + }; + + var setToggleState = function setToggleState(el, state) { + // State refers to the visibility of the collapse/sidebar + if (state) { + removeClass(el, CLASS_BV_TOGGLE_COLLAPSED); + addClass(el, CLASS_BV_TOGGLE_NOT_COLLAPSED); + setAttr(el, ATTR_ARIA_EXPANDED, STRING_TRUE); + } else { + removeClass(el, CLASS_BV_TOGGLE_NOT_COLLAPSED); + addClass(el, CLASS_BV_TOGGLE_COLLAPSED); + setAttr(el, ATTR_ARIA_EXPANDED, STRING_FALSE); + } + }; // Reset and remove a property from the provided element + + + var resetProp = function resetProp(el, prop) { + el[prop] = null; + delete el[prop]; + }; // Handle directive updates + + + var handleUpdate = function handleUpdate(el, binding, vnode) { + /* istanbul ignore next: should never happen */ + if (!isBrowser || !vnode.context) { + return; + } // If element is not a button or link, we add `role="button"` + // and `tabindex="0"` for accessibility reasons + + + if (isNonStandardTag$1(el)) { + if (!hasAttr(el, ATTR_ROLE)) { + setAttr(el, ATTR_ROLE, 'button'); + } + + if (!hasAttr(el, ATTR_TABINDEX)) { + setAttr(el, ATTR_TABINDEX, '0'); + } + } // Ensure the collapse class and `aria-*` attributes persist + // after element is updated (either by parent re-rendering + // or changes to this element or its contents) + + + setToggleState(el, el[BV_TOGGLE_STATE]); // Parse list of target IDs + + var targets = getTargets(binding, el); + /* istanbul ignore else */ + // Ensure the `aria-controls` hasn't been overwritten + // or removed when vnode updates + + if (targets.length) { + setAttr(el, ATTR_ARIA_CONTROLS, targets.join(' ')); + } else { + removeAttr(el, ATTR_ARIA_CONTROLS); + } // Add/Update our click listener(s) + + + addClickListener(el, vnode); // If targets array has changed, update + + if (!looseEqual(targets, el[BV_TOGGLE_TARGETS])) { + // Update targets array to element storage + el[BV_TOGGLE_TARGETS] = targets; // Ensure `aria-controls` is up to date + // Request a state update from targets so that we can + // ensure expanded state is correct (in most cases) + + targets.forEach(function (target) { + vnode.context.$root.$emit(EVENT_STATE_REQUEST, target); + }); + } + }; + /* + * Export our directive + */ + + + var VBToggle = { + bind: function bind(el, binding, vnode) { + // State is initially collapsed until we receive a state event + el[BV_TOGGLE_STATE] = false; // Assume no targets initially + + el[BV_TOGGLE_TARGETS] = []; // Add our root listeners + + addRootListeners(el, vnode); // Initial update of trigger + + handleUpdate(el, binding, vnode); + }, + componentUpdated: handleUpdate, + updated: handleUpdate, + unbind: function unbind(el, binding, vnode) { + removeClickListener(el); // Remove our $root listener + + removeRootListeners(el, vnode); // Reset custom props + + resetProp(el, BV_TOGGLE_ROOT_HANDLER); + resetProp(el, BV_TOGGLE_CLICK_HANDLER); + resetProp(el, BV_TOGGLE_STATE); + resetProp(el, BV_TOGGLE_TARGETS); // Reset classes/attrs + + removeClass(el, CLASS_BV_TOGGLE_COLLAPSED); + removeClass(el, CLASS_BV_TOGGLE_NOT_COLLAPSED); + removeAttr(el, ATTR_ARIA_EXPANDED); + removeAttr(el, ATTR_ARIA_CONTROLS); + removeAttr(el, ATTR_ROLE); + } + }; + + // Accordion event name we emit on `$root` + + var EVENT_ACCORDION = 'bv::collapse::accordion'; // --- Main component --- + // @vue/component + + var BCollapse = /*#__PURE__*/Vue.extend({ + name: 'BCollapse', + mixins: [idMixin, listenOnRootMixin, normalizeSlotMixin], + model: { + prop: 'visible', + event: 'input' + }, + props: { + isNav: { + type: Boolean, + default: false + }, + accordion: { + type: String // default: null + + }, + visible: { + type: Boolean, + default: false + }, + tag: { + type: String, + default: 'div' + }, + appear: { + // If `true` (and `visible` is `true` on mount), animate initially visible + type: Boolean, + default: false + } + }, + data: function data() { + return { + show: this.visible, + transitioning: false + }; + }, + computed: { + classObject: function classObject() { + return { + 'navbar-collapse': this.isNav, + collapse: !this.transitioning, + show: this.show && !this.transitioning + }; + } + }, + watch: { + visible: function visible(newVal) { + if (newVal !== this.show) { + this.show = newVal; + } + }, + show: function show(newVal, oldVal) { + if (newVal !== oldVal) { + this.emitState(); + } + } + }, + created: function created() { + this.show = this.visible; + }, + mounted: function mounted() { + var _this = this; + + this.show = this.visible; // Listen for toggle events to open/close us + + this.listenOnRoot(EVENT_TOGGLE, this.handleToggleEvt); // Listen to other collapses for accordion events + + this.listenOnRoot(EVENT_ACCORDION, this.handleAccordionEvt); + + if (this.isNav) { + // Set up handlers + this.setWindowEvents(true); + this.handleResize(); + } + + this.$nextTick(function () { + _this.emitState(); + }); // Listen for "Sync state" requests from `v-b-toggle` + + this.listenOnRoot(EVENT_STATE_REQUEST, function (id) { + if (id === _this.safeId()) { + _this.$nextTick(_this.emitSync); + } + }); + }, + updated: function updated() { + // Emit a private event every time this component updates to ensure + // the toggle button is in sync with the collapse's state + // It is emitted regardless if the visible state changes + this.emitSync(); + }, + + /* istanbul ignore next */ + deactivated: function deactivated() + /* istanbul ignore next */ + { + if (this.isNav) { + this.setWindowEvents(false); + } + }, + + /* istanbul ignore next */ + activated: function activated() + /* istanbul ignore next */ + { + if (this.isNav) { + this.setWindowEvents(true); + } + + this.emitSync(); + }, + beforeDestroy: function beforeDestroy() { + // Trigger state emit if needed + this.show = false; + + if (this.isNav && isBrowser) { + this.setWindowEvents(false); + } + }, + methods: { + setWindowEvents: function setWindowEvents(on) { + eventOnOff(on, window, 'resize', this.handleResize, EVENT_OPTIONS_NO_CAPTURE); + eventOnOff(on, window, 'orientationchange', this.handleResize, EVENT_OPTIONS_NO_CAPTURE); + }, + toggle: function toggle() { + this.show = !this.show; + }, + onEnter: function onEnter() { + this.transitioning = true; // This should be moved out so we can add cancellable events + + this.$emit('show'); + }, + onAfterEnter: function onAfterEnter() { + this.transitioning = false; + this.$emit('shown'); + }, + onLeave: function onLeave() { + this.transitioning = true; // This should be moved out so we can add cancellable events + + this.$emit('hide'); + }, + onAfterLeave: function onAfterLeave() { + this.transitioning = false; + this.$emit('hidden'); + }, + emitState: function emitState() { + this.$emit('input', this.show); // Let `v-b-toggle` know the state of this collapse + + this.emitOnRoot(EVENT_STATE, this.safeId(), this.show); + + if (this.accordion && this.show) { + // Tell the other collapses in this accordion to close + this.emitOnRoot(EVENT_ACCORDION, this.safeId(), this.accordion); + } + }, + emitSync: function emitSync() { + // Emit a private event every time this component updates to ensure + // the toggle button is in sync with the collapse's state + // It is emitted regardless if the visible state changes + this.emitOnRoot(EVENT_STATE_SYNC, this.safeId(), this.show); + }, + checkDisplayBlock: function checkDisplayBlock() { + // Check to see if the collapse has `display: block !important` set + // We can't set `display: none` directly on `this.$el`, as it would + // trigger a new transition to start (or cancel a current one) + var restore = hasClass(this.$el, 'show'); + removeClass(this.$el, 'show'); + var isBlock = getCS(this.$el).display === 'block'; + + if (restore) { + addClass(this.$el, 'show'); + } + + return isBlock; + }, + clickHandler: function clickHandler(evt) { + // If we are in a nav/navbar, close the collapse when non-disabled link clicked + var el = evt.target; + + if (!this.isNav || !el || getCS(this.$el).display !== 'block') { + /* istanbul ignore next: can't test getComputedStyle in JSDOM */ + return; + } + + if (matches(el, '.nav-link,.dropdown-item') || closest('.nav-link,.dropdown-item', el)) { + if (!this.checkDisplayBlock()) { + // Only close the collapse if it is not forced to be `display: block !important` + this.show = false; + } + } + }, + handleToggleEvt: function handleToggleEvt(target) { + if (target !== this.safeId()) { + return; + } + + this.toggle(); + }, + handleAccordionEvt: function handleAccordionEvt(openedId, accordion) { + if (!this.accordion || accordion !== this.accordion) { + return; + } + + if (openedId === this.safeId()) { + // Open this collapse if not shown + if (!this.show) { + this.toggle(); + } + } else { + // Close this collapse if shown + if (this.show) { + this.toggle(); + } + } + }, + handleResize: function handleResize() { + // Handler for orientation/resize to set collapsed state in nav/navbar + this.show = getCS(this.$el).display === 'block'; + } + }, + render: function render(h) { + var _this2 = this; + + var scope = { + visible: this.show, + close: function close() { + return _this2.show = false; + } + }; + var content = h(this.tag, { + class: this.classObject, + directives: [{ + name: 'show', + value: this.show + }], + attrs: { + id: this.safeId() + }, + on: { + click: this.clickHandler + } + }, [this.normalizeSlot('default', scope)]); + return h(BVCollapse, { + props: { + appear: this.appear + }, + on: { + enter: this.onEnter, + afterEnter: this.onAfterEnter, + leave: this.onLeave, + afterLeave: this.onAfterLeave + } + }, [content]); + } + }); + + var VBTogglePlugin = /*#__PURE__*/pluginFactory({ + directives: { + VBToggle: VBToggle + } + }); + + var CollapsePlugin = /*#__PURE__*/pluginFactory({ + components: { + BCollapse: BCollapse + }, + plugins: { + VBTogglePlugin: VBTogglePlugin + } + }); + + /**! + * @fileOverview Kickass library to create and place poppers near their reference elements. + * @version 1.16.1 + * @license + * Copyright (c) 2016 Federico Zivolo and contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + var isBrowser$1 = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined'; + + var timeoutDuration = function () { + var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox']; + for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) { + if (isBrowser$1 && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) { + return 1; + } + } + return 0; + }(); + + function microtaskDebounce(fn) { + var called = false; + return function () { + if (called) { + return; + } + called = true; + window.Promise.resolve().then(function () { + called = false; + fn(); + }); + }; + } + + function taskDebounce(fn) { + var scheduled = false; + return function () { + if (!scheduled) { + scheduled = true; + setTimeout(function () { + scheduled = false; + fn(); + }, timeoutDuration); + } + }; + } + + var supportsMicroTasks = isBrowser$1 && window.Promise; + + /** + * Create a debounced version of a method, that's asynchronously deferred + * but called in the minimum time possible. + * + * @method + * @memberof Popper.Utils + * @argument {Function} fn + * @returns {Function} + */ + var debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce; + + /** + * Check if the given variable is a function + * @method + * @memberof Popper.Utils + * @argument {Any} functionToCheck - variable to check + * @returns {Boolean} answer to: is a function? + */ + function isFunction$1(functionToCheck) { + var getType = {}; + return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]'; + } + + /** + * Get CSS computed property of the given element + * @method + * @memberof Popper.Utils + * @argument {Eement} element + * @argument {String} property + */ + function getStyleComputedProperty(element, property) { + if (element.nodeType !== 1) { + return []; + } + // NOTE: 1 DOM access here + var window = element.ownerDocument.defaultView; + var css = window.getComputedStyle(element, null); + return property ? css[property] : css; + } + + /** + * Returns the parentNode or the host of the element + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @returns {Element} parent + */ + function getParentNode(element) { + if (element.nodeName === 'HTML') { + return element; + } + return element.parentNode || element.host; + } + + /** + * Returns the scrolling parent of the given element + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @returns {Element} scroll parent + */ + function getScrollParent(element) { + // Return body, `getScroll` will take care to get the correct `scrollTop` from it + if (!element) { + return document.body; + } + + switch (element.nodeName) { + case 'HTML': + case 'BODY': + return element.ownerDocument.body; + case '#document': + return element.body; + } + + // Firefox want us to check `-x` and `-y` variations as well + + var _getStyleComputedProp = getStyleComputedProperty(element), + overflow = _getStyleComputedProp.overflow, + overflowX = _getStyleComputedProp.overflowX, + overflowY = _getStyleComputedProp.overflowY; + + if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) { + return element; + } + + return getScrollParent(getParentNode(element)); + } + + /** + * Returns the reference node of the reference object, or the reference object itself. + * @method + * @memberof Popper.Utils + * @param {Element|Object} reference - the reference element (the popper will be relative to this) + * @returns {Element} parent + */ + function getReferenceNode(reference) { + return reference && reference.referenceNode ? reference.referenceNode : reference; + } + + var isIE11 = isBrowser$1 && !!(window.MSInputMethodContext && document.documentMode); + var isIE10 = isBrowser$1 && /MSIE 10/.test(navigator.userAgent); + + /** + * Determines if the browser is Internet Explorer + * @method + * @memberof Popper.Utils + * @param {Number} version to check + * @returns {Boolean} isIE + */ + function isIE$1(version) { + if (version === 11) { + return isIE11; + } + if (version === 10) { + return isIE10; + } + return isIE11 || isIE10; + } + + /** + * Returns the offset parent of the given element + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @returns {Element} offset parent + */ + function getOffsetParent(element) { + if (!element) { + return document.documentElement; + } + + var noOffsetParent = isIE$1(10) ? document.body : null; + + // NOTE: 1 DOM access here + var offsetParent = element.offsetParent || null; + // Skip hidden elements which don't have an offsetParent + while (offsetParent === noOffsetParent && element.nextElementSibling) { + offsetParent = (element = element.nextElementSibling).offsetParent; + } + + var nodeName = offsetParent && offsetParent.nodeName; + + if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') { + return element ? element.ownerDocument.documentElement : document.documentElement; + } + + // .offsetParent will return the closest TH, TD or TABLE in case + // no offsetParent is present, I hate this job... + if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') { + return getOffsetParent(offsetParent); + } + + return offsetParent; + } + + function isOffsetContainer(element) { + var nodeName = element.nodeName; + + if (nodeName === 'BODY') { + return false; + } + return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element; + } + + /** + * Finds the root node (document, shadowDOM root) of the given element + * @method + * @memberof Popper.Utils + * @argument {Element} node + * @returns {Element} root node + */ + function getRoot(node) { + if (node.parentNode !== null) { + return getRoot(node.parentNode); + } + + return node; + } + + /** + * Finds the offset parent common to the two provided nodes + * @method + * @memberof Popper.Utils + * @argument {Element} element1 + * @argument {Element} element2 + * @returns {Element} common offset parent + */ + function findCommonOffsetParent(element1, element2) { + // This check is needed to avoid errors in case one of the elements isn't defined for any reason + if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) { + return document.documentElement; + } + + // Here we make sure to give as "start" the element that comes first in the DOM + var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING; + var start = order ? element1 : element2; + var end = order ? element2 : element1; + + // Get common ancestor container + var range = document.createRange(); + range.setStart(start, 0); + range.setEnd(end, 0); + var commonAncestorContainer = range.commonAncestorContainer; + + // Both nodes are inside #document + + if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) { + if (isOffsetContainer(commonAncestorContainer)) { + return commonAncestorContainer; + } + + return getOffsetParent(commonAncestorContainer); + } + + // one of the nodes is inside shadowDOM, find which one + var element1root = getRoot(element1); + if (element1root.host) { + return findCommonOffsetParent(element1root.host, element2); + } else { + return findCommonOffsetParent(element1, getRoot(element2).host); + } + } + + /** + * Gets the scroll value of the given element in the given side (top and left) + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @argument {String} side `top` or `left` + * @returns {number} amount of scrolled pixels + */ + function getScroll(element) { + var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top'; + + var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft'; + var nodeName = element.nodeName; + + if (nodeName === 'BODY' || nodeName === 'HTML') { + var html = element.ownerDocument.documentElement; + var scrollingElement = element.ownerDocument.scrollingElement || html; + return scrollingElement[upperSide]; + } + + return element[upperSide]; + } + + /* + * Sum or subtract the element scroll values (left and top) from a given rect object + * @method + * @memberof Popper.Utils + * @param {Object} rect - Rect object you want to change + * @param {HTMLElement} element - The element from the function reads the scroll values + * @param {Boolean} subtract - set to true if you want to subtract the scroll values + * @return {Object} rect - The modifier rect object + */ + function includeScroll(rect, element) { + var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + + var scrollTop = getScroll(element, 'top'); + var scrollLeft = getScroll(element, 'left'); + var modifier = subtract ? -1 : 1; + rect.top += scrollTop * modifier; + rect.bottom += scrollTop * modifier; + rect.left += scrollLeft * modifier; + rect.right += scrollLeft * modifier; + return rect; + } + + /* + * Helper to detect borders of a given element + * @method + * @memberof Popper.Utils + * @param {CSSStyleDeclaration} styles + * Result of `getStyleComputedProperty` on the given element + * @param {String} axis - `x` or `y` + * @return {number} borders - The borders size of the given axis + */ + + function getBordersSize(styles, axis) { + var sideA = axis === 'x' ? 'Left' : 'Top'; + var sideB = sideA === 'Left' ? 'Right' : 'Bottom'; + + return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']); + } + + function getSize(axis, body, html, computedStyle) { + return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE$1(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0); + } + + function getWindowSizes(document) { + var body = document.body; + var html = document.documentElement; + var computedStyle = isIE$1(10) && getComputedStyle(html); + + return { + height: getSize('Height', body, html, computedStyle), + width: getSize('Width', body, html, computedStyle) + }; + } + + var classCallCheck = function (instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + }; + + var createClass = 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); + } + } + + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; + }(); + + + + + + var defineProperty$1 = function (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; + }; + + var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + /** + * Given element offsets, generate an output similar to getBoundingClientRect + * @method + * @memberof Popper.Utils + * @argument {Object} offsets + * @returns {Object} ClientRect like output + */ + function getClientRect(offsets) { + return _extends({}, offsets, { + right: offsets.left + offsets.width, + bottom: offsets.top + offsets.height + }); + } + + /** + * Get bounding client rect of given element + * @method + * @memberof Popper.Utils + * @param {HTMLElement} element + * @return {Object} client rect + */ + function getBoundingClientRect(element) { + var rect = {}; + + // IE10 10 FIX: Please, don't ask, the element isn't + // considered in DOM in some circumstances... + // This isn't reproducible in IE10 compatibility mode of IE11 + try { + if (isIE$1(10)) { + rect = element.getBoundingClientRect(); + var scrollTop = getScroll(element, 'top'); + var scrollLeft = getScroll(element, 'left'); + rect.top += scrollTop; + rect.left += scrollLeft; + rect.bottom += scrollTop; + rect.right += scrollLeft; + } else { + rect = element.getBoundingClientRect(); + } + } catch (e) {} + + var result = { + left: rect.left, + top: rect.top, + width: rect.right - rect.left, + height: rect.bottom - rect.top + }; + + // subtract scrollbar size from sizes + var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {}; + var width = sizes.width || element.clientWidth || result.width; + var height = sizes.height || element.clientHeight || result.height; + + var horizScrollbar = element.offsetWidth - width; + var vertScrollbar = element.offsetHeight - height; + + // if an hypothetical scrollbar is detected, we must be sure it's not a `border` + // we make this check conditional for performance reasons + if (horizScrollbar || vertScrollbar) { + var styles = getStyleComputedProperty(element); + horizScrollbar -= getBordersSize(styles, 'x'); + vertScrollbar -= getBordersSize(styles, 'y'); + + result.width -= horizScrollbar; + result.height -= vertScrollbar; + } + + return getClientRect(result); + } + + function getOffsetRectRelativeToArbitraryNode(children, parent) { + var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + + var isIE10 = isIE$1(10); + var isHTML = parent.nodeName === 'HTML'; + var childrenRect = getBoundingClientRect(children); + var parentRect = getBoundingClientRect(parent); + var scrollParent = getScrollParent(children); + + var styles = getStyleComputedProperty(parent); + var borderTopWidth = parseFloat(styles.borderTopWidth); + var borderLeftWidth = parseFloat(styles.borderLeftWidth); + + // In cases where the parent is fixed, we must ignore negative scroll in offset calc + if (fixedPosition && isHTML) { + parentRect.top = Math.max(parentRect.top, 0); + parentRect.left = Math.max(parentRect.left, 0); + } + var offsets = getClientRect({ + top: childrenRect.top - parentRect.top - borderTopWidth, + left: childrenRect.left - parentRect.left - borderLeftWidth, + width: childrenRect.width, + height: childrenRect.height + }); + offsets.marginTop = 0; + offsets.marginLeft = 0; + + // Subtract margins of documentElement in case it's being used as parent + // we do this only on HTML because it's the only element that behaves + // differently when margins are applied to it. The margins are included in + // the box of the documentElement, in the other cases not. + if (!isIE10 && isHTML) { + var marginTop = parseFloat(styles.marginTop); + var marginLeft = parseFloat(styles.marginLeft); + + offsets.top -= borderTopWidth - marginTop; + offsets.bottom -= borderTopWidth - marginTop; + offsets.left -= borderLeftWidth - marginLeft; + offsets.right -= borderLeftWidth - marginLeft; + + // Attach marginTop and marginLeft because in some circumstances we may need them + offsets.marginTop = marginTop; + offsets.marginLeft = marginLeft; + } + + if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') { + offsets = includeScroll(offsets, parent); + } + + return offsets; + } + + function getViewportOffsetRectRelativeToArtbitraryNode(element) { + var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + var html = element.ownerDocument.documentElement; + var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html); + var width = Math.max(html.clientWidth, window.innerWidth || 0); + var height = Math.max(html.clientHeight, window.innerHeight || 0); + + var scrollTop = !excludeScroll ? getScroll(html) : 0; + var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0; + + var offset = { + top: scrollTop - relativeOffset.top + relativeOffset.marginTop, + left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft, + width: width, + height: height + }; + + return getClientRect(offset); + } + + /** + * Check if the given element is fixed or is inside a fixed parent + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @argument {Element} customContainer + * @returns {Boolean} answer to "isFixed?" + */ + function isFixed(element) { + var nodeName = element.nodeName; + if (nodeName === 'BODY' || nodeName === 'HTML') { + return false; + } + if (getStyleComputedProperty(element, 'position') === 'fixed') { + return true; + } + var parentNode = getParentNode(element); + if (!parentNode) { + return false; + } + return isFixed(parentNode); + } + + /** + * Finds the first parent of an element that has a transformed property defined + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @returns {Element} first transformed parent or documentElement + */ + + function getFixedPositionOffsetParent(element) { + // This check is needed to avoid errors in case one of the elements isn't defined for any reason + if (!element || !element.parentElement || isIE$1()) { + return document.documentElement; + } + var el = element.parentElement; + while (el && getStyleComputedProperty(el, 'transform') === 'none') { + el = el.parentElement; + } + return el || document.documentElement; + } + + /** + * Computed the boundaries limits and return them + * @method + * @memberof Popper.Utils + * @param {HTMLElement} popper + * @param {HTMLElement} reference + * @param {number} padding + * @param {HTMLElement} boundariesElement - Element used to define the boundaries + * @param {Boolean} fixedPosition - Is in fixed position mode + * @returns {Object} Coordinates of the boundaries + */ + function getBoundaries(popper, reference, padding, boundariesElement) { + var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; + + // NOTE: 1 DOM access here + + var boundaries = { top: 0, left: 0 }; + var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference)); + + // Handle viewport case + if (boundariesElement === 'viewport') { + boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition); + } else { + // Handle other cases based on DOM element used as boundaries + var boundariesNode = void 0; + if (boundariesElement === 'scrollParent') { + boundariesNode = getScrollParent(getParentNode(reference)); + if (boundariesNode.nodeName === 'BODY') { + boundariesNode = popper.ownerDocument.documentElement; + } + } else if (boundariesElement === 'window') { + boundariesNode = popper.ownerDocument.documentElement; + } else { + boundariesNode = boundariesElement; + } + + var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition); + + // In case of HTML, we need a different computation + if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) { + var _getWindowSizes = getWindowSizes(popper.ownerDocument), + height = _getWindowSizes.height, + width = _getWindowSizes.width; + + boundaries.top += offsets.top - offsets.marginTop; + boundaries.bottom = height + offsets.top; + boundaries.left += offsets.left - offsets.marginLeft; + boundaries.right = width + offsets.left; + } else { + // for all the other DOM elements, this one is good + boundaries = offsets; + } + } + + // Add paddings + padding = padding || 0; + var isPaddingNumber = typeof padding === 'number'; + boundaries.left += isPaddingNumber ? padding : padding.left || 0; + boundaries.top += isPaddingNumber ? padding : padding.top || 0; + boundaries.right -= isPaddingNumber ? padding : padding.right || 0; + boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; + + return boundaries; + } + + function getArea(_ref) { + var width = _ref.width, + height = _ref.height; + + return width * height; + } + + /** + * Utility used to transform the `auto` placement to the placement with more + * available space. + * @method + * @memberof Popper.Utils + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) { + var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0; + + if (placement.indexOf('auto') === -1) { + return placement; + } + + var boundaries = getBoundaries(popper, reference, padding, boundariesElement); + + var rects = { + top: { + width: boundaries.width, + height: refRect.top - boundaries.top + }, + right: { + width: boundaries.right - refRect.right, + height: boundaries.height + }, + bottom: { + width: boundaries.width, + height: boundaries.bottom - refRect.bottom + }, + left: { + width: refRect.left - boundaries.left, + height: boundaries.height + } + }; + + var sortedAreas = Object.keys(rects).map(function (key) { + return _extends({ + key: key + }, rects[key], { + area: getArea(rects[key]) + }); + }).sort(function (a, b) { + return b.area - a.area; + }); + + var filteredAreas = sortedAreas.filter(function (_ref2) { + var width = _ref2.width, + height = _ref2.height; + return width >= popper.clientWidth && height >= popper.clientHeight; + }); + + var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key; + + var variation = placement.split('-')[1]; + + return computedPlacement + (variation ? '-' + variation : ''); + } + + /** + * Get offsets to the reference element + * @method + * @memberof Popper.Utils + * @param {Object} state + * @param {Element} popper - the popper element + * @param {Element} reference - the reference element (the popper will be relative to this) + * @param {Element} fixedPosition - is in fixed position mode + * @returns {Object} An object containing the offsets which will be applied to the popper + */ + function getReferenceOffsets(state, popper, reference) { + var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; + + var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference)); + return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition); + } + + /** + * Get the outer sizes of the given element (offset size + margins) + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @returns {Object} object containing width and height properties + */ + function getOuterSizes(element) { + var window = element.ownerDocument.defaultView; + var styles = window.getComputedStyle(element); + var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0); + var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0); + var result = { + width: element.offsetWidth + y, + height: element.offsetHeight + x + }; + return result; + } + + /** + * Get the opposite placement of the given one + * @method + * @memberof Popper.Utils + * @argument {String} placement + * @returns {String} flipped placement + */ + function getOppositePlacement(placement) { + var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' }; + return placement.replace(/left|right|bottom|top/g, function (matched) { + return hash[matched]; + }); + } + + /** + * Get offsets to the popper + * @method + * @memberof Popper.Utils + * @param {Object} position - CSS position the Popper will get applied + * @param {HTMLElement} popper - the popper element + * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this) + * @param {String} placement - one of the valid placement options + * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper + */ + function getPopperOffsets(popper, referenceOffsets, placement) { + placement = placement.split('-')[0]; + + // Get popper node sizes + var popperRect = getOuterSizes(popper); + + // Add position, width and height to our offsets object + var popperOffsets = { + width: popperRect.width, + height: popperRect.height + }; + + // depending by the popper placement we have to compute its offsets slightly differently + var isHoriz = ['right', 'left'].indexOf(placement) !== -1; + var mainSide = isHoriz ? 'top' : 'left'; + var secondarySide = isHoriz ? 'left' : 'top'; + var measurement = isHoriz ? 'height' : 'width'; + var secondaryMeasurement = !isHoriz ? 'height' : 'width'; + + popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2; + if (placement === secondarySide) { + popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement]; + } else { + popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)]; + } + + return popperOffsets; + } + + /** + * Mimics the `find` method of Array + * @method + * @memberof Popper.Utils + * @argument {Array} arr + * @argument prop + * @argument value + * @returns index or -1 + */ + function find(arr, check) { + // use native find if supported + if (Array.prototype.find) { + return arr.find(check); + } + + // use `filter` to obtain the same behavior of `find` + return arr.filter(check)[0]; + } + + /** + * Return the index of the matching object + * @method + * @memberof Popper.Utils + * @argument {Array} arr + * @argument prop + * @argument value + * @returns index or -1 + */ + function findIndex(arr, prop, value) { + // use native findIndex if supported + if (Array.prototype.findIndex) { + return arr.findIndex(function (cur) { + return cur[prop] === value; + }); + } + + // use `find` + `indexOf` if `findIndex` isn't supported + var match = find(arr, function (obj) { + return obj[prop] === value; + }); + return arr.indexOf(match); + } + + /** + * Loop trough the list of modifiers and run them in order, + * each of them will then edit the data object. + * @method + * @memberof Popper.Utils + * @param {dataObject} data + * @param {Array} modifiers + * @param {String} ends - Optional modifier name used as stopper + * @returns {dataObject} + */ + function runModifiers(modifiers, data, ends) { + var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends)); + + modifiersToRun.forEach(function (modifier) { + if (modifier['function']) { + // eslint-disable-line dot-notation + console.warn('`modifier.function` is deprecated, use `modifier.fn`!'); + } + var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation + if (modifier.enabled && isFunction$1(fn)) { + // Add properties to offsets to make them a complete clientRect object + // we do this before each modifier to make sure the previous one doesn't + // mess with these values + data.offsets.popper = getClientRect(data.offsets.popper); + data.offsets.reference = getClientRect(data.offsets.reference); + + data = fn(data, modifier); + } + }); + + return data; + } + + /** + * Updates the position of the popper, computing the new offsets and applying + * the new style.
+ * Prefer `scheduleUpdate` over `update` because of performance reasons. + * @method + * @memberof Popper + */ + function update() { + // if popper is destroyed, don't perform any further update + if (this.state.isDestroyed) { + return; + } + + var data = { + instance: this, + styles: {}, + arrowStyles: {}, + attributes: {}, + flipped: false, + offsets: {} + }; + + // compute reference element offsets + data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed); + + // compute auto placement, store placement inside the data object, + // modifiers will be able to edit `placement` if needed + // and refer to originalPlacement to know the original value + data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding); + + // store the computed placement inside `originalPlacement` + data.originalPlacement = data.placement; + + data.positionFixed = this.options.positionFixed; + + // compute the popper offsets + data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement); + + data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute'; + + // run the modifiers + data = runModifiers(this.modifiers, data); + + // the first `update` will call `onCreate` callback + // the other ones will call `onUpdate` callback + if (!this.state.isCreated) { + this.state.isCreated = true; + this.options.onCreate(data); + } else { + this.options.onUpdate(data); + } + } + + /** + * Helper used to know if the given modifier is enabled. + * @method + * @memberof Popper.Utils + * @returns {Boolean} + */ + function isModifierEnabled(modifiers, modifierName) { + return modifiers.some(function (_ref) { + var name = _ref.name, + enabled = _ref.enabled; + return enabled && name === modifierName; + }); + } + + /** + * Get the prefixed supported property name + * @method + * @memberof Popper.Utils + * @argument {String} property (camelCase) + * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix) + */ + function getSupportedPropertyName(property) { + var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O']; + var upperProp = property.charAt(0).toUpperCase() + property.slice(1); + + for (var i = 0; i < prefixes.length; i++) { + var prefix = prefixes[i]; + var toCheck = prefix ? '' + prefix + upperProp : property; + if (typeof document.body.style[toCheck] !== 'undefined') { + return toCheck; + } + } + return null; + } + + /** + * Destroys the popper. + * @method + * @memberof Popper + */ + function destroy$1() { + this.state.isDestroyed = true; + + // touch DOM only if `applyStyle` modifier is enabled + if (isModifierEnabled(this.modifiers, 'applyStyle')) { + this.popper.removeAttribute('x-placement'); + this.popper.style.position = ''; + this.popper.style.top = ''; + this.popper.style.left = ''; + this.popper.style.right = ''; + this.popper.style.bottom = ''; + this.popper.style.willChange = ''; + this.popper.style[getSupportedPropertyName('transform')] = ''; + } + + this.disableEventListeners(); + + // remove the popper if user explicitly asked for the deletion on destroy + // do not use `remove` because IE11 doesn't support it + if (this.options.removeOnDestroy) { + this.popper.parentNode.removeChild(this.popper); + } + return this; + } + + /** + * Get the window associated with the element + * @argument {Element} element + * @returns {Window} + */ + function getWindow(element) { + var ownerDocument = element.ownerDocument; + return ownerDocument ? ownerDocument.defaultView : window; + } + + function attachToScrollParents(scrollParent, event, callback, scrollParents) { + var isBody = scrollParent.nodeName === 'BODY'; + var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent; + target.addEventListener(event, callback, { passive: true }); + + if (!isBody) { + attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents); + } + scrollParents.push(target); + } + + /** + * Setup needed event listeners used to update the popper position + * @method + * @memberof Popper.Utils + * @private + */ + function setupEventListeners(reference, options, state, updateBound) { + // Resize event listener on window + state.updateBound = updateBound; + getWindow(reference).addEventListener('resize', state.updateBound, { passive: true }); + + // Scroll event listener on scroll parents + var scrollElement = getScrollParent(reference); + attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents); + state.scrollElement = scrollElement; + state.eventsEnabled = true; + + return state; + } + + /** + * It will add resize/scroll events and start recalculating + * position of the popper element when they are triggered. + * @method + * @memberof Popper + */ + function enableEventListeners() { + if (!this.state.eventsEnabled) { + this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate); + } + } + + /** + * Remove event listeners used to update the popper position + * @method + * @memberof Popper.Utils + * @private + */ + function removeEventListeners(reference, state) { + // Remove resize event listener on window + getWindow(reference).removeEventListener('resize', state.updateBound); + + // Remove scroll event listener on scroll parents + state.scrollParents.forEach(function (target) { + target.removeEventListener('scroll', state.updateBound); + }); + + // Reset state + state.updateBound = null; + state.scrollParents = []; + state.scrollElement = null; + state.eventsEnabled = false; + return state; + } + + /** + * It will remove resize/scroll events and won't recalculate popper position + * when they are triggered. It also won't trigger `onUpdate` callback anymore, + * unless you call `update` method manually. + * @method + * @memberof Popper + */ + function disableEventListeners() { + if (this.state.eventsEnabled) { + cancelAnimationFrame(this.scheduleUpdate); + this.state = removeEventListeners(this.reference, this.state); + } + } + + /** + * Tells if a given input is a number + * @method + * @memberof Popper.Utils + * @param {*} input to check + * @return {Boolean} + */ + function isNumeric(n) { + return n !== '' && !isNaN(parseFloat(n)) && isFinite(n); + } + + /** + * Set the style to the given popper + * @method + * @memberof Popper.Utils + * @argument {Element} element - Element to apply the style to + * @argument {Object} styles + * Object with a list of properties and values which will be applied to the element + */ + function setStyles(element, styles) { + Object.keys(styles).forEach(function (prop) { + var unit = ''; + // add unit if the value is numeric and is one of the following + if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) { + unit = 'px'; + } + element.style[prop] = styles[prop] + unit; + }); + } + + /** + * Set the attributes to the given popper + * @method + * @memberof Popper.Utils + * @argument {Element} element - Element to apply the attributes to + * @argument {Object} styles + * Object with a list of properties and values which will be applied to the element + */ + function setAttributes(element, attributes) { + Object.keys(attributes).forEach(function (prop) { + var value = attributes[prop]; + if (value !== false) { + element.setAttribute(prop, attributes[prop]); + } else { + element.removeAttribute(prop); + } + }); + } + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by `update` method + * @argument {Object} data.styles - List of style properties - values to apply to popper element + * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The same data object + */ + function applyStyle(data) { + // any property present in `data.styles` will be applied to the popper, + // in this way we can make the 3rd party modifiers add custom styles to it + // Be aware, modifiers could override the properties defined in the previous + // lines of this modifier! + setStyles(data.instance.popper, data.styles); + + // any property present in `data.attributes` will be applied to the popper, + // they will be set as HTML attributes of the element + setAttributes(data.instance.popper, data.attributes); + + // if arrowElement is defined and arrowStyles has some properties + if (data.arrowElement && Object.keys(data.arrowStyles).length) { + setStyles(data.arrowElement, data.arrowStyles); + } + + return data; + } + + /** + * Set the x-placement attribute before everything else because it could be used + * to add margins to the popper margins needs to be calculated to get the + * correct popper offsets. + * @method + * @memberof Popper.modifiers + * @param {HTMLElement} reference - The reference element used to position the popper + * @param {HTMLElement} popper - The HTML element used as popper + * @param {Object} options - Popper.js options + */ + function applyStyleOnLoad(reference, popper, options, modifierOptions, state) { + // compute reference element offsets + var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed); + + // compute auto placement, store placement inside the data object, + // modifiers will be able to edit `placement` if needed + // and refer to originalPlacement to know the original value + var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding); + + popper.setAttribute('x-placement', placement); + + // Apply `position` to popper before anything else because + // without the position applied we can't guarantee correct computations + setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' }); + + return options; + } + + /** + * @function + * @memberof Popper.Utils + * @argument {Object} data - The data object generated by `update` method + * @argument {Boolean} shouldRound - If the offsets should be rounded at all + * @returns {Object} The popper's position offsets rounded + * + * The tale of pixel-perfect positioning. It's still not 100% perfect, but as + * good as it can be within reason. + * Discussion here: https://github.com/FezVrasta/popper.js/pull/715 + * + * Low DPI screens cause a popper to be blurry if not using full pixels (Safari + * as well on High DPI screens). + * + * Firefox prefers no rounding for positioning and does not have blurriness on + * high DPI screens. + * + * Only horizontal placement and left/right values need to be considered. + */ + function getRoundedOffsets(data, shouldRound) { + var _data$offsets = data.offsets, + popper = _data$offsets.popper, + reference = _data$offsets.reference; + var round = Math.round, + floor = Math.floor; + + var noRound = function noRound(v) { + return v; + }; + + var referenceWidth = round(reference.width); + var popperWidth = round(popper.width); + + var isVertical = ['left', 'right'].indexOf(data.placement) !== -1; + var isVariation = data.placement.indexOf('-') !== -1; + var sameWidthParity = referenceWidth % 2 === popperWidth % 2; + var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1; + + var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor; + var verticalToInteger = !shouldRound ? noRound : round; + + return { + left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left), + top: verticalToInteger(popper.top), + bottom: verticalToInteger(popper.bottom), + right: horizontalToInteger(popper.right) + }; + } + + var isFirefox = isBrowser$1 && /Firefox/i.test(navigator.userAgent); + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by `update` method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + function computeStyle(data, options) { + var x = options.x, + y = options.y; + var popper = data.offsets.popper; + + // Remove this legacy support in Popper.js v2 + + var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) { + return modifier.name === 'applyStyle'; + }).gpuAcceleration; + if (legacyGpuAccelerationOption !== undefined) { + console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'); + } + var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration; + + var offsetParent = getOffsetParent(data.instance.popper); + var offsetParentRect = getBoundingClientRect(offsetParent); + + // Styles + var styles = { + position: popper.position + }; + + var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox); + + var sideA = x === 'bottom' ? 'top' : 'bottom'; + var sideB = y === 'right' ? 'left' : 'right'; + + // if gpuAcceleration is set to `true` and transform is supported, + // we use `translate3d` to apply the position to the popper we + // automatically use the supported prefixed version if needed + var prefixedProperty = getSupportedPropertyName('transform'); + + // now, let's make a step back and look at this code closely (wtf?) + // If the content of the popper grows once it's been positioned, it + // may happen that the popper gets misplaced because of the new content + // overflowing its reference element + // To avoid this problem, we provide two options (x and y), which allow + // the consumer to define the offset origin. + // If we position a popper on top of a reference element, we can set + // `x` to `top` to make the popper grow towards its top instead of + // its bottom. + var left = void 0, + top = void 0; + if (sideA === 'bottom') { + // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar) + // and not the bottom of the html element + if (offsetParent.nodeName === 'HTML') { + top = -offsetParent.clientHeight + offsets.bottom; + } else { + top = -offsetParentRect.height + offsets.bottom; + } + } else { + top = offsets.top; + } + if (sideB === 'right') { + if (offsetParent.nodeName === 'HTML') { + left = -offsetParent.clientWidth + offsets.right; + } else { + left = -offsetParentRect.width + offsets.right; + } + } else { + left = offsets.left; + } + if (gpuAcceleration && prefixedProperty) { + styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)'; + styles[sideA] = 0; + styles[sideB] = 0; + styles.willChange = 'transform'; + } else { + // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties + var invertTop = sideA === 'bottom' ? -1 : 1; + var invertLeft = sideB === 'right' ? -1 : 1; + styles[sideA] = top * invertTop; + styles[sideB] = left * invertLeft; + styles.willChange = sideA + ', ' + sideB; + } + + // Attributes + var attributes = { + 'x-placement': data.placement + }; + + // Update `data` attributes, styles and arrowStyles + data.attributes = _extends({}, attributes, data.attributes); + data.styles = _extends({}, styles, data.styles); + data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles); + + return data; + } + + /** + * Helper used to know if the given modifier depends from another one.
+ * It checks if the needed modifier is listed and enabled. + * @method + * @memberof Popper.Utils + * @param {Array} modifiers - list of modifiers + * @param {String} requestingName - name of requesting modifier + * @param {String} requestedName - name of requested modifier + * @returns {Boolean} + */ + function isModifierRequired(modifiers, requestingName, requestedName) { + var requesting = find(modifiers, function (_ref) { + var name = _ref.name; + return name === requestingName; + }); + + var isRequired = !!requesting && modifiers.some(function (modifier) { + return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order; + }); + + if (!isRequired) { + var _requesting = '`' + requestingName + '`'; + var requested = '`' + requestedName + '`'; + console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!'); + } + return isRequired; + } + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + function arrow(data, options) { + var _data$offsets$arrow; + + // arrow depends on keepTogether in order to work + if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) { + return data; + } + + var arrowElement = options.element; + + // if arrowElement is a string, suppose it's a CSS selector + if (typeof arrowElement === 'string') { + arrowElement = data.instance.popper.querySelector(arrowElement); + + // if arrowElement is not found, don't run the modifier + if (!arrowElement) { + return data; + } + } else { + // if the arrowElement isn't a query selector we must check that the + // provided DOM node is child of its popper node + if (!data.instance.popper.contains(arrowElement)) { + console.warn('WARNING: `arrow.element` must be child of its popper element!'); + return data; + } + } + + var placement = data.placement.split('-')[0]; + var _data$offsets = data.offsets, + popper = _data$offsets.popper, + reference = _data$offsets.reference; + + var isVertical = ['left', 'right'].indexOf(placement) !== -1; + + var len = isVertical ? 'height' : 'width'; + var sideCapitalized = isVertical ? 'Top' : 'Left'; + var side = sideCapitalized.toLowerCase(); + var altSide = isVertical ? 'left' : 'top'; + var opSide = isVertical ? 'bottom' : 'right'; + var arrowElementSize = getOuterSizes(arrowElement)[len]; + + // + // extends keepTogether behavior making sure the popper and its + // reference have enough pixels in conjunction + // + + // top/left side + if (reference[opSide] - arrowElementSize < popper[side]) { + data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize); + } + // bottom/right side + if (reference[side] + arrowElementSize > popper[opSide]) { + data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide]; + } + data.offsets.popper = getClientRect(data.offsets.popper); + + // compute center of the popper + var center = reference[side] + reference[len] / 2 - arrowElementSize / 2; + + // Compute the sideValue using the updated popper offsets + // take popper margin in account because we don't have this info available + var css = getStyleComputedProperty(data.instance.popper); + var popperMarginSide = parseFloat(css['margin' + sideCapitalized]); + var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']); + var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide; + + // prevent arrowElement from being placed not contiguously to its popper + sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0); + + data.arrowElement = arrowElement; + data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty$1(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty$1(_data$offsets$arrow, altSide, ''), _data$offsets$arrow); + + return data; + } + + /** + * Get the opposite placement variation of the given one + * @method + * @memberof Popper.Utils + * @argument {String} placement variation + * @returns {String} flipped placement variation + */ + function getOppositeVariation(variation) { + if (variation === 'end') { + return 'start'; + } else if (variation === 'start') { + return 'end'; + } + return variation; + } + + /** + * List of accepted placements to use as values of the `placement` option.
+ * Valid placements are: + * - `auto` + * - `top` + * - `right` + * - `bottom` + * - `left` + * + * Each placement can have a variation from this list: + * - `-start` + * - `-end` + * + * Variations are interpreted easily if you think of them as the left to right + * written languages. Horizontally (`top` and `bottom`), `start` is left and `end` + * is right.
+ * Vertically (`left` and `right`), `start` is top and `end` is bottom. + * + * Some valid examples are: + * - `top-end` (on top of reference, right aligned) + * - `right-start` (on right of reference, top aligned) + * - `bottom` (on bottom, centered) + * - `auto-end` (on the side with more space available, alignment depends by placement) + * + * @static + * @type {Array} + * @enum {String} + * @readonly + * @method placements + * @memberof Popper + */ + var placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']; + + // Get rid of `auto` `auto-start` and `auto-end` + var validPlacements = placements.slice(3); + + /** + * Given an initial placement, returns all the subsequent placements + * clockwise (or counter-clockwise). + * + * @method + * @memberof Popper.Utils + * @argument {String} placement - A valid placement (it accepts variations) + * @argument {Boolean} counter - Set to true to walk the placements counterclockwise + * @returns {Array} placements including their variations + */ + function clockwise(placement) { + var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + var index = validPlacements.indexOf(placement); + var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index)); + return counter ? arr.reverse() : arr; + } + + var BEHAVIORS = { + FLIP: 'flip', + CLOCKWISE: 'clockwise', + COUNTERCLOCKWISE: 'counterclockwise' + }; + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + function flip(data, options) { + // if `inner` modifier is enabled, we can't use the `flip` modifier + if (isModifierEnabled(data.instance.modifiers, 'inner')) { + return data; + } + + if (data.flipped && data.placement === data.originalPlacement) { + // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides + return data; + } + + var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed); + + var placement = data.placement.split('-')[0]; + var placementOpposite = getOppositePlacement(placement); + var variation = data.placement.split('-')[1] || ''; + + var flipOrder = []; + + switch (options.behavior) { + case BEHAVIORS.FLIP: + flipOrder = [placement, placementOpposite]; + break; + case BEHAVIORS.CLOCKWISE: + flipOrder = clockwise(placement); + break; + case BEHAVIORS.COUNTERCLOCKWISE: + flipOrder = clockwise(placement, true); + break; + default: + flipOrder = options.behavior; + } + + flipOrder.forEach(function (step, index) { + if (placement !== step || flipOrder.length === index + 1) { + return data; + } + + placement = data.placement.split('-')[0]; + placementOpposite = getOppositePlacement(placement); + + var popperOffsets = data.offsets.popper; + var refOffsets = data.offsets.reference; + + // using floor because the reference offsets may contain decimals we are not going to consider here + var floor = Math.floor; + var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom); + + var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left); + var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right); + var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top); + var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom); + + var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom; + + // flip the variation if required + var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; + + // flips variation if reference element overflows boundaries + var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom); + + // flips variation if popper content overflows boundaries + var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop); + + var flippedVariation = flippedVariationByRef || flippedVariationByContent; + + if (overlapsRef || overflowsBoundaries || flippedVariation) { + // this boolean to detect any flip loop + data.flipped = true; + + if (overlapsRef || overflowsBoundaries) { + placement = flipOrder[index + 1]; + } + + if (flippedVariation) { + variation = getOppositeVariation(variation); + } + + data.placement = placement + (variation ? '-' + variation : ''); + + // this object contains `position`, we want to preserve it along with + // any additional property we may add in the future + data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement)); + + data = runModifiers(data.instance.modifiers, data, 'flip'); + } + }); + return data; + } + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + function keepTogether(data) { + var _data$offsets = data.offsets, + popper = _data$offsets.popper, + reference = _data$offsets.reference; + + var placement = data.placement.split('-')[0]; + var floor = Math.floor; + var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; + var side = isVertical ? 'right' : 'bottom'; + var opSide = isVertical ? 'left' : 'top'; + var measurement = isVertical ? 'width' : 'height'; + + if (popper[side] < floor(reference[opSide])) { + data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement]; + } + if (popper[opSide] > floor(reference[side])) { + data.offsets.popper[opSide] = floor(reference[side]); + } + + return data; + } + + /** + * Converts a string containing value + unit into a px value number + * @function + * @memberof {modifiers~offset} + * @private + * @argument {String} str - Value + unit string + * @argument {String} measurement - `height` or `width` + * @argument {Object} popperOffsets + * @argument {Object} referenceOffsets + * @returns {Number|String} + * Value in pixels, or original string if no values were extracted + */ + function toValue(str, measurement, popperOffsets, referenceOffsets) { + // separate value from unit + var split = str.match(/((?:\-|\+)?\d*\.?\d*)(.*)/); + var value = +split[1]; + var unit = split[2]; + + // If it's not a number it's an operator, I guess + if (!value) { + return str; + } + + if (unit.indexOf('%') === 0) { + var element = void 0; + switch (unit) { + case '%p': + element = popperOffsets; + break; + case '%': + case '%r': + default: + element = referenceOffsets; + } + + var rect = getClientRect(element); + return rect[measurement] / 100 * value; + } else if (unit === 'vh' || unit === 'vw') { + // if is a vh or vw, we calculate the size based on the viewport + var size = void 0; + if (unit === 'vh') { + size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); + } else { + size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0); + } + return size / 100 * value; + } else { + // if is an explicit pixel unit, we get rid of the unit and keep the value + // if is an implicit unit, it's px, and we return just the value + return value; + } + } + + /** + * Parse an `offset` string to extrapolate `x` and `y` numeric offsets. + * @function + * @memberof {modifiers~offset} + * @private + * @argument {String} offset + * @argument {Object} popperOffsets + * @argument {Object} referenceOffsets + * @argument {String} basePlacement + * @returns {Array} a two cells array with x and y offsets in numbers + */ + function parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) { + var offsets = [0, 0]; + + // Use height if placement is left or right and index is 0 otherwise use width + // in this way the first offset will use an axis and the second one + // will use the other one + var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1; + + // Split the offset string to obtain a list of values and operands + // The regex addresses values with the plus or minus sign in front (+10, -20, etc) + var fragments = offset.split(/(\+|\-)/).map(function (frag) { + return frag.trim(); + }); + + // Detect if the offset string contains a pair of values or a single one + // they could be separated by comma or space + var divider = fragments.indexOf(find(fragments, function (frag) { + return frag.search(/,|\s/) !== -1; + })); + + if (fragments[divider] && fragments[divider].indexOf(',') === -1) { + console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.'); + } + + // If divider is found, we divide the list of values and operands to divide + // them by ofset X and Y. + var splitRegex = /\s*,\s*|\s+/; + var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments]; + + // Convert the values with units to absolute pixels to allow our computations + ops = ops.map(function (op, index) { + // Most of the units rely on the orientation of the popper + var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width'; + var mergeWithPrevious = false; + return op + // This aggregates any `+` or `-` sign that aren't considered operators + // e.g.: 10 + +5 => [10, +, +5] + .reduce(function (a, b) { + if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) { + a[a.length - 1] = b; + mergeWithPrevious = true; + return a; + } else if (mergeWithPrevious) { + a[a.length - 1] += b; + mergeWithPrevious = false; + return a; + } else { + return a.concat(b); + } + }, []) + // Here we convert the string values into number values (in px) + .map(function (str) { + return toValue(str, measurement, popperOffsets, referenceOffsets); + }); + }); + + // Loop trough the offsets arrays and execute the operations + ops.forEach(function (op, index) { + op.forEach(function (frag, index2) { + if (isNumeric(frag)) { + offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1); + } + }); + }); + return offsets; + } + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @argument {Number|String} options.offset=0 + * The offset value as described in the modifier description + * @returns {Object} The data object, properly modified + */ + function offset$1(data, _ref) { + var offset = _ref.offset; + var placement = data.placement, + _data$offsets = data.offsets, + popper = _data$offsets.popper, + reference = _data$offsets.reference; + + var basePlacement = placement.split('-')[0]; + + var offsets = void 0; + if (isNumeric(+offset)) { + offsets = [+offset, 0]; + } else { + offsets = parseOffset(offset, popper, reference, basePlacement); + } + + if (basePlacement === 'left') { + popper.top += offsets[0]; + popper.left -= offsets[1]; + } else if (basePlacement === 'right') { + popper.top += offsets[0]; + popper.left += offsets[1]; + } else if (basePlacement === 'top') { + popper.left += offsets[0]; + popper.top -= offsets[1]; + } else if (basePlacement === 'bottom') { + popper.left += offsets[0]; + popper.top += offsets[1]; + } + + data.popper = popper; + return data; + } + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by `update` method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + function preventOverflow(data, options) { + var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper); + + // If offsetParent is the reference element, we really want to + // go one step up and use the next offsetParent as reference to + // avoid to make this modifier completely useless and look like broken + if (data.instance.reference === boundariesElement) { + boundariesElement = getOffsetParent(boundariesElement); + } + + // NOTE: DOM access here + // resets the popper's position so that the document size can be calculated excluding + // the size of the popper element itself + var transformProp = getSupportedPropertyName('transform'); + var popperStyles = data.instance.popper.style; // assignment to help minification + var top = popperStyles.top, + left = popperStyles.left, + transform = popperStyles[transformProp]; + + popperStyles.top = ''; + popperStyles.left = ''; + popperStyles[transformProp] = ''; + + var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed); + + // NOTE: DOM access here + // restores the original style properties after the offsets have been computed + popperStyles.top = top; + popperStyles.left = left; + popperStyles[transformProp] = transform; + + options.boundaries = boundaries; + + var order = options.priority; + var popper = data.offsets.popper; + + var check = { + primary: function primary(placement) { + var value = popper[placement]; + if (popper[placement] < boundaries[placement] && !options.escapeWithReference) { + value = Math.max(popper[placement], boundaries[placement]); + } + return defineProperty$1({}, placement, value); + }, + secondary: function secondary(placement) { + var mainSide = placement === 'right' ? 'left' : 'top'; + var value = popper[mainSide]; + if (popper[placement] > boundaries[placement] && !options.escapeWithReference) { + value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height)); + } + return defineProperty$1({}, mainSide, value); + } + }; + + order.forEach(function (placement) { + var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary'; + popper = _extends({}, popper, check[side](placement)); + }); + + data.offsets.popper = popper; + + return data; + } + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by `update` method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + function shift(data) { + var placement = data.placement; + var basePlacement = placement.split('-')[0]; + var shiftvariation = placement.split('-')[1]; + + // if shift shiftvariation is specified, run the modifier + if (shiftvariation) { + var _data$offsets = data.offsets, + reference = _data$offsets.reference, + popper = _data$offsets.popper; + + var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1; + var side = isVertical ? 'left' : 'top'; + var measurement = isVertical ? 'width' : 'height'; + + var shiftOffsets = { + start: defineProperty$1({}, side, reference[side]), + end: defineProperty$1({}, side, reference[side] + reference[measurement] - popper[measurement]) + }; + + data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]); + } + + return data; + } + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + function hide(data) { + if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) { + return data; + } + + var refRect = data.offsets.reference; + var bound = find(data.instance.modifiers, function (modifier) { + return modifier.name === 'preventOverflow'; + }).boundaries; + + if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) { + // Avoid unnecessary DOM access if visibility hasn't changed + if (data.hide === true) { + return data; + } + + data.hide = true; + data.attributes['x-out-of-boundaries'] = ''; + } else { + // Avoid unnecessary DOM access if visibility hasn't changed + if (data.hide === false) { + return data; + } + + data.hide = false; + data.attributes['x-out-of-boundaries'] = false; + } + + return data; + } + + /** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by `update` method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ + function inner(data) { + var placement = data.placement; + var basePlacement = placement.split('-')[0]; + var _data$offsets = data.offsets, + popper = _data$offsets.popper, + reference = _data$offsets.reference; + + var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1; + + var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1; + + popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0); + + data.placement = getOppositePlacement(placement); + data.offsets.popper = getClientRect(popper); + + return data; + } + + /** + * Modifier function, each modifier can have a function of this type assigned + * to its `fn` property.
+ * These functions will be called on each update, this means that you must + * make sure they are performant enough to avoid performance bottlenecks. + * + * @function ModifierFn + * @argument {dataObject} data - The data object generated by `update` method + * @argument {Object} options - Modifiers configuration and options + * @returns {dataObject} The data object, properly modified + */ + + /** + * Modifiers are plugins used to alter the behavior of your poppers.
+ * Popper.js uses a set of 9 modifiers to provide all the basic functionalities + * needed by the library. + * + * Usually you don't want to override the `order`, `fn` and `onLoad` props. + * All the other properties are configurations that could be tweaked. + * @namespace modifiers + */ + var modifiers = { + /** + * Modifier used to shift the popper on the start or end of its reference + * element.
+ * It will read the variation of the `placement` property.
+ * It can be one either `-end` or `-start`. + * @memberof modifiers + * @inner + */ + shift: { + /** @prop {number} order=100 - Index used to define the order of execution */ + order: 100, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: shift + }, + + /** + * The `offset` modifier can shift your popper on both its axis. + * + * It accepts the following units: + * - `px` or unit-less, interpreted as pixels + * - `%` or `%r`, percentage relative to the length of the reference element + * - `%p`, percentage relative to the length of the popper element + * - `vw`, CSS viewport width unit + * - `vh`, CSS viewport height unit + * + * For length is intended the main axis relative to the placement of the popper.
+ * This means that if the placement is `top` or `bottom`, the length will be the + * `width`. In case of `left` or `right`, it will be the `height`. + * + * You can provide a single value (as `Number` or `String`), or a pair of values + * as `String` divided by a comma or one (or more) white spaces.
+ * The latter is a deprecated method because it leads to confusion and will be + * removed in v2.
+ * Additionally, it accepts additions and subtractions between different units. + * Note that multiplications and divisions aren't supported. + * + * Valid examples are: + * ``` + * 10 + * '10%' + * '10, 10' + * '10%, 10' + * '10 + 10%' + * '10 - 5vh + 3%' + * '-10px + 5vh, 5px - 6%' + * ``` + * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap + * > with their reference element, unfortunately, you will have to disable the `flip` modifier. + * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373). + * + * @memberof modifiers + * @inner + */ + offset: { + /** @prop {number} order=200 - Index used to define the order of execution */ + order: 200, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: offset$1, + /** @prop {Number|String} offset=0 + * The offset value as described in the modifier description + */ + offset: 0 + }, + + /** + * Modifier used to prevent the popper from being positioned outside the boundary. + * + * A scenario exists where the reference itself is not within the boundaries.
+ * We can say it has "escaped the boundaries" — or just "escaped".
+ * In this case we need to decide whether the popper should either: + * + * - detach from the reference and remain "trapped" in the boundaries, or + * - if it should ignore the boundary and "escape with its reference" + * + * When `escapeWithReference` is set to`true` and reference is completely + * outside its boundaries, the popper will overflow (or completely leave) + * the boundaries in order to remain attached to the edge of the reference. + * + * @memberof modifiers + * @inner + */ + preventOverflow: { + /** @prop {number} order=300 - Index used to define the order of execution */ + order: 300, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: preventOverflow, + /** + * @prop {Array} [priority=['left','right','top','bottom']] + * Popper will try to prevent overflow following these priorities by default, + * then, it could overflow on the left and on top of the `boundariesElement` + */ + priority: ['left', 'right', 'top', 'bottom'], + /** + * @prop {number} padding=5 + * Amount of pixel used to define a minimum distance between the boundaries + * and the popper. This makes sure the popper always has a little padding + * between the edges of its container + */ + padding: 5, + /** + * @prop {String|HTMLElement} boundariesElement='scrollParent' + * Boundaries used by the modifier. Can be `scrollParent`, `window`, + * `viewport` or any DOM element. + */ + boundariesElement: 'scrollParent' + }, + + /** + * Modifier used to make sure the reference and its popper stay near each other + * without leaving any gap between the two. Especially useful when the arrow is + * enabled and you want to ensure that it points to its reference element. + * It cares only about the first axis. You can still have poppers with margin + * between the popper and its reference element. + * @memberof modifiers + * @inner + */ + keepTogether: { + /** @prop {number} order=400 - Index used to define the order of execution */ + order: 400, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: keepTogether + }, + + /** + * This modifier is used to move the `arrowElement` of the popper to make + * sure it is positioned between the reference element and its popper element. + * It will read the outer size of the `arrowElement` node to detect how many + * pixels of conjunction are needed. + * + * It has no effect if no `arrowElement` is provided. + * @memberof modifiers + * @inner + */ + arrow: { + /** @prop {number} order=500 - Index used to define the order of execution */ + order: 500, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: arrow, + /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */ + element: '[x-arrow]' + }, + + /** + * Modifier used to flip the popper's placement when it starts to overlap its + * reference element. + * + * Requires the `preventOverflow` modifier before it in order to work. + * + * **NOTE:** this modifier will interrupt the current update cycle and will + * restart it if it detects the need to flip the placement. + * @memberof modifiers + * @inner + */ + flip: { + /** @prop {number} order=600 - Index used to define the order of execution */ + order: 600, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: flip, + /** + * @prop {String|Array} behavior='flip' + * The behavior used to change the popper's placement. It can be one of + * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid + * placements (with optional variations) + */ + behavior: 'flip', + /** + * @prop {number} padding=5 + * The popper will flip if it hits the edges of the `boundariesElement` + */ + padding: 5, + /** + * @prop {String|HTMLElement} boundariesElement='viewport' + * The element which will define the boundaries of the popper position. + * The popper will never be placed outside of the defined boundaries + * (except if `keepTogether` is enabled) + */ + boundariesElement: 'viewport', + /** + * @prop {Boolean} flipVariations=false + * The popper will switch placement variation between `-start` and `-end` when + * the reference element overlaps its boundaries. + * + * The original placement should have a set variation. + */ + flipVariations: false, + /** + * @prop {Boolean} flipVariationsByContent=false + * The popper will switch placement variation between `-start` and `-end` when + * the popper element overlaps its reference boundaries. + * + * The original placement should have a set variation. + */ + flipVariationsByContent: false + }, + + /** + * Modifier used to make the popper flow toward the inner of the reference element. + * By default, when this modifier is disabled, the popper will be placed outside + * the reference element. + * @memberof modifiers + * @inner + */ + inner: { + /** @prop {number} order=700 - Index used to define the order of execution */ + order: 700, + /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */ + enabled: false, + /** @prop {ModifierFn} */ + fn: inner + }, + + /** + * Modifier used to hide the popper when its reference element is outside of the + * popper boundaries. It will set a `x-out-of-boundaries` attribute which can + * be used to hide with a CSS selector the popper when its reference is + * out of boundaries. + * + * Requires the `preventOverflow` modifier before it in order to work. + * @memberof modifiers + * @inner + */ + hide: { + /** @prop {number} order=800 - Index used to define the order of execution */ + order: 800, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: hide + }, + + /** + * Computes the style that will be applied to the popper element to gets + * properly positioned. + * + * Note that this modifier will not touch the DOM, it just prepares the styles + * so that `applyStyle` modifier can apply it. This separation is useful + * in case you need to replace `applyStyle` with a custom implementation. + * + * This modifier has `850` as `order` value to maintain backward compatibility + * with previous versions of Popper.js. Expect the modifiers ordering method + * to change in future major versions of the library. + * + * @memberof modifiers + * @inner + */ + computeStyle: { + /** @prop {number} order=850 - Index used to define the order of execution */ + order: 850, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: computeStyle, + /** + * @prop {Boolean} gpuAcceleration=true + * If true, it uses the CSS 3D transformation to position the popper. + * Otherwise, it will use the `top` and `left` properties + */ + gpuAcceleration: true, + /** + * @prop {string} [x='bottom'] + * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin. + * Change this if your popper should grow in a direction different from `bottom` + */ + x: 'bottom', + /** + * @prop {string} [x='left'] + * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin. + * Change this if your popper should grow in a direction different from `right` + */ + y: 'right' + }, + + /** + * Applies the computed styles to the popper element. + * + * All the DOM manipulations are limited to this modifier. This is useful in case + * you want to integrate Popper.js inside a framework or view library and you + * want to delegate all the DOM manipulations to it. + * + * Note that if you disable this modifier, you must make sure the popper element + * has its position set to `absolute` before Popper.js can do its work! + * + * Just disable this modifier and define your own to achieve the desired effect. + * + * @memberof modifiers + * @inner + */ + applyStyle: { + /** @prop {number} order=900 - Index used to define the order of execution */ + order: 900, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: applyStyle, + /** @prop {Function} */ + onLoad: applyStyleOnLoad, + /** + * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier + * @prop {Boolean} gpuAcceleration=true + * If true, it uses the CSS 3D transformation to position the popper. + * Otherwise, it will use the `top` and `left` properties + */ + gpuAcceleration: undefined + } + }; + + /** + * The `dataObject` is an object containing all the information used by Popper.js. + * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks. + * @name dataObject + * @property {Object} data.instance The Popper.js instance + * @property {String} data.placement Placement applied to popper + * @property {String} data.originalPlacement Placement originally defined on init + * @property {Boolean} data.flipped True if popper has been flipped by flip modifier + * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper + * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier + * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`) + * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`) + * @property {Object} data.boundaries Offsets of the popper boundaries + * @property {Object} data.offsets The measurements of popper, reference and arrow elements + * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values + * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values + * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0 + */ + + /** + * Default options provided to Popper.js constructor.
+ * These can be overridden using the `options` argument of Popper.js.
+ * To override an option, simply pass an object with the same + * structure of the `options` object, as the 3rd argument. For example: + * ``` + * new Popper(ref, pop, { + * modifiers: { + * preventOverflow: { enabled: false } + * } + * }) + * ``` + * @type {Object} + * @static + * @memberof Popper + */ + var Defaults = { + /** + * Popper's placement. + * @prop {Popper.placements} placement='bottom' + */ + placement: 'bottom', + + /** + * Set this to true if you want popper to position it self in 'fixed' mode + * @prop {Boolean} positionFixed=false + */ + positionFixed: false, + + /** + * Whether events (resize, scroll) are initially enabled. + * @prop {Boolean} eventsEnabled=true + */ + eventsEnabled: true, + + /** + * Set to true if you want to automatically remove the popper when + * you call the `destroy` method. + * @prop {Boolean} removeOnDestroy=false + */ + removeOnDestroy: false, + + /** + * Callback called when the popper is created.
+ * By default, it is set to no-op.
+ * Access Popper.js instance with `data.instance`. + * @prop {onCreate} + */ + onCreate: function onCreate() {}, + + /** + * Callback called when the popper is updated. This callback is not called + * on the initialization/creation of the popper, but only on subsequent + * updates.
+ * By default, it is set to no-op.
+ * Access Popper.js instance with `data.instance`. + * @prop {onUpdate} + */ + onUpdate: function onUpdate() {}, + + /** + * List of modifiers used to modify the offsets before they are applied to the popper. + * They provide most of the functionalities of Popper.js. + * @prop {modifiers} + */ + modifiers: modifiers + }; + + /** + * @callback onCreate + * @param {dataObject} data + */ + + /** + * @callback onUpdate + * @param {dataObject} data + */ + + // Utils + // Methods + var Popper = function () { + /** + * Creates a new Popper.js instance. + * @class Popper + * @param {Element|referenceObject} reference - The reference element used to position the popper + * @param {Element} popper - The HTML / XML element used as the popper + * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults) + * @return {Object} instance - The generated Popper.js instance + */ + function Popper(reference, popper) { + var _this = this; + + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + classCallCheck(this, Popper); + + this.scheduleUpdate = function () { + return requestAnimationFrame(_this.update); + }; + + // make update() debounced, so that it only runs at most once-per-tick + this.update = debounce(this.update.bind(this)); + + // with {} we create a new object with the options inside it + this.options = _extends({}, Popper.Defaults, options); + + // init state + this.state = { + isDestroyed: false, + isCreated: false, + scrollParents: [] + }; + + // get reference and popper elements (allow jQuery wrappers) + this.reference = reference && reference.jquery ? reference[0] : reference; + this.popper = popper && popper.jquery ? popper[0] : popper; + + // Deep merge modifiers options + this.options.modifiers = {}; + Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) { + _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {}); + }); + + // Refactoring modifiers' list (Object => Array) + this.modifiers = Object.keys(this.options.modifiers).map(function (name) { + return _extends({ + name: name + }, _this.options.modifiers[name]); + }) + // sort the modifiers by order + .sort(function (a, b) { + return a.order - b.order; + }); + + // modifiers have the ability to execute arbitrary code when Popper.js get inited + // such code is executed in the same order of its modifier + // they could add new properties to their options configuration + // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`! + this.modifiers.forEach(function (modifierOptions) { + if (modifierOptions.enabled && isFunction$1(modifierOptions.onLoad)) { + modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state); + } + }); + + // fire the first update to position the popper in the right place + this.update(); + + var eventsEnabled = this.options.eventsEnabled; + if (eventsEnabled) { + // setup event listeners, they will take care of update the position in specific situations + this.enableEventListeners(); + } + + this.state.eventsEnabled = eventsEnabled; + } + + // We can't use class properties because they don't get listed in the + // class prototype and break stuff like Sinon stubs + + + createClass(Popper, [{ + key: 'update', + value: function update$$1() { + return update.call(this); + } + }, { + key: 'destroy', + value: function destroy$$1() { + return destroy$1.call(this); + } + }, { + key: 'enableEventListeners', + value: function enableEventListeners$$1() { + return enableEventListeners.call(this); + } + }, { + key: 'disableEventListeners', + value: function disableEventListeners$$1() { + return disableEventListeners.call(this); + } + + /** + * Schedules an update. It will run on the next UI update available. + * @method scheduleUpdate + * @memberof Popper + */ + + + /** + * Collection of utilities useful when writing custom modifiers. + * Starting from version 1.7, this method is available only if you + * include `popper-utils.js` before `popper.js`. + * + * **DEPRECATION**: This way to access PopperUtils is deprecated + * and will be removed in v2! Use the PopperUtils module directly instead. + * Due to the high instability of the methods contained in Utils, we can't + * guarantee them to follow semver. Use them at your own risk! + * @static + * @private + * @type {Object} + * @deprecated since version 1.8 + * @member Utils + * @memberof Popper + */ + + }]); + return Popper; + }(); + + /** + * The `referenceObject` is an object that provides an interface compatible with Popper.js + * and lets you use it as replacement of a real DOM node.
+ * You can use this method to position a popper relatively to a set of coordinates + * in case you don't have a DOM node to use as reference. + * + * ``` + * new Popper(referenceObject, popperNode); + * ``` + * + * NB: This feature isn't supported in Internet Explorer 10. + * @name referenceObject + * @property {Function} data.getBoundingClientRect + * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method. + * @property {number} data.clientWidth + * An ES6 getter that will return the width of the virtual reference element. + * @property {number} data.clientHeight + * An ES6 getter that will return the height of the virtual reference element. + */ + + + Popper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils; + Popper.placements = placements; + Popper.Defaults = Defaults; + + var BvEvent = /*#__PURE__*/function () { + function BvEvent(type) { + var eventInit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + _classCallCheck(this, BvEvent); + + // Start by emulating native Event constructor + if (!type) { + /* istanbul ignore next */ + throw new TypeError("Failed to construct '".concat(this.constructor.name, "'. 1 argument required, ").concat(arguments.length, " given.")); + } // Merge defaults first, the eventInit, and the type last + // so it can't be overwritten + + + assign(this, BvEvent.Defaults, this.constructor.Defaults, eventInit, { + type: type + }); // Freeze some props as readonly, but leave them enumerable + + defineProperties(this, { + type: readonlyDescriptor(), + cancelable: readonlyDescriptor(), + nativeEvent: readonlyDescriptor(), + target: readonlyDescriptor(), + relatedTarget: readonlyDescriptor(), + vueTarget: readonlyDescriptor(), + componentId: readonlyDescriptor() + }); // Create a private variable using closure scoping + + var defaultPrevented = false; // Recreate preventDefault method. One way setter + + this.preventDefault = function preventDefault() { + if (this.cancelable) { + defaultPrevented = true; + } + }; // Create `defaultPrevented` publicly accessible prop that + // can only be altered by the preventDefault method + + + defineProperty(this, 'defaultPrevented', { + enumerable: true, + get: function get() { + return defaultPrevented; + } + }); + } + + _createClass(BvEvent, null, [{ + key: "Defaults", + get: function get() { + return { + type: '', + cancelable: true, + nativeEvent: null, + target: null, + relatedTarget: null, + vueTarget: null, + componentId: null + }; + } + }]); + + return BvEvent; + }(); // Named Exports + + var clickOutMixin = { + data: function data() { + return { + listenForClickOut: false + }; + }, + watch: { + listenForClickOut: function listenForClickOut(newValue, oldValue) { + if (newValue !== oldValue) { + eventOff(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE); + + if (newValue) { + eventOn(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE); + } + } + } + }, + beforeCreate: function beforeCreate() { + // Declare non-reactive properties + this.clickOutElement = null; + this.clickOutEventName = null; + }, + mounted: function mounted() { + if (!this.clickOutElement) { + this.clickOutElement = document; + } + + if (!this.clickOutEventName) { + this.clickOutEventName = 'click'; + } + + if (this.listenForClickOut) { + eventOn(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE); + } + }, + beforeDestroy: function beforeDestroy() + /* istanbul ignore next */ + { + eventOff(this.clickOutElement, this.clickOutEventName, this._clickOutHandler, EVENT_OPTIONS_NO_CAPTURE); + }, + methods: { + isClickOut: function isClickOut(evt) { + return !contains(this.$el, evt.target); + }, + _clickOutHandler: function _clickOutHandler(evt) { + if (this.clickOutHandler && this.isClickOut(evt)) { + this.clickOutHandler(evt); + } + } + } + }; + + var focusInMixin = { + data: function data() { + return { + listenForFocusIn: false + }; + }, + watch: { + listenForFocusIn: function listenForFocusIn(newValue, oldValue) { + if (newValue !== oldValue) { + eventOff(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE); + + if (newValue) { + eventOn(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE); + } + } + } + }, + beforeCreate: function beforeCreate() { + // Declare non-reactive properties + this.focusInElement = null; + }, + mounted: function mounted() { + if (!this.focusInElement) { + this.focusInElement = document; + } + + if (this.listenForFocusIn) { + eventOn(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE); + } + }, + beforeDestroy: function beforeDestroy() + /* istanbul ignore next */ + { + eventOff(this.focusInElement, 'focusin', this._focusInHandler, EVENT_OPTIONS_NO_CAPTURE); + }, + methods: { + _focusInHandler: function _focusInHandler(evt) { + if (this.focusInHandler) { + this.focusInHandler(evt); + } + } + } + }; + + var filterVisibles = function filterVisibles(els) { + return (els || []).filter(isVisible); + }; // Root dropdown event names + + + var ROOT_DROPDOWN_PREFIX = 'bv::dropdown::'; + var ROOT_DROPDOWN_SHOWN = "".concat(ROOT_DROPDOWN_PREFIX, "shown"); + var ROOT_DROPDOWN_HIDDEN = "".concat(ROOT_DROPDOWN_PREFIX, "hidden"); // Dropdown item CSS selectors + + var Selector = { + FORM_CHILD: '.dropdown form', + ITEM_SELECTOR: ['.dropdown-item', '.b-dropdown-form'].map(function (selector) { + return "".concat(selector, ":not(.disabled):not([disabled])"); + }).join(', ') + }; // Popper attachment positions + + var AttachmentMap = { + // Dropup left align + TOP: 'top-start', + // Dropup right align + TOPEND: 'top-end', + // Dropdown left align + BOTTOM: 'bottom-start', + // Dropdown right align + BOTTOMEND: 'bottom-end', + // Dropright left align + RIGHT: 'right-start', + // Dropright right align + RIGHTEND: 'right-end', + // Dropleft left align + LEFT: 'left-start', + // Dropleft right align + LEFTEND: 'left-end' + }; + var commonProps = { + dropup: { + // place on top if possible + type: Boolean, + default: false + }, + dropright: { + // place right if possible + type: Boolean, + default: false + }, + dropleft: { + // place left if possible + type: Boolean, + default: false + }, + right: { + // Right align menu (default is left align) + type: Boolean, + default: false + }, + offset: { + // Number of pixels to offset menu, or a CSS unit value (i.e. 1px, 1rem, etc) + type: [Number, String], + default: 0 + }, + noFlip: { + // Disable auto-flipping of menu from bottom<=>top + type: Boolean, + default: false + }, + popperOpts: { + // type: Object, + default: function _default() {} + }, + boundary: { + // String: `scrollParent`, `window` or `viewport` + // HTMLElement: HTML Element reference + type: [String, HTMLElement], + default: 'scrollParent' + } + }; // @vue/component + + var dropdownMixin = { + mixins: [idMixin, clickOutMixin, focusInMixin], + provide: function provide() { + return { + bvDropdown: this + }; + }, + inject: { + bvNavbar: { + default: null + } + }, + props: _objectSpread2({ + disabled: { + type: Boolean, + default: false + } + }, commonProps), + data: function data() { + return { + visible: false, + visibleChangePrevented: false + }; + }, + computed: { + inNavbar: function inNavbar() { + return !isNull(this.bvNavbar); + }, + toggler: function toggler() { + var toggle = this.$refs.toggle; + return toggle ? toggle.$el || toggle : null; + }, + directionClass: function directionClass() { + if (this.dropup) { + return 'dropup'; + } else if (this.dropright) { + return 'dropright'; + } else if (this.dropleft) { + return 'dropleft'; + } + + return ''; + } + }, + watch: { + visible: function visible(newValue, oldValue) { + if (this.visibleChangePrevented) { + this.visibleChangePrevented = false; + return; + } + + if (newValue !== oldValue) { + var evtName = newValue ? 'show' : 'hide'; + var bvEvt = new BvEvent(evtName, { + cancelable: true, + vueTarget: this, + target: this.$refs.menu, + relatedTarget: null, + componentId: this.safeId ? this.safeId() : this.id || null + }); + this.emitEvent(bvEvt); + + if (bvEvt.defaultPrevented) { + // Reset value and exit if canceled + this.visibleChangePrevented = true; + this.visible = oldValue; // Just in case a child element triggered `this.hide(true)` + + this.$off('hidden', this.focusToggler); + return; + } + + if (evtName === 'show') { + this.showMenu(); + } else { + this.hideMenu(); + } + } + }, + disabled: function disabled(newValue, oldValue) { + if (newValue !== oldValue && newValue && this.visible) { + // Hide dropdown if disabled changes to true + this.visible = false; + } + } + }, + created: function created() { + // Create private non-reactive props + this.$_popper = null; + }, + + /* istanbul ignore next */ + deactivated: function deactivated() + /* istanbul ignore next: not easy to test */ + { + // In case we are inside a `` + this.visible = false; + this.whileOpenListen(false); + this.destroyPopper(); + }, + beforeDestroy: function beforeDestroy() { + this.visible = false; + this.whileOpenListen(false); + this.destroyPopper(); + }, + methods: { + // Event emitter + emitEvent: function emitEvent(bvEvt) { + var type = bvEvt.type; + this.$emit(type, bvEvt); + this.$root.$emit("".concat(ROOT_DROPDOWN_PREFIX).concat(type), bvEvt); + }, + showMenu: function showMenu() { + var _this = this; + + if (this.disabled) { + /* istanbul ignore next */ + return; + } // Only instantiate Popper.js when dropdown is not in `` + + + if (!this.inNavbar) { + if (typeof Popper === 'undefined') { + /* istanbul ignore next */ + warn('Popper.js not found. Falling back to CSS positioning', 'BDropdown'); + } else { + // For dropup with alignment we use the parent element as popper container + var el = this.dropup && this.right || this.split ? this.$el : this.$refs.toggle; // Make sure we have a reference to an element, not a component! + + el = el.$el || el; // Instantiate Popper.js + + this.createPopper(el); + } + } // Ensure other menus are closed + + + this.$root.$emit(ROOT_DROPDOWN_SHOWN, this); // Enable listeners + + this.whileOpenListen(true); // Wrap in `$nextTick()` to ensure menu is fully rendered/shown + + this.$nextTick(function () { + // Focus on the menu container on show + _this.focusMenu(); // Emit the shown event + + + _this.$emit('shown'); + }); + }, + hideMenu: function hideMenu() { + this.whileOpenListen(false); + this.$root.$emit(ROOT_DROPDOWN_HIDDEN, this); + this.$emit('hidden'); + this.destroyPopper(); + }, + createPopper: function createPopper(element) { + this.destroyPopper(); + this.$_popper = new Popper(element, this.$refs.menu, this.getPopperConfig()); + }, + // Ensure popper event listeners are removed cleanly + destroyPopper: function destroyPopper() { + this.$_popper && this.$_popper.destroy(); + this.$_popper = null; + }, + // Instructs popper to re-computes the dropdown position + // useful if the content changes size + updatePopper: function updatePopper() + /* istanbul ignore next: not easy to test */ + { + try { + this.$_popper.scheduleUpdate(); + } catch (_unused) {} + }, + getPopperConfig: function getPopperConfig() { + var placement = AttachmentMap.BOTTOM; + + if (this.dropup) { + placement = this.right ? AttachmentMap.TOPEND : AttachmentMap.TOP; + } else if (this.dropright) { + placement = AttachmentMap.RIGHT; + } else if (this.dropleft) { + placement = AttachmentMap.LEFT; + } else if (this.right) { + placement = AttachmentMap.BOTTOMEND; + } + + var popperConfig = { + placement: placement, + modifiers: { + offset: { + offset: this.offset || 0 + }, + flip: { + enabled: !this.noFlip + } + } + }; + + if (this.boundary) { + popperConfig.modifiers.preventOverflow = { + boundariesElement: this.boundary + }; + } + + return _objectSpread2(_objectSpread2({}, popperConfig), this.popperOpts || {}); + }, + // Turn listeners on/off while open + whileOpenListen: function whileOpenListen(isOpen) { + // Hide the dropdown when clicked outside + this.listenForClickOut = isOpen; // Hide the dropdown when it loses focus + + this.listenForFocusIn = isOpen; // Hide the dropdown when another dropdown is opened + + var method = isOpen ? '$on' : '$off'; + this.$root[method](ROOT_DROPDOWN_SHOWN, this.rootCloseListener); + }, + rootCloseListener: function rootCloseListener(vm) { + if (vm !== this) { + this.visible = false; + } + }, + show: function show() { + var _this2 = this; + + // Public method to show dropdown + if (this.disabled) { + return; + } // Wrap in a `requestAF()` to allow any previous + // click handling to occur first + + + requestAF(function () { + _this2.visible = true; + }); + }, + hide: function hide() { + var refocus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + + // Public method to hide dropdown + if (this.disabled) { + /* istanbul ignore next */ + return; + } + + this.visible = false; + + if (refocus) { + // Child element is closing the dropdown on click + this.$once('hidden', this.focusToggler); + } + }, + // Called only by a button that toggles the menu + toggle: function toggle(evt) { + evt = evt || {}; // Early exit when not a click event or ENTER, SPACE or DOWN were pressed + + var _evt = evt, + type = _evt.type, + keyCode = _evt.keyCode; + + if (type !== 'click' && !(type === 'keydown' && [KEY_CODES.ENTER, KEY_CODES.SPACE, KEY_CODES.DOWN].indexOf(keyCode) !== -1)) { + /* istanbul ignore next */ + return; + } + /* istanbul ignore next */ + + + if (this.disabled) { + this.visible = false; + return; + } + + this.$emit('toggle', evt); + evt.preventDefault(); + evt.stopPropagation(); // Toggle visibility + + if (this.visible) { + this.hide(true); + } else { + this.show(); + } + }, + // Mousedown handler for the toggle + + /* istanbul ignore next */ + onMousedown: function onMousedown(evt) + /* istanbul ignore next */ + { + // We prevent the 'mousedown' event for the toggle to stop the + // 'focusin' event from being fired + // The event would otherwise be picked up by the global 'focusin' + // listener and there is no cross-browser solution to detect it + // relates to the toggle click + // The 'click' event will still be fired and we handle closing + // other dropdowns there too + // See https://github.com/bootstrap-vue/bootstrap-vue/issues/4328 + evt.preventDefault(); + }, + // Called from dropdown menu context + onKeydown: function onKeydown(evt) { + var keyCode = evt.keyCode; + + if (keyCode === KEY_CODES.ESC) { + // Close on ESC + this.onEsc(evt); + } else if (keyCode === KEY_CODES.DOWN) { + // Down Arrow + this.focusNext(evt, false); + } else if (keyCode === KEY_CODES.UP) { + // Up Arrow + this.focusNext(evt, true); + } + }, + // If user presses ESC, close the menu + onEsc: function onEsc(evt) { + if (this.visible) { + this.visible = false; + evt.preventDefault(); + evt.stopPropagation(); // Return focus to original trigger button + + this.$once('hidden', this.focusToggler); + } + }, + // Called only in split button mode, for the split button + onSplitClick: function onSplitClick(evt) { + /* istanbul ignore next */ + if (this.disabled) { + this.visible = false; + return; + } + + this.$emit('click', evt); + }, + // Shared hide handler between click-out and focus-in events + hideHandler: function hideHandler(evt) { + var target = evt.target; + + if (this.visible && !contains(this.$refs.menu, target) && !contains(this.toggler, target)) { + this.hide(); + } + }, + // Document click-out listener + clickOutHandler: function clickOutHandler(evt) { + this.hideHandler(evt); + }, + // Document focus-in listener + focusInHandler: function focusInHandler(evt) { + this.hideHandler(evt); + }, + // Keyboard nav + focusNext: function focusNext(evt, up) { + var _this3 = this; + + // Ignore key up/down on form elements + var target = evt.target; + + if (!this.visible || evt && closest(Selector.FORM_CHILD, target)) { + /* istanbul ignore next: should never happen */ + return; + } + + evt.preventDefault(); + evt.stopPropagation(); + this.$nextTick(function () { + var items = _this3.getItems(); + + if (items.length < 1) { + /* istanbul ignore next: should never happen */ + return; + } + + var index = items.indexOf(target); + + if (up && index > 0) { + index--; + } else if (!up && index < items.length - 1) { + index++; + } + + if (index < 0) { + /* istanbul ignore next: should never happen */ + index = 0; + } + + _this3.focusItem(index, items); + }); + }, + focusItem: function focusItem(index, items) { + var el = items.find(function (el, i) { + return i === index; + }); + attemptFocus(el); + }, + getItems: function getItems() { + // Get all items + return filterVisibles(selectAll(Selector.ITEM_SELECTOR, this.$refs.menu)); + }, + focusMenu: function focusMenu() { + attemptFocus(this.$refs.menu); + }, + focusToggler: function focusToggler() { + var _this4 = this; + + this.$nextTick(function () { + attemptFocus(_this4.toggler); + }); + } + } + }; + + var NAME$f = 'BDropdown'; // --- Props --- + + var props$l = { + text: { + // Button label + type: String, + default: '' + }, + html: { + // Button label + type: String // default: undefined + + }, + variant: { + type: String, + default: function _default() { + return getComponentConfig(NAME$f, 'variant'); + } + }, + size: { + type: String, + default: function _default() { + return getComponentConfig(NAME$f, 'size'); + } + }, + block: { + type: Boolean, + default: false + }, + menuClass: { + type: [String, Array, Object] // default: null + + }, + toggleTag: { + type: String, + default: 'button' + }, + toggleText: { + // This really should be toggleLabel + type: String, + default: function _default() { + return getComponentConfig(NAME$f, 'toggleText'); + } + }, + toggleClass: { + type: [String, Array, Object] // default: null + + }, + noCaret: { + type: Boolean, + default: false + }, + split: { + type: Boolean, + default: false + }, + splitHref: { + type: String // default: undefined + + }, + splitTo: { + type: [String, Object] // default: undefined + + }, + splitVariant: { + type: String, + default: function _default() { + return getComponentConfig(NAME$f, 'splitVariant'); + } + }, + splitClass: { + type: [String, Array, Object] // default: null + + }, + splitButtonType: { + type: String, + default: 'button', + validator: function validator(value) { + return arrayIncludes(['button', 'submit', 'reset'], value); + } + }, + lazy: { + // If true, only render menu contents when open + type: Boolean, + default: false + }, + role: { + type: String, + default: 'menu' + } + }; // --- Main component --- + // @vue/component + + var BDropdown = /*#__PURE__*/Vue.extend({ + name: NAME$f, + mixins: [idMixin, dropdownMixin, normalizeSlotMixin], + props: props$l, + computed: { + dropdownClasses: function dropdownClasses() { + var block = this.block, + split = this.split, + boundary = this.boundary; + return [this.directionClass, { + show: this.visible, + // The 'btn-group' class is required in `split` mode for button alignment + // It needs also to be applied when `block` is disabled to allow multiple + // dropdowns to be aligned one line + 'btn-group': split || !block, + // When `block` is enabled and we are in `split` mode the 'd-flex' class + // needs to be applied to allow the buttons to stretch to full width + 'd-flex': block && split, + // Position `static` is needed to allow menu to "breakout" of the `scrollParent` + // boundaries when boundary is anything other than `scrollParent` + // See: https://github.com/twbs/bootstrap/issues/24251#issuecomment-341413786 + 'position-static': boundary !== 'scrollParent' || !boundary + }]; + }, + menuClasses: function menuClasses() { + return [this.menuClass, { + 'dropdown-menu-right': this.right, + show: this.visible + }]; + }, + toggleClasses: function toggleClasses() { + var split = this.split; + return [this.toggleClass, { + 'dropdown-toggle-split': split, + 'dropdown-toggle-no-caret': this.noCaret && !split + }]; + } + }, + render: function render(h) { + var variant = this.variant, + size = this.size, + block = this.block, + disabled = this.disabled, + split = this.split, + role = this.role; + var commonProps = { + variant: variant, + size: size, + block: block, + disabled: disabled + }; + var $buttonContent = this.normalizeSlot('button-content'); + var buttonContentProps = this.hasNormalizedSlot('button-content') ? {} : htmlOrText(this.html, this.text); + var $split = h(); + + if (split) { + var splitTo = this.splitTo, + splitHref = this.splitHref, + splitButtonType = this.splitButtonType; + + var btnProps = _objectSpread2(_objectSpread2({}, commonProps), {}, { + variant: this.splitVariant || this.variant + }); // We add these as needed due to issues with + // defined property with `undefined`/`null` values + + + if (splitTo) { + btnProps.to = splitTo; + } else if (splitHref) { + btnProps.href = splitHref; + } else if (splitButtonType) { + btnProps.type = splitButtonType; + } + + $split = h(BButton, { + class: this.splitClass, + attrs: { + id: this.safeId('_BV_button_') + }, + props: btnProps, + domProps: buttonContentProps, + on: { + click: this.onSplitClick + }, + ref: 'button' + }, [$buttonContent]); + } + + var $toggle = h(BButton, { + staticClass: 'dropdown-toggle', + class: this.toggleClasses, + attrs: { + id: this.safeId('_BV_toggle_'), + 'aria-haspopup': 'true', + 'aria-expanded': this.visible ? 'true' : 'false' + }, + props: _objectSpread2(_objectSpread2({}, commonProps), {}, { + tag: this.toggleTag, + block: block && !split + }), + domProps: split ? {} : buttonContentProps, + on: { + mousedown: this.onMousedown, + click: this.toggle, + keydown: this.toggle // Handle ENTER, SPACE and DOWN + + }, + ref: 'toggle' + }, [split ? h('span', { + class: ['sr-only'] + }, [this.toggleText]) : $buttonContent]); + var $menu = h('ul', { + staticClass: 'dropdown-menu', + class: this.menuClasses, + attrs: { + role: role, + tabindex: '-1', + 'aria-labelledby': this.safeId(split ? '_BV_button_' : '_BV_toggle_') + }, + on: { + keydown: this.onKeydown // Handle UP, DOWN and ESC + + }, + ref: 'menu' + }, !this.lazy || this.visible ? this.normalizeSlot('default', { + hide: this.hide + }) : [h()]); + return h('div', { + staticClass: 'dropdown b-dropdown', + class: this.dropdownClasses, + attrs: { + id: this.safeId() + } + }, [$split, $toggle, $menu]); + } + }); + + var props$m = omit(props$1, ['event', 'routerTag']); // @vue/component + + var BDropdownItem = /*#__PURE__*/Vue.extend({ + name: 'BDropdownItem', + mixins: [attrsMixin, normalizeSlotMixin], + inheritAttrs: false, + inject: { + bvDropdown: { + default: null + } + }, + props: _objectSpread2(_objectSpread2({}, props$m), {}, { + linkClass: { + type: [String, Array, Object], + default: null + }, + variant: { + type: String, + default: null + } + }), + computed: { + computedAttrs: function computedAttrs() { + return _objectSpread2(_objectSpread2({}, this.bvAttrs), {}, { + role: 'menuitem' + }); + } + }, + methods: { + closeDropdown: function closeDropdown() { + var _this = this; + + // Close on next animation frame to allow time to process + requestAF(function () { + if (_this.bvDropdown) { + _this.bvDropdown.hide(true); + } + }); + }, + onClick: function onClick(evt) { + this.$emit('click', evt); + this.closeDropdown(); + } + }, + render: function render(h) { + return h('li', { + attrs: { + role: 'presentation' + } + }, [h(BLink, { + props: this.$props, + staticClass: 'dropdown-item', + class: [this.linkClass, _defineProperty({}, "text-".concat(this.variant), this.variant && !(this.active || this.disabled))], + attrs: this.computedAttrs, + on: { + click: this.onClick + }, + ref: 'item' + }, this.normalizeSlot('default'))]); + } + }); + + var props$n = { + active: { + type: Boolean, + default: false + }, + activeClass: { + type: String, + default: 'active' + }, + buttonClass: { + type: [String, Array, Object] // default: null + + }, + disabled: { + type: Boolean, + default: false + }, + variant: { + type: String // default: null + + } + }; // @vue/component + + var BDropdownItemButton = /*#__PURE__*/Vue.extend({ + name: 'BDropdownItemButton', + mixins: [attrsMixin, normalizeSlotMixin], + inheritAttrs: false, + inject: { + bvDropdown: { + default: null + } + }, + props: props$n, + computed: { + computedAttrs: function computedAttrs() { + return _objectSpread2(_objectSpread2({}, this.bvAttrs), {}, { + role: 'menuitem', + type: 'button', + disabled: this.disabled + }); + } + }, + methods: { + closeDropdown: function closeDropdown() { + if (this.bvDropdown) { + this.bvDropdown.hide(true); + } + }, + onClick: function onClick(evt) { + this.$emit('click', evt); + this.closeDropdown(); + } + }, + render: function render(h) { + var _ref; + + return h('li', { + attrs: { + role: 'presentation' + } + }, [h('button', { + staticClass: 'dropdown-item', + class: [this.buttonClass, (_ref = {}, _defineProperty(_ref, this.activeClass, this.active), _defineProperty(_ref, "text-".concat(this.variant), this.variant && !(this.active || this.disabled)), _ref)], + attrs: this.computedAttrs, + on: { + click: this.onClick + }, + ref: 'button' + }, this.normalizeSlot('default'))]); + } + }); + + var props$o = { + id: { + type: String // default: null + + }, + tag: { + type: String, + default: 'header' + }, + variant: { + type: String // default: null + + } + }; // @vue/component + + var BDropdownHeader = /*#__PURE__*/Vue.extend({ + name: 'BDropdownHeader', + functional: true, + props: props$o, + render: function render(h, _ref) { + var props = _ref.props, + data = _ref.data, + children = _ref.children; + var $attrs = data.attrs || {}; + data.attrs = {}; + return h('li', a(data, { + attrs: { + role: 'presentation' + } + }), [h(props.tag, { + staticClass: 'dropdown-header', + class: _defineProperty({}, "text-".concat(props.variant), props.variant), + attrs: _objectSpread2(_objectSpread2({}, $attrs), {}, { + id: props.id || null, + role: 'heading' + }), + ref: 'header' + }, children)]); + } + }); + + var props$p = { + tag: { + type: String, + default: 'hr' + } + }; // @vue/component + + var BDropdownDivider = /*#__PURE__*/Vue.extend({ + name: 'BDropdownDivider', + functional: true, + props: props$p, + render: function render(h, _ref) { + var props = _ref.props, + data = _ref.data; + var $attrs = data.attrs || {}; + data.attrs = {}; + return h('li', a(data, { + attrs: { + role: 'presentation' + } + }), [h(props.tag, { + staticClass: 'dropdown-divider', + attrs: _objectSpread2(_objectSpread2({}, $attrs), {}, { + role: 'separator', + 'aria-orientation': 'horizontal' + }), + ref: 'divider' + })]); + } + }); + + var props$q = { + id: { + type: String // default: null + + }, + inline: { + type: Boolean, + default: false + }, + novalidate: { + type: Boolean, + default: false + }, + validated: { + type: Boolean, + default: false + } + }; // @vue/component + + var BForm = /*#__PURE__*/Vue.extend({ + name: 'BForm', + functional: true, + props: props$q, + render: function render(h, _ref) { + var props = _ref.props, + data = _ref.data, + children = _ref.children; + return h('form', a(data, { + class: { + 'form-inline': props.inline, + 'was-validated': props.validated + }, + attrs: { + id: props.id, + novalidate: props.novalidate + } + }), children); + } + }); + + var BDropdownForm = /*#__PURE__*/Vue.extend({ + name: 'BDropdownForm', + functional: true, + props: _objectSpread2(_objectSpread2({}, props$q), {}, { + disabled: { + type: Boolean, + default: false + }, + formClass: { + type: [String, Object, Array] // default: null + + } + }), + render: function render(h, _ref) { + var props = _ref.props, + data = _ref.data, + children = _ref.children; + var $attrs = data.attrs || {}; + var $listeners = data.on || {}; + data.attrs = {}; + data.on = {}; + return h('li', a(data, { + attrs: { + role: 'presentation' + } + }), [h(BForm, { + ref: 'form', + staticClass: 'b-dropdown-form', + class: [props.formClass, { + disabled: props.disabled + }], + props: props, + attrs: _objectSpread2(_objectSpread2({}, $attrs), {}, { + disabled: props.disabled, + // Tab index of -1 for keyboard navigation + tabindex: props.disabled ? null : '-1' + }), + on: $listeners + }, children)]); + } + }); + + var BDropdownText = /*#__PURE__*/Vue.extend({ + name: 'BDropdownText', + functional: true, + props: { + tag: { + type: String, + default: 'p' + }, + variant: { + type: String // default: null + + } + }, + render: function render(h, _ref) { + var props = _ref.props, + data = _ref.data, + children = _ref.children; + var $attrs = data.attrs || {}; + data.attrs = {}; + return h('li', a(data, { + attrs: { + role: 'presentation' + } + }), [h(props.tag, { + staticClass: 'b-dropdown-text', + class: _defineProperty({}, "text-".concat(props.variant), props.variant), + props: props, + attrs: $attrs, + ref: 'text' + }, children)]); + } + }); + + var props$r = { + id: { + type: String // default: null + + }, + header: { + type: String // default: null + + }, + headerTag: { + type: String, + default: 'header' + }, + headerVariant: { + type: String // default: null + + }, + headerClasses: { + type: [String, Array, Object] // default: null + + }, + ariaDescribedby: { + type: String // default: null + + } + }; // @vue/component + + var BDropdownGroup = /*#__PURE__*/Vue.extend({ + name: 'BDropdownGroup', + functional: true, + props: props$r, + render: function render(h, _ref) { + var props = _ref.props, + data = _ref.data, + slots = _ref.slots, + scopedSlots = _ref.scopedSlots; + var $slots = slots(); + var $scopedSlots = scopedSlots || {}; + var $attrs = data.attrs || {}; + data.attrs = {}; + var header; + var headerId = null; + + if (hasNormalizedSlot('header', $scopedSlots, $slots) || props.header) { + headerId = props.id ? "_bv_".concat(props.id, "_group_dd_header") : null; + header = h(props.headerTag, { + staticClass: 'dropdown-header', + class: [props.headerClasses, _defineProperty({}, "text-".concat(props.variant), props.variant)], + attrs: { + id: headerId, + role: 'heading' + } + }, normalizeSlot('header', {}, $scopedSlots, $slots) || props.header); + } + + var adb = [headerId, props.ariaDescribedBy].filter(identity).join(' ').trim(); + return h('li', a(data, { + attrs: { + role: 'presentation' + } + }), [header || h(), h('ul', { + staticClass: 'list-unstyled', + attrs: _objectSpread2(_objectSpread2({}, $attrs), {}, { + id: props.id || null, + role: 'group', + 'aria-describedby': adb || null + }) + }, normalizeSlot('default', {}, $scopedSlots, $slots))]); + } + }); + + var DropdownPlugin = /*#__PURE__*/pluginFactory({ + components: { + BDropdown: BDropdown, + BDd: BDropdown, + BDropdownItem: BDropdownItem, + BDdItem: BDropdownItem, + BDropdownItemButton: BDropdownItemButton, + BDropdownItemBtn: BDropdownItemButton, + BDdItemButton: BDropdownItemButton, + BDdItemBtn: BDropdownItemButton, + BDropdownHeader: BDropdownHeader, + BDdHeader: BDropdownHeader, + BDropdownDivider: BDropdownDivider, + BDdDivider: BDropdownDivider, + BDropdownForm: BDropdownForm, + BDdForm: BDropdownForm, + BDropdownText: BDropdownText, + BDdText: BDropdownText, + BDropdownGroup: BDropdownGroup, + BDdGroup: BDropdownGroup + } + }); + + var props$s = { + type: { + type: String, + default: 'iframe', + validator: function validator(str) { + return arrayIncludes(['iframe', 'embed', 'video', 'object', 'img', 'b-img', 'b-img-lazy'], str); + } + }, + tag: { + type: String, + default: 'div' + }, + aspect: { + type: String, + default: '16by9' + } + }; // @vue/component + + var BEmbed = /*#__PURE__*/Vue.extend({ + name: 'BEmbed', + functional: true, + props: props$s, + render: function render(h, _ref) { + var props = _ref.props, + data = _ref.data, + children = _ref.children; + return h(props.tag, { + ref: data.ref, + staticClass: 'embed-responsive', + class: _defineProperty({}, "embed-responsive-".concat(props.aspect), props.aspect) + }, [h(props.type, a(data, { + ref: '', + staticClass: 'embed-responsive-item' + }), children)]); + } + }); + + var EmbedPlugin = /*#__PURE__*/pluginFactory({ + components: { + BEmbed: BEmbed + } + }); + + var OPTIONS_OBJECT_DEPRECATED_MSG = 'Setting prop "options" to an object is deprecated. Use the array format instead.'; // @vue/component + + var formOptionsMixin = { + props: { + options: { + type: [Array, Object], + default: function _default() { + return []; + } + }, + valueField: { + type: String, + default: 'value' + }, + textField: { + type: String, + default: 'text' + }, + htmlField: { + type: String, + default: 'html' + }, + disabledField: { + type: String, + default: 'disabled' + } + }, + computed: { + formOptions: function formOptions() { + return this.normalizeOptions(this.options); + } + }, + methods: { + normalizeOption: function normalizeOption(option) { + var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + + // When the option is an object, normalize it + if (isPlainObject(option)) { + var value = get(option, this.valueField); + var text = get(option, this.textField); + return { + value: isUndefined(value) ? key || text : value, + text: stripTags(String(isUndefined(text) ? key : text)), + html: get(option, this.htmlField), + disabled: Boolean(get(option, this.disabledField)) + }; + } // Otherwise create an `