diff --git a/electron-builder.yml b/electron-builder.yml index 29809bb43..138b10625 100644 --- a/electron-builder.yml +++ b/electron-builder.yml @@ -4,6 +4,11 @@ appId: app.ytmd files: - '**/*' - '!LICENSE.md' + - '!CODE_OF_CONDUCT.md' + - '!CONTRIBUTING.md' + - '!README.md' + - '!STORE_VARIABLES.md' + - '!.prettierrc.json' - '!package.json' - '!package-lock.json' - '!.cache' @@ -13,14 +18,14 @@ electronDownload: cache: '.cache/electron-builder/' win: - icon: assets + icon: src/assets publish: provider: generic url: 'https://dl.ytmdesktop.app/win' channel: latest linux: - icon: assets + icon: src/assets category: AudioVideo publish: provider: generic diff --git a/electron-builder64.yml b/electron-builder64.yml index db140ef68..58df392c5 100644 --- a/electron-builder64.yml +++ b/electron-builder64.yml @@ -4,6 +4,11 @@ appId: app.ytmd files: - '**/*' - '!LICENSE.md' + - '!CODE_OF_CONDUCT.md' + - '!CONTRIBUTING.md' + - '!README.md' + - '!STORE_VARIABLES.md' + - '!.prettierrc.json' - '!package.json' - '!package-lock.json' - '!.cache' @@ -13,14 +18,14 @@ electronDownload: cache: '.cache/electron-builder/' win: - icon: assets + icon: src/assets publish: provider: generic url: 'https://dl.ytmdesktop.app/win' channel: latest mac: - icon: assets + icon: src/assets category: public.app-category.music darkModeSupport: true target: @@ -31,7 +36,7 @@ mac: channel: latest linux: - icon: assets + icon: src/assets category: AudioVideo publish: provider: generic diff --git a/icons_for_shiny_tray.js b/icons_for_shiny_tray.js deleted file mode 100644 index ecdf9e5f7..000000000 --- a/icons_for_shiny_tray.js +++ /dev/null @@ -1,26 +0,0 @@ -const icons = new Image(); // icons for YTMD -icons.src = 'data:image/png;base64,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' - -const pause = new Image(); // Pause icon for dark mode -pause.src = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNNiAxOWg0VjVINnYxNHptOC0xNHYxNGg0VjVoLTR6IiBmaWxsPSJ3aGl0ZSIgLz48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PC9zdmc+'; - -const play = new Image(); // Play icon for dark mode -play.src = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNOCA1djE0bDExLTd6IiBmaWxsPSJ3aGl0ZSIvPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48L3N2Zz4='; - -const pause_w = new Image(); // Pause icon for bright mode -pause_w.src = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNNiAxOWg0VjVINnYxNHptOC0xNHYxNGg0VjVoLTR6IiBmaWxsPSJibGFjayIgLz48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PC9zdmc+'; -const play_w = new Image(); // Play icon for bright mode -play_w.src = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNOCA1djE0bDExLTd6IiBmaWxsPSJibGFjayIvPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48L3N2Zz4='; - -const dark = { - "pause": pause, - "play": play, - "icons": icons -}; -const bright = { - "pause": pause_w, - "play": play_w, - "icons": icons -}; -exports.dark = dark; -exports.bright = bright; \ No newline at end of file diff --git a/main.js b/main.js index 7815e5871..51870e3fe 100644 --- a/main.js +++ b/main.js @@ -1,4 +1,4 @@ -require('./utils/defaultSettings') +require('./src/utils/defaultSettings') const { app, @@ -13,25 +13,25 @@ const { shell, } = require('electron') const path = require('path') -const __ = require('./providers/translateProvider') const isDev = require('electron-is-dev') const ClipboardWatcher = require('electron-clipboard-watcher') const electronLocalshortcut = require('electron-localshortcut') -const assetsProvider = require('./providers/assetsProvider') -const scrobblerProvider = require('./providers/scrobblerProvider') -const { statusBarMenu } = require('./providers/templateProvider') -const settingsProvider = require('./providers/settingsProvider') -const infoPlayerProvider = require('./providers/infoPlayerProvider') -const rainmeterNowPlaying = require('./providers/rainmeterNowPlaying') -const companionServer = require('./providers/companionServer') -const discordRPC = require('./providers/discordRpcProvider') -const mprisProvider = require('./providers/mprisProvider') - -const { calcYTViewSize } = require('./utils/calcYTViewSize') -const { isWindows, isMac, isLinux } = require('./utils/systemInfo') -const { checkWindowPosition, doBehavior } = require('./utils/window') -const fileSystem = require('./utils/fileSystem') +const __ = require('./src/providers/translateProvider') +const assetsProvider = require('./src/providers/assetsProvider') +const scrobblerProvider = require('./src/providers/scrobblerProvider') +const { statusBarMenu } = require('./src/providers/templateProvider') +const settingsProvider = require('./src/providers/settingsProvider') +const infoPlayerProvider = require('./src/providers/infoPlayerProvider') +const rainmeterNowPlaying = require('./src/providers/rainmeterNowPlaying') +const companionServer = require('./src/providers/companionServer') +const discordRPC = require('./src/providers/discordRpcProvider') +const mprisProvider = require('./src/providers/mprisProvider') + +const { calcYTViewSize } = require('./src/utils/calcYTViewSize') +const { isWindows, isMac, isLinux } = require('./src/utils/systemInfo') +const { checkWindowPosition, doBehavior } = require('./src/utils/window') +const fileSystem = require('./src/utils/fileSystem') /* Variables =========================================================================== */ let mainWindow, @@ -65,6 +65,10 @@ let windowConfig = { } global.sharedObj = { title: 'N/A', paused: true } + +let iconDefault = assetsProvider.getIcon('favicon') +let iconPlay = assetsProvider.getIcon('favicon_play') +let iconPause = assetsProvider.getIcon('favicon_pause') // Keep a global reference of the window object, if you don't, the window will // be closed automatically when the JavaScript object is garbage collected. @@ -147,7 +151,7 @@ function createWindow() { } browserWindowConfig = { - icon: assetsProvider.getIcon('favicon'), + icon: iconDefault, width: mainWindowParams.width, height: mainWindowParams.height, minWidth: 300, @@ -199,14 +203,17 @@ function createWindow() { webPreferences: { nodeIntegration: true, webviewTag: true, - preload: path.join(app.getAppPath(), '/utils/injectControls.js'), + preload: path.join( + app.getAppPath(), + '/src/utils/injectControls.js' + ), }, }) mainWindow.loadFile( path.join( - __dirname, - './pages/shared/window-buttons/window-buttons.html' + app.getAppPath(), + '/src/pages/shared/window-buttons/window-buttons.html' ), { search: 'page=home/home&title=YouTube Music' } ) @@ -378,30 +385,15 @@ function createWindow() { !mainWindow.isFocused() && settingsProvider.get('settings-show-notifications') ) { - tray.balloon( - title, - author, - cover, - assetsProvider.getIcon('favicon') - ) + tray.balloon(title, author, cover, iconDefault) } } if (!isMac() && !settingsProvider.get('settings-shiny-tray')) { if (playerInfo.isPaused) { - tray.updateTrayIcon( - path.join( - app.getAppPath(), - assetsProvider.getIcon('favicon_pause') - ) - ) + tray.updateTrayIcon(path.join(app.getAppPath(), iconPause)) } else { - tray.updateTrayIcon( - path.join( - app.getAppPath(), - assetsProvider.getIcon('favicon_play') - ) - ) + tray.updateTrayIcon(path.join(app.getAppPath(), iconPlay)) } } } @@ -729,7 +721,7 @@ function createWindow() { } else { settings = new BrowserWindow({ title: __.trans('LABEL_SETTINGS'), - icon: assetsProvider.getIcon('favicon'), + icon: iconDefault, modal: false, frame: windowConfig.frame, titleBarStyle: windowConfig.titleBarStyle, @@ -751,8 +743,8 @@ function createWindow() { settings.loadFile( path.join( - __dirname, - './pages/shared/window-buttons/window-buttons.html' + app.getAppPath(), + '/src/pages/shared/window-buttons/window-buttons.html' ), { search: @@ -769,7 +761,7 @@ function createWindow() { function windowMiniplayer() { miniplayer = new BrowserWindow({ title: __.trans('LABEL_MINIPLAYER'), - icon: assetsProvider.getIcon('favicon'), + icon: iconDefault, modal: false, frame: false, center: false, @@ -787,7 +779,7 @@ function createWindow() { }) miniplayer.loadFile( - path.join(app.getAppPath(), '/pages/miniplayer/miniplayer.html') + path.join(app.getAppPath(), '/src/pages/miniplayer/miniplayer.html') ) switch (settingsProvider.get('settings-miniplayer-size')) { @@ -850,7 +842,7 @@ function createWindow() { function windowLastFmLogin() { const lastfm = new BrowserWindow({ //parent: mainWindow, - icon: assetsProvider.getIcon('favicon'), + icon: iconDefault, modal: false, frame: windowConfig.frame, titleBarStyle: windowConfig.titleBarStyle, @@ -872,7 +864,7 @@ function createWindow() { lastfm.loadFile( path.join( __dirname, - './pages/shared/window-buttons/window-buttons.html' + './src/pages/shared/window-buttons/window-buttons.html' ), { search: @@ -883,7 +875,7 @@ function createWindow() { function windowThemeEditor() { const editor = new BrowserWindow({ - icon: assetsProvider.getIcon('favicon'), + icon: iconDefault, frame: windowConfig.frame, titleBarStyle: windowConfig.titleBarStyle, center: true, @@ -902,7 +894,7 @@ function createWindow() { editor.loadFile( path.join( __dirname, - './pages/shared/window-buttons/window-buttons.html' + './src/pages/shared/window-buttons/window-buttons.html' ), { search: @@ -916,6 +908,7 @@ function createWindow() { lyrics.show() } else { lyrics = new BrowserWindow({ + icon: iconDefault, frame: windowConfig.frame, titleBarStyle: windowConfig.titleBarStyle, center: true, @@ -923,7 +916,6 @@ function createWindow() { backgroundColor: '#232323', width: 700, height: 800, - icon: assetsProvider.getIcon('favicon'), webPreferences: { nodeIntegration: true, webviewTag: true, @@ -938,7 +930,7 @@ function createWindow() { lyrics.loadFile( path.join( __dirname, - './pages/shared/window-buttons/window-buttons.html' + './src/pages/shared/window-buttons/window-buttons.html' ), { search: @@ -974,6 +966,7 @@ function createWindow() { const width = 800 const settings = new BrowserWindow({ // parent: mainWindow, + icon: iconDefault, skipTaskbar: false, frame: windowConfig.frame, titleBarStyle: windowConfig.titleBarStyle, @@ -986,7 +979,6 @@ function createWindow() { webPreferences: { nodeIntegration: false, }, - icon: assetsProvider.getIcon('favicon'), autoHideMenuBar: true, }) settings.loadURL('companionUrl') @@ -994,7 +986,7 @@ function createWindow() { function windowGuest() { const incognitoWindow = new BrowserWindow({ - icon: assetsProvider.getIcon('favicon'), + icon: iconDefault, width: mainWindowParams.width, height: mainWindowParams.height, minWidth: 300, @@ -1220,7 +1212,7 @@ if (!gotTheLock) { createWindow() - tray.createTray(mainWindow, assetsProvider.getIcon('favicon')) + tray.createTray(mainWindow, iconDefault) ipcMain.on('updated-tray-image', function(event, payload) { if (settingsProvider.get('settings-shiny-tray')) @@ -1365,10 +1357,10 @@ function loadCustomPageScript() { // In this file you can include the rest of your app's specific main process // code. You can also put them in separate files and require them here. -const mediaControl = require('./providers/mediaProvider') -const tray = require('./providers/trayProvider') -const updater = require('./providers/updateProvider') -const analytics = require('./providers/analyticsProvider') +const mediaControl = require('./src/providers/mediaProvider') +const tray = require('./src/providers/trayProvider') +const updater = require('./src/providers/updateProvider') +const analytics = require('./src/providers/analyticsProvider') analytics.setEvent('main', 'start', 'v' + app.getVersion(), app.getVersion()) analytics.setEvent('main', 'os', process.platform, process.platform) diff --git a/package-lock.json b/package-lock.json index c7bd56612..7263cffcb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -720,6 +720,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.1.tgz", "integrity": "sha512-xowrxvpxojqkagPcWRQVXZl0YXhRhAtBEIq3VoER1NH5Mw1n1o0ojdspp+GS2J//2gCVyrzQDApQ4unGF+QOoA==", + "optional": true, "requires": { "node-gyp-build": "~3.7.0" } @@ -2655,11 +2656,6 @@ "escape-string-regexp": "^4.0.0" } }, - "materialize-css": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/materialize-css/-/materialize-css-1.0.0.tgz", - "integrity": "sha512-4/oecXl8y/1i8RDZvyvwAICyqwNoKU4or5uf8uoAd74k76KzZ0Llym4zhJ5lLNUskcqjO0AuMcvNyDkpz8Z6zw==" - }, "math-interval-parser": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/math-interval-parser/-/math-interval-parser-2.0.1.tgz", @@ -2830,7 +2826,8 @@ "node-gyp-build": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-3.7.0.tgz", - "integrity": "sha512-L/Eg02Epx6Si2NXmedx+Okg+4UHqmaf3TNcxd50SF9NQGcJaON3AtU++kax69XV7YWz4tUspqZSAsVofhFKG2w==" + "integrity": "sha512-L/Eg02Epx6Si2NXmedx+Okg+4UHqmaf3TNcxd50SF9NQGcJaON3AtU++kax69XV7YWz4tUspqZSAsVofhFKG2w==", + "optional": true }, "node-vibrant": { "version": "3.1.5", @@ -7689,6 +7686,7 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.2.tgz", "integrity": "sha512-SwV++i2gTD5qh2XqaPzBnNX88N6HdyhQrNNRykvcS0QKvItV9u3vPEJr+X5Hhfb1JC0r0e1alL0iB09rY8+nmw==", + "optional": true, "requires": { "node-gyp-build": "~3.7.0" } diff --git a/package.json b/package.json index 8ae5b4bf6..5d657e3a8 100644 --- a/package.json +++ b/package.json @@ -7,10 +7,10 @@ "start": "npx electron .", "pack": "npx electron-builder --dir", "pack:x64": "npm run pack -- --x64 --config electron-builder64.yml", - "dist": "npx electron-builder", + "dist": "npx electron-builder --dir", "dist:x64": "npm run dist -- --x64 --config electron-builder64.yml", - "publish:win": "build --win -p always --config electron-builder64.yml", - "publish:mac": "build --mac -p always --config electron-builder64.yml", + "publish:win": "electron-builder --win -p always --config electron-builder64.yml", + "publish:mac": "electron-builder --mac -p always --config electron-builder64.yml", "publish:lin": "electron-builder --linux -p always --config electron-builder64.yml" }, "repository": "https://github.com/ytmdesktop/ytmdesktop", @@ -34,7 +34,6 @@ }, "dependencies": { "ace-builds": "^1.4.8", - "bufferutil": "^4.0.1", "discord-rpc": "^3.1.0", "electron-canvas-to-buffer": "^2.0.0", "electron-clipboard-watcher": "^1.0.1", @@ -47,7 +46,6 @@ "i18n": "^0.8.5", "image-to-base64": "^2.1.0", "js-base64": "^2.5.1", - "materialize-css": "^1.0.0", "node-vibrant": "^3.1.5", "npx": "^10.2.2", "prettier": "^1.19.1", @@ -56,11 +54,12 @@ "request": "^2.88.0", "scribble": "0.0.5", "socket.io": "^2.3.0", - "utf-8-validate": "^5.0.2", "ws": "^7.2.1" }, "optionalDependencies": { "@nodert-win10/windows.media.playback": "^0.2.96", - "mpris-service": "^2.1.0" + "bufferutil": "^4.0.1", + "mpris-service": "^2.1.0", + "utf-8-validate": "^5.0.2" } } diff --git a/pages/editor/editor.html b/pages/editor/editor.html deleted file mode 100644 index dd6b1a87e..000000000 --- a/pages/editor/editor.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -

-    save
-  
-
-  
-
-  
-
diff --git a/pages/home/home.html b/pages/home/home.html
deleted file mode 100644
index c216392af..000000000
--- a/pages/home/home.html
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-  
-    
-    YouTube Music
-    
-    
-    
-    
-  
-
-  
-    
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
- signal_wifi_off -
-
- - - - diff --git a/pages/miniplayer/miniplayer.html b/pages/miniplayer/miniplayer.html deleted file mode 100644 index 64a94eab8..000000000 --- a/pages/miniplayer/miniplayer.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - YouTube Music - - - - - - - -
-
-
- drag_indicator -
-
- layers -
-
- launch -
-
- -
- Title -
- -
- Author -
- -
- 0:00 / 0:00 -
- -
-
- thumb_down -
-
- skip_previous -
-
- play_arrow -
-
- skip_next -
-
- thumb_up -
-
-
-
-
-
- -
-
-
-
-
- - - - diff --git a/pages/settings/last-fm-login.html b/pages/settings/last-fm-login.html deleted file mode 100644 index 4877d9159..000000000 --- a/pages/settings/last-fm-login.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - -
-
-
- - -
-
- - -
-
-
- -
-
- - - - - - - - diff --git a/pages/settings/mac_shiny.html b/pages/settings/mac_shiny.html deleted file mode 100644 index e59af4504..000000000 --- a/pages/settings/mac_shiny.html +++ /dev/null @@ -1,233 +0,0 @@ - - - - - Settings - - - - - - - -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- YTMDesktop App -
-
- Play / Pause -
- Previous Track -
- Next Track -
- Lyrics -
- Settings -
- Exit -
-
-
-
-
- - - - diff --git a/providers/discordRpcProvider.js b/providers/discordRpcProvider.js deleted file mode 100644 index 1b3ba1e6c..000000000 --- a/providers/discordRpcProvider.js +++ /dev/null @@ -1,71 +0,0 @@ -const clientId = "495666957501071390"; -const RPC = require("discord-rpc"); -const startTimestamp = new Date(); -var client; - -var _isStarted; - -function isStarted() { - return _isStarted; -} - -function _setIsStarted(value) { - _isStarted = value; -} - -function start() { - client = new RPC.Client({ transport: "ipc" }); - - client.on("ready", () => { - _setIsStarted(true); - }); - - client.login({ clientId }).catch(() => { - if (!isStarted()) { - setTimeout(function() { - // console.log('trying to connect') - start(); - }, 10000); - } - }); - - client.on("disconnected", () => { - _setIsStarted(false); - start(); - }); -} - -function stop() { - client.destroy(); - _setIsStarted(false); -} - -function setActivity(info) { - if (isStarted() && info.track.title) { - var now = Date.now(); - client - .setActivity({ - details: info.track.title, - state: info.track.author, - startTimestamp: now + info.player.seekbarCurrentPosition * 1000, - endTimestamp: - now + - (info.track.duration - info.player.seekbarCurrentPosition) * 1000, - largeImageKey: "ytm_logo_512", - smallImageKey: info.player.isPaused - ? "discordrpc-pause" - : "discordrpc-play", - instance: false - }) - .catch(err => { - console.log(err); - }); - } -} - -module.exports = { - isStarted: isStarted, - start: start, - stop: stop, - setActivity: setActivity -}; diff --git a/providers/translateProvider.js b/providers/translateProvider.js deleted file mode 100644 index fee4847a3..000000000 --- a/providers/translateProvider.js +++ /dev/null @@ -1,59 +0,0 @@ -const i18n = require("i18n"); -const settingsProvider = require("./settingsProvider"); - -const defaultLocale = settingsProvider.get("settings-app-language", "en"); - -i18n.configure({ - locales: ["en", "pt"], - directory: __dirname + "/../locales", - defaultLocale: defaultLocale -}); - -function setLocale(locale) { - i18n.setLocale(locale); -} - -function trans(id, params) { - params = typeof params !== "undefined" ? params : {}; - try { - let tmp = i18n.__(id, params); - if (tmp === id) { - return i18n.__({ phrase: id, locale: "en" }, params); // fallback to english - } else { - return tmp; - } - } catch (_) { - return i18n.__({ phrase: id, locale: "en" }, params); // fallback to english - } -} - -function translateHelper() { - const prefix = "i18n_"; - var items = []; - var i18n_items = document.getElementsByTagName("*"); - for (var i = 0; i < i18n_items.length; i++) { - //omitting undefined null check for brevity - if ( - i18n_items[i].getAttribute("i18n") && - i18n_items[i].getAttribute("i18n").lastIndexOf(prefix, 0) === 0 - ) { - items.push([ - i18n_items[i].getAttribute("i18n").replace("i18n_", ""), - i18n_items[i] - ]); - } - } - return items; -} - -function loadi18n() { - translateHelper().forEach(([i18n, element]) => { - element.innerHTML = trans(i18n); - }); -} - -module.exports = { - setLocale: setLocale, - trans: trans, - loadi18n: loadi18n -}; diff --git a/assets/css/material_icons.css b/src/assets/css/material_icons.css similarity index 100% rename from assets/css/material_icons.css rename to src/assets/css/material_icons.css diff --git a/src/assets/css/materialize.min.css b/src/assets/css/materialize.min.css new file mode 100644 index 000000000..74b1741b6 --- /dev/null +++ b/src/assets/css/materialize.min.css @@ -0,0 +1,13 @@ +/*! + * Materialize v1.0.0 (http://materializecss.com) + * Copyright 2014-2017 Materialize + * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE) + */ +.materialize-red{background-color:#e51c23 !important}.materialize-red-text{color:#e51c23 !important}.materialize-red.lighten-5{background-color:#fdeaeb !important}.materialize-red-text.text-lighten-5{color:#fdeaeb !important}.materialize-red.lighten-4{background-color:#f8c1c3 !important}.materialize-red-text.text-lighten-4{color:#f8c1c3 !important}.materialize-red.lighten-3{background-color:#f3989b !important}.materialize-red-text.text-lighten-3{color:#f3989b !important}.materialize-red.lighten-2{background-color:#ee6e73 !important}.materialize-red-text.text-lighten-2{color:#ee6e73 !important}.materialize-red.lighten-1{background-color:#ea454b !important}.materialize-red-text.text-lighten-1{color:#ea454b !important}.materialize-red.darken-1{background-color:#d0181e !important}.materialize-red-text.text-darken-1{color:#d0181e !important}.materialize-red.darken-2{background-color:#b9151b !important}.materialize-red-text.text-darken-2{color:#b9151b !important}.materialize-red.darken-3{background-color:#a21318 !important}.materialize-red-text.text-darken-3{color:#a21318 !important}.materialize-red.darken-4{background-color:#8b1014 !important}.materialize-red-text.text-darken-4{color:#8b1014 !important}.red{background-color:#F44336 !important}.red-text{color:#F44336 !important}.red.lighten-5{background-color:#FFEBEE !important}.red-text.text-lighten-5{color:#FFEBEE !important}.red.lighten-4{background-color:#FFCDD2 !important}.red-text.text-lighten-4{color:#FFCDD2 !important}.red.lighten-3{background-color:#EF9A9A !important}.red-text.text-lighten-3{color:#EF9A9A !important}.red.lighten-2{background-color:#E57373 !important}.red-text.text-lighten-2{color:#E57373 !important}.red.lighten-1{background-color:#EF5350 !important}.red-text.text-lighten-1{color:#EF5350 !important}.red.darken-1{background-color:#E53935 !important}.red-text.text-darken-1{color:#E53935 !important}.red.darken-2{background-color:#D32F2F !important}.red-text.text-darken-2{color:#D32F2F !important}.red.darken-3{background-color:#C62828 !important}.red-text.text-darken-3{color:#C62828 !important}.red.darken-4{background-color:#B71C1C !important}.red-text.text-darken-4{color:#B71C1C !important}.red.accent-1{background-color:#FF8A80 !important}.red-text.text-accent-1{color:#FF8A80 !important}.red.accent-2{background-color:#FF5252 !important}.red-text.text-accent-2{color:#FF5252 !important}.red.accent-3{background-color:#FF1744 !important}.red-text.text-accent-3{color:#FF1744 !important}.red.accent-4{background-color:#D50000 !important}.red-text.text-accent-4{color:#D50000 !important}.pink{background-color:#e91e63 !important}.pink-text{color:#e91e63 !important}.pink.lighten-5{background-color:#fce4ec !important}.pink-text.text-lighten-5{color:#fce4ec !important}.pink.lighten-4{background-color:#f8bbd0 !important}.pink-text.text-lighten-4{color:#f8bbd0 !important}.pink.lighten-3{background-color:#f48fb1 !important}.pink-text.text-lighten-3{color:#f48fb1 !important}.pink.lighten-2{background-color:#f06292 !important}.pink-text.text-lighten-2{color:#f06292 !important}.pink.lighten-1{background-color:#ec407a !important}.pink-text.text-lighten-1{color:#ec407a !important}.pink.darken-1{background-color:#d81b60 !important}.pink-text.text-darken-1{color:#d81b60 !important}.pink.darken-2{background-color:#c2185b !important}.pink-text.text-darken-2{color:#c2185b !important}.pink.darken-3{background-color:#ad1457 !important}.pink-text.text-darken-3{color:#ad1457 !important}.pink.darken-4{background-color:#880e4f !important}.pink-text.text-darken-4{color:#880e4f !important}.pink.accent-1{background-color:#ff80ab !important}.pink-text.text-accent-1{color:#ff80ab !important}.pink.accent-2{background-color:#ff4081 !important}.pink-text.text-accent-2{color:#ff4081 !important}.pink.accent-3{background-color:#f50057 !important}.pink-text.text-accent-3{color:#f50057 !important}.pink.accent-4{background-color:#c51162 !important}.pink-text.text-accent-4{color:#c51162 !important}.purple{background-color:#9c27b0 !important}.purple-text{color:#9c27b0 !important}.purple.lighten-5{background-color:#f3e5f5 !important}.purple-text.text-lighten-5{color:#f3e5f5 !important}.purple.lighten-4{background-color:#e1bee7 !important}.purple-text.text-lighten-4{color:#e1bee7 !important}.purple.lighten-3{background-color:#ce93d8 !important}.purple-text.text-lighten-3{color:#ce93d8 !important}.purple.lighten-2{background-color:#ba68c8 !important}.purple-text.text-lighten-2{color:#ba68c8 !important}.purple.lighten-1{background-color:#ab47bc !important}.purple-text.text-lighten-1{color:#ab47bc !important}.purple.darken-1{background-color:#8e24aa !important}.purple-text.text-darken-1{color:#8e24aa !important}.purple.darken-2{background-color:#7b1fa2 !important}.purple-text.text-darken-2{color:#7b1fa2 !important}.purple.darken-3{background-color:#6a1b9a !important}.purple-text.text-darken-3{color:#6a1b9a !important}.purple.darken-4{background-color:#4a148c !important}.purple-text.text-darken-4{color:#4a148c !important}.purple.accent-1{background-color:#ea80fc !important}.purple-text.text-accent-1{color:#ea80fc !important}.purple.accent-2{background-color:#e040fb !important}.purple-text.text-accent-2{color:#e040fb !important}.purple.accent-3{background-color:#d500f9 !important}.purple-text.text-accent-3{color:#d500f9 !important}.purple.accent-4{background-color:#a0f !important}.purple-text.text-accent-4{color:#a0f !important}.deep-purple{background-color:#673ab7 !important}.deep-purple-text{color:#673ab7 !important}.deep-purple.lighten-5{background-color:#ede7f6 !important}.deep-purple-text.text-lighten-5{color:#ede7f6 !important}.deep-purple.lighten-4{background-color:#d1c4e9 !important}.deep-purple-text.text-lighten-4{color:#d1c4e9 !important}.deep-purple.lighten-3{background-color:#b39ddb !important}.deep-purple-text.text-lighten-3{color:#b39ddb !important}.deep-purple.lighten-2{background-color:#9575cd !important}.deep-purple-text.text-lighten-2{color:#9575cd !important}.deep-purple.lighten-1{background-color:#7e57c2 !important}.deep-purple-text.text-lighten-1{color:#7e57c2 !important}.deep-purple.darken-1{background-color:#5e35b1 !important}.deep-purple-text.text-darken-1{color:#5e35b1 !important}.deep-purple.darken-2{background-color:#512da8 !important}.deep-purple-text.text-darken-2{color:#512da8 !important}.deep-purple.darken-3{background-color:#4527a0 !important}.deep-purple-text.text-darken-3{color:#4527a0 !important}.deep-purple.darken-4{background-color:#311b92 !important}.deep-purple-text.text-darken-4{color:#311b92 !important}.deep-purple.accent-1{background-color:#b388ff !important}.deep-purple-text.text-accent-1{color:#b388ff !important}.deep-purple.accent-2{background-color:#7c4dff !important}.deep-purple-text.text-accent-2{color:#7c4dff !important}.deep-purple.accent-3{background-color:#651fff !important}.deep-purple-text.text-accent-3{color:#651fff !important}.deep-purple.accent-4{background-color:#6200ea !important}.deep-purple-text.text-accent-4{color:#6200ea !important}.indigo{background-color:#3f51b5 !important}.indigo-text{color:#3f51b5 !important}.indigo.lighten-5{background-color:#e8eaf6 !important}.indigo-text.text-lighten-5{color:#e8eaf6 !important}.indigo.lighten-4{background-color:#c5cae9 !important}.indigo-text.text-lighten-4{color:#c5cae9 !important}.indigo.lighten-3{background-color:#9fa8da !important}.indigo-text.text-lighten-3{color:#9fa8da !important}.indigo.lighten-2{background-color:#7986cb !important}.indigo-text.text-lighten-2{color:#7986cb !important}.indigo.lighten-1{background-color:#5c6bc0 !important}.indigo-text.text-lighten-1{color:#5c6bc0 !important}.indigo.darken-1{background-color:#3949ab !important}.indigo-text.text-darken-1{color:#3949ab !important}.indigo.darken-2{background-color:#303f9f !important}.indigo-text.text-darken-2{color:#303f9f !important}.indigo.darken-3{background-color:#283593 !important}.indigo-text.text-darken-3{color:#283593 !important}.indigo.darken-4{background-color:#1a237e !important}.indigo-text.text-darken-4{color:#1a237e !important}.indigo.accent-1{background-color:#8c9eff !important}.indigo-text.text-accent-1{color:#8c9eff !important}.indigo.accent-2{background-color:#536dfe !important}.indigo-text.text-accent-2{color:#536dfe !important}.indigo.accent-3{background-color:#3d5afe !important}.indigo-text.text-accent-3{color:#3d5afe !important}.indigo.accent-4{background-color:#304ffe !important}.indigo-text.text-accent-4{color:#304ffe !important}.blue{background-color:#2196F3 !important}.blue-text{color:#2196F3 !important}.blue.lighten-5{background-color:#E3F2FD !important}.blue-text.text-lighten-5{color:#E3F2FD !important}.blue.lighten-4{background-color:#BBDEFB !important}.blue-text.text-lighten-4{color:#BBDEFB !important}.blue.lighten-3{background-color:#90CAF9 !important}.blue-text.text-lighten-3{color:#90CAF9 !important}.blue.lighten-2{background-color:#64B5F6 !important}.blue-text.text-lighten-2{color:#64B5F6 !important}.blue.lighten-1{background-color:#42A5F5 !important}.blue-text.text-lighten-1{color:#42A5F5 !important}.blue.darken-1{background-color:#1E88E5 !important}.blue-text.text-darken-1{color:#1E88E5 !important}.blue.darken-2{background-color:#1976D2 !important}.blue-text.text-darken-2{color:#1976D2 !important}.blue.darken-3{background-color:#1565C0 !important}.blue-text.text-darken-3{color:#1565C0 !important}.blue.darken-4{background-color:#0D47A1 !important}.blue-text.text-darken-4{color:#0D47A1 !important}.blue.accent-1{background-color:#82B1FF !important}.blue-text.text-accent-1{color:#82B1FF !important}.blue.accent-2{background-color:#448AFF !important}.blue-text.text-accent-2{color:#448AFF !important}.blue.accent-3{background-color:#2979FF !important}.blue-text.text-accent-3{color:#2979FF !important}.blue.accent-4{background-color:#2962FF !important}.blue-text.text-accent-4{color:#2962FF !important}.light-blue{background-color:#03a9f4 !important}.light-blue-text{color:#03a9f4 !important}.light-blue.lighten-5{background-color:#e1f5fe !important}.light-blue-text.text-lighten-5{color:#e1f5fe !important}.light-blue.lighten-4{background-color:#b3e5fc !important}.light-blue-text.text-lighten-4{color:#b3e5fc !important}.light-blue.lighten-3{background-color:#81d4fa !important}.light-blue-text.text-lighten-3{color:#81d4fa !important}.light-blue.lighten-2{background-color:#4fc3f7 !important}.light-blue-text.text-lighten-2{color:#4fc3f7 !important}.light-blue.lighten-1{background-color:#29b6f6 !important}.light-blue-text.text-lighten-1{color:#29b6f6 !important}.light-blue.darken-1{background-color:#039be5 !important}.light-blue-text.text-darken-1{color:#039be5 !important}.light-blue.darken-2{background-color:#0288d1 !important}.light-blue-text.text-darken-2{color:#0288d1 !important}.light-blue.darken-3{background-color:#0277bd !important}.light-blue-text.text-darken-3{color:#0277bd !important}.light-blue.darken-4{background-color:#01579b !important}.light-blue-text.text-darken-4{color:#01579b !important}.light-blue.accent-1{background-color:#80d8ff !important}.light-blue-text.text-accent-1{color:#80d8ff !important}.light-blue.accent-2{background-color:#40c4ff !important}.light-blue-text.text-accent-2{color:#40c4ff !important}.light-blue.accent-3{background-color:#00b0ff !important}.light-blue-text.text-accent-3{color:#00b0ff !important}.light-blue.accent-4{background-color:#0091ea !important}.light-blue-text.text-accent-4{color:#0091ea !important}.cyan{background-color:#00bcd4 !important}.cyan-text{color:#00bcd4 !important}.cyan.lighten-5{background-color:#e0f7fa !important}.cyan-text.text-lighten-5{color:#e0f7fa !important}.cyan.lighten-4{background-color:#b2ebf2 !important}.cyan-text.text-lighten-4{color:#b2ebf2 !important}.cyan.lighten-3{background-color:#80deea !important}.cyan-text.text-lighten-3{color:#80deea !important}.cyan.lighten-2{background-color:#4dd0e1 !important}.cyan-text.text-lighten-2{color:#4dd0e1 !important}.cyan.lighten-1{background-color:#26c6da !important}.cyan-text.text-lighten-1{color:#26c6da !important}.cyan.darken-1{background-color:#00acc1 !important}.cyan-text.text-darken-1{color:#00acc1 !important}.cyan.darken-2{background-color:#0097a7 !important}.cyan-text.text-darken-2{color:#0097a7 !important}.cyan.darken-3{background-color:#00838f !important}.cyan-text.text-darken-3{color:#00838f !important}.cyan.darken-4{background-color:#006064 !important}.cyan-text.text-darken-4{color:#006064 !important}.cyan.accent-1{background-color:#84ffff !important}.cyan-text.text-accent-1{color:#84ffff !important}.cyan.accent-2{background-color:#18ffff !important}.cyan-text.text-accent-2{color:#18ffff !important}.cyan.accent-3{background-color:#00e5ff !important}.cyan-text.text-accent-3{color:#00e5ff !important}.cyan.accent-4{background-color:#00b8d4 !important}.cyan-text.text-accent-4{color:#00b8d4 !important}.teal{background-color:#009688 !important}.teal-text{color:#009688 !important}.teal.lighten-5{background-color:#e0f2f1 !important}.teal-text.text-lighten-5{color:#e0f2f1 !important}.teal.lighten-4{background-color:#b2dfdb !important}.teal-text.text-lighten-4{color:#b2dfdb !important}.teal.lighten-3{background-color:#80cbc4 !important}.teal-text.text-lighten-3{color:#80cbc4 !important}.teal.lighten-2{background-color:#4db6ac !important}.teal-text.text-lighten-2{color:#4db6ac !important}.teal.lighten-1{background-color:#26a69a !important}.teal-text.text-lighten-1{color:#26a69a !important}.teal.darken-1{background-color:#00897b !important}.teal-text.text-darken-1{color:#00897b !important}.teal.darken-2{background-color:#00796b !important}.teal-text.text-darken-2{color:#00796b !important}.teal.darken-3{background-color:#00695c !important}.teal-text.text-darken-3{color:#00695c !important}.teal.darken-4{background-color:#004d40 !important}.teal-text.text-darken-4{color:#004d40 !important}.teal.accent-1{background-color:#a7ffeb !important}.teal-text.text-accent-1{color:#a7ffeb !important}.teal.accent-2{background-color:#64ffda !important}.teal-text.text-accent-2{color:#64ffda !important}.teal.accent-3{background-color:#1de9b6 !important}.teal-text.text-accent-3{color:#1de9b6 !important}.teal.accent-4{background-color:#00bfa5 !important}.teal-text.text-accent-4{color:#00bfa5 !important}.green{background-color:#4CAF50 !important}.green-text{color:#4CAF50 !important}.green.lighten-5{background-color:#E8F5E9 !important}.green-text.text-lighten-5{color:#E8F5E9 !important}.green.lighten-4{background-color:#C8E6C9 !important}.green-text.text-lighten-4{color:#C8E6C9 !important}.green.lighten-3{background-color:#A5D6A7 !important}.green-text.text-lighten-3{color:#A5D6A7 !important}.green.lighten-2{background-color:#81C784 !important}.green-text.text-lighten-2{color:#81C784 !important}.green.lighten-1{background-color:#66BB6A !important}.green-text.text-lighten-1{color:#66BB6A !important}.green.darken-1{background-color:#43A047 !important}.green-text.text-darken-1{color:#43A047 !important}.green.darken-2{background-color:#388E3C !important}.green-text.text-darken-2{color:#388E3C !important}.green.darken-3{background-color:#2E7D32 !important}.green-text.text-darken-3{color:#2E7D32 !important}.green.darken-4{background-color:#1B5E20 !important}.green-text.text-darken-4{color:#1B5E20 !important}.green.accent-1{background-color:#B9F6CA !important}.green-text.text-accent-1{color:#B9F6CA !important}.green.accent-2{background-color:#69F0AE !important}.green-text.text-accent-2{color:#69F0AE !important}.green.accent-3{background-color:#00E676 !important}.green-text.text-accent-3{color:#00E676 !important}.green.accent-4{background-color:#00C853 !important}.green-text.text-accent-4{color:#00C853 !important}.light-green{background-color:#8bc34a !important}.light-green-text{color:#8bc34a !important}.light-green.lighten-5{background-color:#f1f8e9 !important}.light-green-text.text-lighten-5{color:#f1f8e9 !important}.light-green.lighten-4{background-color:#dcedc8 !important}.light-green-text.text-lighten-4{color:#dcedc8 !important}.light-green.lighten-3{background-color:#c5e1a5 !important}.light-green-text.text-lighten-3{color:#c5e1a5 !important}.light-green.lighten-2{background-color:#aed581 !important}.light-green-text.text-lighten-2{color:#aed581 !important}.light-green.lighten-1{background-color:#9ccc65 !important}.light-green-text.text-lighten-1{color:#9ccc65 !important}.light-green.darken-1{background-color:#7cb342 !important}.light-green-text.text-darken-1{color:#7cb342 !important}.light-green.darken-2{background-color:#689f38 !important}.light-green-text.text-darken-2{color:#689f38 !important}.light-green.darken-3{background-color:#558b2f !important}.light-green-text.text-darken-3{color:#558b2f !important}.light-green.darken-4{background-color:#33691e !important}.light-green-text.text-darken-4{color:#33691e !important}.light-green.accent-1{background-color:#ccff90 !important}.light-green-text.text-accent-1{color:#ccff90 !important}.light-green.accent-2{background-color:#b2ff59 !important}.light-green-text.text-accent-2{color:#b2ff59 !important}.light-green.accent-3{background-color:#76ff03 !important}.light-green-text.text-accent-3{color:#76ff03 !important}.light-green.accent-4{background-color:#64dd17 !important}.light-green-text.text-accent-4{color:#64dd17 !important}.lime{background-color:#cddc39 !important}.lime-text{color:#cddc39 !important}.lime.lighten-5{background-color:#f9fbe7 !important}.lime-text.text-lighten-5{color:#f9fbe7 !important}.lime.lighten-4{background-color:#f0f4c3 !important}.lime-text.text-lighten-4{color:#f0f4c3 !important}.lime.lighten-3{background-color:#e6ee9c !important}.lime-text.text-lighten-3{color:#e6ee9c !important}.lime.lighten-2{background-color:#dce775 !important}.lime-text.text-lighten-2{color:#dce775 !important}.lime.lighten-1{background-color:#d4e157 !important}.lime-text.text-lighten-1{color:#d4e157 !important}.lime.darken-1{background-color:#c0ca33 !important}.lime-text.text-darken-1{color:#c0ca33 !important}.lime.darken-2{background-color:#afb42b !important}.lime-text.text-darken-2{color:#afb42b !important}.lime.darken-3{background-color:#9e9d24 !important}.lime-text.text-darken-3{color:#9e9d24 !important}.lime.darken-4{background-color:#827717 !important}.lime-text.text-darken-4{color:#827717 !important}.lime.accent-1{background-color:#f4ff81 !important}.lime-text.text-accent-1{color:#f4ff81 !important}.lime.accent-2{background-color:#eeff41 !important}.lime-text.text-accent-2{color:#eeff41 !important}.lime.accent-3{background-color:#c6ff00 !important}.lime-text.text-accent-3{color:#c6ff00 !important}.lime.accent-4{background-color:#aeea00 !important}.lime-text.text-accent-4{color:#aeea00 !important}.yellow{background-color:#ffeb3b !important}.yellow-text{color:#ffeb3b !important}.yellow.lighten-5{background-color:#fffde7 !important}.yellow-text.text-lighten-5{color:#fffde7 !important}.yellow.lighten-4{background-color:#fff9c4 !important}.yellow-text.text-lighten-4{color:#fff9c4 !important}.yellow.lighten-3{background-color:#fff59d !important}.yellow-text.text-lighten-3{color:#fff59d !important}.yellow.lighten-2{background-color:#fff176 !important}.yellow-text.text-lighten-2{color:#fff176 !important}.yellow.lighten-1{background-color:#ffee58 !important}.yellow-text.text-lighten-1{color:#ffee58 !important}.yellow.darken-1{background-color:#fdd835 !important}.yellow-text.text-darken-1{color:#fdd835 !important}.yellow.darken-2{background-color:#fbc02d !important}.yellow-text.text-darken-2{color:#fbc02d !important}.yellow.darken-3{background-color:#f9a825 !important}.yellow-text.text-darken-3{color:#f9a825 !important}.yellow.darken-4{background-color:#f57f17 !important}.yellow-text.text-darken-4{color:#f57f17 !important}.yellow.accent-1{background-color:#ffff8d !important}.yellow-text.text-accent-1{color:#ffff8d !important}.yellow.accent-2{background-color:#ff0 !important}.yellow-text.text-accent-2{color:#ff0 !important}.yellow.accent-3{background-color:#ffea00 !important}.yellow-text.text-accent-3{color:#ffea00 !important}.yellow.accent-4{background-color:#ffd600 !important}.yellow-text.text-accent-4{color:#ffd600 !important}.amber{background-color:#ffc107 !important}.amber-text{color:#ffc107 !important}.amber.lighten-5{background-color:#fff8e1 !important}.amber-text.text-lighten-5{color:#fff8e1 !important}.amber.lighten-4{background-color:#ffecb3 !important}.amber-text.text-lighten-4{color:#ffecb3 !important}.amber.lighten-3{background-color:#ffe082 !important}.amber-text.text-lighten-3{color:#ffe082 !important}.amber.lighten-2{background-color:#ffd54f !important}.amber-text.text-lighten-2{color:#ffd54f !important}.amber.lighten-1{background-color:#ffca28 !important}.amber-text.text-lighten-1{color:#ffca28 !important}.amber.darken-1{background-color:#ffb300 !important}.amber-text.text-darken-1{color:#ffb300 !important}.amber.darken-2{background-color:#ffa000 !important}.amber-text.text-darken-2{color:#ffa000 !important}.amber.darken-3{background-color:#ff8f00 !important}.amber-text.text-darken-3{color:#ff8f00 !important}.amber.darken-4{background-color:#ff6f00 !important}.amber-text.text-darken-4{color:#ff6f00 !important}.amber.accent-1{background-color:#ffe57f !important}.amber-text.text-accent-1{color:#ffe57f !important}.amber.accent-2{background-color:#ffd740 !important}.amber-text.text-accent-2{color:#ffd740 !important}.amber.accent-3{background-color:#ffc400 !important}.amber-text.text-accent-3{color:#ffc400 !important}.amber.accent-4{background-color:#ffab00 !important}.amber-text.text-accent-4{color:#ffab00 !important}.orange{background-color:#ff9800 !important}.orange-text{color:#ff9800 !important}.orange.lighten-5{background-color:#fff3e0 !important}.orange-text.text-lighten-5{color:#fff3e0 !important}.orange.lighten-4{background-color:#ffe0b2 !important}.orange-text.text-lighten-4{color:#ffe0b2 !important}.orange.lighten-3{background-color:#ffcc80 !important}.orange-text.text-lighten-3{color:#ffcc80 !important}.orange.lighten-2{background-color:#ffb74d !important}.orange-text.text-lighten-2{color:#ffb74d !important}.orange.lighten-1{background-color:#ffa726 !important}.orange-text.text-lighten-1{color:#ffa726 !important}.orange.darken-1{background-color:#fb8c00 !important}.orange-text.text-darken-1{color:#fb8c00 !important}.orange.darken-2{background-color:#f57c00 !important}.orange-text.text-darken-2{color:#f57c00 !important}.orange.darken-3{background-color:#ef6c00 !important}.orange-text.text-darken-3{color:#ef6c00 !important}.orange.darken-4{background-color:#e65100 !important}.orange-text.text-darken-4{color:#e65100 !important}.orange.accent-1{background-color:#ffd180 !important}.orange-text.text-accent-1{color:#ffd180 !important}.orange.accent-2{background-color:#ffab40 !important}.orange-text.text-accent-2{color:#ffab40 !important}.orange.accent-3{background-color:#ff9100 !important}.orange-text.text-accent-3{color:#ff9100 !important}.orange.accent-4{background-color:#ff6d00 !important}.orange-text.text-accent-4{color:#ff6d00 !important}.deep-orange{background-color:#ff5722 !important}.deep-orange-text{color:#ff5722 !important}.deep-orange.lighten-5{background-color:#fbe9e7 !important}.deep-orange-text.text-lighten-5{color:#fbe9e7 !important}.deep-orange.lighten-4{background-color:#ffccbc !important}.deep-orange-text.text-lighten-4{color:#ffccbc !important}.deep-orange.lighten-3{background-color:#ffab91 !important}.deep-orange-text.text-lighten-3{color:#ffab91 !important}.deep-orange.lighten-2{background-color:#ff8a65 !important}.deep-orange-text.text-lighten-2{color:#ff8a65 !important}.deep-orange.lighten-1{background-color:#ff7043 !important}.deep-orange-text.text-lighten-1{color:#ff7043 !important}.deep-orange.darken-1{background-color:#f4511e !important}.deep-orange-text.text-darken-1{color:#f4511e !important}.deep-orange.darken-2{background-color:#e64a19 !important}.deep-orange-text.text-darken-2{color:#e64a19 !important}.deep-orange.darken-3{background-color:#d84315 !important}.deep-orange-text.text-darken-3{color:#d84315 !important}.deep-orange.darken-4{background-color:#bf360c !important}.deep-orange-text.text-darken-4{color:#bf360c !important}.deep-orange.accent-1{background-color:#ff9e80 !important}.deep-orange-text.text-accent-1{color:#ff9e80 !important}.deep-orange.accent-2{background-color:#ff6e40 !important}.deep-orange-text.text-accent-2{color:#ff6e40 !important}.deep-orange.accent-3{background-color:#ff3d00 !important}.deep-orange-text.text-accent-3{color:#ff3d00 !important}.deep-orange.accent-4{background-color:#dd2c00 !important}.deep-orange-text.text-accent-4{color:#dd2c00 !important}.brown{background-color:#795548 !important}.brown-text{color:#795548 !important}.brown.lighten-5{background-color:#efebe9 !important}.brown-text.text-lighten-5{color:#efebe9 !important}.brown.lighten-4{background-color:#d7ccc8 !important}.brown-text.text-lighten-4{color:#d7ccc8 !important}.brown.lighten-3{background-color:#bcaaa4 !important}.brown-text.text-lighten-3{color:#bcaaa4 !important}.brown.lighten-2{background-color:#a1887f !important}.brown-text.text-lighten-2{color:#a1887f !important}.brown.lighten-1{background-color:#8d6e63 !important}.brown-text.text-lighten-1{color:#8d6e63 !important}.brown.darken-1{background-color:#6d4c41 !important}.brown-text.text-darken-1{color:#6d4c41 !important}.brown.darken-2{background-color:#5d4037 !important}.brown-text.text-darken-2{color:#5d4037 !important}.brown.darken-3{background-color:#4e342e !important}.brown-text.text-darken-3{color:#4e342e !important}.brown.darken-4{background-color:#3e2723 !important}.brown-text.text-darken-4{color:#3e2723 !important}.blue-grey{background-color:#607d8b !important}.blue-grey-text{color:#607d8b !important}.blue-grey.lighten-5{background-color:#eceff1 !important}.blue-grey-text.text-lighten-5{color:#eceff1 !important}.blue-grey.lighten-4{background-color:#cfd8dc !important}.blue-grey-text.text-lighten-4{color:#cfd8dc !important}.blue-grey.lighten-3{background-color:#b0bec5 !important}.blue-grey-text.text-lighten-3{color:#b0bec5 !important}.blue-grey.lighten-2{background-color:#90a4ae !important}.blue-grey-text.text-lighten-2{color:#90a4ae !important}.blue-grey.lighten-1{background-color:#78909c !important}.blue-grey-text.text-lighten-1{color:#78909c !important}.blue-grey.darken-1{background-color:#546e7a !important}.blue-grey-text.text-darken-1{color:#546e7a !important}.blue-grey.darken-2{background-color:#455a64 !important}.blue-grey-text.text-darken-2{color:#455a64 !important}.blue-grey.darken-3{background-color:#37474f !important}.blue-grey-text.text-darken-3{color:#37474f !important}.blue-grey.darken-4{background-color:#263238 !important}.blue-grey-text.text-darken-4{color:#263238 !important}.grey{background-color:#9e9e9e !important}.grey-text{color:#9e9e9e !important}.grey.lighten-5{background-color:#fafafa !important}.grey-text.text-lighten-5{color:#fafafa !important}.grey.lighten-4{background-color:#f5f5f5 !important}.grey-text.text-lighten-4{color:#f5f5f5 !important}.grey.lighten-3{background-color:#eee !important}.grey-text.text-lighten-3{color:#eee !important}.grey.lighten-2{background-color:#e0e0e0 !important}.grey-text.text-lighten-2{color:#e0e0e0 !important}.grey.lighten-1{background-color:#bdbdbd !important}.grey-text.text-lighten-1{color:#bdbdbd !important}.grey.darken-1{background-color:#757575 !important}.grey-text.text-darken-1{color:#757575 !important}.grey.darken-2{background-color:#616161 !important}.grey-text.text-darken-2{color:#616161 !important}.grey.darken-3{background-color:#424242 !important}.grey-text.text-darken-3{color:#424242 !important}.grey.darken-4{background-color:#212121 !important}.grey-text.text-darken-4{color:#212121 !important}.black{background-color:#000 !important}.black-text{color:#000 !important}.white{background-color:#fff !important}.white-text{color:#fff !important}.transparent{background-color:rgba(0,0,0,0) !important}.transparent-text{color:rgba(0,0,0,0) !important}/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:0.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace, monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}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{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-cancel-button,[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}template{display:none}[hidden]{display:none}html{-webkit-box-sizing:border-box;box-sizing:border-box}*,*:before,*:after{-webkit-box-sizing:inherit;box-sizing:inherit}button,input,optgroup,select,textarea{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif}ul:not(.browser-default){padding-left:0;list-style-type:none}ul:not(.browser-default)>li{list-style-type:none}a{color:#039be5;text-decoration:none;-webkit-tap-highlight-color:transparent}.valign-wrapper{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}.clearfix{clear:both}.z-depth-0{-webkit-box-shadow:none !important;box-shadow:none !important}.z-depth-1,nav,.card-panel,.card,.toast,.btn,.btn-large,.btn-small,.btn-floating,.dropdown-content,.collapsible,.sidenav{-webkit-box-shadow:0 2px 2px 0 rgba(0,0,0,0.14),0 3px 1px -2px rgba(0,0,0,0.12),0 1px 5px 0 rgba(0,0,0,0.2);box-shadow:0 2px 2px 0 rgba(0,0,0,0.14),0 3px 1px -2px rgba(0,0,0,0.12),0 1px 5px 0 rgba(0,0,0,0.2)}.z-depth-1-half,.btn:hover,.btn-large:hover,.btn-small:hover,.btn-floating:hover{-webkit-box-shadow:0 3px 3px 0 rgba(0,0,0,0.14),0 1px 7px 0 rgba(0,0,0,0.12),0 3px 1px -1px rgba(0,0,0,0.2);box-shadow:0 3px 3px 0 rgba(0,0,0,0.14),0 1px 7px 0 rgba(0,0,0,0.12),0 3px 1px -1px rgba(0,0,0,0.2)}.z-depth-2{-webkit-box-shadow:0 4px 5px 0 rgba(0,0,0,0.14),0 1px 10px 0 rgba(0,0,0,0.12),0 2px 4px -1px rgba(0,0,0,0.3);box-shadow:0 4px 5px 0 rgba(0,0,0,0.14),0 1px 10px 0 rgba(0,0,0,0.12),0 2px 4px -1px rgba(0,0,0,0.3)}.z-depth-3{-webkit-box-shadow:0 8px 17px 2px rgba(0,0,0,0.14),0 3px 14px 2px rgba(0,0,0,0.12),0 5px 5px -3px rgba(0,0,0,0.2);box-shadow:0 8px 17px 2px rgba(0,0,0,0.14),0 3px 14px 2px rgba(0,0,0,0.12),0 5px 5px -3px rgba(0,0,0,0.2)}.z-depth-4{-webkit-box-shadow:0 16px 24px 2px rgba(0,0,0,0.14),0 6px 30px 5px rgba(0,0,0,0.12),0 8px 10px -7px rgba(0,0,0,0.2);box-shadow:0 16px 24px 2px rgba(0,0,0,0.14),0 6px 30px 5px rgba(0,0,0,0.12),0 8px 10px -7px rgba(0,0,0,0.2)}.z-depth-5,.modal{-webkit-box-shadow:0 24px 38px 3px rgba(0,0,0,0.14),0 9px 46px 8px rgba(0,0,0,0.12),0 11px 15px -7px rgba(0,0,0,0.2);box-shadow:0 24px 38px 3px rgba(0,0,0,0.14),0 9px 46px 8px rgba(0,0,0,0.12),0 11px 15px -7px rgba(0,0,0,0.2)}.hoverable{-webkit-transition:-webkit-box-shadow .25s;transition:-webkit-box-shadow .25s;transition:box-shadow .25s;transition:box-shadow .25s, -webkit-box-shadow .25s}.hoverable:hover{-webkit-box-shadow:0 8px 17px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19);box-shadow:0 8px 17px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}.divider{height:1px;overflow:hidden;background-color:#e0e0e0}blockquote{margin:20px 0;padding-left:1.5rem;border-left:5px solid #ee6e73}i{line-height:inherit}i.left{float:left;margin-right:15px}i.right{float:right;margin-left:15px}i.tiny{font-size:1rem}i.small{font-size:2rem}i.medium{font-size:4rem}i.large{font-size:6rem}img.responsive-img,video.responsive-video{max-width:100%;height:auto}.pagination li{display:inline-block;border-radius:2px;text-align:center;vertical-align:top;height:30px}.pagination li a{color:#444;display:inline-block;font-size:1.2rem;padding:0 10px;line-height:30px}.pagination li.active a{color:#fff}.pagination li.active{background-color:#ee6e73}.pagination li.disabled a{cursor:default;color:#999}.pagination li i{font-size:2rem}.pagination li.pages ul li{display:inline-block;float:none}@media only screen and (max-width: 992px){.pagination{width:100%}.pagination li.prev,.pagination li.next{width:10%}.pagination li.pages{width:80%;overflow:hidden;white-space:nowrap}}.breadcrumb{font-size:18px;color:rgba(255,255,255,0.7)}.breadcrumb i,.breadcrumb [class^="mdi-"],.breadcrumb [class*="mdi-"],.breadcrumb i.material-icons{display:inline-block;float:left;font-size:24px}.breadcrumb:before{content:'\E5CC';color:rgba(255,255,255,0.7);vertical-align:top;display:inline-block;font-family:'Material Icons';font-weight:normal;font-style:normal;font-size:25px;margin:0 10px 0 8px;-webkit-font-smoothing:antialiased}.breadcrumb:first-child:before{display:none}.breadcrumb:last-child{color:#fff}.parallax-container{position:relative;overflow:hidden;height:500px}.parallax-container .parallax{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1}.parallax-container .parallax img{opacity:0;position:absolute;left:50%;bottom:0;min-width:100%;min-height:100%;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);-webkit-transform:translateX(-50%);transform:translateX(-50%)}.pin-top,.pin-bottom{position:relative}.pinned{position:fixed !important}ul.staggered-list li{opacity:0}.fade-in{opacity:0;-webkit-transform-origin:0 50%;transform-origin:0 50%}@media only screen and (max-width: 600px){.hide-on-small-only,.hide-on-small-and-down{display:none !important}}@media only screen and (max-width: 992px){.hide-on-med-and-down{display:none !important}}@media only screen and (min-width: 601px){.hide-on-med-and-up{display:none !important}}@media only screen and (min-width: 600px) and (max-width: 992px){.hide-on-med-only{display:none !important}}@media only screen and (min-width: 993px){.hide-on-large-only{display:none !important}}@media only screen and (min-width: 1201px){.hide-on-extra-large-only{display:none !important}}@media only screen and (min-width: 1201px){.show-on-extra-large{display:block !important}}@media only screen and (min-width: 993px){.show-on-large{display:block !important}}@media only screen and (min-width: 600px) and (max-width: 992px){.show-on-medium{display:block !important}}@media only screen and (max-width: 600px){.show-on-small{display:block !important}}@media only screen and (min-width: 601px){.show-on-medium-and-up{display:block !important}}@media only screen and (max-width: 992px){.show-on-medium-and-down{display:block !important}}@media only screen and (max-width: 600px){.center-on-small-only{text-align:center}}.page-footer{padding-top:20px;color:#fff;background-color:#ee6e73}.page-footer .footer-copyright{overflow:hidden;min-height:50px;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;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;padding:10px 0px;color:rgba(255,255,255,0.8);background-color:rgba(51,51,51,0.08)}table,th,td{border:none}table{width:100%;display:table;border-collapse:collapse;border-spacing:0}table.striped tr{border-bottom:none}table.striped>tbody>tr:nth-child(odd){background-color:rgba(242,242,242,0.5)}table.striped>tbody>tr>td{border-radius:0}table.highlight>tbody>tr{-webkit-transition:background-color .25s ease;transition:background-color .25s ease}table.highlight>tbody>tr:hover{background-color:rgba(242,242,242,0.5)}table.centered thead tr th,table.centered tbody tr td{text-align:center}tr{border-bottom:1px solid rgba(0,0,0,0.12)}td,th{padding:15px 5px;display:table-cell;text-align:left;vertical-align:middle;border-radius:2px}@media only screen and (max-width: 992px){table.responsive-table{width:100%;border-collapse:collapse;border-spacing:0;display:block;position:relative}table.responsive-table td:empty:before{content:'\00a0'}table.responsive-table th,table.responsive-table td{margin:0;vertical-align:top}table.responsive-table th{text-align:left}table.responsive-table thead{display:block;float:left}table.responsive-table thead tr{display:block;padding:0 10px 0 0}table.responsive-table thead tr th::before{content:"\00a0"}table.responsive-table tbody{display:block;width:auto;position:relative;overflow-x:auto;white-space:nowrap}table.responsive-table tbody tr{display:inline-block;vertical-align:top}table.responsive-table th{display:block;text-align:right}table.responsive-table td{display:block;min-height:1.25em;text-align:left}table.responsive-table tr{border-bottom:none;padding:0 10px}table.responsive-table thead{border:0;border-right:1px solid rgba(0,0,0,0.12)}}.collection{margin:.5rem 0 1rem 0;border:1px solid #e0e0e0;border-radius:2px;overflow:hidden;position:relative}.collection .collection-item{background-color:#fff;line-height:1.5rem;padding:10px 20px;margin:0;border-bottom:1px solid #e0e0e0}.collection .collection-item.avatar{min-height:84px;padding-left:72px;position:relative}.collection .collection-item.avatar:not(.circle-clipper)>.circle,.collection .collection-item.avatar :not(.circle-clipper)>.circle{position:absolute;width:42px;height:42px;overflow:hidden;left:15px;display:inline-block;vertical-align:middle}.collection .collection-item.avatar i.circle{font-size:18px;line-height:42px;color:#fff;background-color:#999;text-align:center}.collection .collection-item.avatar .title{font-size:16px}.collection .collection-item.avatar p{margin:0}.collection .collection-item.avatar .secondary-content{position:absolute;top:16px;right:16px}.collection .collection-item:last-child{border-bottom:none}.collection .collection-item.active{background-color:#26a69a;color:#eafaf9}.collection .collection-item.active .secondary-content{color:#fff}.collection a.collection-item{display:block;-webkit-transition:.25s;transition:.25s;color:#26a69a}.collection a.collection-item:not(.active):hover{background-color:#ddd}.collection.with-header .collection-header{background-color:#fff;border-bottom:1px solid #e0e0e0;padding:10px 20px}.collection.with-header .collection-item{padding-left:30px}.collection.with-header .collection-item.avatar{padding-left:72px}.secondary-content{float:right;color:#26a69a}.collapsible .collection{margin:0;border:none}.video-container{position:relative;padding-bottom:56.25%;height:0;overflow:hidden}.video-container iframe,.video-container object,.video-container embed{position:absolute;top:0;left:0;width:100%;height:100%}.progress{position:relative;height:4px;display:block;width:100%;background-color:#acece6;border-radius:2px;margin:.5rem 0 1rem 0;overflow:hidden}.progress .determinate{position:absolute;top:0;left:0;bottom:0;background-color:#26a69a;-webkit-transition:width .3s linear;transition:width .3s linear}.progress .indeterminate{background-color:#26a69a}.progress .indeterminate:before{content:'';position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left, right;-webkit-animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite}.progress .indeterminate:after{content:'';position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left, right;-webkit-animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;-webkit-animation-delay:1.15s;animation-delay:1.15s}@-webkit-keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}100%{left:100%;right:-90%}}@keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}100%{left:100%;right:-90%}}@-webkit-keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}100%{left:107%;right:-8%}}@keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}100%{left:107%;right:-8%}}.hide{display:none !important}.left-align{text-align:left}.right-align{text-align:right}.center,.center-align{text-align:center}.left{float:left !important}.right{float:right !important}.no-select,input[type=range],input[type=range]+.thumb{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.circle{border-radius:50%}.center-block{display:block;margin-left:auto;margin-right:auto}.truncate{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.no-padding{padding:0 !important}span.badge{min-width:3rem;padding:0 6px;margin-left:14px;text-align:center;font-size:1rem;line-height:22px;height:22px;color:#757575;float:right;-webkit-box-sizing:border-box;box-sizing:border-box}span.badge.new{font-weight:300;font-size:0.8rem;color:#fff;background-color:#26a69a;border-radius:2px}span.badge.new:after{content:" new"}span.badge[data-badge-caption]::after{content:" " attr(data-badge-caption)}nav ul a span.badge{display:inline-block;float:none;margin-left:4px;line-height:22px;height:22px;-webkit-font-smoothing:auto}.collection-item span.badge{margin-top:calc(.75rem - 11px)}.collapsible span.badge{margin-left:auto}.sidenav span.badge{margin-top:calc(24px - 11px)}table span.badge{display:inline-block;float:none;margin-left:auto}.material-icons{text-rendering:optimizeLegibility;-webkit-font-feature-settings:'liga';-moz-font-feature-settings:'liga';font-feature-settings:'liga'}.container{margin:0 auto;max-width:1280px;width:90%}@media only screen and (min-width: 601px){.container{width:85%}}@media only screen and (min-width: 993px){.container{width:70%}}.col .row{margin-left:-.75rem;margin-right:-.75rem}.section{padding-top:1rem;padding-bottom:1rem}.section.no-pad{padding:0}.section.no-pad-bot{padding-bottom:0}.section.no-pad-top{padding-top:0}.row{margin-left:auto;margin-right:auto;margin-bottom:20px}.row:after{content:"";display:table;clear:both}.row .col{float:left;-webkit-box-sizing:border-box;box-sizing:border-box;padding:0 .75rem;min-height:1px}.row .col[class*="push-"],.row .col[class*="pull-"]{position:relative}.row .col.s1{width:8.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s2{width:16.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s3{width:25%;margin-left:auto;left:auto;right:auto}.row .col.s4{width:33.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s5{width:41.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s6{width:50%;margin-left:auto;left:auto;right:auto}.row .col.s7{width:58.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s8{width:66.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s9{width:75%;margin-left:auto;left:auto;right:auto}.row .col.s10{width:83.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s11{width:91.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s12{width:100%;margin-left:auto;left:auto;right:auto}.row .col.offset-s1{margin-left:8.3333333333%}.row .col.pull-s1{right:8.3333333333%}.row .col.push-s1{left:8.3333333333%}.row .col.offset-s2{margin-left:16.6666666667%}.row .col.pull-s2{right:16.6666666667%}.row .col.push-s2{left:16.6666666667%}.row .col.offset-s3{margin-left:25%}.row .col.pull-s3{right:25%}.row .col.push-s3{left:25%}.row .col.offset-s4{margin-left:33.3333333333%}.row .col.pull-s4{right:33.3333333333%}.row .col.push-s4{left:33.3333333333%}.row .col.offset-s5{margin-left:41.6666666667%}.row .col.pull-s5{right:41.6666666667%}.row .col.push-s5{left:41.6666666667%}.row .col.offset-s6{margin-left:50%}.row .col.pull-s6{right:50%}.row .col.push-s6{left:50%}.row .col.offset-s7{margin-left:58.3333333333%}.row .col.pull-s7{right:58.3333333333%}.row .col.push-s7{left:58.3333333333%}.row .col.offset-s8{margin-left:66.6666666667%}.row .col.pull-s8{right:66.6666666667%}.row .col.push-s8{left:66.6666666667%}.row .col.offset-s9{margin-left:75%}.row .col.pull-s9{right:75%}.row .col.push-s9{left:75%}.row .col.offset-s10{margin-left:83.3333333333%}.row .col.pull-s10{right:83.3333333333%}.row .col.push-s10{left:83.3333333333%}.row .col.offset-s11{margin-left:91.6666666667%}.row .col.pull-s11{right:91.6666666667%}.row .col.push-s11{left:91.6666666667%}.row .col.offset-s12{margin-left:100%}.row .col.pull-s12{right:100%}.row .col.push-s12{left:100%}@media only screen and (min-width: 601px){.row .col.m1{width:8.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m2{width:16.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m3{width:25%;margin-left:auto;left:auto;right:auto}.row .col.m4{width:33.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m5{width:41.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m6{width:50%;margin-left:auto;left:auto;right:auto}.row .col.m7{width:58.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m8{width:66.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m9{width:75%;margin-left:auto;left:auto;right:auto}.row .col.m10{width:83.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m11{width:91.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m12{width:100%;margin-left:auto;left:auto;right:auto}.row .col.offset-m1{margin-left:8.3333333333%}.row .col.pull-m1{right:8.3333333333%}.row .col.push-m1{left:8.3333333333%}.row .col.offset-m2{margin-left:16.6666666667%}.row .col.pull-m2{right:16.6666666667%}.row .col.push-m2{left:16.6666666667%}.row .col.offset-m3{margin-left:25%}.row .col.pull-m3{right:25%}.row .col.push-m3{left:25%}.row .col.offset-m4{margin-left:33.3333333333%}.row .col.pull-m4{right:33.3333333333%}.row .col.push-m4{left:33.3333333333%}.row .col.offset-m5{margin-left:41.6666666667%}.row .col.pull-m5{right:41.6666666667%}.row .col.push-m5{left:41.6666666667%}.row .col.offset-m6{margin-left:50%}.row .col.pull-m6{right:50%}.row .col.push-m6{left:50%}.row .col.offset-m7{margin-left:58.3333333333%}.row .col.pull-m7{right:58.3333333333%}.row .col.push-m7{left:58.3333333333%}.row .col.offset-m8{margin-left:66.6666666667%}.row .col.pull-m8{right:66.6666666667%}.row .col.push-m8{left:66.6666666667%}.row .col.offset-m9{margin-left:75%}.row .col.pull-m9{right:75%}.row .col.push-m9{left:75%}.row .col.offset-m10{margin-left:83.3333333333%}.row .col.pull-m10{right:83.3333333333%}.row .col.push-m10{left:83.3333333333%}.row .col.offset-m11{margin-left:91.6666666667%}.row .col.pull-m11{right:91.6666666667%}.row .col.push-m11{left:91.6666666667%}.row .col.offset-m12{margin-left:100%}.row .col.pull-m12{right:100%}.row .col.push-m12{left:100%}}@media only screen and (min-width: 993px){.row .col.l1{width:8.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l2{width:16.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l3{width:25%;margin-left:auto;left:auto;right:auto}.row .col.l4{width:33.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l5{width:41.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l6{width:50%;margin-left:auto;left:auto;right:auto}.row .col.l7{width:58.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l8{width:66.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l9{width:75%;margin-left:auto;left:auto;right:auto}.row .col.l10{width:83.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l11{width:91.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l12{width:100%;margin-left:auto;left:auto;right:auto}.row .col.offset-l1{margin-left:8.3333333333%}.row .col.pull-l1{right:8.3333333333%}.row .col.push-l1{left:8.3333333333%}.row .col.offset-l2{margin-left:16.6666666667%}.row .col.pull-l2{right:16.6666666667%}.row .col.push-l2{left:16.6666666667%}.row .col.offset-l3{margin-left:25%}.row .col.pull-l3{right:25%}.row .col.push-l3{left:25%}.row .col.offset-l4{margin-left:33.3333333333%}.row .col.pull-l4{right:33.3333333333%}.row .col.push-l4{left:33.3333333333%}.row .col.offset-l5{margin-left:41.6666666667%}.row .col.pull-l5{right:41.6666666667%}.row .col.push-l5{left:41.6666666667%}.row .col.offset-l6{margin-left:50%}.row .col.pull-l6{right:50%}.row .col.push-l6{left:50%}.row .col.offset-l7{margin-left:58.3333333333%}.row .col.pull-l7{right:58.3333333333%}.row .col.push-l7{left:58.3333333333%}.row .col.offset-l8{margin-left:66.6666666667%}.row .col.pull-l8{right:66.6666666667%}.row .col.push-l8{left:66.6666666667%}.row .col.offset-l9{margin-left:75%}.row .col.pull-l9{right:75%}.row .col.push-l9{left:75%}.row .col.offset-l10{margin-left:83.3333333333%}.row .col.pull-l10{right:83.3333333333%}.row .col.push-l10{left:83.3333333333%}.row .col.offset-l11{margin-left:91.6666666667%}.row .col.pull-l11{right:91.6666666667%}.row .col.push-l11{left:91.6666666667%}.row .col.offset-l12{margin-left:100%}.row .col.pull-l12{right:100%}.row .col.push-l12{left:100%}}@media only screen and (min-width: 1201px){.row .col.xl1{width:8.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.xl2{width:16.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.xl3{width:25%;margin-left:auto;left:auto;right:auto}.row .col.xl4{width:33.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.xl5{width:41.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.xl6{width:50%;margin-left:auto;left:auto;right:auto}.row .col.xl7{width:58.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.xl8{width:66.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.xl9{width:75%;margin-left:auto;left:auto;right:auto}.row .col.xl10{width:83.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.xl11{width:91.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.xl12{width:100%;margin-left:auto;left:auto;right:auto}.row .col.offset-xl1{margin-left:8.3333333333%}.row .col.pull-xl1{right:8.3333333333%}.row .col.push-xl1{left:8.3333333333%}.row .col.offset-xl2{margin-left:16.6666666667%}.row .col.pull-xl2{right:16.6666666667%}.row .col.push-xl2{left:16.6666666667%}.row .col.offset-xl3{margin-left:25%}.row .col.pull-xl3{right:25%}.row .col.push-xl3{left:25%}.row .col.offset-xl4{margin-left:33.3333333333%}.row .col.pull-xl4{right:33.3333333333%}.row .col.push-xl4{left:33.3333333333%}.row .col.offset-xl5{margin-left:41.6666666667%}.row .col.pull-xl5{right:41.6666666667%}.row .col.push-xl5{left:41.6666666667%}.row .col.offset-xl6{margin-left:50%}.row .col.pull-xl6{right:50%}.row .col.push-xl6{left:50%}.row .col.offset-xl7{margin-left:58.3333333333%}.row .col.pull-xl7{right:58.3333333333%}.row .col.push-xl7{left:58.3333333333%}.row .col.offset-xl8{margin-left:66.6666666667%}.row .col.pull-xl8{right:66.6666666667%}.row .col.push-xl8{left:66.6666666667%}.row .col.offset-xl9{margin-left:75%}.row .col.pull-xl9{right:75%}.row .col.push-xl9{left:75%}.row .col.offset-xl10{margin-left:83.3333333333%}.row .col.pull-xl10{right:83.3333333333%}.row .col.push-xl10{left:83.3333333333%}.row .col.offset-xl11{margin-left:91.6666666667%}.row .col.pull-xl11{right:91.6666666667%}.row .col.push-xl11{left:91.6666666667%}.row .col.offset-xl12{margin-left:100%}.row .col.pull-xl12{right:100%}.row .col.push-xl12{left:100%}}nav{color:#fff;background-color:#ee6e73;width:100%;height:56px;line-height:56px}nav.nav-extended{height:auto}nav.nav-extended .nav-wrapper{min-height:56px;height:auto}nav.nav-extended .nav-content{position:relative;line-height:normal}nav a{color:#fff}nav i,nav [class^="mdi-"],nav [class*="mdi-"],nav i.material-icons{display:block;font-size:24px;height:56px;line-height:56px}nav .nav-wrapper{position:relative;height:100%}@media only screen and (min-width: 993px){nav a.sidenav-trigger{display:none}}nav .sidenav-trigger{float:left;position:relative;z-index:1;height:56px;margin:0 18px}nav .sidenav-trigger i{height:56px;line-height:56px}nav .brand-logo{position:absolute;color:#fff;display:inline-block;font-size:2.1rem;padding:0}nav .brand-logo.center{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}@media only screen and (max-width: 992px){nav .brand-logo{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}nav .brand-logo.left,nav .brand-logo.right{padding:0;-webkit-transform:none;transform:none}nav .brand-logo.left{left:0.5rem}nav .brand-logo.right{right:0.5rem;left:auto}}nav .brand-logo.right{right:0.5rem;padding:0}nav .brand-logo i,nav .brand-logo [class^="mdi-"],nav .brand-logo [class*="mdi-"],nav .brand-logo i.material-icons{float:left;margin-right:15px}nav .nav-title{display:inline-block;font-size:32px;padding:28px 0}nav ul{margin:0}nav ul li{-webkit-transition:background-color .3s;transition:background-color .3s;float:left;padding:0}nav ul li.active{background-color:rgba(0,0,0,0.1)}nav ul a{-webkit-transition:background-color .3s;transition:background-color .3s;font-size:1rem;color:#fff;display:block;padding:0 15px;cursor:pointer}nav ul a.btn,nav ul a.btn-large,nav ul a.btn-small,nav ul a.btn-large,nav ul a.btn-flat,nav ul a.btn-floating{margin-top:-2px;margin-left:15px;margin-right:15px}nav ul a.btn>.material-icons,nav ul a.btn-large>.material-icons,nav ul a.btn-small>.material-icons,nav ul a.btn-large>.material-icons,nav ul a.btn-flat>.material-icons,nav ul a.btn-floating>.material-icons{height:inherit;line-height:inherit}nav ul a:hover{background-color:rgba(0,0,0,0.1)}nav ul.left{float:left}nav form{height:100%}nav .input-field{margin:0;height:100%}nav .input-field input{height:100%;font-size:1.2rem;border:none;padding-left:2rem}nav .input-field input:focus,nav .input-field input[type=text]:valid,nav .input-field input[type=password]:valid,nav .input-field input[type=email]:valid,nav .input-field input[type=url]:valid,nav .input-field input[type=date]:valid{border:none;-webkit-box-shadow:none;box-shadow:none}nav .input-field label{top:0;left:0}nav .input-field label i{color:rgba(255,255,255,0.7);-webkit-transition:color .3s;transition:color .3s}nav .input-field label.active i{color:#fff}.navbar-fixed{position:relative;height:56px;z-index:997}.navbar-fixed nav{position:fixed}@media only screen and (min-width: 601px){nav.nav-extended .nav-wrapper{min-height:64px}nav,nav .nav-wrapper i,nav a.sidenav-trigger,nav a.sidenav-trigger i{height:64px;line-height:64px}.navbar-fixed{height:64px}}a{text-decoration:none}html{line-height:1.5;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-weight:normal;color:rgba(0,0,0,0.87)}@media only screen and (min-width: 0){html{font-size:14px}}@media only screen and (min-width: 992px){html{font-size:14.5px}}@media only screen and (min-width: 1200px){html{font-size:15px}}h1,h2,h3,h4,h5,h6{font-weight:400;line-height:1.3}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{font-weight:inherit}h1{font-size:4.2rem;line-height:110%;margin:2.8rem 0 1.68rem 0}h2{font-size:3.56rem;line-height:110%;margin:2.3733333333rem 0 1.424rem 0}h3{font-size:2.92rem;line-height:110%;margin:1.9466666667rem 0 1.168rem 0}h4{font-size:2.28rem;line-height:110%;margin:1.52rem 0 .912rem 0}h5{font-size:1.64rem;line-height:110%;margin:1.0933333333rem 0 .656rem 0}h6{font-size:1.15rem;line-height:110%;margin:.7666666667rem 0 .46rem 0}em{font-style:italic}strong{font-weight:500}small{font-size:75%}.light{font-weight:300}.thin{font-weight:200}@media only screen and (min-width: 360px){.flow-text{font-size:1.2rem}}@media only screen and (min-width: 390px){.flow-text{font-size:1.224rem}}@media only screen and (min-width: 420px){.flow-text{font-size:1.248rem}}@media only screen and (min-width: 450px){.flow-text{font-size:1.272rem}}@media only screen and (min-width: 480px){.flow-text{font-size:1.296rem}}@media only screen and (min-width: 510px){.flow-text{font-size:1.32rem}}@media only screen and (min-width: 540px){.flow-text{font-size:1.344rem}}@media only screen and (min-width: 570px){.flow-text{font-size:1.368rem}}@media only screen and (min-width: 600px){.flow-text{font-size:1.392rem}}@media only screen and (min-width: 630px){.flow-text{font-size:1.416rem}}@media only screen and (min-width: 660px){.flow-text{font-size:1.44rem}}@media only screen and (min-width: 690px){.flow-text{font-size:1.464rem}}@media only screen and (min-width: 720px){.flow-text{font-size:1.488rem}}@media only screen and (min-width: 750px){.flow-text{font-size:1.512rem}}@media only screen and (min-width: 780px){.flow-text{font-size:1.536rem}}@media only screen and (min-width: 810px){.flow-text{font-size:1.56rem}}@media only screen and (min-width: 840px){.flow-text{font-size:1.584rem}}@media only screen and (min-width: 870px){.flow-text{font-size:1.608rem}}@media only screen and (min-width: 900px){.flow-text{font-size:1.632rem}}@media only screen and (min-width: 930px){.flow-text{font-size:1.656rem}}@media only screen and (min-width: 960px){.flow-text{font-size:1.68rem}}@media only screen and (max-width: 360px){.flow-text{font-size:1.2rem}}.scale-transition{-webkit-transition:-webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;transition:-webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;transition:transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;transition:transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63), -webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important}.scale-transition.scale-out{-webkit-transform:scale(0);transform:scale(0);-webkit-transition:-webkit-transform .2s !important;transition:-webkit-transform .2s !important;transition:transform .2s !important;transition:transform .2s, -webkit-transform .2s !important}.scale-transition.scale-in{-webkit-transform:scale(1);transform:scale(1)}.card-panel{-webkit-transition:-webkit-box-shadow .25s;transition:-webkit-box-shadow .25s;transition:box-shadow .25s;transition:box-shadow .25s, -webkit-box-shadow .25s;padding:24px;margin:.5rem 0 1rem 0;border-radius:2px;background-color:#fff}.card{position:relative;margin:.5rem 0 1rem 0;background-color:#fff;-webkit-transition:-webkit-box-shadow .25s;transition:-webkit-box-shadow .25s;transition:box-shadow .25s;transition:box-shadow .25s, -webkit-box-shadow .25s;border-radius:2px}.card .card-title{font-size:24px;font-weight:300}.card .card-title.activator{cursor:pointer}.card.small,.card.medium,.card.large{position:relative}.card.small .card-image,.card.medium .card-image,.card.large .card-image{max-height:60%;overflow:hidden}.card.small .card-image+.card-content,.card.medium .card-image+.card-content,.card.large .card-image+.card-content{max-height:40%}.card.small .card-content,.card.medium .card-content,.card.large .card-content{max-height:100%;overflow:hidden}.card.small .card-action,.card.medium .card-action,.card.large .card-action{position:absolute;bottom:0;left:0;right:0}.card.small{height:300px}.card.medium{height:400px}.card.large{height:500px}.card.horizontal{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.card.horizontal.small .card-image,.card.horizontal.medium .card-image,.card.horizontal.large .card-image{height:100%;max-height:none;overflow:visible}.card.horizontal.small .card-image img,.card.horizontal.medium .card-image img,.card.horizontal.large .card-image img{height:100%}.card.horizontal .card-image{max-width:50%}.card.horizontal .card-image img{border-radius:2px 0 0 2px;max-width:100%;width:auto}.card.horizontal .card-stacked{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;position:relative}.card.horizontal .card-stacked .card-content{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.card.sticky-action .card-action{z-index:2}.card.sticky-action .card-reveal{z-index:1;padding-bottom:64px}.card .card-image{position:relative}.card .card-image img{display:block;border-radius:2px 2px 0 0;position:relative;left:0;right:0;top:0;bottom:0;width:100%}.card .card-image .card-title{color:#fff;position:absolute;bottom:0;left:0;max-width:100%;padding:24px}.card .card-content{padding:24px;border-radius:0 0 2px 2px}.card .card-content p{margin:0}.card .card-content .card-title{display:block;line-height:32px;margin-bottom:8px}.card .card-content .card-title i{line-height:32px}.card .card-action{background-color:inherit;border-top:1px solid rgba(160,160,160,0.2);position:relative;padding:16px 24px}.card .card-action:last-child{border-radius:0 0 2px 2px}.card .card-action a:not(.btn):not(.btn-large):not(.btn-small):not(.btn-large):not(.btn-floating){color:#ffab40;margin-right:24px;-webkit-transition:color .3s ease;transition:color .3s ease;text-transform:uppercase}.card .card-action a:not(.btn):not(.btn-large):not(.btn-small):not(.btn-large):not(.btn-floating):hover{color:#ffd8a6}.card .card-reveal{padding:24px;position:absolute;background-color:#fff;width:100%;overflow-y:auto;left:0;top:100%;height:100%;z-index:3;display:none}.card .card-reveal .card-title{cursor:pointer;display:block}#toast-container{display:block;position:fixed;z-index:10000}@media only screen and (max-width: 600px){#toast-container{min-width:100%;bottom:0%}}@media only screen and (min-width: 601px) and (max-width: 992px){#toast-container{left:5%;bottom:7%;max-width:90%}}@media only screen and (min-width: 993px){#toast-container{top:10%;right:7%;max-width:86%}}.toast{border-radius:2px;top:35px;width:auto;margin-top:10px;position:relative;max-width:100%;height:auto;min-height:48px;line-height:1.5em;background-color:#323232;padding:10px 25px;font-size:1.1rem;font-weight:300;color:#fff;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;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;cursor:default}.toast .toast-action{color:#eeff41;font-weight:500;margin-right:-25px;margin-left:3rem}.toast.rounded{border-radius:24px}@media only screen and (max-width: 600px){.toast{width:100%;border-radius:0}}.tabs{position:relative;overflow-x:auto;overflow-y:hidden;height:48px;width:100%;background-color:#fff;margin:0 auto;white-space:nowrap}.tabs.tabs-transparent{background-color:transparent}.tabs.tabs-transparent .tab a,.tabs.tabs-transparent .tab.disabled a,.tabs.tabs-transparent .tab.disabled a:hover{color:rgba(255,255,255,0.7)}.tabs.tabs-transparent .tab a:hover,.tabs.tabs-transparent .tab a.active{color:#fff}.tabs.tabs-transparent .indicator{background-color:#fff}.tabs.tabs-fixed-width{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.tabs.tabs-fixed-width .tab{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tabs .tab{display:inline-block;text-align:center;line-height:48px;height:48px;padding:0;margin:0;text-transform:uppercase}.tabs .tab a{color:rgba(238,110,115,0.7);display:block;width:100%;height:100%;padding:0 24px;font-size:14px;text-overflow:ellipsis;overflow:hidden;-webkit-transition:color .28s ease, background-color .28s ease;transition:color .28s ease, background-color .28s ease}.tabs .tab a:focus,.tabs .tab a:focus.active{background-color:rgba(246,178,181,0.2);outline:none}.tabs .tab a:hover,.tabs .tab a.active{background-color:transparent;color:#ee6e73}.tabs .tab.disabled a,.tabs .tab.disabled a:hover{color:rgba(238,110,115,0.4);cursor:default}.tabs .indicator{position:absolute;bottom:0;height:2px;background-color:#f6b2b5;will-change:left, right}@media only screen and (max-width: 992px){.tabs{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.tabs .tab{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tabs .tab a{padding:0 12px}}.material-tooltip{padding:10px 8px;font-size:1rem;z-index:2000;background-color:transparent;border-radius:2px;color:#fff;min-height:36px;line-height:120%;opacity:0;position:absolute;text-align:center;max-width:calc(100% - 4px);overflow:hidden;left:0;top:0;pointer-events:none;visibility:hidden;background-color:#323232}.backdrop{position:absolute;opacity:0;height:7px;width:14px;border-radius:0 0 50% 50%;background-color:#323232;z-index:-1;-webkit-transform-origin:50% 0%;transform-origin:50% 0%;visibility:hidden}.btn,.btn-large,.btn-small,.btn-flat{border:none;border-radius:2px;display:inline-block;height:36px;line-height:36px;padding:0 16px;text-transform:uppercase;vertical-align:middle;-webkit-tap-highlight-color:transparent}.btn.disabled,.disabled.btn-large,.disabled.btn-small,.btn-floating.disabled,.btn-large.disabled,.btn-small.disabled,.btn-flat.disabled,.btn:disabled,.btn-large:disabled,.btn-small:disabled,.btn-floating:disabled,.btn-large:disabled,.btn-small:disabled,.btn-flat:disabled,.btn[disabled],.btn-large[disabled],.btn-small[disabled],.btn-floating[disabled],.btn-large[disabled],.btn-small[disabled],.btn-flat[disabled]{pointer-events:none;background-color:#DFDFDF !important;-webkit-box-shadow:none;box-shadow:none;color:#9F9F9F !important;cursor:default}.btn.disabled:hover,.disabled.btn-large:hover,.disabled.btn-small:hover,.btn-floating.disabled:hover,.btn-large.disabled:hover,.btn-small.disabled:hover,.btn-flat.disabled:hover,.btn:disabled:hover,.btn-large:disabled:hover,.btn-small:disabled:hover,.btn-floating:disabled:hover,.btn-large:disabled:hover,.btn-small:disabled:hover,.btn-flat:disabled:hover,.btn[disabled]:hover,.btn-large[disabled]:hover,.btn-small[disabled]:hover,.btn-floating[disabled]:hover,.btn-large[disabled]:hover,.btn-small[disabled]:hover,.btn-flat[disabled]:hover{background-color:#DFDFDF !important;color:#9F9F9F !important}.btn,.btn-large,.btn-small,.btn-floating,.btn-large,.btn-small,.btn-flat{font-size:14px;outline:0}.btn i,.btn-large i,.btn-small i,.btn-floating i,.btn-large i,.btn-small i,.btn-flat i{font-size:1.3rem;line-height:inherit}.btn:focus,.btn-large:focus,.btn-small:focus,.btn-floating:focus{background-color:#1d7d74}.btn,.btn-large,.btn-small{text-decoration:none;color:#fff;background-color:#26a69a;text-align:center;letter-spacing:.5px;-webkit-transition:background-color .2s ease-out;transition:background-color .2s ease-out;cursor:pointer}.btn:hover,.btn-large:hover,.btn-small:hover{background-color:#2bbbad}.btn-floating{display:inline-block;color:#fff;position:relative;overflow:hidden;z-index:1;width:40px;height:40px;line-height:40px;padding:0;background-color:#26a69a;border-radius:50%;-webkit-transition:background-color .3s;transition:background-color .3s;cursor:pointer;vertical-align:middle}.btn-floating:hover{background-color:#26a69a}.btn-floating:before{border-radius:0}.btn-floating.btn-large{width:56px;height:56px;padding:0}.btn-floating.btn-large.halfway-fab{bottom:-28px}.btn-floating.btn-large i{line-height:56px}.btn-floating.btn-small{width:32.4px;height:32.4px}.btn-floating.btn-small.halfway-fab{bottom:-16.2px}.btn-floating.btn-small i{line-height:32.4px}.btn-floating.halfway-fab{position:absolute;right:24px;bottom:-20px}.btn-floating.halfway-fab.left{right:auto;left:24px}.btn-floating i{width:inherit;display:inline-block;text-align:center;color:#fff;font-size:1.6rem;line-height:40px}button.btn-floating{border:none}.fixed-action-btn{position:fixed;right:23px;bottom:23px;padding-top:15px;margin-bottom:0;z-index:997}.fixed-action-btn.active ul{visibility:visible}.fixed-action-btn.direction-left,.fixed-action-btn.direction-right{padding:0 0 0 15px}.fixed-action-btn.direction-left ul,.fixed-action-btn.direction-right ul{text-align:right;right:64px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);height:100%;left:auto;width:500px}.fixed-action-btn.direction-left ul li,.fixed-action-btn.direction-right ul li{display:inline-block;margin:7.5px 15px 0 0}.fixed-action-btn.direction-right{padding:0 15px 0 0}.fixed-action-btn.direction-right ul{text-align:left;direction:rtl;left:64px;right:auto}.fixed-action-btn.direction-right ul li{margin:7.5px 0 0 15px}.fixed-action-btn.direction-bottom{padding:0 0 15px 0}.fixed-action-btn.direction-bottom ul{top:64px;bottom:auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:reverse;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.fixed-action-btn.direction-bottom ul li{margin:15px 0 0 0}.fixed-action-btn.toolbar{padding:0;height:56px}.fixed-action-btn.toolbar.active>a i{opacity:0}.fixed-action-btn.toolbar ul{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;top:0;bottom:0;z-index:1}.fixed-action-btn.toolbar ul li{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;display:inline-block;margin:0;height:100%;-webkit-transition:none;transition:none}.fixed-action-btn.toolbar ul li a{display:block;overflow:hidden;position:relative;width:100%;height:100%;background-color:transparent;-webkit-box-shadow:none;box-shadow:none;color:#fff;line-height:56px;z-index:1}.fixed-action-btn.toolbar ul li a i{line-height:inherit}.fixed-action-btn ul{left:0;right:0;text-align:center;position:absolute;bottom:64px;margin:0;visibility:hidden}.fixed-action-btn ul li{margin-bottom:15px}.fixed-action-btn ul a.btn-floating{opacity:0}.fixed-action-btn .fab-backdrop{position:absolute;top:0;left:0;z-index:-1;width:40px;height:40px;background-color:#26a69a;border-radius:50%;-webkit-transform:scale(0);transform:scale(0)}.btn-flat{-webkit-box-shadow:none;box-shadow:none;background-color:transparent;color:#343434;cursor:pointer;-webkit-transition:background-color .2s;transition:background-color .2s}.btn-flat:focus,.btn-flat:hover{-webkit-box-shadow:none;box-shadow:none}.btn-flat:focus{background-color:rgba(0,0,0,0.1)}.btn-flat.disabled,.btn-flat.btn-flat[disabled]{background-color:transparent !important;color:#b3b2b2 !important;cursor:default}.btn-large{height:54px;line-height:54px;font-size:15px;padding:0 28px}.btn-large i{font-size:1.6rem}.btn-small{height:32.4px;line-height:32.4px;font-size:13px}.btn-small i{font-size:1.2rem}.btn-block{display:block}.dropdown-content{background-color:#fff;margin:0;display:none;min-width:100px;overflow-y:auto;opacity:0;position:absolute;left:0;top:0;z-index:9999;-webkit-transform-origin:0 0;transform-origin:0 0}.dropdown-content:focus{outline:0}.dropdown-content li{clear:both;color:rgba(0,0,0,0.87);cursor:pointer;min-height:50px;line-height:1.5rem;width:100%;text-align:left}.dropdown-content li:hover,.dropdown-content li.active{background-color:#eee}.dropdown-content li:focus{outline:none}.dropdown-content li.divider{min-height:0;height:1px}.dropdown-content li>a,.dropdown-content li>span{font-size:16px;color:#26a69a;display:block;line-height:22px;padding:14px 16px}.dropdown-content li>span>label{top:1px;left:0;height:18px}.dropdown-content li>a>i{height:inherit;line-height:inherit;float:left;margin:0 24px 0 0;width:24px}body.keyboard-focused .dropdown-content li:focus{background-color:#dadada}.input-field.col .dropdown-content [type="checkbox"]+label{top:1px;left:0;height:18px;-webkit-transform:none;transform:none}.dropdown-trigger{cursor:pointer}/*! + * Waves v0.6.0 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + */.waves-effect{position:relative;cursor:pointer;display:inline-block;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;vertical-align:middle;z-index:1;-webkit-transition:.3s ease-out;transition:.3s ease-out}.waves-effect .waves-ripple{position:absolute;border-radius:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;opacity:0;background:rgba(0,0,0,0.2);-webkit-transition:all 0.7s ease-out;transition:all 0.7s ease-out;-webkit-transition-property:opacity, -webkit-transform;transition-property:opacity, -webkit-transform;transition-property:transform, opacity;transition-property:transform, opacity, -webkit-transform;-webkit-transform:scale(0);transform:scale(0);pointer-events:none}.waves-effect.waves-light .waves-ripple{background-color:rgba(255,255,255,0.45)}.waves-effect.waves-red .waves-ripple{background-color:rgba(244,67,54,0.7)}.waves-effect.waves-yellow .waves-ripple{background-color:rgba(255,235,59,0.7)}.waves-effect.waves-orange .waves-ripple{background-color:rgba(255,152,0,0.7)}.waves-effect.waves-purple .waves-ripple{background-color:rgba(156,39,176,0.7)}.waves-effect.waves-green .waves-ripple{background-color:rgba(76,175,80,0.7)}.waves-effect.waves-teal .waves-ripple{background-color:rgba(0,150,136,0.7)}.waves-effect input[type="button"],.waves-effect input[type="reset"],.waves-effect input[type="submit"]{border:0;font-style:normal;font-size:inherit;text-transform:inherit;background:none}.waves-effect img{position:relative;z-index:-1}.waves-notransition{-webkit-transition:none !important;transition:none !important}.waves-circle{-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-mask-image:-webkit-radial-gradient(circle, white 100%, black 100%)}.waves-input-wrapper{border-radius:0.2em;vertical-align:bottom}.waves-input-wrapper .waves-button-input{position:relative;top:0;left:0;z-index:1}.waves-circle{text-align:center;width:2.5em;height:2.5em;line-height:2.5em;border-radius:50%;-webkit-mask-image:none}.waves-block{display:block}.waves-effect .waves-ripple{z-index:-1}.modal{display:none;position:fixed;left:0;right:0;background-color:#fafafa;padding:0;max-height:70%;width:55%;margin:auto;overflow-y:auto;border-radius:2px;will-change:top, opacity}.modal:focus{outline:none}@media only screen and (max-width: 992px){.modal{width:80%}}.modal h1,.modal h2,.modal h3,.modal h4{margin-top:0}.modal .modal-content{padding:24px}.modal .modal-close{cursor:pointer}.modal .modal-footer{border-radius:0 0 2px 2px;background-color:#fafafa;padding:4px 6px;height:56px;width:100%;text-align:right}.modal .modal-footer .btn,.modal .modal-footer .btn-large,.modal .modal-footer .btn-small,.modal .modal-footer .btn-flat{margin:6px 0}.modal-overlay{position:fixed;z-index:999;top:-25%;left:0;bottom:0;right:0;height:125%;width:100%;background:#000;display:none;will-change:opacity}.modal.modal-fixed-footer{padding:0;height:70%}.modal.modal-fixed-footer .modal-content{position:absolute;height:calc(100% - 56px);max-height:100%;width:100%;overflow-y:auto}.modal.modal-fixed-footer .modal-footer{border-top:1px solid rgba(0,0,0,0.1);position:absolute;bottom:0}.modal.bottom-sheet{top:auto;bottom:-100%;margin:0;width:100%;max-height:45%;border-radius:0;will-change:bottom, opacity}.collapsible{border-top:1px solid #ddd;border-right:1px solid #ddd;border-left:1px solid #ddd;margin:.5rem 0 1rem 0}.collapsible-header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;cursor:pointer;-webkit-tap-highlight-color:transparent;line-height:1.5;padding:1rem;background-color:#fff;border-bottom:1px solid #ddd}.collapsible-header:focus{outline:0}.collapsible-header i{width:2rem;font-size:1.6rem;display:inline-block;text-align:center;margin-right:1rem}.keyboard-focused .collapsible-header:focus{background-color:#eee}.collapsible-body{display:none;border-bottom:1px solid #ddd;-webkit-box-sizing:border-box;box-sizing:border-box;padding:2rem}.sidenav .collapsible,.sidenav.fixed .collapsible{border:none;-webkit-box-shadow:none;box-shadow:none}.sidenav .collapsible li,.sidenav.fixed .collapsible li{padding:0}.sidenav .collapsible-header,.sidenav.fixed .collapsible-header{background-color:transparent;border:none;line-height:inherit;height:inherit;padding:0 16px}.sidenav .collapsible-header:hover,.sidenav.fixed .collapsible-header:hover{background-color:rgba(0,0,0,0.05)}.sidenav .collapsible-header i,.sidenav.fixed .collapsible-header i{line-height:inherit}.sidenav .collapsible-body,.sidenav.fixed .collapsible-body{border:0;background-color:#fff}.sidenav .collapsible-body li a,.sidenav.fixed .collapsible-body li a{padding:0 23.5px 0 31px}.collapsible.popout{border:none;-webkit-box-shadow:none;box-shadow:none}.collapsible.popout>li{-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);margin:0 24px;-webkit-transition:margin 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94);transition:margin 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94)}.collapsible.popout>li.active{-webkit-box-shadow:0 5px 11px 0 rgba(0,0,0,0.18),0 4px 15px 0 rgba(0,0,0,0.15);box-shadow:0 5px 11px 0 rgba(0,0,0,0.18),0 4px 15px 0 rgba(0,0,0,0.15);margin:16px 0}.chip{display:inline-block;height:32px;font-size:13px;font-weight:500;color:rgba(0,0,0,0.6);line-height:32px;padding:0 12px;border-radius:16px;background-color:#e4e4e4;margin-bottom:5px;margin-right:5px}.chip:focus{outline:none;background-color:#26a69a;color:#fff}.chip>img{float:left;margin:0 8px 0 -12px;height:32px;width:32px;border-radius:50%}.chip .close{cursor:pointer;float:right;font-size:16px;line-height:32px;padding-left:8px}.chips{border:none;border-bottom:1px solid #9e9e9e;-webkit-box-shadow:none;box-shadow:none;margin:0 0 8px 0;min-height:45px;outline:none;-webkit-transition:all .3s;transition:all .3s}.chips.focus{border-bottom:1px solid #26a69a;-webkit-box-shadow:0 1px 0 0 #26a69a;box-shadow:0 1px 0 0 #26a69a}.chips:hover{cursor:text}.chips .input{background:none;border:0;color:rgba(0,0,0,0.6);display:inline-block;font-size:16px;height:3rem;line-height:32px;outline:0;margin:0;padding:0 !important;width:120px !important}.chips .input:focus{border:0 !important;-webkit-box-shadow:none !important;box-shadow:none !important}.chips .autocomplete-content{margin-top:0;margin-bottom:0}.prefix ~ .chips{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.chips:empty ~ label{font-size:0.8rem;-webkit-transform:translateY(-140%);transform:translateY(-140%)}.materialboxed{display:block;cursor:-webkit-zoom-in;cursor:zoom-in;position:relative;-webkit-transition:opacity .4s;transition:opacity .4s;-webkit-backface-visibility:hidden}.materialboxed:hover:not(.active){opacity:.8}.materialboxed.active{cursor:-webkit-zoom-out;cursor:zoom-out}#materialbox-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#292929;z-index:1000;will-change:opacity}.materialbox-caption{position:fixed;display:none;color:#fff;line-height:50px;bottom:0;left:0;width:100%;text-align:center;padding:0% 15%;height:50px;z-index:1000;-webkit-font-smoothing:antialiased}select:focus{outline:1px solid #c9f3ef}button:focus{outline:none;background-color:#2ab7a9}label{font-size:.8rem;color:#9e9e9e}::-webkit-input-placeholder{color:#d1d1d1}::-moz-placeholder{color:#d1d1d1}:-ms-input-placeholder{color:#d1d1d1}::-ms-input-placeholder{color:#d1d1d1}::placeholder{color:#d1d1d1}input:not([type]),input[type=text]:not(.browser-default),input[type=password]:not(.browser-default),input[type=email]:not(.browser-default),input[type=url]:not(.browser-default),input[type=time]:not(.browser-default),input[type=date]:not(.browser-default),input[type=datetime]:not(.browser-default),input[type=datetime-local]:not(.browser-default),input[type=tel]:not(.browser-default),input[type=number]:not(.browser-default),input[type=search]:not(.browser-default),textarea.materialize-textarea{background-color:transparent;border:none;border-bottom:1px solid #9e9e9e;border-radius:0;outline:none;height:3rem;width:100%;font-size:16px;margin:0 0 8px 0;padding:0;-webkit-box-shadow:none;box-shadow:none;-webkit-box-sizing:content-box;box-sizing:content-box;-webkit-transition:border .3s, -webkit-box-shadow .3s;transition:border .3s, -webkit-box-shadow .3s;transition:box-shadow .3s, border .3s;transition:box-shadow .3s, border .3s, -webkit-box-shadow .3s}input:not([type]):disabled,input:not([type])[readonly="readonly"],input[type=text]:not(.browser-default):disabled,input[type=text]:not(.browser-default)[readonly="readonly"],input[type=password]:not(.browser-default):disabled,input[type=password]:not(.browser-default)[readonly="readonly"],input[type=email]:not(.browser-default):disabled,input[type=email]:not(.browser-default)[readonly="readonly"],input[type=url]:not(.browser-default):disabled,input[type=url]:not(.browser-default)[readonly="readonly"],input[type=time]:not(.browser-default):disabled,input[type=time]:not(.browser-default)[readonly="readonly"],input[type=date]:not(.browser-default):disabled,input[type=date]:not(.browser-default)[readonly="readonly"],input[type=datetime]:not(.browser-default):disabled,input[type=datetime]:not(.browser-default)[readonly="readonly"],input[type=datetime-local]:not(.browser-default):disabled,input[type=datetime-local]:not(.browser-default)[readonly="readonly"],input[type=tel]:not(.browser-default):disabled,input[type=tel]:not(.browser-default)[readonly="readonly"],input[type=number]:not(.browser-default):disabled,input[type=number]:not(.browser-default)[readonly="readonly"],input[type=search]:not(.browser-default):disabled,input[type=search]:not(.browser-default)[readonly="readonly"],textarea.materialize-textarea:disabled,textarea.materialize-textarea[readonly="readonly"]{color:rgba(0,0,0,0.42);border-bottom:1px dotted rgba(0,0,0,0.42)}input:not([type]):disabled+label,input:not([type])[readonly="readonly"]+label,input[type=text]:not(.browser-default):disabled+label,input[type=text]:not(.browser-default)[readonly="readonly"]+label,input[type=password]:not(.browser-default):disabled+label,input[type=password]:not(.browser-default)[readonly="readonly"]+label,input[type=email]:not(.browser-default):disabled+label,input[type=email]:not(.browser-default)[readonly="readonly"]+label,input[type=url]:not(.browser-default):disabled+label,input[type=url]:not(.browser-default)[readonly="readonly"]+label,input[type=time]:not(.browser-default):disabled+label,input[type=time]:not(.browser-default)[readonly="readonly"]+label,input[type=date]:not(.browser-default):disabled+label,input[type=date]:not(.browser-default)[readonly="readonly"]+label,input[type=datetime]:not(.browser-default):disabled+label,input[type=datetime]:not(.browser-default)[readonly="readonly"]+label,input[type=datetime-local]:not(.browser-default):disabled+label,input[type=datetime-local]:not(.browser-default)[readonly="readonly"]+label,input[type=tel]:not(.browser-default):disabled+label,input[type=tel]:not(.browser-default)[readonly="readonly"]+label,input[type=number]:not(.browser-default):disabled+label,input[type=number]:not(.browser-default)[readonly="readonly"]+label,input[type=search]:not(.browser-default):disabled+label,input[type=search]:not(.browser-default)[readonly="readonly"]+label,textarea.materialize-textarea:disabled+label,textarea.materialize-textarea[readonly="readonly"]+label{color:rgba(0,0,0,0.42)}input:not([type]):focus:not([readonly]),input[type=text]:not(.browser-default):focus:not([readonly]),input[type=password]:not(.browser-default):focus:not([readonly]),input[type=email]:not(.browser-default):focus:not([readonly]),input[type=url]:not(.browser-default):focus:not([readonly]),input[type=time]:not(.browser-default):focus:not([readonly]),input[type=date]:not(.browser-default):focus:not([readonly]),input[type=datetime]:not(.browser-default):focus:not([readonly]),input[type=datetime-local]:not(.browser-default):focus:not([readonly]),input[type=tel]:not(.browser-default):focus:not([readonly]),input[type=number]:not(.browser-default):focus:not([readonly]),input[type=search]:not(.browser-default):focus:not([readonly]),textarea.materialize-textarea:focus:not([readonly]){border-bottom:1px solid #26a69a;-webkit-box-shadow:0 1px 0 0 #26a69a;box-shadow:0 1px 0 0 #26a69a}input:not([type]):focus:not([readonly])+label,input[type=text]:not(.browser-default):focus:not([readonly])+label,input[type=password]:not(.browser-default):focus:not([readonly])+label,input[type=email]:not(.browser-default):focus:not([readonly])+label,input[type=url]:not(.browser-default):focus:not([readonly])+label,input[type=time]:not(.browser-default):focus:not([readonly])+label,input[type=date]:not(.browser-default):focus:not([readonly])+label,input[type=datetime]:not(.browser-default):focus:not([readonly])+label,input[type=datetime-local]:not(.browser-default):focus:not([readonly])+label,input[type=tel]:not(.browser-default):focus:not([readonly])+label,input[type=number]:not(.browser-default):focus:not([readonly])+label,input[type=search]:not(.browser-default):focus:not([readonly])+label,textarea.materialize-textarea:focus:not([readonly])+label{color:#26a69a}input:not([type]):focus.valid ~ label,input[type=text]:not(.browser-default):focus.valid ~ label,input[type=password]:not(.browser-default):focus.valid ~ label,input[type=email]:not(.browser-default):focus.valid ~ label,input[type=url]:not(.browser-default):focus.valid ~ label,input[type=time]:not(.browser-default):focus.valid ~ label,input[type=date]:not(.browser-default):focus.valid ~ label,input[type=datetime]:not(.browser-default):focus.valid ~ label,input[type=datetime-local]:not(.browser-default):focus.valid ~ label,input[type=tel]:not(.browser-default):focus.valid ~ label,input[type=number]:not(.browser-default):focus.valid ~ label,input[type=search]:not(.browser-default):focus.valid ~ label,textarea.materialize-textarea:focus.valid ~ label{color:#4CAF50}input:not([type]):focus.invalid ~ label,input[type=text]:not(.browser-default):focus.invalid ~ label,input[type=password]:not(.browser-default):focus.invalid ~ label,input[type=email]:not(.browser-default):focus.invalid ~ label,input[type=url]:not(.browser-default):focus.invalid ~ label,input[type=time]:not(.browser-default):focus.invalid ~ label,input[type=date]:not(.browser-default):focus.invalid ~ label,input[type=datetime]:not(.browser-default):focus.invalid ~ label,input[type=datetime-local]:not(.browser-default):focus.invalid ~ label,input[type=tel]:not(.browser-default):focus.invalid ~ label,input[type=number]:not(.browser-default):focus.invalid ~ label,input[type=search]:not(.browser-default):focus.invalid ~ label,textarea.materialize-textarea:focus.invalid ~ label{color:#F44336}input:not([type]).validate+label,input[type=text]:not(.browser-default).validate+label,input[type=password]:not(.browser-default).validate+label,input[type=email]:not(.browser-default).validate+label,input[type=url]:not(.browser-default).validate+label,input[type=time]:not(.browser-default).validate+label,input[type=date]:not(.browser-default).validate+label,input[type=datetime]:not(.browser-default).validate+label,input[type=datetime-local]:not(.browser-default).validate+label,input[type=tel]:not(.browser-default).validate+label,input[type=number]:not(.browser-default).validate+label,input[type=search]:not(.browser-default).validate+label,textarea.materialize-textarea.validate+label{width:100%}input.valid:not([type]),input.valid:not([type]):focus,input.valid[type=text]:not(.browser-default),input.valid[type=text]:not(.browser-default):focus,input.valid[type=password]:not(.browser-default),input.valid[type=password]:not(.browser-default):focus,input.valid[type=email]:not(.browser-default),input.valid[type=email]:not(.browser-default):focus,input.valid[type=url]:not(.browser-default),input.valid[type=url]:not(.browser-default):focus,input.valid[type=time]:not(.browser-default),input.valid[type=time]:not(.browser-default):focus,input.valid[type=date]:not(.browser-default),input.valid[type=date]:not(.browser-default):focus,input.valid[type=datetime]:not(.browser-default),input.valid[type=datetime]:not(.browser-default):focus,input.valid[type=datetime-local]:not(.browser-default),input.valid[type=datetime-local]:not(.browser-default):focus,input.valid[type=tel]:not(.browser-default),input.valid[type=tel]:not(.browser-default):focus,input.valid[type=number]:not(.browser-default),input.valid[type=number]:not(.browser-default):focus,input.valid[type=search]:not(.browser-default),input.valid[type=search]:not(.browser-default):focus,textarea.materialize-textarea.valid,textarea.materialize-textarea.valid:focus,.select-wrapper.valid>input.select-dropdown{border-bottom:1px solid #4CAF50;-webkit-box-shadow:0 1px 0 0 #4CAF50;box-shadow:0 1px 0 0 #4CAF50}input.invalid:not([type]),input.invalid:not([type]):focus,input.invalid[type=text]:not(.browser-default),input.invalid[type=text]:not(.browser-default):focus,input.invalid[type=password]:not(.browser-default),input.invalid[type=password]:not(.browser-default):focus,input.invalid[type=email]:not(.browser-default),input.invalid[type=email]:not(.browser-default):focus,input.invalid[type=url]:not(.browser-default),input.invalid[type=url]:not(.browser-default):focus,input.invalid[type=time]:not(.browser-default),input.invalid[type=time]:not(.browser-default):focus,input.invalid[type=date]:not(.browser-default),input.invalid[type=date]:not(.browser-default):focus,input.invalid[type=datetime]:not(.browser-default),input.invalid[type=datetime]:not(.browser-default):focus,input.invalid[type=datetime-local]:not(.browser-default),input.invalid[type=datetime-local]:not(.browser-default):focus,input.invalid[type=tel]:not(.browser-default),input.invalid[type=tel]:not(.browser-default):focus,input.invalid[type=number]:not(.browser-default),input.invalid[type=number]:not(.browser-default):focus,input.invalid[type=search]:not(.browser-default),input.invalid[type=search]:not(.browser-default):focus,textarea.materialize-textarea.invalid,textarea.materialize-textarea.invalid:focus,.select-wrapper.invalid>input.select-dropdown,.select-wrapper.invalid>input.select-dropdown:focus{border-bottom:1px solid #F44336;-webkit-box-shadow:0 1px 0 0 #F44336;box-shadow:0 1px 0 0 #F44336}input:not([type]).valid ~ .helper-text[data-success],input:not([type]):focus.valid ~ .helper-text[data-success],input:not([type]).invalid ~ .helper-text[data-error],input:not([type]):focus.invalid ~ .helper-text[data-error],input[type=text]:not(.browser-default).valid ~ .helper-text[data-success],input[type=text]:not(.browser-default):focus.valid ~ .helper-text[data-success],input[type=text]:not(.browser-default).invalid ~ .helper-text[data-error],input[type=text]:not(.browser-default):focus.invalid ~ .helper-text[data-error],input[type=password]:not(.browser-default).valid ~ .helper-text[data-success],input[type=password]:not(.browser-default):focus.valid ~ .helper-text[data-success],input[type=password]:not(.browser-default).invalid ~ .helper-text[data-error],input[type=password]:not(.browser-default):focus.invalid ~ .helper-text[data-error],input[type=email]:not(.browser-default).valid ~ .helper-text[data-success],input[type=email]:not(.browser-default):focus.valid ~ .helper-text[data-success],input[type=email]:not(.browser-default).invalid ~ .helper-text[data-error],input[type=email]:not(.browser-default):focus.invalid ~ .helper-text[data-error],input[type=url]:not(.browser-default).valid ~ .helper-text[data-success],input[type=url]:not(.browser-default):focus.valid ~ .helper-text[data-success],input[type=url]:not(.browser-default).invalid ~ .helper-text[data-error],input[type=url]:not(.browser-default):focus.invalid ~ .helper-text[data-error],input[type=time]:not(.browser-default).valid ~ .helper-text[data-success],input[type=time]:not(.browser-default):focus.valid ~ .helper-text[data-success],input[type=time]:not(.browser-default).invalid ~ .helper-text[data-error],input[type=time]:not(.browser-default):focus.invalid ~ .helper-text[data-error],input[type=date]:not(.browser-default).valid ~ .helper-text[data-success],input[type=date]:not(.browser-default):focus.valid ~ .helper-text[data-success],input[type=date]:not(.browser-default).invalid ~ .helper-text[data-error],input[type=date]:not(.browser-default):focus.invalid ~ .helper-text[data-error],input[type=datetime]:not(.browser-default).valid ~ .helper-text[data-success],input[type=datetime]:not(.browser-default):focus.valid ~ .helper-text[data-success],input[type=datetime]:not(.browser-default).invalid ~ .helper-text[data-error],input[type=datetime]:not(.browser-default):focus.invalid ~ .helper-text[data-error],input[type=datetime-local]:not(.browser-default).valid ~ .helper-text[data-success],input[type=datetime-local]:not(.browser-default):focus.valid ~ .helper-text[data-success],input[type=datetime-local]:not(.browser-default).invalid ~ .helper-text[data-error],input[type=datetime-local]:not(.browser-default):focus.invalid ~ .helper-text[data-error],input[type=tel]:not(.browser-default).valid ~ .helper-text[data-success],input[type=tel]:not(.browser-default):focus.valid ~ .helper-text[data-success],input[type=tel]:not(.browser-default).invalid ~ .helper-text[data-error],input[type=tel]:not(.browser-default):focus.invalid ~ .helper-text[data-error],input[type=number]:not(.browser-default).valid ~ .helper-text[data-success],input[type=number]:not(.browser-default):focus.valid ~ .helper-text[data-success],input[type=number]:not(.browser-default).invalid ~ .helper-text[data-error],input[type=number]:not(.browser-default):focus.invalid ~ .helper-text[data-error],input[type=search]:not(.browser-default).valid ~ .helper-text[data-success],input[type=search]:not(.browser-default):focus.valid ~ .helper-text[data-success],input[type=search]:not(.browser-default).invalid ~ .helper-text[data-error],input[type=search]:not(.browser-default):focus.invalid ~ .helper-text[data-error],textarea.materialize-textarea.valid ~ .helper-text[data-success],textarea.materialize-textarea:focus.valid ~ .helper-text[data-success],textarea.materialize-textarea.invalid ~ .helper-text[data-error],textarea.materialize-textarea:focus.invalid ~ .helper-text[data-error],.select-wrapper.valid .helper-text[data-success],.select-wrapper.invalid ~ .helper-text[data-error]{color:transparent;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none}input:not([type]).valid ~ .helper-text:after,input:not([type]):focus.valid ~ .helper-text:after,input[type=text]:not(.browser-default).valid ~ .helper-text:after,input[type=text]:not(.browser-default):focus.valid ~ .helper-text:after,input[type=password]:not(.browser-default).valid ~ .helper-text:after,input[type=password]:not(.browser-default):focus.valid ~ .helper-text:after,input[type=email]:not(.browser-default).valid ~ .helper-text:after,input[type=email]:not(.browser-default):focus.valid ~ .helper-text:after,input[type=url]:not(.browser-default).valid ~ .helper-text:after,input[type=url]:not(.browser-default):focus.valid ~ .helper-text:after,input[type=time]:not(.browser-default).valid ~ .helper-text:after,input[type=time]:not(.browser-default):focus.valid ~ .helper-text:after,input[type=date]:not(.browser-default).valid ~ .helper-text:after,input[type=date]:not(.browser-default):focus.valid ~ .helper-text:after,input[type=datetime]:not(.browser-default).valid ~ .helper-text:after,input[type=datetime]:not(.browser-default):focus.valid ~ .helper-text:after,input[type=datetime-local]:not(.browser-default).valid ~ .helper-text:after,input[type=datetime-local]:not(.browser-default):focus.valid ~ .helper-text:after,input[type=tel]:not(.browser-default).valid ~ .helper-text:after,input[type=tel]:not(.browser-default):focus.valid ~ .helper-text:after,input[type=number]:not(.browser-default).valid ~ .helper-text:after,input[type=number]:not(.browser-default):focus.valid ~ .helper-text:after,input[type=search]:not(.browser-default).valid ~ .helper-text:after,input[type=search]:not(.browser-default):focus.valid ~ .helper-text:after,textarea.materialize-textarea.valid ~ .helper-text:after,textarea.materialize-textarea:focus.valid ~ .helper-text:after,.select-wrapper.valid ~ .helper-text:after{content:attr(data-success);color:#4CAF50}input:not([type]).invalid ~ .helper-text:after,input:not([type]):focus.invalid ~ .helper-text:after,input[type=text]:not(.browser-default).invalid ~ .helper-text:after,input[type=text]:not(.browser-default):focus.invalid ~ .helper-text:after,input[type=password]:not(.browser-default).invalid ~ .helper-text:after,input[type=password]:not(.browser-default):focus.invalid ~ .helper-text:after,input[type=email]:not(.browser-default).invalid ~ .helper-text:after,input[type=email]:not(.browser-default):focus.invalid ~ .helper-text:after,input[type=url]:not(.browser-default).invalid ~ .helper-text:after,input[type=url]:not(.browser-default):focus.invalid ~ .helper-text:after,input[type=time]:not(.browser-default).invalid ~ .helper-text:after,input[type=time]:not(.browser-default):focus.invalid ~ .helper-text:after,input[type=date]:not(.browser-default).invalid ~ .helper-text:after,input[type=date]:not(.browser-default):focus.invalid ~ .helper-text:after,input[type=datetime]:not(.browser-default).invalid ~ .helper-text:after,input[type=datetime]:not(.browser-default):focus.invalid ~ .helper-text:after,input[type=datetime-local]:not(.browser-default).invalid ~ .helper-text:after,input[type=datetime-local]:not(.browser-default):focus.invalid ~ .helper-text:after,input[type=tel]:not(.browser-default).invalid ~ .helper-text:after,input[type=tel]:not(.browser-default):focus.invalid ~ .helper-text:after,input[type=number]:not(.browser-default).invalid ~ .helper-text:after,input[type=number]:not(.browser-default):focus.invalid ~ .helper-text:after,input[type=search]:not(.browser-default).invalid ~ .helper-text:after,input[type=search]:not(.browser-default):focus.invalid ~ .helper-text:after,textarea.materialize-textarea.invalid ~ .helper-text:after,textarea.materialize-textarea:focus.invalid ~ .helper-text:after,.select-wrapper.invalid ~ .helper-text:after{content:attr(data-error);color:#F44336}input:not([type])+label:after,input[type=text]:not(.browser-default)+label:after,input[type=password]:not(.browser-default)+label:after,input[type=email]:not(.browser-default)+label:after,input[type=url]:not(.browser-default)+label:after,input[type=time]:not(.browser-default)+label:after,input[type=date]:not(.browser-default)+label:after,input[type=datetime]:not(.browser-default)+label:after,input[type=datetime-local]:not(.browser-default)+label:after,input[type=tel]:not(.browser-default)+label:after,input[type=number]:not(.browser-default)+label:after,input[type=search]:not(.browser-default)+label:after,textarea.materialize-textarea+label:after,.select-wrapper+label:after{display:block;content:"";position:absolute;top:100%;left:0;opacity:0;-webkit-transition:.2s opacity ease-out, .2s color ease-out;transition:.2s opacity ease-out, .2s color ease-out}.input-field{position:relative;margin-top:1rem;margin-bottom:1rem}.input-field.inline{display:inline-block;vertical-align:middle;margin-left:5px}.input-field.inline input,.input-field.inline .select-dropdown{margin-bottom:1rem}.input-field.col label{left:.75rem}.input-field.col .prefix ~ label,.input-field.col .prefix ~ .validate ~ label{width:calc(100% - 3rem - 1.5rem)}.input-field>label{color:#9e9e9e;position:absolute;top:0;left:0;font-size:1rem;cursor:text;-webkit-transition:color .2s ease-out, -webkit-transform .2s ease-out;transition:color .2s ease-out, -webkit-transform .2s ease-out;transition:transform .2s ease-out, color .2s ease-out;transition:transform .2s ease-out, color .2s ease-out, -webkit-transform .2s ease-out;-webkit-transform-origin:0% 100%;transform-origin:0% 100%;text-align:initial;-webkit-transform:translateY(12px);transform:translateY(12px)}.input-field>label:not(.label-icon).active{-webkit-transform:translateY(-14px) scale(0.8);transform:translateY(-14px) scale(0.8);-webkit-transform-origin:0 0;transform-origin:0 0}.input-field>input[type]:-webkit-autofill:not(.browser-default):not([type="search"])+label,.input-field>input[type=date]:not(.browser-default)+label,.input-field>input[type=time]:not(.browser-default)+label{-webkit-transform:translateY(-14px) scale(0.8);transform:translateY(-14px) scale(0.8);-webkit-transform-origin:0 0;transform-origin:0 0}.input-field .helper-text{position:relative;min-height:18px;display:block;font-size:12px;color:rgba(0,0,0,0.54)}.input-field .helper-text::after{opacity:1;position:absolute;top:0;left:0}.input-field .prefix{position:absolute;width:3rem;font-size:2rem;-webkit-transition:color .2s;transition:color .2s;top:.5rem}.input-field .prefix.active{color:#26a69a}.input-field .prefix ~ input,.input-field .prefix ~ textarea,.input-field .prefix ~ label,.input-field .prefix ~ .validate ~ label,.input-field .prefix ~ .helper-text,.input-field .prefix ~ .autocomplete-content{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.input-field .prefix ~ label{margin-left:3rem}@media only screen and (max-width: 992px){.input-field .prefix ~ input{width:86%;width:calc(100% - 3rem)}}@media only screen and (max-width: 600px){.input-field .prefix ~ input{width:80%;width:calc(100% - 3rem)}}.input-field input[type=search]{display:block;line-height:inherit;-webkit-transition:.3s background-color;transition:.3s background-color}.nav-wrapper .input-field input[type=search]{height:inherit;padding-left:4rem;width:calc(100% - 4rem);border:0;-webkit-box-shadow:none;box-shadow:none}.input-field input[type=search]:focus:not(.browser-default){background-color:#fff;border:0;-webkit-box-shadow:none;box-shadow:none;color:#444}.input-field input[type=search]:focus:not(.browser-default)+label i,.input-field input[type=search]:focus:not(.browser-default) ~ .mdi-navigation-close,.input-field input[type=search]:focus:not(.browser-default) ~ .material-icons{color:#444}.input-field input[type=search]+.label-icon{-webkit-transform:none;transform:none;left:1rem}.input-field input[type=search] ~ .mdi-navigation-close,.input-field input[type=search] ~ .material-icons{position:absolute;top:0;right:1rem;color:transparent;cursor:pointer;font-size:2rem;-webkit-transition:.3s color;transition:.3s color}textarea{width:100%;height:3rem;background-color:transparent}textarea.materialize-textarea{line-height:normal;overflow-y:hidden;padding:.8rem 0 .8rem 0;resize:none;min-height:3rem;-webkit-box-sizing:border-box;box-sizing:border-box}.hiddendiv{visibility:hidden;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;padding-top:1.2rem;position:absolute;top:0;z-index:-1}.autocomplete-content li .highlight{color:#444}.autocomplete-content li img{height:40px;width:40px;margin:5px 15px}.character-counter{min-height:18px}[type="radio"]:not(:checked),[type="radio"]:checked{position:absolute;opacity:0;pointer-events:none}[type="radio"]:not(:checked)+span,[type="radio"]:checked+span{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;-webkit-transition:.28s ease;transition:.28s ease;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}[type="radio"]+span:before,[type="radio"]+span:after{content:'';position:absolute;left:0;top:0;margin:4px;width:16px;height:16px;z-index:0;-webkit-transition:.28s ease;transition:.28s ease}[type="radio"]:not(:checked)+span:before,[type="radio"]:not(:checked)+span:after,[type="radio"]:checked+span:before,[type="radio"]:checked+span:after,[type="radio"].with-gap:checked+span:before,[type="radio"].with-gap:checked+span:after{border-radius:50%}[type="radio"]:not(:checked)+span:before,[type="radio"]:not(:checked)+span:after{border:2px solid #5a5a5a}[type="radio"]:not(:checked)+span:after{-webkit-transform:scale(0);transform:scale(0)}[type="radio"]:checked+span:before{border:2px solid transparent}[type="radio"]:checked+span:after,[type="radio"].with-gap:checked+span:before,[type="radio"].with-gap:checked+span:after{border:2px solid #26a69a}[type="radio"]:checked+span:after,[type="radio"].with-gap:checked+span:after{background-color:#26a69a}[type="radio"]:checked+span:after{-webkit-transform:scale(1.02);transform:scale(1.02)}[type="radio"].with-gap:checked+span:after{-webkit-transform:scale(0.5);transform:scale(0.5)}[type="radio"].tabbed:focus+span:before{-webkit-box-shadow:0 0 0 10px rgba(0,0,0,0.1);box-shadow:0 0 0 10px rgba(0,0,0,0.1)}[type="radio"].with-gap:disabled:checked+span:before{border:2px solid rgba(0,0,0,0.42)}[type="radio"].with-gap:disabled:checked+span:after{border:none;background-color:rgba(0,0,0,0.42)}[type="radio"]:disabled:not(:checked)+span:before,[type="radio"]:disabled:checked+span:before{background-color:transparent;border-color:rgba(0,0,0,0.42)}[type="radio"]:disabled+span{color:rgba(0,0,0,0.42)}[type="radio"]:disabled:not(:checked)+span:before{border-color:rgba(0,0,0,0.42)}[type="radio"]:disabled:checked+span:after{background-color:rgba(0,0,0,0.42);border-color:#949494}[type="checkbox"]:not(:checked),[type="checkbox"]:checked{position:absolute;opacity:0;pointer-events:none}[type="checkbox"]+span:not(.lever){position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}[type="checkbox"]+span:not(.lever):before,[type="checkbox"]:not(.filled-in)+span:not(.lever):after{content:'';position:absolute;top:0;left:0;width:18px;height:18px;z-index:0;border:2px solid #5a5a5a;border-radius:1px;margin-top:3px;-webkit-transition:.2s;transition:.2s}[type="checkbox"]:not(.filled-in)+span:not(.lever):after{border:0;-webkit-transform:scale(0);transform:scale(0)}[type="checkbox"]:not(:checked):disabled+span:not(.lever):before{border:none;background-color:rgba(0,0,0,0.42)}[type="checkbox"].tabbed:focus+span:not(.lever):after{-webkit-transform:scale(1);transform:scale(1);border:0;border-radius:50%;-webkit-box-shadow:0 0 0 10px rgba(0,0,0,0.1);box-shadow:0 0 0 10px rgba(0,0,0,0.1);background-color:rgba(0,0,0,0.1)}[type="checkbox"]:checked+span:not(.lever):before{top:-4px;left:-5px;width:12px;height:22px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #26a69a;border-bottom:2px solid #26a69a;-webkit-transform:rotate(40deg);transform:rotate(40deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"]:checked:disabled+span:before{border-right:2px solid rgba(0,0,0,0.42);border-bottom:2px solid rgba(0,0,0,0.42)}[type="checkbox"]:indeterminate+span:not(.lever):before{top:-11px;left:-12px;width:10px;height:22px;border-top:none;border-left:none;border-right:2px solid #26a69a;border-bottom:none;-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"]:indeterminate:disabled+span:not(.lever):before{border-right:2px solid rgba(0,0,0,0.42);background-color:transparent}[type="checkbox"].filled-in+span:not(.lever):after{border-radius:2px}[type="checkbox"].filled-in+span:not(.lever):before,[type="checkbox"].filled-in+span:not(.lever):after{content:'';left:0;position:absolute;-webkit-transition:border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s;transition:border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s;z-index:1}[type="checkbox"].filled-in:not(:checked)+span:not(.lever):before{width:0;height:0;border:3px solid transparent;left:6px;top:10px;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"].filled-in:not(:checked)+span:not(.lever):after{height:20px;width:20px;background-color:transparent;border:2px solid #5a5a5a;top:0px;z-index:0}[type="checkbox"].filled-in:checked+span:not(.lever):before{top:0;left:1px;width:8px;height:13px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #fff;border-bottom:2px solid #fff;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"].filled-in:checked+span:not(.lever):after{top:0;width:20px;height:20px;border:2px solid #26a69a;background-color:#26a69a;z-index:0}[type="checkbox"].filled-in.tabbed:focus+span:not(.lever):after{border-radius:2px;border-color:#5a5a5a;background-color:rgba(0,0,0,0.1)}[type="checkbox"].filled-in.tabbed:checked:focus+span:not(.lever):after{border-radius:2px;background-color:#26a69a;border-color:#26a69a}[type="checkbox"].filled-in:disabled:not(:checked)+span:not(.lever):before{background-color:transparent;border:2px solid transparent}[type="checkbox"].filled-in:disabled:not(:checked)+span:not(.lever):after{border-color:transparent;background-color:#949494}[type="checkbox"].filled-in:disabled:checked+span:not(.lever):before{background-color:transparent}[type="checkbox"].filled-in:disabled:checked+span:not(.lever):after{background-color:#949494;border-color:#949494}.switch,.switch *{-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.switch label{cursor:pointer}.switch label input[type=checkbox]{opacity:0;width:0;height:0}.switch label input[type=checkbox]:checked+.lever{background-color:#84c7c1}.switch label input[type=checkbox]:checked+.lever:before,.switch label input[type=checkbox]:checked+.lever:after{left:18px}.switch label input[type=checkbox]:checked+.lever:after{background-color:#26a69a}.switch label .lever{content:"";display:inline-block;position:relative;width:36px;height:14px;background-color:rgba(0,0,0,0.38);border-radius:15px;margin-right:10px;-webkit-transition:background 0.3s ease;transition:background 0.3s ease;vertical-align:middle;margin:0 16px}.switch label .lever:before,.switch label .lever:after{content:"";position:absolute;display:inline-block;width:20px;height:20px;border-radius:50%;left:0;top:-3px;-webkit-transition:left 0.3s ease, background .3s ease, -webkit-box-shadow 0.1s ease, -webkit-transform .1s ease;transition:left 0.3s ease, background .3s ease, -webkit-box-shadow 0.1s ease, -webkit-transform .1s ease;transition:left 0.3s ease, background .3s ease, box-shadow 0.1s ease, transform .1s ease;transition:left 0.3s ease, background .3s ease, box-shadow 0.1s ease, transform .1s ease, -webkit-box-shadow 0.1s ease, -webkit-transform .1s ease}.switch label .lever:before{background-color:rgba(38,166,154,0.15)}.switch label .lever:after{background-color:#F1F1F1;-webkit-box-shadow:0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12);box-shadow:0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12)}input[type=checkbox]:checked:not(:disabled) ~ .lever:active::before,input[type=checkbox]:checked:not(:disabled).tabbed:focus ~ .lever::before{-webkit-transform:scale(2.4);transform:scale(2.4);background-color:rgba(38,166,154,0.15)}input[type=checkbox]:not(:disabled) ~ .lever:active:before,input[type=checkbox]:not(:disabled).tabbed:focus ~ .lever::before{-webkit-transform:scale(2.4);transform:scale(2.4);background-color:rgba(0,0,0,0.08)}.switch input[type=checkbox][disabled]+.lever{cursor:default;background-color:rgba(0,0,0,0.12)}.switch label input[type=checkbox][disabled]+.lever:after,.switch label input[type=checkbox][disabled]:checked+.lever:after{background-color:#949494}select{display:none}select.browser-default{display:block}select{background-color:rgba(255,255,255,0.9);width:100%;padding:5px;border:1px solid #f2f2f2;border-radius:2px;height:3rem}.select-label{position:absolute}.select-wrapper{position:relative}.select-wrapper.valid+label,.select-wrapper.invalid+label{width:100%;pointer-events:none}.select-wrapper input.select-dropdown{position:relative;cursor:pointer;background-color:transparent;border:none;border-bottom:1px solid #9e9e9e;outline:none;height:3rem;line-height:3rem;width:100%;font-size:16px;margin:0 0 8px 0;padding:0;display:block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1}.select-wrapper input.select-dropdown:focus{border-bottom:1px solid #26a69a}.select-wrapper .caret{position:absolute;right:0;top:0;bottom:0;margin:auto 0;z-index:0;fill:rgba(0,0,0,0.87)}.select-wrapper+label{position:absolute;top:-26px;font-size:.8rem}select:disabled{color:rgba(0,0,0,0.42)}.select-wrapper.disabled+label{color:rgba(0,0,0,0.42)}.select-wrapper.disabled .caret{fill:rgba(0,0,0,0.42)}.select-wrapper input.select-dropdown:disabled{color:rgba(0,0,0,0.42);cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.select-wrapper i{color:rgba(0,0,0,0.3)}.select-dropdown li.disabled,.select-dropdown li.disabled>span,.select-dropdown li.optgroup{color:rgba(0,0,0,0.3);background-color:transparent}body.keyboard-focused .select-dropdown.dropdown-content li:focus{background-color:rgba(0,0,0,0.08)}.select-dropdown.dropdown-content li:hover{background-color:rgba(0,0,0,0.08)}.select-dropdown.dropdown-content li.selected{background-color:rgba(0,0,0,0.03)}.prefix ~ .select-wrapper{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.prefix ~ label{margin-left:3rem}.select-dropdown li img{height:40px;width:40px;margin:5px 15px;float:right}.select-dropdown li.optgroup{border-top:1px solid #eee}.select-dropdown li.optgroup.selected>span{color:rgba(0,0,0,0.7)}.select-dropdown li.optgroup>span{color:rgba(0,0,0,0.4)}.select-dropdown li.optgroup ~ li.optgroup-option{padding-left:1rem}.file-field{position:relative}.file-field .file-path-wrapper{overflow:hidden;padding-left:10px}.file-field input.file-path{width:100%}.file-field .btn,.file-field .btn-large,.file-field .btn-small{float:left;height:3rem;line-height:3rem}.file-field span{cursor:pointer}.file-field input[type=file]{position:absolute;top:0;right:0;left:0;bottom:0;width:100%;margin:0;padding:0;font-size:20px;cursor:pointer;opacity:0;filter:alpha(opacity=0)}.file-field input[type=file]::-webkit-file-upload-button{display:none}.range-field{position:relative}input[type=range],input[type=range]+.thumb{cursor:pointer}input[type=range]{position:relative;background-color:transparent;border:none;outline:none;width:100%;margin:15px 0;padding:0}input[type=range]:focus{outline:none}input[type=range]+.thumb{position:absolute;top:10px;left:0;border:none;height:0;width:0;border-radius:50%;background-color:#26a69a;margin-left:7px;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}input[type=range]+.thumb .value{display:block;width:30px;text-align:center;color:#26a69a;font-size:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}input[type=range]+.thumb.active{border-radius:50% 50% 50% 0}input[type=range]+.thumb.active .value{color:#fff;margin-left:-1px;margin-top:8px;font-size:10px}input[type=range]{-webkit-appearance:none}input[type=range]::-webkit-slider-runnable-track{height:3px;background:#c2c0c2;border:none}input[type=range]::-webkit-slider-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#26a69a;-webkit-transition:-webkit-box-shadow .3s;transition:-webkit-box-shadow .3s;transition:box-shadow .3s;transition:box-shadow .3s, -webkit-box-shadow .3s;-webkit-appearance:none;background-color:#26a69a;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;margin:-5px 0 0 0}.keyboard-focused input[type=range]:focus:not(.active)::-webkit-slider-thumb{-webkit-box-shadow:0 0 0 10px rgba(38,166,154,0.26);box-shadow:0 0 0 10px rgba(38,166,154,0.26)}input[type=range]{border:1px solid white}input[type=range]::-moz-range-track{height:3px;background:#c2c0c2;border:none}input[type=range]::-moz-focus-inner{border:0}input[type=range]::-moz-range-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#26a69a;-webkit-transition:-webkit-box-shadow .3s;transition:-webkit-box-shadow .3s;transition:box-shadow .3s;transition:box-shadow .3s, -webkit-box-shadow .3s;margin-top:-5px}input[type=range]:-moz-focusring{outline:1px solid #fff;outline-offset:-1px}.keyboard-focused input[type=range]:focus:not(.active)::-moz-range-thumb{box-shadow:0 0 0 10px rgba(38,166,154,0.26)}input[type=range]::-ms-track{height:3px;background:transparent;border-color:transparent;border-width:6px 0;color:transparent}input[type=range]::-ms-fill-lower{background:#777}input[type=range]::-ms-fill-upper{background:#ddd}input[type=range]::-ms-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#26a69a;-webkit-transition:-webkit-box-shadow .3s;transition:-webkit-box-shadow .3s;transition:box-shadow .3s;transition:box-shadow .3s, -webkit-box-shadow .3s}.keyboard-focused input[type=range]:focus:not(.active)::-ms-thumb{box-shadow:0 0 0 10px rgba(38,166,154,0.26)}.table-of-contents.fixed{position:fixed}.table-of-contents li{padding:2px 0}.table-of-contents a{display:inline-block;font-weight:300;color:#757575;padding-left:16px;height:1.5rem;line-height:1.5rem;letter-spacing:.4;display:inline-block}.table-of-contents a:hover{color:#a8a8a8;padding-left:15px;border-left:1px solid #ee6e73}.table-of-contents a.active{font-weight:500;padding-left:14px;border-left:2px solid #ee6e73}.sidenav{position:fixed;width:300px;left:0;top:0;margin:0;-webkit-transform:translateX(-100%);transform:translateX(-100%);height:100%;height:calc(100% + 60px);height:-moz-calc(100%);padding-bottom:60px;background-color:#fff;z-index:999;overflow-y:auto;will-change:transform;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateX(-105%);transform:translateX(-105%)}.sidenav.right-aligned{right:0;-webkit-transform:translateX(105%);transform:translateX(105%);left:auto;-webkit-transform:translateX(100%);transform:translateX(100%)}.sidenav .collapsible{margin:0}.sidenav li{float:none;line-height:48px}.sidenav li.active{background-color:rgba(0,0,0,0.05)}.sidenav li>a{color:rgba(0,0,0,0.87);display:block;font-size:14px;font-weight:500;height:48px;line-height:48px;padding:0 32px}.sidenav li>a:hover{background-color:rgba(0,0,0,0.05)}.sidenav li>a.btn,.sidenav li>a.btn-large,.sidenav li>a.btn-small,.sidenav li>a.btn-large,.sidenav li>a.btn-flat,.sidenav li>a.btn-floating{margin:10px 15px}.sidenav li>a.btn,.sidenav li>a.btn-large,.sidenav li>a.btn-small,.sidenav li>a.btn-large,.sidenav li>a.btn-floating{color:#fff}.sidenav li>a.btn-flat{color:#343434}.sidenav li>a.btn:hover,.sidenav li>a.btn-large:hover,.sidenav li>a.btn-small:hover,.sidenav li>a.btn-large:hover{background-color:#2bbbad}.sidenav li>a.btn-floating:hover{background-color:#26a69a}.sidenav li>a>i,.sidenav li>a>[class^="mdi-"],.sidenav li>a li>a>[class*="mdi-"],.sidenav li>a>i.material-icons{float:left;height:48px;line-height:48px;margin:0 32px 0 0;width:24px;color:rgba(0,0,0,0.54)}.sidenav .divider{margin:8px 0 0 0}.sidenav .subheader{cursor:initial;pointer-events:none;color:rgba(0,0,0,0.54);font-size:14px;font-weight:500;line-height:48px}.sidenav .subheader:hover{background-color:transparent}.sidenav .user-view{position:relative;padding:32px 32px 0;margin-bottom:8px}.sidenav .user-view>a{height:auto;padding:0}.sidenav .user-view>a:hover{background-color:transparent}.sidenav .user-view .background{overflow:hidden;position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1}.sidenav .user-view .circle,.sidenav .user-view .name,.sidenav .user-view .email{display:block}.sidenav .user-view .circle{height:64px;width:64px}.sidenav .user-view .name,.sidenav .user-view .email{font-size:14px;line-height:24px}.sidenav .user-view .name{margin-top:16px;font-weight:500}.sidenav .user-view .email{padding-bottom:16px;font-weight:400}.drag-target{height:100%;width:10px;position:fixed;top:0;z-index:998}.drag-target.right-aligned{right:0}.sidenav.sidenav-fixed{left:0;-webkit-transform:translateX(0);transform:translateX(0);position:fixed}.sidenav.sidenav-fixed.right-aligned{right:0;left:auto}@media only screen and (max-width: 992px){.sidenav.sidenav-fixed{-webkit-transform:translateX(-105%);transform:translateX(-105%)}.sidenav.sidenav-fixed.right-aligned{-webkit-transform:translateX(105%);transform:translateX(105%)}.sidenav>a{padding:0 16px}.sidenav .user-view{padding:16px 16px 0}}.sidenav .collapsible-body>ul:not(.collapsible)>li.active,.sidenav.sidenav-fixed .collapsible-body>ul:not(.collapsible)>li.active{background-color:#ee6e73}.sidenav .collapsible-body>ul:not(.collapsible)>li.active a,.sidenav.sidenav-fixed .collapsible-body>ul:not(.collapsible)>li.active a{color:#fff}.sidenav .collapsible-body{padding:0}.sidenav-overlay{position:fixed;top:0;left:0;right:0;opacity:0;height:120vh;background-color:rgba(0,0,0,0.5);z-index:997;display:none}.preloader-wrapper{display:inline-block;position:relative;width:50px;height:50px}.preloader-wrapper.small{width:36px;height:36px}.preloader-wrapper.big{width:64px;height:64px}.preloader-wrapper.active{-webkit-animation:container-rotate 1568ms linear infinite;animation:container-rotate 1568ms linear infinite}@-webkit-keyframes container-rotate{to{-webkit-transform:rotate(360deg)}}@keyframes container-rotate{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-layer{position:absolute;width:100%;height:100%;opacity:0;border-color:#26a69a}.spinner-blue,.spinner-blue-only{border-color:#4285f4}.spinner-red,.spinner-red-only{border-color:#db4437}.spinner-yellow,.spinner-yellow-only{border-color:#f4b400}.spinner-green,.spinner-green-only{border-color:#0f9d58}.active .spinner-layer.spinner-blue{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-red{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-yellow{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-green{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer,.active .spinner-layer.spinner-blue-only,.active .spinner-layer.spinner-red-only,.active .spinner-layer.spinner-yellow-only,.active .spinner-layer.spinner-green-only{opacity:1;-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}@-webkit-keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg)}}@keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg);transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg);transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg);transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg);transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg);transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg);transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg);transform:rotate(1080deg)}}@-webkit-keyframes blue-fade-in-out{from{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}100%{opacity:1}}@keyframes blue-fade-in-out{from{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}100%{opacity:1}}@-webkit-keyframes red-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@keyframes red-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@-webkit-keyframes yellow-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@keyframes yellow-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@-webkit-keyframes green-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}100%{opacity:0}}@keyframes green-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}100%{opacity:0}}.gap-patch{position:absolute;top:0;left:45%;width:10%;height:100%;overflow:hidden;border-color:inherit}.gap-patch .circle{width:1000%;left:-450%}.circle-clipper{display:inline-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inherit}.circle-clipper .circle{width:200%;height:100%;border-width:3px;border-style:solid;border-color:inherit;border-bottom-color:transparent !important;border-radius:50%;-webkit-animation:none;animation:none;position:absolute;top:0;right:0;bottom:0}.circle-clipper.left .circle{left:0;border-right-color:transparent !important;-webkit-transform:rotate(129deg);transform:rotate(129deg)}.circle-clipper.right .circle{left:-100%;border-left-color:transparent !important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg)}.active .circle-clipper.left .circle{-webkit-animation:left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .circle-clipper.right .circle{-webkit-animation:right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}@-webkit-keyframes left-spin{from{-webkit-transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg)}}@keyframes left-spin{from{-webkit-transform:rotate(130deg);transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg);transform:rotate(130deg)}}@-webkit-keyframes right-spin{from{-webkit-transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg)}}@keyframes right-spin{from{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}}#spinnerContainer.cooldown{-webkit-animation:container-rotate 1568ms linear infinite,fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1);animation:container-rotate 1568ms linear infinite,fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1)}@-webkit-keyframes fade-out{from{opacity:1}to{opacity:0}}@keyframes fade-out{from{opacity:1}to{opacity:0}}.slider{position:relative;height:400px;width:100%}.slider.fullscreen{height:100%;width:100%;position:absolute;top:0;left:0;right:0;bottom:0}.slider.fullscreen ul.slides{height:100%}.slider.fullscreen ul.indicators{z-index:2;bottom:30px}.slider .slides{background-color:#9e9e9e;margin:0;height:400px}.slider .slides li{opacity:0;position:absolute;top:0;left:0;z-index:1;width:100%;height:inherit;overflow:hidden}.slider .slides li img{height:100%;width:100%;background-size:cover;background-position:center}.slider .slides li .caption{color:#fff;position:absolute;top:15%;left:15%;width:70%;opacity:0}.slider .slides li .caption p{color:#e0e0e0}.slider .slides li.active{z-index:2}.slider .indicators{position:absolute;text-align:center;left:0;right:0;bottom:0;margin:0}.slider .indicators .indicator-item{display:inline-block;position:relative;cursor:pointer;height:16px;width:16px;margin:0 12px;background-color:#e0e0e0;-webkit-transition:background-color .3s;transition:background-color .3s;border-radius:50%}.slider .indicators .indicator-item.active{background-color:#4CAF50}.carousel{overflow:hidden;position:relative;width:100%;height:400px;-webkit-perspective:500px;perspective:500px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform-origin:0% 50%;transform-origin:0% 50%}.carousel.carousel-slider{top:0;left:0}.carousel.carousel-slider .carousel-fixed-item{position:absolute;left:0;right:0;bottom:20px;z-index:1}.carousel.carousel-slider .carousel-fixed-item.with-indicators{bottom:68px}.carousel.carousel-slider .carousel-item{width:100%;height:100%;min-height:400px;position:absolute;top:0;left:0}.carousel.carousel-slider .carousel-item h2{font-size:24px;font-weight:500;line-height:32px}.carousel.carousel-slider .carousel-item p{font-size:15px}.carousel .carousel-item{visibility:hidden;width:200px;height:200px;position:absolute;top:0;left:0}.carousel .carousel-item>img{width:100%}.carousel .indicators{position:absolute;text-align:center;left:0;right:0;bottom:0;margin:0}.carousel .indicators .indicator-item{display:inline-block;position:relative;cursor:pointer;height:8px;width:8px;margin:24px 4px;background-color:rgba(255,255,255,0.5);-webkit-transition:background-color .3s;transition:background-color .3s;border-radius:50%}.carousel .indicators .indicator-item.active{background-color:#fff}.carousel.scrolling .carousel-item .materialboxed,.carousel .carousel-item:not(.active) .materialboxed{pointer-events:none}.tap-target-wrapper{width:800px;height:800px;position:fixed;z-index:1000;visibility:hidden;-webkit-transition:visibility 0s .3s;transition:visibility 0s .3s}.tap-target-wrapper.open{visibility:visible;-webkit-transition:visibility 0s;transition:visibility 0s}.tap-target-wrapper.open .tap-target{-webkit-transform:scale(1);transform:scale(1);opacity:.95;-webkit-transition:opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1),-webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1);transition:opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1),-webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1);transition:transform 0.3s cubic-bezier(0.42, 0, 0.58, 1),opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1);transition:transform 0.3s cubic-bezier(0.42, 0, 0.58, 1),opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1),-webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1)}.tap-target-wrapper.open .tap-target-wave::before{-webkit-transform:scale(1);transform:scale(1)}.tap-target-wrapper.open .tap-target-wave::after{visibility:visible;-webkit-animation:pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;animation:pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;-webkit-transition:opacity .3s, visibility 0s 1s, -webkit-transform .3s;transition:opacity .3s, visibility 0s 1s, -webkit-transform .3s;transition:opacity .3s, transform .3s, visibility 0s 1s;transition:opacity .3s, transform .3s, visibility 0s 1s, -webkit-transform .3s}.tap-target{position:absolute;font-size:1rem;border-radius:50%;background-color:#ee6e73;-webkit-box-shadow:0 20px 20px 0 rgba(0,0,0,0.14),0 10px 50px 0 rgba(0,0,0,0.12),0 30px 10px -20px rgba(0,0,0,0.2);box-shadow:0 20px 20px 0 rgba(0,0,0,0.14),0 10px 50px 0 rgba(0,0,0,0.12),0 30px 10px -20px rgba(0,0,0,0.2);width:100%;height:100%;opacity:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transition:opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1),-webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1);transition:opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1),-webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1);transition:transform 0.3s cubic-bezier(0.42, 0, 0.58, 1),opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1);transition:transform 0.3s cubic-bezier(0.42, 0, 0.58, 1),opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1),-webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1)}.tap-target-content{position:relative;display:table-cell}.tap-target-wave{position:absolute;border-radius:50%;z-index:10001}.tap-target-wave::before,.tap-target-wave::after{content:'';display:block;position:absolute;width:100%;height:100%;border-radius:50%;background-color:#ffffff}.tap-target-wave::before{-webkit-transform:scale(0);transform:scale(0);-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s, -webkit-transform .3s}.tap-target-wave::after{visibility:hidden;-webkit-transition:opacity .3s, visibility 0s, -webkit-transform .3s;transition:opacity .3s, visibility 0s, -webkit-transform .3s;transition:opacity .3s, transform .3s, visibility 0s;transition:opacity .3s, transform .3s, visibility 0s, -webkit-transform .3s;z-index:-1}.tap-target-origin{top:50%;left:50%;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);z-index:10002;position:absolute !important}.tap-target-origin:not(.btn):not(.btn-large):not(.btn-small),.tap-target-origin:not(.btn):not(.btn-large):not(.btn-small):hover{background:none}@media only screen and (max-width: 600px){.tap-target,.tap-target-wrapper{width:600px;height:600px}}.pulse{overflow:visible;position:relative}.pulse::before{content:'';display:block;position:absolute;width:100%;height:100%;top:0;left:0;background-color:inherit;border-radius:inherit;-webkit-transition:opacity .3s, -webkit-transform .3s;transition:opacity .3s, -webkit-transform .3s;transition:opacity .3s, transform .3s;transition:opacity .3s, transform .3s, -webkit-transform .3s;-webkit-animation:pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;animation:pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;z-index:-1}@-webkit-keyframes pulse-animation{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:0;-webkit-transform:scale(1.5);transform:scale(1.5)}100%{opacity:0;-webkit-transform:scale(1.5);transform:scale(1.5)}}@keyframes pulse-animation{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:0;-webkit-transform:scale(1.5);transform:scale(1.5)}100%{opacity:0;-webkit-transform:scale(1.5);transform:scale(1.5)}}.datepicker-modal{max-width:325px;min-width:300px;max-height:none}.datepicker-container.modal-content{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding:0}.datepicker-controls{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;width:280px;margin:0 auto}.datepicker-controls .selects-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.datepicker-controls .select-wrapper input{border-bottom:none;text-align:center;margin:0}.datepicker-controls .select-wrapper input:focus{border-bottom:none}.datepicker-controls .select-wrapper .caret{display:none}.datepicker-controls .select-year input{width:50px}.datepicker-controls .select-month input{width:70px}.month-prev,.month-next{margin-top:4px;cursor:pointer;background-color:transparent;border:none}.datepicker-date-display{-webkit-box-flex:1;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto;background-color:#26a69a;color:#fff;padding:20px 22px;font-weight:500}.datepicker-date-display .year-text{display:block;font-size:1.5rem;line-height:25px;color:rgba(255,255,255,0.7)}.datepicker-date-display .date-text{display:block;font-size:2.8rem;line-height:47px;font-weight:500}.datepicker-calendar-container{-webkit-box-flex:2.5;-webkit-flex:2.5 auto;-ms-flex:2.5 auto;flex:2.5 auto}.datepicker-table{width:280px;font-size:1rem;margin:0 auto}.datepicker-table thead{border-bottom:none}.datepicker-table th{padding:10px 5px;text-align:center}.datepicker-table tr{border:none}.datepicker-table abbr{text-decoration:none;color:#999}.datepicker-table td{border-radius:50%;padding:0}.datepicker-table td.is-today{color:#26a69a}.datepicker-table td.is-selected{background-color:#26a69a;color:#fff}.datepicker-table td.is-outside-current-month,.datepicker-table td.is-disabled{color:rgba(0,0,0,0.3);pointer-events:none}.datepicker-day-button{background-color:transparent;border:none;line-height:38px;display:block;width:100%;border-radius:50%;padding:0 5px;cursor:pointer;color:inherit}.datepicker-day-button:focus{background-color:rgba(43,161,150,0.25)}.datepicker-footer{width:280px;margin:0 auto;padding-bottom:5px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.datepicker-cancel,.datepicker-clear,.datepicker-today,.datepicker-done{color:#26a69a;padding:0 1rem}.datepicker-clear{color:#F44336}@media only screen and (min-width: 601px){.datepicker-modal{max-width:625px}.datepicker-container.modal-content{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.datepicker-date-display{-webkit-box-flex:0;-webkit-flex:0 1 270px;-ms-flex:0 1 270px;flex:0 1 270px}.datepicker-controls,.datepicker-table,.datepicker-footer{width:320px}.datepicker-day-button{line-height:44px}}.timepicker-modal{max-width:325px;max-height:none}.timepicker-container.modal-content{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding:0}.text-primary{color:#fff}.timepicker-digital-display{-webkit-box-flex:1;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto;background-color:#26a69a;padding:10px;font-weight:300}.timepicker-text-container{font-size:4rem;font-weight:bold;text-align:center;color:rgba(255,255,255,0.6);font-weight:400;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.timepicker-span-hours,.timepicker-span-minutes,.timepicker-span-am-pm div{cursor:pointer}.timepicker-span-hours{margin-right:3px}.timepicker-span-minutes{margin-left:3px}.timepicker-display-am-pm{font-size:1.3rem;position:absolute;right:1rem;bottom:1rem;font-weight:400}.timepicker-analog-display{-webkit-box-flex:2.5;-webkit-flex:2.5 auto;-ms-flex:2.5 auto;flex:2.5 auto}.timepicker-plate{background-color:#eee;border-radius:50%;width:270px;height:270px;overflow:visible;position:relative;margin:auto;margin-top:25px;margin-bottom:5px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.timepicker-canvas,.timepicker-dial{position:absolute;left:0;right:0;top:0;bottom:0}.timepicker-minutes{visibility:hidden}.timepicker-tick{border-radius:50%;color:rgba(0,0,0,0.87);line-height:40px;text-align:center;width:40px;height:40px;position:absolute;cursor:pointer;font-size:15px}.timepicker-tick.active,.timepicker-tick:hover{background-color:rgba(38,166,154,0.25)}.timepicker-dial{-webkit-transition:opacity 350ms, -webkit-transform 350ms;transition:opacity 350ms, -webkit-transform 350ms;transition:transform 350ms, opacity 350ms;transition:transform 350ms, opacity 350ms, -webkit-transform 350ms}.timepicker-dial-out{opacity:0}.timepicker-dial-out.timepicker-hours{-webkit-transform:scale(1.1, 1.1);transform:scale(1.1, 1.1)}.timepicker-dial-out.timepicker-minutes{-webkit-transform:scale(0.8, 0.8);transform:scale(0.8, 0.8)}.timepicker-canvas{-webkit-transition:opacity 175ms;transition:opacity 175ms}.timepicker-canvas line{stroke:#26a69a;stroke-width:4;stroke-linecap:round}.timepicker-canvas-out{opacity:0.25}.timepicker-canvas-bearing{stroke:none;fill:#26a69a}.timepicker-canvas-bg{stroke:none;fill:#26a69a}.timepicker-footer{margin:0 auto;padding:5px 1rem;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.timepicker-clear{color:#F44336}.timepicker-close{color:#26a69a}.timepicker-clear,.timepicker-close{padding:0 20px}@media only screen and (min-width: 601px){.timepicker-modal{max-width:600px}.timepicker-container.modal-content{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.timepicker-text-container{top:32%}.timepicker-display-am-pm{position:relative;right:auto;bottom:auto;text-align:center;margin-top:1.2rem}} diff --git a/assets/css/styles.css b/src/assets/css/styles.css similarity index 100% rename from assets/css/styles.css rename to src/assets/css/styles.css diff --git a/assets/favicon.16x16.png b/src/assets/favicon.16x16.png similarity index 100% rename from assets/favicon.16x16.png rename to src/assets/favicon.16x16.png diff --git a/assets/favicon.256x256.png b/src/assets/favicon.256x256.png similarity index 100% rename from assets/favicon.256x256.png rename to src/assets/favicon.256x256.png diff --git a/assets/favicon.512x512.png b/src/assets/favicon.512x512.png similarity index 100% rename from assets/favicon.512x512.png rename to src/assets/favicon.512x512.png diff --git a/assets/favicon.icns b/src/assets/favicon.icns similarity index 100% rename from assets/favicon.icns rename to src/assets/favicon.icns diff --git a/assets/favicon.ico b/src/assets/favicon.ico similarity index 100% rename from assets/favicon.ico rename to src/assets/favicon.ico diff --git a/assets/favicon.png b/src/assets/favicon.png similarity index 100% rename from assets/favicon.png rename to src/assets/favicon.png diff --git a/assets/favicon_pause.icns b/src/assets/favicon_pause.icns similarity index 100% rename from assets/favicon_pause.icns rename to src/assets/favicon_pause.icns diff --git a/assets/favicon_pause.ico b/src/assets/favicon_pause.ico similarity index 100% rename from assets/favicon_pause.ico rename to src/assets/favicon_pause.ico diff --git a/assets/favicon_pause.png b/src/assets/favicon_pause.png similarity index 100% rename from assets/favicon_pause.png rename to src/assets/favicon_pause.png diff --git a/assets/favicon_play.icns b/src/assets/favicon_play.icns similarity index 100% rename from assets/favicon_play.icns rename to src/assets/favicon_play.icns diff --git a/assets/favicon_play.ico b/src/assets/favicon_play.ico similarity index 100% rename from assets/favicon_play.ico rename to src/assets/favicon_play.ico diff --git a/assets/favicon_play.png b/src/assets/favicon_play.png similarity index 100% rename from assets/favicon_play.png rename to src/assets/favicon_play.png diff --git a/assets/fonts/normal.woff2 b/src/assets/fonts/normal.woff2 similarity index 100% rename from assets/fonts/normal.woff2 rename to src/assets/fonts/normal.woff2 diff --git a/assets/fonts/outlined.woff2 b/src/assets/fonts/outlined.woff2 similarity index 100% rename from assets/fonts/outlined.woff2 rename to src/assets/fonts/outlined.woff2 diff --git a/assets/img/controls/pause-button.png b/src/assets/img/controls/pause-button.png similarity index 100% rename from assets/img/controls/pause-button.png rename to src/assets/img/controls/pause-button.png diff --git a/assets/img/controls/pause-button.psd b/src/assets/img/controls/pause-button.psd similarity index 100% rename from assets/img/controls/pause-button.psd rename to src/assets/img/controls/pause-button.psd diff --git a/assets/img/controls/play-button.png b/src/assets/img/controls/play-button.png similarity index 100% rename from assets/img/controls/play-button.png rename to src/assets/img/controls/play-button.png diff --git a/assets/img/controls/play-button.psd b/src/assets/img/controls/play-button.psd similarity index 100% rename from assets/img/controls/play-button.psd rename to src/assets/img/controls/play-button.psd diff --git a/assets/img/controls/play-next-button.png b/src/assets/img/controls/play-next-button.png similarity index 100% rename from assets/img/controls/play-next-button.png rename to src/assets/img/controls/play-next-button.png diff --git a/assets/img/controls/play-next-button.psd b/src/assets/img/controls/play-next-button.psd similarity index 100% rename from assets/img/controls/play-next-button.psd rename to src/assets/img/controls/play-next-button.psd diff --git a/assets/img/controls/play-previous-button.png b/src/assets/img/controls/play-previous-button.png similarity index 100% rename from assets/img/controls/play-previous-button.png rename to src/assets/img/controls/play-previous-button.png diff --git a/assets/img/controls/play-previous-button.psd b/src/assets/img/controls/play-previous-button.psd similarity index 100% rename from assets/img/controls/play-previous-button.psd rename to src/assets/img/controls/play-previous-button.psd diff --git a/assets/img/controls/thumbs-down-button-outline.png b/src/assets/img/controls/thumbs-down-button-outline.png similarity index 100% rename from assets/img/controls/thumbs-down-button-outline.png rename to src/assets/img/controls/thumbs-down-button-outline.png diff --git a/assets/img/controls/thumbs-down-button-outline.psd b/src/assets/img/controls/thumbs-down-button-outline.psd similarity index 100% rename from assets/img/controls/thumbs-down-button-outline.psd rename to src/assets/img/controls/thumbs-down-button-outline.psd diff --git a/assets/img/controls/thumbs-down-button.png b/src/assets/img/controls/thumbs-down-button.png similarity index 100% rename from assets/img/controls/thumbs-down-button.png rename to src/assets/img/controls/thumbs-down-button.png diff --git a/assets/img/controls/thumbs-down-button.psd b/src/assets/img/controls/thumbs-down-button.psd similarity index 100% rename from assets/img/controls/thumbs-down-button.psd rename to src/assets/img/controls/thumbs-down-button.psd diff --git a/assets/img/controls/thumbs-up-button-outline.png b/src/assets/img/controls/thumbs-up-button-outline.png similarity index 100% rename from assets/img/controls/thumbs-up-button-outline.png rename to src/assets/img/controls/thumbs-up-button-outline.png diff --git a/assets/img/controls/thumbs-up-button-outline.psd b/src/assets/img/controls/thumbs-up-button-outline.psd similarity index 100% rename from assets/img/controls/thumbs-up-button-outline.psd rename to src/assets/img/controls/thumbs-up-button-outline.psd diff --git a/assets/img/controls/thumbs-up-button.png b/src/assets/img/controls/thumbs-up-button.png similarity index 100% rename from assets/img/controls/thumbs-up-button.png rename to src/assets/img/controls/thumbs-up-button.png diff --git a/assets/img/controls/thumbs-up-button.psd b/src/assets/img/controls/thumbs-up-button.psd similarity index 100% rename from assets/img/controls/thumbs-up-button.psd rename to src/assets/img/controls/thumbs-up-button.psd diff --git a/assets/img/null.png b/src/assets/img/null.png similarity index 100% rename from assets/img/null.png rename to src/assets/img/null.png diff --git a/src/assets/js/materialize.min.js b/src/assets/js/materialize.min.js new file mode 100644 index 000000000..840b4cd97 --- /dev/null +++ b/src/assets/js/materialize.min.js @@ -0,0 +1,12335 @@ +/*! + * Materialize v1.0.0 (http://materializecss.com) + * Copyright 2014-2017 Materialize + * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE) + */ +var _get = function t(e, i, n) { + null === e && (e = Function.prototype) + var s = Object.getOwnPropertyDescriptor(e, i) + if (void 0 === s) { + var o = Object.getPrototypeOf(e) + return null === o ? void 0 : t(o, i, n) + } + if ('value' in s) return s.value + var a = s.get + return void 0 !== a ? a.call(n) : void 0 + }, + _createClass = (function() { + function n(t, e) { + for (var i = 0; i < e.length; i++) { + var n = e[i] + ;(n.enumerable = n.enumerable || !1), + (n.configurable = !0), + 'value' in n && (n.writable = !0), + Object.defineProperty(t, n.key, n) + } + } + return function(t, e, i) { + return e && n(t.prototype, e), i && n(t, i), t + } + })() +function _possibleConstructorReturn(t, e) { + if (!t) + throw new ReferenceError( + "this hasn't been initialised - super() hasn't been called" + ) + return !e || ('object' != typeof e && 'function' != typeof e) ? t : e +} +function _inherits(t, e) { + if ('function' != typeof e && null !== e) + throw new TypeError( + 'Super expression must either be null or a function, not ' + + typeof e + ) + ;(t.prototype = Object.create(e && e.prototype, { + constructor: { + value: t, + enumerable: !1, + writable: !0, + configurable: !0, + }, + })), + e && + (Object.setPrototypeOf + ? Object.setPrototypeOf(t, e) + : (t.__proto__ = e)) +} +function _classCallCheck(t, e) { + if (!(t instanceof e)) + throw new TypeError('Cannot call a class as a function') +} +window.cash = (function() { + var i, + o = document, + a = window, + t = Array.prototype, + r = t.slice, + n = t.filter, + s = t.push, + e = function() {}, + h = function(t) { + return typeof t == typeof e && t.call + }, + d = function(t) { + return 'string' == typeof t + }, + l = /^#[\w-]*$/, + u = /^\.[\w-]*$/, + c = /<.+>/, + p = /^\w+$/ + function v(t, e) { + e = e || o + var i = u.test(t) + ? e.getElementsByClassName(t.slice(1)) + : p.test(t) + ? e.getElementsByTagName(t) + : e.querySelectorAll(t) + return i + } + function f(t) { + if (!i) { + var e = (i = o.implementation.createHTMLDocument( + null + )).createElement('base') + ;(e.href = o.location.href), i.head.appendChild(e) + } + return (i.body.innerHTML = t), i.body.childNodes + } + function m(t) { + 'loading' !== o.readyState + ? t() + : o.addEventListener('DOMContentLoaded', t) + } + function g(t, e) { + if (!t) return this + if (t.cash && t !== a) return t + var i, + n = t, + s = 0 + if (d(t)) + n = l.test(t) + ? o.getElementById(t.slice(1)) + : c.test(t) + ? f(t) + : v(t, e) + else if (h(t)) return m(t), this + if (!n) return this + if (n.nodeType || n === a) (this[0] = n), (this.length = 1) + else for (i = this.length = n.length; s < i; s++) this[s] = n[s] + return this + } + function _(t, e) { + return new g(t, e) + } + var y = (_.fn = _.prototype = g.prototype = { + cash: !0, + length: 0, + push: s, + splice: t.splice, + map: t.map, + init: g, + }) + function k(t, e) { + for ( + var i = t.length, n = 0; + n < i && !1 !== e.call(t[n], t[n], n, t); + n++ + ); + } + function b(t, e) { + var i = + t && + (t.matches || + t.webkitMatchesSelector || + t.mozMatchesSelector || + t.msMatchesSelector || + t.oMatchesSelector) + return !!i && i.call(t, e) + } + function w(e) { + return d(e) + ? b + : e.cash + ? function(t) { + return e.is(t) + } + : function(t, e) { + return t === e + } + } + function C(t) { + return _( + r.call(t).filter(function(t, e, i) { + return i.indexOf(t) === e + }) + ) + } + Object.defineProperty(y, 'constructor', { value: _ }), + (_.parseHTML = f), + (_.noop = e), + (_.isFunction = h), + (_.isString = d), + (_.extend = y.extend = function(t) { + t = t || {} + var e = r.call(arguments), + i = e.length, + n = 1 + for (1 === e.length && ((t = this), (n = 0)); n < i; n++) + if (e[n]) + for (var s in e[n]) + e[n].hasOwnProperty(s) && (t[s] = e[n][s]) + return t + }), + _.extend({ + merge: function(t, e) { + for (var i = +e.length, n = t.length, s = 0; s < i; n++, s++) + t[n] = e[s] + return (t.length = n), t + }, + each: k, + matches: b, + unique: C, + isArray: Array.isArray, + isNumeric: function(t) { + return !isNaN(parseFloat(t)) && isFinite(t) + }, + }) + var E = (_.uid = '_cash' + Date.now()) + function M(t) { + return (t[E] = t[E] || {}) + } + function O(t, e, i) { + return (M(t)[e] = i) + } + function x(t, e) { + var i = M(t) + return ( + void 0 === i[e] && + (i[e] = t.dataset ? t.dataset[e] : _(t).attr('data-' + e)), + i[e] + ) + } + y.extend({ + data: function(e, i) { + if (d(e)) + return void 0 === i + ? x(this[0], e) + : this.each(function(t) { + return O(t, e, i) + }) + for (var t in e) this.data(t, e[t]) + return this + }, + removeData: function(s) { + return this.each(function(t) { + return ( + (i = s), + void ((n = M((e = t))) + ? delete n[i] + : e.dataset + ? delete e.dataset[i] + : _(e).removeAttr('data-' + name)) + ) + var e, i, n + }) + }, + }) + var L = /\S+/g + function T(t) { + return d(t) && t.match(L) + } + function $(t, e) { + return t.classList + ? t.classList.contains(e) + : new RegExp('(^| )' + e + '( |$)', 'gi').test(t.className) + } + function B(t, e, i) { + t.classList + ? t.classList.add(e) + : i.indexOf(' ' + e + ' ') && (t.className += ' ' + e) + } + function D(t, e) { + t.classList + ? t.classList.remove(e) + : (t.className = t.className.replace(e, '')) + } + y.extend({ + addClass: function(t) { + var n = T(t) + return n + ? this.each(function(e) { + var i = ' ' + e.className + ' ' + k(n, function(t) { + B(e, t, i) + }) + }) + : this + }, + attr: function(e, i) { + if (e) { + if (d(e)) + return void 0 === i + ? this[0] + ? this[0].getAttribute + ? this[0].getAttribute(e) + : this[0][e] + : void 0 + : this.each(function(t) { + t.setAttribute ? t.setAttribute(e, i) : (t[e] = i) + }) + for (var t in e) this.attr(t, e[t]) + return this + } + }, + hasClass: function(t) { + var e = !1, + i = T(t) + return ( + i && + i.length && + this.each(function(t) { + return !(e = $(t, i[0])) + }), + e + ) + }, + prop: function(e, i) { + if (d(e)) + return void 0 === i + ? this[0][e] + : this.each(function(t) { + t[e] = i + }) + for (var t in e) this.prop(t, e[t]) + return this + }, + removeAttr: function(e) { + return this.each(function(t) { + t.removeAttribute ? t.removeAttribute(e) : delete t[e] + }) + }, + removeClass: function(t) { + if (!arguments.length) return this.attr('class', '') + var i = T(t) + return i + ? this.each(function(e) { + k(i, function(t) { + D(e, t) + }) + }) + : this + }, + removeProp: function(e) { + return this.each(function(t) { + delete t[e] + }) + }, + toggleClass: function(t, e) { + if (void 0 !== e) return this[e ? 'addClass' : 'removeClass'](t) + var n = T(t) + return n + ? this.each(function(e) { + var i = ' ' + e.className + ' ' + k(n, function(t) { + $(e, t) ? D(e, t) : B(e, t, i) + }) + }) + : this + }, + }), + y.extend({ + add: function(t, e) { + return C(_.merge(this, _(t, e))) + }, + each: function(t) { + return k(this, t), this + }, + eq: function(t) { + return _(this.get(t)) + }, + filter: function(e) { + if (!e) return this + var i = h(e) ? e : w(e) + return _( + n.call(this, function(t) { + return i(t, e) + }) + ) + }, + first: function() { + return this.eq(0) + }, + get: function(t) { + return void 0 === t + ? r.call(this) + : t < 0 + ? this[t + this.length] + : this[t] + }, + index: function(t) { + var e = t ? _(t)[0] : this[0], + i = t + ? this + : _(e) + .parent() + .children() + return r.call(i).indexOf(e) + }, + last: function() { + return this.eq(-1) + }, + }) + var S, + I, + A, + R, + H, + P, + W = + ((H = /(?:^\w|[A-Z]|\b\w)/g), + (P = /[\s-_]+/g), + function(t) { + return t + .replace(H, function(t, e) { + return t[0 === e ? 'toLowerCase' : 'toUpperCase']() + }) + .replace(P, '') + }), + j = + ((S = {}), + (I = document), + (A = I.createElement('div')), + (R = A.style), + function(e) { + if (((e = W(e)), S[e])) return S[e] + var t = e.charAt(0).toUpperCase() + e.slice(1), + i = ( + e + + ' ' + + ['webkit', 'moz', 'ms', 'o'].join(t + ' ') + + t + ).split(' ') + return ( + k(i, function(t) { + if (t in R) return (S[t] = e = S[e] = t), !1 + }), + S[e] + ) + }) + function F(t, e) { + return parseInt(a.getComputedStyle(t[0], null)[e], 10) || 0 + } + function q(e, i, t) { + var n, + s = x(e, '_cashEvents'), + o = s && s[i] + o && + (t + ? (e.removeEventListener(i, t), + 0 <= (n = o.indexOf(t)) && o.splice(n, 1)) + : (k(o, function(t) { + e.removeEventListener(i, t) + }), + (o = []))) + } + function N(t, e) { + return ( + '&' + + encodeURIComponent(t) + + '=' + + encodeURIComponent(e).replace(/%20/g, '+') + ) + } + function z(t) { + var e, + i, + n, + s = t.type + if (!s) return null + switch (s.toLowerCase()) { + case 'select-one': + return 0 <= (n = (i = t).selectedIndex) + ? i.options[n].value + : null + case 'select-multiple': + return ( + (e = []), + k(t.options, function(t) { + t.selected && e.push(t.value) + }), + e.length ? e : null + ) + case 'radio': + case 'checkbox': + return t.checked ? t.value : null + default: + return t.value ? t.value : null + } + } + function V(e, i, n) { + var t = d(i) + t || !i.length + ? k( + e, + t + ? function(t) { + return t.insertAdjacentHTML( + n ? 'afterbegin' : 'beforeend', + i + ) + } + : function(t, e) { + return (function(t, e, i) { + if (i) { + var n = t.childNodes[0] + t.insertBefore(e, n) + } else t.appendChild(e) + })(t, 0 === e ? i : i.cloneNode(!0), n) + } + ) + : k(i, function(t) { + return V(e, t, n) + }) + } + ;(_.prefixedProp = j), + (_.camelCase = W), + y.extend({ + css: function(e, i) { + if (d(e)) + return ( + (e = j(e)), + 1 < arguments.length + ? this.each(function(t) { + return (t.style[e] = i) + }) + : a.getComputedStyle(this[0])[e] + ) + for (var t in e) this.css(t, e[t]) + return this + }, + }), + k(['Width', 'Height'], function(e) { + var t = e.toLowerCase() + ;(y[t] = function() { + return this[0].getBoundingClientRect()[t] + }), + (y['inner' + e] = function() { + return this[0]['client' + e] + }), + (y['outer' + e] = function(t) { + return ( + this[0]['offset' + e] + + (t + ? F( + this, + 'margin' + ('Width' === e ? 'Left' : 'Top') + ) + + F( + this, + 'margin' + + ('Width' === e ? 'Right' : 'Bottom') + ) + : 0) + ) + }) + }), + y.extend({ + off: function(e, i) { + return this.each(function(t) { + return q(t, e, i) + }) + }, + on: function(a, i, r, l) { + var n + if (!d(a)) { + for (var t in a) this.on(t, i, a[t]) + return this + } + return ( + h(i) && ((r = i), (i = null)), + 'ready' === a + ? (m(r), this) + : (i && + ((n = r), + (r = function(t) { + for (var e = t.target; !b(e, i); ) { + if (e === this || null === e) + return (e = !1) + e = e.parentNode + } + e && n.call(e, t) + })), + this.each(function(t) { + var e, + i, + n, + s, + o = r + l && + (o = function() { + r.apply(this, arguments), q(t, a, o) + }), + (i = a), + (n = o), + ((s = + x((e = t), '_cashEvents') || + O(e, '_cashEvents', {}))[i] = s[i] || []), + s[i].push(n), + e.addEventListener(i, n) + })) + ) + }, + one: function(t, e, i) { + return this.on(t, e, i, !0) + }, + ready: m, + trigger: function(t, e) { + if (document.createEvent) { + var i = document.createEvent('HTMLEvents') + return ( + i.initEvent(t, !0, !1), + (i = this.extend(i, e)), + this.each(function(t) { + return t.dispatchEvent(i) + }) + ) + } + }, + }), + y.extend({ + serialize: function() { + var s = '' + return ( + k(this[0].elements || this, function(t) { + if (!t.disabled && 'FIELDSET' !== t.tagName) { + var e = t.name + switch (t.type.toLowerCase()) { + case 'file': + case 'reset': + case 'submit': + case 'button': + break + case 'select-multiple': + var i = z(t) + null !== i && + k(i, function(t) { + s += N(e, t) + }) + break + default: + var n = z(t) + null !== n && (s += N(e, n)) + } + } + }), + s.substr(1) + ) + }, + val: function(e) { + return void 0 === e + ? z(this[0]) + : this.each(function(t) { + return (t.value = e) + }) + }, + }), + y.extend({ + after: function(t) { + return _(t).insertAfter(this), this + }, + append: function(t) { + return V(this, t), this + }, + appendTo: function(t) { + return V(_(t), this), this + }, + before: function(t) { + return _(t).insertBefore(this), this + }, + clone: function() { + return _( + this.map(function(t) { + return t.cloneNode(!0) + }) + ) + }, + empty: function() { + return this.html(''), this + }, + html: function(t) { + if (void 0 === t) return this[0].innerHTML + var e = t.nodeType ? t[0].outerHTML : t + return this.each(function(t) { + return (t.innerHTML = e) + }) + }, + insertAfter: function(t) { + var s = this + return ( + _(t).each(function(t, e) { + var i = t.parentNode, + n = t.nextSibling + s.each(function(t) { + i.insertBefore(0 === e ? t : t.cloneNode(!0), n) + }) + }), + this + ) + }, + insertBefore: function(t) { + var s = this + return ( + _(t).each(function(e, i) { + var n = e.parentNode + s.each(function(t) { + n.insertBefore(0 === i ? t : t.cloneNode(!0), e) + }) + }), + this + ) + }, + prepend: function(t) { + return V(this, t, !0), this + }, + prependTo: function(t) { + return V(_(t), this, !0), this + }, + remove: function() { + return this.each(function(t) { + if (t.parentNode) return t.parentNode.removeChild(t) + }) + }, + text: function(e) { + return void 0 === e + ? this[0].textContent + : this.each(function(t) { + return (t.textContent = e) + }) + }, + }) + var X = o.documentElement + return ( + y.extend({ + position: function() { + var t = this[0] + return { left: t.offsetLeft, top: t.offsetTop } + }, + offset: function() { + var t = this[0].getBoundingClientRect() + return { + top: t.top + a.pageYOffset - X.clientTop, + left: t.left + a.pageXOffset - X.clientLeft, + } + }, + offsetParent: function() { + return _(this[0].offsetParent) + }, + }), + y.extend({ + children: function(e) { + var i = [] + return ( + this.each(function(t) { + s.apply(i, t.children) + }), + (i = C(i)), + e + ? i.filter(function(t) { + return b(t, e) + }) + : i + ) + }, + closest: function(t) { + return !t || this.length < 1 + ? _() + : this.is(t) + ? this.filter(t) + : this.parent().closest(t) + }, + is: function(e) { + if (!e) return !1 + var i = !1, + n = w(e) + return ( + this.each(function(t) { + return !(i = n(t, e)) + }), + i + ) + }, + find: function(e) { + if (!e || e.nodeType) + return _(e && this.has(e).length ? e : null) + var i = [] + return ( + this.each(function(t) { + s.apply(i, v(e, t)) + }), + C(i) + ) + }, + has: function(e) { + var t = d(e) + ? function(t) { + return 0 !== v(e, t).length + } + : function(t) { + return t.contains(e) + } + return this.filter(t) + }, + next: function() { + return _(this[0].nextElementSibling) + }, + not: function(e) { + if (!e) return this + var i = w(e) + return this.filter(function(t) { + return !i(t, e) + }) + }, + parent: function() { + var e = [] + return ( + this.each(function(t) { + t && t.parentNode && e.push(t.parentNode) + }), + C(e) + ) + }, + parents: function(e) { + var i, + n = [] + return ( + this.each(function(t) { + for ( + i = t; + i && i.parentNode && i !== o.body.parentNode; + + ) + (i = i.parentNode), + (!e || (e && b(i, e))) && n.push(i) + }), + C(n) + ) + }, + prev: function() { + return _(this[0].previousElementSibling) + }, + siblings: function(t) { + var e = this.parent().children(t), + i = this[0] + return e.filter(function(t) { + return t !== i + }) + }, + }), + _ + ) +})() +var Component = (function() { + function s(t, e, i) { + _classCallCheck(this, s), + e instanceof Element || + console.error(Error(e + ' is not an HTML Element')) + var n = t.getInstance(e) + n && n.destroy(), (this.el = e), (this.$el = cash(e)) + } + return ( + _createClass(s, null, [ + { + key: 'init', + value: function(t, e, i) { + var n = null + if (e instanceof Element) n = new t(e, i) + else if ( + e && + (e.jquery || e.cash || e instanceof NodeList) + ) { + for (var s = [], o = 0; o < e.length; o++) + s.push(new t(e[o], i)) + n = s + } + return n + }, + }, + ]), + s + ) +})() +!(function(t) { + t.Package ? (M = {}) : (t.M = {}), (M.jQueryLoaded = !!t.jQuery) +})(window), + 'function' == typeof define && define.amd + ? define('M', [], function() { + return M + }) + : 'undefined' == typeof exports || + exports.nodeType || + ('undefined' != typeof module && + !module.nodeType && + module.exports && + (exports = module.exports = M), + (exports.default = M)), + (M.version = '1.0.0'), + (M.keys = { TAB: 9, ENTER: 13, ESC: 27, ARROW_UP: 38, ARROW_DOWN: 40 }), + (M.tabPressed = !1), + (M.keyDown = !1) +var docHandleKeydown = function(t) { + ;(M.keyDown = !0), + (t.which !== M.keys.TAB && + t.which !== M.keys.ARROW_DOWN && + t.which !== M.keys.ARROW_UP) || + (M.tabPressed = !0) + }, + docHandleKeyup = function(t) { + ;(M.keyDown = !1), + (t.which !== M.keys.TAB && + t.which !== M.keys.ARROW_DOWN && + t.which !== M.keys.ARROW_UP) || + (M.tabPressed = !1) + }, + docHandleFocus = function(t) { + M.keyDown && document.body.classList.add('keyboard-focused') + }, + docHandleBlur = function(t) { + document.body.classList.remove('keyboard-focused') + } +document.addEventListener('keydown', docHandleKeydown, !0), + document.addEventListener('keyup', docHandleKeyup, !0), + document.addEventListener('focus', docHandleFocus, !0), + document.addEventListener('blur', docHandleBlur, !0), + (M.initializeJqueryWrapper = function(n, s, o) { + jQuery.fn[s] = function(e) { + if (n.prototype[e]) { + var i = Array.prototype.slice.call(arguments, 1) + if ('get' === e.slice(0, 3)) { + var t = this.first()[0][o] + return t[e].apply(t, i) + } + return this.each(function() { + var t = this[o] + t[e].apply(t, i) + }) + } + if ('object' == typeof e || !e) return n.init(this, e), this + jQuery.error('Method ' + e + ' does not exist on jQuery.' + s) + } + }), + (M.AutoInit = function(t) { + var e = t || document.body, + i = { + Autocomplete: e.querySelectorAll( + '.autocomplete:not(.no-autoinit)' + ), + Carousel: e.querySelectorAll('.carousel:not(.no-autoinit)'), + Chips: e.querySelectorAll('.chips:not(.no-autoinit)'), + Collapsible: e.querySelectorAll( + '.collapsible:not(.no-autoinit)' + ), + Datepicker: e.querySelectorAll('.datepicker:not(.no-autoinit)'), + Dropdown: e.querySelectorAll( + '.dropdown-trigger:not(.no-autoinit)' + ), + Materialbox: e.querySelectorAll( + '.materialboxed:not(.no-autoinit)' + ), + Modal: e.querySelectorAll('.modal:not(.no-autoinit)'), + Parallax: e.querySelectorAll('.parallax:not(.no-autoinit)'), + Pushpin: e.querySelectorAll('.pushpin:not(.no-autoinit)'), + ScrollSpy: e.querySelectorAll('.scrollspy:not(.no-autoinit)'), + FormSelect: e.querySelectorAll('select:not(.no-autoinit)'), + Sidenav: e.querySelectorAll('.sidenav:not(.no-autoinit)'), + Tabs: e.querySelectorAll('.tabs:not(.no-autoinit)'), + TapTarget: e.querySelectorAll('.tap-target:not(.no-autoinit)'), + Timepicker: e.querySelectorAll('.timepicker:not(.no-autoinit)'), + Tooltip: e.querySelectorAll('.tooltipped:not(.no-autoinit)'), + FloatingActionButton: e.querySelectorAll( + '.fixed-action-btn:not(.no-autoinit)' + ), + } + for (var n in i) { + M[n].init(i[n]) + } + }), + (M.objectSelectorString = function(t) { + return ( + (t.prop('tagName') || '') + + (t.attr('id') || '') + + (t.attr('class') || '') + ).replace(/\s/g, '') + }), + (M.guid = (function() { + function t() { + return Math.floor(65536 * (1 + Math.random())) + .toString(16) + .substring(1) + } + return function() { + return ( + t() + + t() + + '-' + + t() + + '-' + + t() + + '-' + + t() + + '-' + + t() + + t() + + t() + ) + } + })()), + (M.escapeHash = function(t) { + return t.replace(/(:|\.|\[|\]|,|=|\/)/g, '\\$1') + }), + (M.elementOrParentIsFixed = function(t) { + var e = $(t), + i = e.add(e.parents()), + n = !1 + return ( + i.each(function() { + if ('fixed' === $(this).css('position')) return !(n = !0) + }), + n + ) + }), + (M.checkWithinContainer = function(t, e, i) { + var n = { top: !1, right: !1, bottom: !1, left: !1 }, + s = t.getBoundingClientRect(), + o = + t === document.body + ? Math.max(s.bottom, window.innerHeight) + : s.bottom, + a = t.scrollLeft, + r = t.scrollTop, + l = e.left - a, + h = e.top - r + return ( + (l < s.left + i || l < i) && (n.left = !0), + (l + e.width > s.right - i || + l + e.width > window.innerWidth - i) && + (n.right = !0), + (h < s.top + i || h < i) && (n.top = !0), + (h + e.height > o - i || h + e.height > window.innerHeight - i) && + (n.bottom = !0), + n + ) + }), + (M.checkPossibleAlignments = function(t, e, i, n) { + var s = { + top: !0, + right: !0, + bottom: !0, + left: !0, + spaceOnTop: null, + spaceOnRight: null, + spaceOnBottom: null, + spaceOnLeft: null, + }, + o = 'visible' === getComputedStyle(e).overflow, + a = e.getBoundingClientRect(), + r = Math.min(a.height, window.innerHeight), + l = Math.min(a.width, window.innerWidth), + h = t.getBoundingClientRect(), + d = e.scrollLeft, + u = e.scrollTop, + c = i.left - d, + p = i.top - u, + v = i.top + h.height - u + return ( + (s.spaceOnRight = o + ? window.innerWidth - (h.left + i.width) + : l - (c + i.width)), + s.spaceOnRight < 0 && (s.left = !1), + (s.spaceOnLeft = o ? h.right - i.width : c - i.width + h.width), + s.spaceOnLeft < 0 && (s.right = !1), + (s.spaceOnBottom = o + ? window.innerHeight - (h.top + i.height + n) + : r - (p + i.height + n)), + s.spaceOnBottom < 0 && (s.top = !1), + (s.spaceOnTop = o ? h.bottom - (i.height + n) : v - (i.height - n)), + s.spaceOnTop < 0 && (s.bottom = !1), + s + ) + }), + (M.getOverflowParent = function(t) { + return null == t + ? null + : t === document.body || 'visible' !== getComputedStyle(t).overflow + ? t + : M.getOverflowParent(t.parentElement) + }), + (M.getIdFromTrigger = function(t) { + var e = t.getAttribute('data-target') + return e || (e = (e = t.getAttribute('href')) ? e.slice(1) : ''), e + }), + (M.getDocumentScrollTop = function() { + return ( + window.pageYOffset || + document.documentElement.scrollTop || + document.body.scrollTop || + 0 + ) + }), + (M.getDocumentScrollLeft = function() { + return ( + window.pageXOffset || + document.documentElement.scrollLeft || + document.body.scrollLeft || + 0 + ) + }) +var getTime = + Date.now || + function() { + return new Date().getTime() + } +M.throttle = function(i, n, s) { + var o = void 0, + a = void 0, + r = void 0, + l = null, + h = 0 + s || (s = {}) + var d = function() { + ;(h = !1 === s.leading ? 0 : getTime()), + (l = null), + (r = i.apply(o, a)), + (o = a = null) + } + return function() { + var t = getTime() + h || !1 !== s.leading || (h = t) + var e = n - (t - h) + return ( + (o = this), + (a = arguments), + e <= 0 + ? (clearTimeout(l), + (l = null), + (h = t), + (r = i.apply(o, a)), + (o = a = null)) + : l || !1 === s.trailing || (l = setTimeout(d, e)), + r + ) + } +} +var $jscomp = { scope: {} } +;($jscomp.defineProperty = + 'function' == typeof Object.defineProperties + ? Object.defineProperty + : function(t, e, i) { + if (i.get || i.set) + throw new TypeError( + 'ES3 does not support getters and setters.' + ) + t != Array.prototype && t != Object.prototype && (t[e] = i.value) + }), + ($jscomp.getGlobal = function(t) { + return 'undefined' != typeof window && window === t + ? t + : 'undefined' != typeof global && null != global + ? global + : t + }), + ($jscomp.global = $jscomp.getGlobal(this)), + ($jscomp.SYMBOL_PREFIX = 'jscomp_symbol_'), + ($jscomp.initSymbol = function() { + ;($jscomp.initSymbol = function() {}), + $jscomp.global.Symbol || ($jscomp.global.Symbol = $jscomp.Symbol) + }), + ($jscomp.symbolCounter_ = 0), + ($jscomp.Symbol = function(t) { + return $jscomp.SYMBOL_PREFIX + (t || '') + $jscomp.symbolCounter_++ + }), + ($jscomp.initSymbolIterator = function() { + $jscomp.initSymbol() + var t = $jscomp.global.Symbol.iterator + t || + (t = $jscomp.global.Symbol.iterator = $jscomp.global.Symbol( + 'iterator' + )), + 'function' != typeof Array.prototype[t] && + $jscomp.defineProperty(Array.prototype, t, { + configurable: !0, + writable: !0, + value: function() { + return $jscomp.arrayIterator(this) + }, + }), + ($jscomp.initSymbolIterator = function() {}) + }), + ($jscomp.arrayIterator = function(t) { + var e = 0 + return $jscomp.iteratorPrototype(function() { + return e < t.length ? { done: !1, value: t[e++] } : { done: !0 } + }) + }), + ($jscomp.iteratorPrototype = function(t) { + return ( + $jscomp.initSymbolIterator(), + ((t = { next: t })[$jscomp.global.Symbol.iterator] = function() { + return this + }), + t + ) + }), + ($jscomp.array = $jscomp.array || {}), + ($jscomp.iteratorFromArray = function(e, i) { + $jscomp.initSymbolIterator(), e instanceof String && (e += '') + var n = 0, + s = { + next: function() { + if (n < e.length) { + var t = n++ + return { value: i(t, e[t]), done: !1 } + } + return ( + (s.next = function() { + return { done: !0, value: void 0 } + }), + s.next() + ) + }, + } + return ( + (s[Symbol.iterator] = function() { + return s + }), + s + ) + }), + ($jscomp.polyfill = function(t, e, i, n) { + if (e) { + for ( + i = $jscomp.global, t = t.split('.'), n = 0; + n < t.length - 1; + n++ + ) { + var s = t[n] + s in i || (i[s] = {}), (i = i[s]) + } + ;(e = e((n = i[(t = t[t.length - 1])]))) != n && + null != e && + $jscomp.defineProperty(i, t, { + configurable: !0, + writable: !0, + value: e, + }) + } + }), + $jscomp.polyfill( + 'Array.prototype.keys', + function(t) { + return ( + t || + function() { + return $jscomp.iteratorFromArray(this, function(t) { + return t + }) + } + ) + }, + 'es6-impl', + 'es3' + ) +var $jscomp$this = this +;(M.anime = (function() { + function s(t) { + if (!B.col(t)) + try { + return document.querySelectorAll(t) + } catch (t) {} + } + function b(t, e) { + for ( + var i = t.length, + n = 2 <= arguments.length ? e : void 0, + s = [], + o = 0; + o < i; + o++ + ) + if (o in t) { + var a = t[o] + e.call(n, a, o, t) && s.push(a) + } + return s + } + function d(t) { + return t.reduce(function(t, e) { + return t.concat(B.arr(e) ? d(e) : e) + }, []) + } + function o(t) { + return B.arr(t) + ? t + : (B.str(t) && (t = s(t) || t), + t instanceof NodeList || t instanceof HTMLCollection + ? [].slice.call(t) + : [t]) + } + function a(t, e) { + return t.some(function(t) { + return t === e + }) + } + function r(t) { + var e, + i = {} + for (e in t) i[e] = t[e] + return i + } + function u(t, e) { + var i, + n = r(t) + for (i in t) n[i] = e.hasOwnProperty(i) ? e[i] : t[i] + return n + } + function c(t, e) { + var i, + n = r(t) + for (i in e) n[i] = B.und(t[i]) ? e[i] : t[i] + return n + } + function l(t) { + if ( + (t = /([\+\-]?[0-9#\.]+)(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec( + t + )) + ) + return t[2] + } + function h(t, e) { + return B.fnc(t) ? t(e.target, e.id, e.total) : t + } + function w(t, e) { + if (e in t.style) + return ( + getComputedStyle(t).getPropertyValue( + e.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase() + ) || '0' + ) + } + function p(t, e) { + return B.dom(t) && a($, e) + ? 'transform' + : B.dom(t) && (t.getAttribute(e) || (B.svg(t) && t[e])) + ? 'attribute' + : B.dom(t) && 'transform' !== e && w(t, e) + ? 'css' + : null != t[e] + ? 'object' + : void 0 + } + function v(t, e) { + switch (p(t, e)) { + case 'transform': + return (function(t, i) { + var e, + n = + -1 < (e = i).indexOf('translate') || + 'perspective' === e + ? 'px' + : -1 < e.indexOf('rotate') || + -1 < e.indexOf('skew') + ? 'deg' + : void 0, + n = -1 < i.indexOf('scale') ? 1 : 0 + n + if (!(t = t.style.transform)) return n + for ( + var s = [], o = [], a = [], r = /(\w+)\((.+?)\)/g; + (s = r.exec(t)); + + ) + o.push(s[1]), a.push(s[2]) + return (t = b(a, function(t, e) { + return o[e] === i + })).length + ? t[0] + : n + })(t, e) + case 'css': + return w(t, e) + case 'attribute': + return t.getAttribute(e) + } + return t[e] || 0 + } + function f(t, e) { + var i = /^(\*=|\+=|-=)/.exec(t) + if (!i) return t + var n = l(t) || 0 + switch ( + ((e = parseFloat(e)), + (t = parseFloat(t.replace(i[0], ''))), + i[0][0]) + ) { + case '+': + return e + t + n + case '-': + return e - t + n + case '*': + return e * t + n + } + } + function m(t, e) { + return Math.sqrt(Math.pow(e.x - t.x, 2) + Math.pow(e.y - t.y, 2)) + } + function i(t) { + t = t.points + for (var e, i = 0, n = 0; n < t.numberOfItems; n++) { + var s = t.getItem(n) + 0 < n && (i += m(e, s)), (e = s) + } + return i + } + function g(t) { + if (t.getTotalLength) return t.getTotalLength() + switch (t.tagName.toLowerCase()) { + case 'circle': + return 2 * Math.PI * t.getAttribute('r') + case 'rect': + return ( + 2 * t.getAttribute('width') + 2 * t.getAttribute('height') + ) + case 'line': + return m( + { x: t.getAttribute('x1'), y: t.getAttribute('y1') }, + { x: t.getAttribute('x2'), y: t.getAttribute('y2') } + ) + case 'polyline': + return i(t) + case 'polygon': + var e = t.points + return i(t) + m(e.getItem(e.numberOfItems - 1), e.getItem(0)) + } + } + function C(e, i) { + function t(t) { + return ( + (t = void 0 === t ? 0 : t), + e.el.getPointAtLength(1 <= i + t ? i + t : 0) + ) + } + var n = t(), + s = t(-1), + o = t(1) + switch (e.property) { + case 'x': + return n.x + case 'y': + return n.y + case 'angle': + return (180 * Math.atan2(o.y - s.y, o.x - s.x)) / Math.PI + } + } + function _(t, e) { + var i, + n = /-?\d*\.?\d+/g + if (((i = B.pth(t) ? t.totalLength : t), B.col(i))) + if (B.rgb(i)) { + var s = /rgb\((\d+,\s*[\d]+,\s*[\d]+)\)/g.exec(i) + i = s ? 'rgba(' + s[1] + ',1)' : i + } else + i = B.hex(i) + ? (function(t) { + t = t.replace( + /^#?([a-f\d])([a-f\d])([a-f\d])$/i, + function(t, e, i, n) { + return e + e + i + i + n + n + } + ) + var e = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec( + t + ) + t = parseInt(e[1], 16) + var i = parseInt(e[2], 16), + e = parseInt(e[3], 16) + return 'rgba(' + t + ',' + i + ',' + e + ',1)' + })(i) + : B.hsl(i) + ? (function(t) { + function e(t, e, i) { + return ( + i < 0 && (i += 1), + 1 < i && --i, + i < 1 / 6 + ? t + 6 * (e - t) * i + : i < 0.5 + ? e + : i < 2 / 3 + ? t + (e - t) * (2 / 3 - i) * 6 + : t + ) + } + var i = + /hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec( + t + ) || + /hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/g.exec( + t + ) + t = parseInt(i[1]) / 360 + var n = parseInt(i[2]) / 100, + s = parseInt(i[3]) / 100, + i = i[4] || 1 + if (0 == n) s = n = t = s + else { + var o = s < 0.5 ? s * (1 + n) : s + n - s * n, + a = 2 * s - o, + s = e(a, o, t + 1 / 3), + n = e(a, o, t) + t = e(a, o, t - 1 / 3) + } + return ( + 'rgba(' + + 255 * s + + ',' + + 255 * n + + ',' + + 255 * t + + ',' + + i + + ')' + ) + })(i) + : void 0 + else + (s = (s = l(i)) ? i.substr(0, i.length - s.length) : i), + (i = e && !/\s/g.test(i) ? s + e : s) + return { + original: (i += ''), + numbers: i.match(n) ? i.match(n).map(Number) : [0], + strings: B.str(t) || e ? i.split(n) : [], + } + } + function y(t) { + return b((t = t ? d(B.arr(t) ? t.map(o) : o(t)) : []), function( + t, + e, + i + ) { + return i.indexOf(t) === e + }) + } + function k(t, i) { + var e = r(i) + if (B.arr(t)) { + var n = t.length + 2 !== n || B.obj(t[0]) + ? B.fnc(i.duration) || (e.duration = i.duration / n) + : (t = { value: t }) + } + return o(t) + .map(function(t, e) { + return ( + (e = e ? 0 : i.delay), + (t = B.obj(t) && !B.pth(t) ? t : { value: t }), + B.und(t.delay) && (t.delay = e), + t + ) + }) + .map(function(t) { + return c(t, e) + }) + } + function E(o, a) { + var r + return o.tweens.map(function(t) { + var e = (t = (function(t, e) { + var i, + n = {} + for (i in t) { + var s = h(t[i], e) + B.arr(s) && + 1 === + (s = s.map(function(t) { + return h(t, e) + })).length && + (s = s[0]), + (n[i] = s) + } + return ( + (n.duration = parseFloat(n.duration)), + (n.delay = parseFloat(n.delay)), + n + ) + })(t, a)).value, + i = v(a.target, o.name), + n = r ? r.to.original : i, + n = B.arr(e) ? e[0] : n, + s = f(B.arr(e) ? e[1] : e, n), + i = l(s) || l(n) || l(i) + return ( + (t.from = _(n, i)), + (t.to = _(s, i)), + (t.start = r ? r.end : o.offset), + (t.end = t.start + t.delay + t.duration), + (t.easing = (function(t) { + return B.arr(t) ? D.apply(this, t) : S[t] + })(t.easing)), + (t.elasticity = + (1e3 - Math.min(Math.max(t.elasticity, 1), 999)) / 1e3), + (t.isPath = B.pth(e)), + (t.isColor = B.col(t.from.original)), + t.isColor && (t.round = 1), + (r = t) + ) + }) + } + function M(e, t, i, n) { + var s = 'delay' === e + return t.length + ? (s ? Math.min : Math.max).apply( + Math, + t.map(function(t) { + return t[e] + }) + ) + : s + ? n.delay + : i.offset + n.delay + n.duration + } + function n(t) { + var e, + i, + n, + s, + o = u(L, t), + a = u(T, t), + r = + ((i = t.targets), + (n = y(i)).map(function(t, e) { + return { target: t, id: e, total: n.length } + })), + l = [], + h = c(o, a) + for (e in t) + h.hasOwnProperty(e) || + 'targets' === e || + l.push({ name: e, offset: h.offset, tweens: k(t[e], a) }) + return ( + (s = l), + (t = b( + d( + r.map(function(n) { + return s.map(function(t) { + var e = p(n.target, t.name) + if (e) { + var i = E(t, n) + t = { + type: e, + property: t.name, + animatable: n, + tweens: i, + duration: i[i.length - 1].end, + delay: i[0].delay, + } + } else t = void 0 + return t + }) + }) + ), + function(t) { + return !B.und(t) + } + )), + c(o, { + children: [], + animatables: r, + animations: t, + duration: M('duration', t, o, a), + delay: M('delay', t, o, a), + }) + ) + } + function O(t) { + function d() { + return ( + window.Promise && + new Promise(function(t) { + return (_ = t) + }) + ) + } + function u(t) { + return k.reversed ? k.duration - t : t + } + function c(e) { + for (var t = 0, i = {}, n = k.animations, s = n.length; t < s; ) { + var o = n[t], + a = o.animatable, + r = o.tweens, + l = r.length - 1, + h = r[l] + l && + (h = + b(r, function(t) { + return e < t.end + })[0] || h) + for ( + var r = + Math.min( + Math.max(e - h.start - h.delay, 0), + h.duration + ) / h.duration, + d = isNaN(r) ? 1 : h.easing(r, h.elasticity), + r = h.to.strings, + u = h.round, + l = [], + c = void 0, + c = h.to.numbers.length, + p = 0; + p < c; + p++ + ) { + var v = void 0, + v = h.to.numbers[p], + f = h.from.numbers[p], + v = h.isPath ? C(h.value, d * v) : f + d * (v - f) + u && ((h.isColor && 2 < p) || (v = Math.round(v * u) / u)), + l.push(v) + } + if ((h = r.length)) + for (c = r[0], d = 0; d < h; d++) + (u = r[d + 1]), + (p = l[d]), + isNaN(p) || (c = u ? c + (p + u) : c + (p + ' ')) + else c = l[0] + I[o.type](a.target, o.property, c, i, a.id), + (o.currentValue = c), + t++ + } + if ((t = Object.keys(i).length)) + for (n = 0; n < t; n++) + x || + (x = w(document.body, 'transform') + ? 'transform' + : '-webkit-transform'), + (k.animatables[n].target.style[x] = i[n].join(' ')) + ;(k.currentTime = e), (k.progress = (e / k.duration) * 100) + } + function p(t) { + k[t] && k[t](k) + } + function v() { + k.remaining && !0 !== k.remaining && k.remaining-- + } + function e(t) { + var e = k.duration, + i = k.offset, + n = i + k.delay, + s = k.currentTime, + o = k.reversed, + a = u(t) + if (k.children.length) { + var r = k.children, + l = r.length + if (a >= k.currentTime) for (var h = 0; h < l; h++) r[h].seek(a) + else for (; l--; ) r[l].seek(a) + } + ;(n <= a || !e) && + (k.began || ((k.began = !0), p('begin')), p('run')), + i < a && a < e + ? c(a) + : (a <= i && 0 !== s && (c(0), o && v()), + ((e <= a && s !== e) || !e) && (c(e), o || v())), + p('update'), + e <= t && + (k.remaining + ? ((m = f), + 'alternate' === k.direction && + (k.reversed = !k.reversed)) + : (k.pause(), + k.completed || + ((k.completed = !0), + p('complete'), + 'Promise' in window && (_(), (y = d())))), + (g = 0)) + } + t = void 0 === t ? {} : t + var f, + m, + g = 0, + _ = null, + y = d(), + k = n(t) + return ( + (k.reset = function() { + var t = k.direction, + e = k.loop + for ( + k.currentTime = 0, + k.progress = 0, + k.paused = !0, + k.began = !1, + k.completed = !1, + k.reversed = 'reverse' === t, + k.remaining = 'alternate' === t && 1 === e ? 2 : e, + c(0), + t = k.children.length; + t--; + + ) + k.children[t].reset() + }), + (k.tick = function(t) { + ;(f = t), m || (m = f), e((g + f - m) * O.speed) + }), + (k.seek = function(t) { + e(u(t)) + }), + (k.pause = function() { + var t = A.indexOf(k) + ;-1 < t && A.splice(t, 1), (k.paused = !0) + }), + (k.play = function() { + k.paused && + ((k.paused = !1), + (m = 0), + (g = u(k.currentTime)), + A.push(k), + R || H()) + }), + (k.reverse = function() { + ;(k.reversed = !k.reversed), (m = 0), (g = u(k.currentTime)) + }), + (k.restart = function() { + k.pause(), k.reset(), k.play() + }), + (k.finished = y), + k.reset(), + k.autoplay && k.play(), + k + ) + } + var x, + L = { + update: void 0, + begin: void 0, + run: void 0, + complete: void 0, + loop: 1, + direction: 'normal', + autoplay: !0, + offset: 0, + }, + T = { + duration: 1e3, + delay: 0, + easing: 'easeOutElastic', + elasticity: 500, + round: 0, + }, + $ = 'translateX translateY translateZ rotate rotateX rotateY rotateZ scale scaleX scaleY scaleZ skewX skewY perspective'.split( + ' ' + ), + B = { + arr: function(t) { + return Array.isArray(t) + }, + obj: function(t) { + return -1 < Object.prototype.toString.call(t).indexOf('Object') + }, + pth: function(t) { + return B.obj(t) && t.hasOwnProperty('totalLength') + }, + svg: function(t) { + return t instanceof SVGElement + }, + dom: function(t) { + return t.nodeType || B.svg(t) + }, + str: function(t) { + return 'string' == typeof t + }, + fnc: function(t) { + return 'function' == typeof t + }, + und: function(t) { + return void 0 === t + }, + hex: function(t) { + return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t) + }, + rgb: function(t) { + return /^rgb/.test(t) + }, + hsl: function(t) { + return /^hsl/.test(t) + }, + col: function(t) { + return B.hex(t) || B.rgb(t) || B.hsl(t) + }, + }, + D = (function() { + function u(t, e, i) { + return ( + (((1 - 3 * i + 3 * e) * t + (3 * i - 6 * e)) * t + 3 * e) * + t + ) + } + return function(a, r, l, h) { + if (0 <= a && a <= 1 && 0 <= l && l <= 1) { + var d = new Float32Array(11) + if (a !== r || l !== h) + for (var t = 0; t < 11; ++t) d[t] = u(0.1 * t, a, l) + return function(t) { + if (a === r && l === h) return t + if (0 === t) return 0 + if (1 === t) return 1 + for (var e = 0, i = 1; 10 !== i && d[i] <= t; ++i) + e += 0.1 + var i = e + ((t - d[--i]) / (d[i + 1] - d[i])) * 0.1, + n = + 3 * (1 - 3 * l + 3 * a) * i * i + + 2 * (3 * l - 6 * a) * i + + 3 * a + if (0.001 <= n) { + for ( + e = 0; + e < 4 && + 0 != + (n = + 3 * (1 - 3 * l + 3 * a) * i * i + + 2 * (3 * l - 6 * a) * i + + 3 * a); + ++e + ) + var s = u(i, a, l) - t, i = i - s / n + t = i + } else if (0 === n) t = i + else { + for ( + var i = e, e = e + 0.1, o = 0; + 0 < (n = u((s = i + (e - i) / 2), a, l) - t) + ? (e = s) + : (i = s), + 1e-7 < Math.abs(n) && ++o < 10; + + ); + t = s + } + return u(t, r, h) + } + } + } + })(), + S = (function() { + function i(t, e) { + return 0 === t || 1 === t + ? t + : -Math.pow(2, 10 * (t - 1)) * + Math.sin( + (2 * + (t - 1 - (e / (2 * Math.PI)) * Math.asin(1)) * + Math.PI) / + e + ) + } + var t, + n = 'Quad Cubic Quart Quint Sine Expo Circ Back Elastic'.split( + ' ' + ), + e = { + In: [ + [0.55, 0.085, 0.68, 0.53], + [0.55, 0.055, 0.675, 0.19], + [0.895, 0.03, 0.685, 0.22], + [0.755, 0.05, 0.855, 0.06], + [0.47, 0, 0.745, 0.715], + [0.95, 0.05, 0.795, 0.035], + [0.6, 0.04, 0.98, 0.335], + [0.6, -0.28, 0.735, 0.045], + i, + ], + Out: [ + [0.25, 0.46, 0.45, 0.94], + [0.215, 0.61, 0.355, 1], + [0.165, 0.84, 0.44, 1], + [0.23, 1, 0.32, 1], + [0.39, 0.575, 0.565, 1], + [0.19, 1, 0.22, 1], + [0.075, 0.82, 0.165, 1], + [0.175, 0.885, 0.32, 1.275], + function(t, e) { + return 1 - i(1 - t, e) + }, + ], + InOut: [ + [0.455, 0.03, 0.515, 0.955], + [0.645, 0.045, 0.355, 1], + [0.77, 0, 0.175, 1], + [0.86, 0, 0.07, 1], + [0.445, 0.05, 0.55, 0.95], + [1, 0, 0, 1], + [0.785, 0.135, 0.15, 0.86], + [0.68, -0.55, 0.265, 1.55], + function(t, e) { + return t < 0.5 + ? i(2 * t, e) / 2 + : 1 - i(-2 * t + 2, e) / 2 + }, + ], + }, + s = { linear: D(0.25, 0.25, 0.75, 0.75) }, + o = {} + for (t in e) + (o.type = t), + e[o.type].forEach( + (function(i) { + return function(t, e) { + s['ease' + i.type + n[e]] = B.fnc(t) + ? t + : D.apply($jscomp$this, t) + } + })(o) + ), + (o = { type: o.type }) + return s + })(), + I = { + css: function(t, e, i) { + return (t.style[e] = i) + }, + attribute: function(t, e, i) { + return t.setAttribute(e, i) + }, + object: function(t, e, i) { + return (t[e] = i) + }, + transform: function(t, e, i, n, s) { + n[s] || (n[s] = []), n[s].push(e + '(' + i + ')') + }, + }, + A = [], + R = 0, + H = (function() { + function n() { + R = requestAnimationFrame(t) + } + function t(t) { + var e = A.length + if (e) { + for (var i = 0; i < e; ) A[i] && A[i].tick(t), i++ + n() + } else cancelAnimationFrame(R), (R = 0) + } + return n + })() + return ( + (O.version = '2.2.0'), + (O.speed = 1), + (O.running = A), + (O.remove = function(t) { + t = y(t) + for (var e = A.length; e--; ) + for (var i = A[e], n = i.animations, s = n.length; s--; ) + a(t, n[s].animatable.target) && + (n.splice(s, 1), n.length || i.pause()) + }), + (O.getValue = v), + (O.path = function(t, e) { + var i = B.str(t) ? s(t)[0] : t, + n = e || 100 + return function(t) { + return { el: i, property: t, totalLength: g(i) * (n / 100) } + } + }), + (O.setDashoffset = function(t) { + var e = g(t) + return t.setAttribute('stroke-dasharray', e), e + }), + (O.bezier = D), + (O.easings = S), + (O.timeline = function(n) { + var s = O(n) + return ( + s.pause(), + (s.duration = 0), + (s.add = function(t) { + return ( + s.children.forEach(function(t) { + ;(t.began = !0), (t.completed = !0) + }), + o(t).forEach(function(t) { + var e = c(t, u(T, n || {})) + ;(e.targets = e.targets || n.targets), + (t = s.duration) + var i = e.offset + ;(e.autoplay = !1), + (e.direction = s.direction), + (e.offset = B.und(i) ? t : f(i, t)), + (s.began = !0), + (s.completed = !0), + s.seek(e.offset), + ((e = O(e)).began = !0), + (e.completed = !0), + e.duration > t && (s.duration = e.duration), + s.children.push(e) + }), + s.seek(0), + s.reset(), + s.autoplay && s.restart(), + s + ) + }), + s + ) + }), + (O.random = function(t, e) { + return Math.floor(Math.random() * (e - t + 1)) + t + }), + O + ) +})()), + (function(r, l) { + 'use strict' + var e = { + accordion: !0, + onOpenStart: void 0, + onOpenEnd: void 0, + onCloseStart: void 0, + onCloseEnd: void 0, + inDuration: 300, + outDuration: 300, + }, + t = (function(t) { + function s(t, e) { + _classCallCheck(this, s) + var i = _possibleConstructorReturn( + this, + (s.__proto__ || Object.getPrototypeOf(s)).call( + this, + s, + t, + e + ) + ) + ;((i.el.M_Collapsible = i).options = r.extend( + {}, + s.defaults, + e + )), + (i.$headers = i.$el + .children('li') + .children('.collapsible-header')), + i.$headers.attr('tabindex', 0), + i._setupEventHandlers() + var n = i.$el + .children('li.active') + .children('.collapsible-body') + return ( + i.options.accordion + ? n.first().css('display', 'block') + : n.css('display', 'block'), + i + ) + } + return ( + _inherits(s, Component), + _createClass( + s, + [ + { + key: 'destroy', + value: function() { + this._removeEventHandlers(), + (this.el.M_Collapsible = void 0) + }, + }, + { + key: '_setupEventHandlers', + value: function() { + var e = this + ;(this._handleCollapsibleClickBound = this._handleCollapsibleClick.bind( + this + )), + (this._handleCollapsibleKeydownBound = this._handleCollapsibleKeydown.bind( + this + )), + this.el.addEventListener( + 'click', + this._handleCollapsibleClickBound + ), + this.$headers.each(function(t) { + t.addEventListener( + 'keydown', + e._handleCollapsibleKeydownBound + ) + }) + }, + }, + { + key: '_removeEventHandlers', + value: function() { + var e = this + this.el.removeEventListener( + 'click', + this._handleCollapsibleClickBound + ), + this.$headers.each(function(t) { + t.removeEventListener( + 'keydown', + e._handleCollapsibleKeydownBound + ) + }) + }, + }, + { + key: '_handleCollapsibleClick', + value: function(t) { + var e = r(t.target).closest( + '.collapsible-header' + ) + if (t.target && e.length) { + var i = e.closest('.collapsible') + if (i[0] === this.el) { + var n = e.closest('li'), + s = i.children('li'), + o = n[0].classList.contains( + 'active' + ), + a = s.index(n) + o ? this.close(a) : this.open(a) + } + } + }, + }, + { + key: '_handleCollapsibleKeydown', + value: function(t) { + 13 === t.keyCode && + this._handleCollapsibleClickBound(t) + }, + }, + { + key: '_animateIn', + value: function(t) { + var e = this, + i = this.$el.children('li').eq(t) + if (i.length) { + var n = i.children('.collapsible-body') + l.remove(n[0]), + n.css({ + display: 'block', + overflow: 'hidden', + height: 0, + paddingTop: '', + paddingBottom: '', + }) + var s = n.css('padding-top'), + o = n.css('padding-bottom'), + a = n[0].scrollHeight + n.css({ + paddingTop: 0, + paddingBottom: 0, + }), + l({ + targets: n[0], + height: a, + paddingTop: s, + paddingBottom: o, + duration: this.options + .inDuration, + easing: 'easeInOutCubic', + complete: function(t) { + n.css({ + overflow: '', + paddingTop: '', + paddingBottom: '', + height: '', + }), + 'function' == + typeof e.options + .onOpenEnd && + e.options.onOpenEnd.call( + e, + i[0] + ) + }, + }) + } + }, + }, + { + key: '_animateOut', + value: function(t) { + var e = this, + i = this.$el.children('li').eq(t) + if (i.length) { + var n = i.children('.collapsible-body') + l.remove(n[0]), + n.css('overflow', 'hidden'), + l({ + targets: n[0], + height: 0, + paddingTop: 0, + paddingBottom: 0, + duration: this.options + .outDuration, + easing: 'easeInOutCubic', + complete: function() { + n.css({ + height: '', + overflow: '', + padding: '', + display: '', + }), + 'function' == + typeof e.options + .onCloseEnd && + e.options.onCloseEnd.call( + e, + i[0] + ) + }, + }) + } + }, + }, + { + key: 'open', + value: function(t) { + var i = this, + e = this.$el.children('li').eq(t) + if ( + e.length && + !e[0].classList.contains('active') + ) { + if ( + ('function' == + typeof this.options + .onOpenStart && + this.options.onOpenStart.call( + this, + e[0] + ), + this.options.accordion) + ) { + var n = this.$el.children('li') + this.$el + .children('li.active') + .each(function(t) { + var e = n.index(r(t)) + i.close(e) + }) + } + e[0].classList.add('active'), + this._animateIn(t) + } + }, + }, + { + key: 'close', + value: function(t) { + var e = this.$el.children('li').eq(t) + e.length && + e[0].classList.contains('active') && + ('function' == + typeof this.options.onCloseStart && + this.options.onCloseStart.call( + this, + e[0] + ), + e[0].classList.remove('active'), + this._animateOut(t)) + }, + }, + ], + [ + { + key: 'init', + value: function(t, e) { + return _get( + s.__proto__ || Object.getPrototypeOf(s), + 'init', + this + ).call(this, this, t, e) + }, + }, + { + key: 'getInstance', + value: function(t) { + return (t.jquery ? t[0] : t).M_Collapsible + }, + }, + { + key: 'defaults', + get: function() { + return e + }, + }, + ] + ), + s + ) + })() + ;(M.Collapsible = t), + M.jQueryLoaded && + M.initializeJqueryWrapper(t, 'collapsible', 'M_Collapsible') + })(cash, M.anime), + (function(h, i) { + 'use strict' + var e = { + alignment: 'left', + autoFocus: !0, + constrainWidth: !0, + container: null, + coverTrigger: !0, + closeOnClick: !0, + hover: !1, + inDuration: 150, + outDuration: 250, + onOpenStart: null, + onOpenEnd: null, + onCloseStart: null, + onCloseEnd: null, + onItemClick: null, + }, + t = (function(t) { + function n(t, e) { + _classCallCheck(this, n) + var i = _possibleConstructorReturn( + this, + (n.__proto__ || Object.getPrototypeOf(n)).call( + this, + n, + t, + e + ) + ) + return ( + (i.el.M_Dropdown = i), + n._dropdowns.push(i), + (i.id = M.getIdFromTrigger(t)), + (i.dropdownEl = document.getElementById(i.id)), + (i.$dropdownEl = h(i.dropdownEl)), + (i.options = h.extend({}, n.defaults, e)), + (i.isOpen = !1), + (i.isScrollable = !1), + (i.isTouchMoving = !1), + (i.focusedIndex = -1), + (i.filterQuery = []), + i.options.container + ? h(i.options.container).append(i.dropdownEl) + : i.$el.after(i.dropdownEl), + i._makeDropdownFocusable(), + (i._resetFilterQueryBound = i._resetFilterQuery.bind( + i + )), + (i._handleDocumentClickBound = i._handleDocumentClick.bind( + i + )), + (i._handleDocumentTouchmoveBound = i._handleDocumentTouchmove.bind( + i + )), + (i._handleDropdownClickBound = i._handleDropdownClick.bind( + i + )), + (i._handleDropdownKeydownBound = i._handleDropdownKeydown.bind( + i + )), + (i._handleTriggerKeydownBound = i._handleTriggerKeydown.bind( + i + )), + i._setupEventHandlers(), + i + ) + } + return ( + _inherits(n, Component), + _createClass( + n, + [ + { + key: 'destroy', + value: function() { + this._resetDropdownStyles(), + this._removeEventHandlers(), + n._dropdowns.splice( + n._dropdowns.indexOf(this), + 1 + ), + (this.el.M_Dropdown = void 0) + }, + }, + { + key: '_setupEventHandlers', + value: function() { + this.el.addEventListener( + 'keydown', + this._handleTriggerKeydownBound + ), + this.dropdownEl.addEventListener( + 'click', + this._handleDropdownClickBound + ), + this.options.hover + ? ((this._handleMouseEnterBound = this._handleMouseEnter.bind( + this + )), + this.el.addEventListener( + 'mouseenter', + this._handleMouseEnterBound + ), + (this._handleMouseLeaveBound = this._handleMouseLeave.bind( + this + )), + this.el.addEventListener( + 'mouseleave', + this._handleMouseLeaveBound + ), + this.dropdownEl.addEventListener( + 'mouseleave', + this._handleMouseLeaveBound + )) + : ((this._handleClickBound = this._handleClick.bind( + this + )), + this.el.addEventListener( + 'click', + this._handleClickBound + )) + }, + }, + { + key: '_removeEventHandlers', + value: function() { + this.el.removeEventListener( + 'keydown', + this._handleTriggerKeydownBound + ), + this.dropdownEl.removeEventListener( + 'click', + this._handleDropdownClickBound + ), + this.options.hover + ? (this.el.removeEventListener( + 'mouseenter', + this._handleMouseEnterBound + ), + this.el.removeEventListener( + 'mouseleave', + this._handleMouseLeaveBound + ), + this.dropdownEl.removeEventListener( + 'mouseleave', + this._handleMouseLeaveBound + )) + : this.el.removeEventListener( + 'click', + this._handleClickBound + ) + }, + }, + { + key: '_setupTemporaryEventHandlers', + value: function() { + document.body.addEventListener( + 'click', + this._handleDocumentClickBound, + !0 + ), + document.body.addEventListener( + 'touchend', + this._handleDocumentClickBound + ), + document.body.addEventListener( + 'touchmove', + this._handleDocumentTouchmoveBound + ), + this.dropdownEl.addEventListener( + 'keydown', + this._handleDropdownKeydownBound + ) + }, + }, + { + key: '_removeTemporaryEventHandlers', + value: function() { + document.body.removeEventListener( + 'click', + this._handleDocumentClickBound, + !0 + ), + document.body.removeEventListener( + 'touchend', + this._handleDocumentClickBound + ), + document.body.removeEventListener( + 'touchmove', + this._handleDocumentTouchmoveBound + ), + this.dropdownEl.removeEventListener( + 'keydown', + this._handleDropdownKeydownBound + ) + }, + }, + { + key: '_handleClick', + value: function(t) { + t.preventDefault(), this.open() + }, + }, + { + key: '_handleMouseEnter', + value: function() { + this.open() + }, + }, + { + key: '_handleMouseLeave', + value: function(t) { + var e = t.toElement || t.relatedTarget, + i = !!h(e).closest('.dropdown-content') + .length, + n = !1, + s = h(e).closest('.dropdown-trigger') + s.length && + s[0].M_Dropdown && + s[0].M_Dropdown.isOpen && + (n = !0), + n || i || this.close() + }, + }, + { + key: '_handleDocumentClick', + value: function(t) { + var e = this, + i = h(t.target) + this.options.closeOnClick && + i.closest('.dropdown-content').length && + !this.isTouchMoving + ? setTimeout(function() { + e.close() + }, 0) + : (!i.closest('.dropdown-trigger') + .length && + i.closest('.dropdown-content') + .length) || + setTimeout(function() { + e.close() + }, 0), + (this.isTouchMoving = !1) + }, + }, + { + key: '_handleTriggerKeydown', + value: function(t) { + ;(t.which !== M.keys.ARROW_DOWN && + t.which !== M.keys.ENTER) || + this.isOpen || + (t.preventDefault(), this.open()) + }, + }, + { + key: '_handleDocumentTouchmove', + value: function(t) { + h(t.target).closest('.dropdown-content') + .length && (this.isTouchMoving = !0) + }, + }, + { + key: '_handleDropdownClick', + value: function(t) { + if ( + 'function' == + typeof this.options.onItemClick + ) { + var e = h(t.target).closest('li')[0] + this.options.onItemClick.call(this, e) + } + }, + }, + { + key: '_handleDropdownKeydown', + value: function(t) { + if (t.which === M.keys.TAB) + t.preventDefault(), this.close() + else if ( + (t.which !== M.keys.ARROW_DOWN && + t.which !== M.keys.ARROW_UP) || + !this.isOpen + ) + if ( + t.which === M.keys.ENTER && + this.isOpen + ) { + var e = this.dropdownEl.children[ + this.focusedIndex + ], + i = h(e) + .find('a, button') + .first() + i.length + ? i[0].click() + : e && e.click() + } else + t.which === M.keys.ESC && + this.isOpen && + (t.preventDefault(), + this.close()) + else { + t.preventDefault() + var n = + t.which === M.keys.ARROW_DOWN + ? 1 + : -1, + s = this.focusedIndex, + o = !1 + do { + if ( + ((s += n), + this.dropdownEl.children[s] && + -1 !== + this.dropdownEl + .children[s] + .tabIndex) + ) { + o = !0 + break + } + } while ( + s < + this.dropdownEl.children + .length && + 0 <= s + ) + o && + ((this.focusedIndex = s), + this._focusFocusedItem()) + } + var a = String.fromCharCode( + t.which + ).toLowerCase() + if ( + a && + -1 === + [9, 13, 27, 38, 40].indexOf(t.which) + ) { + this.filterQuery.push(a) + var r = this.filterQuery.join(''), + l = h(this.dropdownEl) + .find('li') + .filter(function(t) { + return ( + 0 === + h(t) + .text() + .toLowerCase() + .indexOf(r) + ) + })[0] + l && + ((this.focusedIndex = h(l).index()), + this._focusFocusedItem()) + } + this.filterTimeout = setTimeout( + this._resetFilterQueryBound, + 1e3 + ) + }, + }, + { + key: '_resetFilterQuery', + value: function() { + this.filterQuery = [] + }, + }, + { + key: '_resetDropdownStyles', + value: function() { + this.$dropdownEl.css({ + display: '', + width: '', + height: '', + left: '', + top: '', + 'transform-origin': '', + transform: '', + opacity: '', + }) + }, + }, + { + key: '_makeDropdownFocusable', + value: function() { + ;(this.dropdownEl.tabIndex = 0), + h(this.dropdownEl) + .children() + .each(function(t) { + t.getAttribute('tabindex') || + t.setAttribute( + 'tabindex', + 0 + ) + }) + }, + }, + { + key: '_focusFocusedItem', + value: function() { + 0 <= this.focusedIndex && + this.focusedIndex < + this.dropdownEl.children.length && + this.options.autoFocus && + this.dropdownEl.children[ + this.focusedIndex + ].focus() + }, + }, + { + key: '_getDropdownPosition', + value: function() { + this.el.offsetParent.getBoundingClientRect() + var t = this.el.getBoundingClientRect(), + e = this.dropdownEl.getBoundingClientRect(), + i = e.height, + n = e.width, + s = t.left - e.left, + o = t.top - e.top, + a = { + left: s, + top: o, + height: i, + width: n, + }, + r = this.dropdownEl.offsetParent + ? this.dropdownEl.offsetParent + : this.dropdownEl.parentNode, + l = M.checkPossibleAlignments( + this.el, + r, + a, + this.options.coverTrigger + ? 0 + : t.height + ), + h = 'top', + d = this.options.alignment + if ( + ((o += this.options.coverTrigger + ? 0 + : t.height), + (this.isScrollable = !1), + l.top || + (l.bottom + ? (h = 'bottom') + : ((this.isScrollable = !0), + l.spaceOnTop > l.spaceOnBottom + ? ((h = 'bottom'), + (i += l.spaceOnTop), + (o -= l.spaceOnTop)) + : (i += + l.spaceOnBottom))), + !l[d]) + ) { + var u = 'left' === d ? 'right' : 'left' + l[u] + ? (d = u) + : l.spaceOnLeft > l.spaceOnRight + ? ((d = 'right'), + (n += l.spaceOnLeft), + (s -= l.spaceOnLeft)) + : ((d = 'left'), + (n += l.spaceOnRight)) + } + return ( + 'bottom' === h && + (o = + o - + e.height + + (this.options.coverTrigger + ? t.height + : 0)), + 'right' === d && + (s = s - e.width + t.width), + { + x: s, + y: o, + verticalAlignment: h, + horizontalAlignment: d, + height: i, + width: n, + } + ) + }, + }, + { + key: '_animateIn', + value: function() { + var e = this + i.remove(this.dropdownEl), + i({ + targets: this.dropdownEl, + opacity: { + value: [0, 1], + easing: 'easeOutQuad', + }, + scaleX: [0.3, 1], + scaleY: [0.3, 1], + duration: this.options.inDuration, + easing: 'easeOutQuint', + complete: function(t) { + e.options.autoFocus && + e.dropdownEl.focus(), + 'function' == + typeof e.options + .onOpenEnd && + e.options.onOpenEnd.call( + e, + e.el + ) + }, + }) + }, + }, + { + key: '_animateOut', + value: function() { + var e = this + i.remove(this.dropdownEl), + i({ + targets: this.dropdownEl, + opacity: { + value: 0, + easing: 'easeOutQuint', + }, + scaleX: 0.3, + scaleY: 0.3, + duration: this.options.outDuration, + easing: 'easeOutQuint', + complete: function(t) { + e._resetDropdownStyles(), + 'function' == + typeof e.options + .onCloseEnd && + e.options.onCloseEnd.call( + e, + e.el + ) + }, + }) + }, + }, + { + key: '_placeDropdown', + value: function() { + var t = this.options.constrainWidth + ? this.el.getBoundingClientRect().width + : this.dropdownEl.getBoundingClientRect() + .width + this.dropdownEl.style.width = t + 'px' + var e = this._getDropdownPosition() + ;(this.dropdownEl.style.left = e.x + 'px'), + (this.dropdownEl.style.top = + e.y + 'px'), + (this.dropdownEl.style.height = + e.height + 'px'), + (this.dropdownEl.style.width = + e.width + 'px'), + (this.dropdownEl.style.transformOrigin = + ('left' === e.horizontalAlignment + ? '0' + : '100%') + + ' ' + + ('top' === e.verticalAlignment + ? '0' + : '100%')) + }, + }, + { + key: 'open', + value: function() { + this.isOpen || + ((this.isOpen = !0), + 'function' == + typeof this.options.onOpenStart && + this.options.onOpenStart.call( + this, + this.el + ), + this._resetDropdownStyles(), + (this.dropdownEl.style.display = + 'block'), + this._placeDropdown(), + this._animateIn(), + this._setupTemporaryEventHandlers()) + }, + }, + { + key: 'close', + value: function() { + this.isOpen && + ((this.isOpen = !1), + (this.focusedIndex = -1), + 'function' == + typeof this.options.onCloseStart && + this.options.onCloseStart.call( + this, + this.el + ), + this._animateOut(), + this._removeTemporaryEventHandlers(), + this.options.autoFocus && + this.el.focus()) + }, + }, + { + key: 'recalculateDimensions', + value: function() { + this.isOpen && + (this.$dropdownEl.css({ + width: '', + height: '', + left: '', + top: '', + 'transform-origin': '', + }), + this._placeDropdown()) + }, + }, + ], + [ + { + key: 'init', + value: function(t, e) { + return _get( + n.__proto__ || Object.getPrototypeOf(n), + 'init', + this + ).call(this, this, t, e) + }, + }, + { + key: 'getInstance', + value: function(t) { + return (t.jquery ? t[0] : t).M_Dropdown + }, + }, + { + key: 'defaults', + get: function() { + return e + }, + }, + ] + ), + n + ) + })() + ;(t._dropdowns = []), + (M.Dropdown = t), + M.jQueryLoaded && + M.initializeJqueryWrapper(t, 'dropdown', 'M_Dropdown') + })(cash, M.anime), + (function(s, i) { + 'use strict' + var e = { + opacity: 0.5, + inDuration: 250, + outDuration: 250, + onOpenStart: null, + onOpenEnd: null, + onCloseStart: null, + onCloseEnd: null, + preventScrolling: !0, + dismissible: !0, + startingTop: '4%', + endingTop: '10%', + }, + t = (function(t) { + function n(t, e) { + _classCallCheck(this, n) + var i = _possibleConstructorReturn( + this, + (n.__proto__ || Object.getPrototypeOf(n)).call( + this, + n, + t, + e + ) + ) + return ( + ((i.el.M_Modal = i).options = s.extend( + {}, + n.defaults, + e + )), + (i.isOpen = !1), + (i.id = i.$el.attr('id')), + (i._openingTrigger = void 0), + (i.$overlay = s('')), + (i.el.tabIndex = 0), + (i._nthModalOpened = 0), + n._count++, + i._setupEventHandlers(), + i + ) + } + return ( + _inherits(n, Component), + _createClass( + n, + [ + { + key: 'destroy', + value: function() { + n._count--, + this._removeEventHandlers(), + this.el.removeAttribute('style'), + this.$overlay.remove(), + (this.el.M_Modal = void 0) + }, + }, + { + key: '_setupEventHandlers', + value: function() { + ;(this._handleOverlayClickBound = this._handleOverlayClick.bind( + this + )), + (this._handleModalCloseClickBound = this._handleModalCloseClick.bind( + this + )), + 1 === n._count && + document.body.addEventListener( + 'click', + this._handleTriggerClick + ), + this.$overlay[0].addEventListener( + 'click', + this._handleOverlayClickBound + ), + this.el.addEventListener( + 'click', + this._handleModalCloseClickBound + ) + }, + }, + { + key: '_removeEventHandlers', + value: function() { + 0 === n._count && + document.body.removeEventListener( + 'click', + this._handleTriggerClick + ), + this.$overlay[0].removeEventListener( + 'click', + this._handleOverlayClickBound + ), + this.el.removeEventListener( + 'click', + this._handleModalCloseClickBound + ) + }, + }, + { + key: '_handleTriggerClick', + value: function(t) { + var e = s(t.target).closest( + '.modal-trigger' + ) + if (e.length) { + var i = M.getIdFromTrigger(e[0]), + n = document.getElementById(i) + .M_Modal + n && n.open(e), t.preventDefault() + } + }, + }, + { + key: '_handleOverlayClick', + value: function() { + this.options.dismissible && this.close() + }, + }, + { + key: '_handleModalCloseClick', + value: function(t) { + s(t.target).closest('.modal-close') + .length && this.close() + }, + }, + { + key: '_handleKeydown', + value: function(t) { + 27 === t.keyCode && + this.options.dismissible && + this.close() + }, + }, + { + key: '_handleFocus', + value: function(t) { + this.el.contains(t.target) || + this._nthModalOpened !== + n._modalsOpen || + this.el.focus() + }, + }, + { + key: '_animateIn', + value: function() { + var t = this + s.extend(this.el.style, { + display: 'block', + opacity: 0, + }), + s.extend(this.$overlay[0].style, { + display: 'block', + opacity: 0, + }), + i({ + targets: this.$overlay[0], + opacity: this.options.opacity, + duration: this.options.inDuration, + easing: 'easeOutQuad', + }) + var e = { + targets: this.el, + duration: this.options.inDuration, + easing: 'easeOutCubic', + complete: function() { + 'function' == + typeof t.options.onOpenEnd && + t.options.onOpenEnd.call( + t, + t.el, + t._openingTrigger + ) + }, + } + this.el.classList.contains('bottom-sheet') + ? s.extend(e, { bottom: 0, opacity: 1 }) + : s.extend(e, { + top: [ + this.options.startingTop, + this.options.endingTop, + ], + opacity: 1, + scaleX: [0.8, 1], + scaleY: [0.8, 1], + }), + i(e) + }, + }, + { + key: '_animateOut', + value: function() { + var t = this + i({ + targets: this.$overlay[0], + opacity: 0, + duration: this.options.outDuration, + easing: 'easeOutQuart', + }) + var e = { + targets: this.el, + duration: this.options.outDuration, + easing: 'easeOutCubic', + complete: function() { + ;(t.el.style.display = 'none'), + t.$overlay.remove(), + 'function' == + typeof t.options + .onCloseEnd && + t.options.onCloseEnd.call( + t, + t.el + ) + }, + } + this.el.classList.contains('bottom-sheet') + ? s.extend(e, { + bottom: '-100%', + opacity: 0, + }) + : s.extend(e, { + top: [ + this.options.endingTop, + this.options.startingTop, + ], + opacity: 0, + scaleX: 0.8, + scaleY: 0.8, + }), + i(e) + }, + }, + { + key: 'open', + value: function(t) { + if (!this.isOpen) + return ( + (this.isOpen = !0), + n._modalsOpen++, + (this._nthModalOpened = + n._modalsOpen), + (this.$overlay[0].style.zIndex = + 1e3 + 2 * n._modalsOpen), + (this.el.style.zIndex = + 1e3 + 2 * n._modalsOpen + 1), + (this._openingTrigger = t + ? t[0] + : void 0), + 'function' == + typeof this.options + .onOpenStart && + this.options.onOpenStart.call( + this, + this.el, + this._openingTrigger + ), + this.options.preventScrolling && + (document.body.style.overflow = + 'hidden'), + this.el.classList.add('open'), + this.el.insertAdjacentElement( + 'afterend', + this.$overlay[0] + ), + this.options.dismissible && + ((this._handleKeydownBound = this._handleKeydown.bind( + this + )), + (this._handleFocusBound = this._handleFocus.bind( + this + )), + document.addEventListener( + 'keydown', + this._handleKeydownBound + ), + document.addEventListener( + 'focus', + this._handleFocusBound, + !0 + )), + i.remove(this.el), + i.remove(this.$overlay[0]), + this._animateIn(), + this.el.focus(), + this + ) + }, + }, + { + key: 'close', + value: function() { + if (this.isOpen) + return ( + (this.isOpen = !1), + n._modalsOpen--, + (this._nthModalOpened = 0), + 'function' == + typeof this.options + .onCloseStart && + this.options.onCloseStart.call( + this, + this.el + ), + this.el.classList.remove('open'), + 0 === n._modalsOpen && + (document.body.style.overflow = + ''), + this.options.dismissible && + (document.removeEventListener( + 'keydown', + this._handleKeydownBound + ), + document.removeEventListener( + 'focus', + this._handleFocusBound, + !0 + )), + i.remove(this.el), + i.remove(this.$overlay[0]), + this._animateOut(), + this + ) + }, + }, + ], + [ + { + key: 'init', + value: function(t, e) { + return _get( + n.__proto__ || Object.getPrototypeOf(n), + 'init', + this + ).call(this, this, t, e) + }, + }, + { + key: 'getInstance', + value: function(t) { + return (t.jquery ? t[0] : t).M_Modal + }, + }, + { + key: 'defaults', + get: function() { + return e + }, + }, + ] + ), + n + ) + })() + ;(t._modalsOpen = 0), + (t._count = 0), + (M.Modal = t), + M.jQueryLoaded && M.initializeJqueryWrapper(t, 'modal', 'M_Modal') + })(cash, M.anime), + (function(o, a) { + 'use strict' + var e = { + inDuration: 275, + outDuration: 200, + onOpenStart: null, + onOpenEnd: null, + onCloseStart: null, + onCloseEnd: null, + }, + t = (function(t) { + function n(t, e) { + _classCallCheck(this, n) + var i = _possibleConstructorReturn( + this, + (n.__proto__ || Object.getPrototypeOf(n)).call( + this, + n, + t, + e + ) + ) + return ( + ((i.el.M_Materialbox = i).options = o.extend( + {}, + n.defaults, + e + )), + (i.overlayActive = !1), + (i.doneAnimating = !0), + (i.placeholder = o('
').addClass( + 'material-placeholder' + )), + (i.originalWidth = 0), + (i.originalHeight = 0), + (i.originInlineStyles = i.$el.attr('style')), + (i.caption = i.el.getAttribute('data-caption') || ''), + i.$el.before(i.placeholder), + i.placeholder.append(i.$el), + i._setupEventHandlers(), + i + ) + } + return ( + _inherits(n, Component), + _createClass( + n, + [ + { + key: 'destroy', + value: function() { + this._removeEventHandlers(), + (this.el.M_Materialbox = void 0), + o(this.placeholder) + .after(this.el) + .remove(), + this.$el.removeAttr('style') + }, + }, + { + key: '_setupEventHandlers', + value: function() { + ;(this._handleMaterialboxClickBound = this._handleMaterialboxClick.bind( + this + )), + this.el.addEventListener( + 'click', + this._handleMaterialboxClickBound + ) + }, + }, + { + key: '_removeEventHandlers', + value: function() { + this.el.removeEventListener( + 'click', + this._handleMaterialboxClickBound + ) + }, + }, + { + key: '_handleMaterialboxClick', + value: function(t) { + !1 === this.doneAnimating || + (this.overlayActive && this.doneAnimating) + ? this.close() + : this.open() + }, + }, + { + key: '_handleWindowScroll', + value: function() { + this.overlayActive && this.close() + }, + }, + { + key: '_handleWindowResize', + value: function() { + this.overlayActive && this.close() + }, + }, + { + key: '_handleWindowEscape', + value: function(t) { + 27 === t.keyCode && + this.doneAnimating && + this.overlayActive && + this.close() + }, + }, + { + key: '_makeAncestorsOverflowVisible', + value: function() { + this.ancestorsChanged = o() + for ( + var t = this.placeholder[0].parentNode; + null !== t && !o(t).is(document); + + ) { + var e = o(t) + 'visible' !== e.css('overflow') && + (e.css('overflow', 'visible'), + void 0 === this.ancestorsChanged + ? (this.ancestorsChanged = e) + : (this.ancestorsChanged = this.ancestorsChanged.add( + e + ))), + (t = t.parentNode) + } + }, + }, + { + key: '_animateImageIn', + value: function() { + var t = this, + e = { + targets: this.el, + height: [ + this.originalHeight, + this.newHeight, + ], + width: [ + this.originalWidth, + this.newWidth, + ], + left: + M.getDocumentScrollLeft() + + this.windowWidth / 2 - + this.placeholder.offset().left - + this.newWidth / 2, + top: + M.getDocumentScrollTop() + + this.windowHeight / 2 - + this.placeholder.offset().top - + this.newHeight / 2, + duration: this.options.inDuration, + easing: 'easeOutQuad', + complete: function() { + ;(t.doneAnimating = !0), + 'function' == + typeof t.options + .onOpenEnd && + t.options.onOpenEnd.call( + t, + t.el + ) + }, + } + ;(this.maxWidth = this.$el.css( + 'max-width' + )), + (this.maxHeight = this.$el.css( + 'max-height' + )), + 'none' !== this.maxWidth && + (e.maxWidth = this.newWidth), + 'none' !== this.maxHeight && + (e.maxHeight = this.newHeight), + a(e) + }, + }, + { + key: '_animateImageOut', + value: function() { + var t = this, + e = { + targets: this.el, + width: this.originalWidth, + height: this.originalHeight, + left: 0, + top: 0, + duration: this.options.outDuration, + easing: 'easeOutQuad', + complete: function() { + t.placeholder.css({ + height: '', + width: '', + position: '', + top: '', + left: '', + }), + t.attrWidth && + t.$el.attr( + 'width', + t.attrWidth + ), + t.attrHeight && + t.$el.attr( + 'height', + t.attrHeight + ), + t.$el.removeAttr('style'), + t.originInlineStyles && + t.$el.attr( + 'style', + t.originInlineStyles + ), + t.$el.removeClass('active'), + (t.doneAnimating = !0), + t.ancestorsChanged.length && + t.ancestorsChanged.css( + 'overflow', + '' + ), + 'function' == + typeof t.options + .onCloseEnd && + t.options.onCloseEnd.call( + t, + t.el + ) + }, + } + a(e) + }, + }, + { + key: '_updateVars', + value: function() { + ;(this.windowWidth = window.innerWidth), + (this.windowHeight = + window.innerHeight), + (this.caption = + this.el.getAttribute( + 'data-caption' + ) || '') + }, + }, + { + key: 'open', + value: function() { + var t = this + this._updateVars(), + (this.originalWidth = this.el.getBoundingClientRect().width), + (this.originalHeight = this.el.getBoundingClientRect().height), + (this.doneAnimating = !1), + this.$el.addClass('active'), + (this.overlayActive = !0), + 'function' == + typeof this.options.onOpenStart && + this.options.onOpenStart.call( + this, + this.el + ), + this.placeholder.css({ + width: + this.placeholder[0].getBoundingClientRect() + .width + 'px', + height: + this.placeholder[0].getBoundingClientRect() + .height + 'px', + position: 'relative', + top: 0, + left: 0, + }), + this._makeAncestorsOverflowVisible(), + this.$el.css({ + position: 'absolute', + 'z-index': 1e3, + 'will-change': + 'left, top, width, height', + }), + (this.attrWidth = this.$el.attr( + 'width' + )), + (this.attrHeight = this.$el.attr( + 'height' + )), + this.attrWidth && + (this.$el.css( + 'width', + this.attrWidth + 'px' + ), + this.$el.removeAttr('width')), + this.attrHeight && + (this.$el.css( + 'width', + this.attrHeight + 'px' + ), + this.$el.removeAttr('height')), + (this.$overlay = o( + '
' + ) + .css({ opacity: 0 }) + .one('click', function() { + t.doneAnimating && t.close() + })), + this.$el.before(this.$overlay) + var e = this.$overlay[0].getBoundingClientRect() + this.$overlay.css({ + width: this.windowWidth + 'px', + height: this.windowHeight + 'px', + left: -1 * e.left + 'px', + top: -1 * e.top + 'px', + }), + a.remove(this.el), + a.remove(this.$overlay[0]), + a({ + targets: this.$overlay[0], + opacity: 1, + duration: this.options.inDuration, + easing: 'easeOutQuad', + }), + '' !== this.caption && + (this.$photocaption && + a.remove(this.$photoCaption[0]), + (this.$photoCaption = o( + '
' + )), + this.$photoCaption.text( + this.caption + ), + o('body').append( + this.$photoCaption + ), + this.$photoCaption.css({ + display: 'inline', + }), + a({ + targets: this.$photoCaption[0], + opacity: 1, + duration: this.options + .inDuration, + easing: 'easeOutQuad', + })) + var i = 0, + n = + this.originalWidth / + this.windowWidth, + s = + this.originalHeight / + this.windowHeight + ;(this.newWidth = 0), + (this.newHeight = 0), + s < n + ? ((i = + this.originalHeight / + this.originalWidth), + (this.newWidth = + 0.9 * this.windowWidth), + (this.newHeight = + 0.9 * this.windowWidth * i)) + : ((i = + this.originalWidth / + this.originalHeight), + (this.newWidth = + 0.9 * this.windowHeight * i), + (this.newHeight = + 0.9 * this.windowHeight)), + this._animateImageIn(), + (this._handleWindowScrollBound = this._handleWindowScroll.bind( + this + )), + (this._handleWindowResizeBound = this._handleWindowResize.bind( + this + )), + (this._handleWindowEscapeBound = this._handleWindowEscape.bind( + this + )), + window.addEventListener( + 'scroll', + this._handleWindowScrollBound + ), + window.addEventListener( + 'resize', + this._handleWindowResizeBound + ), + window.addEventListener( + 'keyup', + this._handleWindowEscapeBound + ) + }, + }, + { + key: 'close', + value: function() { + var t = this + this._updateVars(), + (this.doneAnimating = !1), + 'function' == + typeof this.options.onCloseStart && + this.options.onCloseStart.call( + this, + this.el + ), + a.remove(this.el), + a.remove(this.$overlay[0]), + '' !== this.caption && + a.remove(this.$photoCaption[0]), + window.removeEventListener( + 'scroll', + this._handleWindowScrollBound + ), + window.removeEventListener( + 'resize', + this._handleWindowResizeBound + ), + window.removeEventListener( + 'keyup', + this._handleWindowEscapeBound + ), + a({ + targets: this.$overlay[0], + opacity: 0, + duration: this.options.outDuration, + easing: 'easeOutQuad', + complete: function() { + ;(t.overlayActive = !1), + t.$overlay.remove() + }, + }), + this._animateImageOut(), + '' !== this.caption && + a({ + targets: this.$photoCaption[0], + opacity: 0, + duration: this.options + .outDuration, + easing: 'easeOutQuad', + complete: function() { + t.$photoCaption.remove() + }, + }) + }, + }, + ], + [ + { + key: 'init', + value: function(t, e) { + return _get( + n.__proto__ || Object.getPrototypeOf(n), + 'init', + this + ).call(this, this, t, e) + }, + }, + { + key: 'getInstance', + value: function(t) { + return (t.jquery ? t[0] : t).M_Materialbox + }, + }, + { + key: 'defaults', + get: function() { + return e + }, + }, + ] + ), + n + ) + })() + ;(M.Materialbox = t), + M.jQueryLoaded && + M.initializeJqueryWrapper(t, 'materialbox', 'M_Materialbox') + })(cash, M.anime), + (function(s) { + 'use strict' + var e = { responsiveThreshold: 0 }, + t = (function(t) { + function n(t, e) { + _classCallCheck(this, n) + var i = _possibleConstructorReturn( + this, + (n.__proto__ || Object.getPrototypeOf(n)).call( + this, + n, + t, + e + ) + ) + return ( + ((i.el.M_Parallax = i).options = s.extend( + {}, + n.defaults, + e + )), + (i._enabled = + window.innerWidth > i.options.responsiveThreshold), + (i.$img = i.$el.find('img').first()), + i.$img.each(function() { + this.complete && s(this).trigger('load') + }), + i._updateParallax(), + i._setupEventHandlers(), + i._setupStyles(), + n._parallaxes.push(i), + i + ) + } + return ( + _inherits(n, Component), + _createClass( + n, + [ + { + key: 'destroy', + value: function() { + n._parallaxes.splice( + n._parallaxes.indexOf(this), + 1 + ), + (this.$img[0].style.transform = ''), + this._removeEventHandlers(), + (this.$el[0].M_Parallax = void 0) + }, + }, + { + key: '_setupEventHandlers', + value: function() { + ;(this._handleImageLoadBound = this._handleImageLoad.bind( + this + )), + this.$img[0].addEventListener( + 'load', + this._handleImageLoadBound + ), + 0 === n._parallaxes.length && + ((n._handleScrollThrottled = M.throttle( + n._handleScroll, + 5 + )), + window.addEventListener( + 'scroll', + n._handleScrollThrottled + ), + (n._handleWindowResizeThrottled = M.throttle( + n._handleWindowResize, + 5 + )), + window.addEventListener( + 'resize', + n._handleWindowResizeThrottled + )) + }, + }, + { + key: '_removeEventHandlers', + value: function() { + this.$img[0].removeEventListener( + 'load', + this._handleImageLoadBound + ), + 0 === n._parallaxes.length && + (window.removeEventListener( + 'scroll', + n._handleScrollThrottled + ), + window.removeEventListener( + 'resize', + n._handleWindowResizeThrottled + )) + }, + }, + { + key: '_setupStyles', + value: function() { + this.$img[0].style.opacity = 1 + }, + }, + { + key: '_handleImageLoad', + value: function() { + this._updateParallax() + }, + }, + { + key: '_updateParallax', + value: function() { + var t = + 0 < this.$el.height() + ? this.el.parentNode + .offsetHeight + : 500, + e = this.$img[0].offsetHeight - t, + i = this.$el.offset().top + t, + n = this.$el.offset().top, + s = M.getDocumentScrollTop(), + o = window.innerHeight, + a = e * ((s + o - n) / (t + o)) + this._enabled + ? s < i && + n < s + o && + (this.$img[0].style.transform = + 'translate3D(-50%, ' + + a + + 'px, 0)') + : (this.$img[0].style.transform = '') + }, + }, + ], + [ + { + key: 'init', + value: function(t, e) { + return _get( + n.__proto__ || Object.getPrototypeOf(n), + 'init', + this + ).call(this, this, t, e) + }, + }, + { + key: 'getInstance', + value: function(t) { + return (t.jquery ? t[0] : t).M_Parallax + }, + }, + { + key: '_handleScroll', + value: function() { + for ( + var t = 0; + t < n._parallaxes.length; + t++ + ) { + var e = n._parallaxes[t] + e._updateParallax.call(e) + } + }, + }, + { + key: '_handleWindowResize', + value: function() { + for ( + var t = 0; + t < n._parallaxes.length; + t++ + ) { + var e = n._parallaxes[t] + e._enabled = + window.innerWidth > + e.options.responsiveThreshold + } + }, + }, + { + key: 'defaults', + get: function() { + return e + }, + }, + ] + ), + n + ) + })() + ;(t._parallaxes = []), + (M.Parallax = t), + M.jQueryLoaded && + M.initializeJqueryWrapper(t, 'parallax', 'M_Parallax') + })(cash), + (function(a, s) { + 'use strict' + var e = { + duration: 300, + onShow: null, + swipeable: !1, + responsiveThreshold: 1 / 0, + }, + t = (function(t) { + function n(t, e) { + _classCallCheck(this, n) + var i = _possibleConstructorReturn( + this, + (n.__proto__ || Object.getPrototypeOf(n)).call( + this, + n, + t, + e + ) + ) + return ( + ((i.el.M_Tabs = i).options = a.extend( + {}, + n.defaults, + e + )), + (i.$tabLinks = i.$el.children('li.tab').children('a')), + (i.index = 0), + i._setupActiveTabLink(), + i.options.swipeable + ? i._setupSwipeableTabs() + : i._setupNormalTabs(), + i._setTabsAndTabWidth(), + i._createIndicator(), + i._setupEventHandlers(), + i + ) + } + return ( + _inherits(n, Component), + _createClass( + n, + [ + { + key: 'destroy', + value: function() { + this._removeEventHandlers(), + this._indicator.parentNode.removeChild( + this._indicator + ), + this.options.swipeable + ? this._teardownSwipeableTabs() + : this._teardownNormalTabs(), + (this.$el[0].M_Tabs = void 0) + }, + }, + { + key: '_setupEventHandlers', + value: function() { + ;(this._handleWindowResizeBound = this._handleWindowResize.bind( + this + )), + window.addEventListener( + 'resize', + this._handleWindowResizeBound + ), + (this._handleTabClickBound = this._handleTabClick.bind( + this + )), + this.el.addEventListener( + 'click', + this._handleTabClickBound + ) + }, + }, + { + key: '_removeEventHandlers', + value: function() { + window.removeEventListener( + 'resize', + this._handleWindowResizeBound + ), + this.el.removeEventListener( + 'click', + this._handleTabClickBound + ) + }, + }, + { + key: '_handleWindowResize', + value: function() { + this._setTabsAndTabWidth(), + 0 !== this.tabWidth && + 0 !== this.tabsWidth && + ((this._indicator.style.left = + this._calcLeftPos( + this.$activeTabLink + ) + 'px'), + (this._indicator.style.right = + this._calcRightPos( + this.$activeTabLink + ) + 'px')) + }, + }, + { + key: '_handleTabClick', + value: function(t) { + var e = this, + i = a(t.target).closest('li.tab'), + n = a(t.target).closest('a') + if (n.length && n.parent().hasClass('tab')) + if (i.hasClass('disabled')) + t.preventDefault() + else if (!n.attr('target')) { + this.$activeTabLink.removeClass( + 'active' + ) + var s = this.$content + ;(this.$activeTabLink = n), + (this.$content = a( + M.escapeHash(n[0].hash) + )), + (this.$tabLinks = this.$el + .children('li.tab') + .children('a')), + this.$activeTabLink.addClass( + 'active' + ) + var o = this.index + ;(this.index = Math.max( + this.$tabLinks.index(n), + 0 + )), + this.options.swipeable + ? this._tabsCarousel && + this._tabsCarousel.set( + this.index, + function() { + 'function' == + typeof e + .options + .onShow && + e.options.onShow.call( + e, + e + .$content[0] + ) + } + ) + : this.$content.length && + ((this.$content[0].style.display = + 'block'), + this.$content.addClass( + 'active' + ), + 'function' == + typeof this.options + .onShow && + this.options.onShow.call( + this, + this.$content[0] + ), + s.length && + !s.is( + this.$content + ) && + ((s[0].style.display = + 'none'), + s.removeClass( + 'active' + ))), + this._setTabsAndTabWidth(), + this._animateIndicator(o), + t.preventDefault() + } + }, + }, + { + key: '_createIndicator', + value: function() { + var t = this, + e = document.createElement('li') + e.classList.add('indicator'), + this.el.appendChild(e), + (this._indicator = e), + setTimeout(function() { + ;(t._indicator.style.left = + t._calcLeftPos( + t.$activeTabLink + ) + 'px'), + (t._indicator.style.right = + t._calcRightPos( + t.$activeTabLink + ) + 'px') + }, 0) + }, + }, + { + key: '_setupActiveTabLink', + value: function() { + ;(this.$activeTabLink = a( + this.$tabLinks.filter( + '[href="' + location.hash + '"]' + ) + )), + 0 === this.$activeTabLink.length && + (this.$activeTabLink = this.$el + .children('li.tab') + .children('a.active') + .first()), + 0 === this.$activeTabLink.length && + (this.$activeTabLink = this.$el + .children('li.tab') + .children('a') + .first()), + this.$tabLinks.removeClass('active'), + this.$activeTabLink[0].classList.add( + 'active' + ), + (this.index = Math.max( + this.$tabLinks.index( + this.$activeTabLink + ), + 0 + )), + this.$activeTabLink.length && + ((this.$content = a( + M.escapeHash( + this.$activeTabLink[0].hash + ) + )), + this.$content.addClass('active')) + }, + }, + { + key: '_setupSwipeableTabs', + value: function() { + var i = this + window.innerWidth > + this.options.responsiveThreshold && + (this.options.swipeable = !1) + var n = a() + this.$tabLinks.each(function(t) { + var e = a(M.escapeHash(t.hash)) + e.addClass('carousel-item'), + (n = n.add(e)) + }) + var t = a( + '' + ) + n.first().before(t), + t.append(n), + (n[0].style.display = '') + var e = this.$activeTabLink + .closest('.tab') + .index() + ;(this._tabsCarousel = M.Carousel.init( + t[0], + { + fullWidth: !0, + noWrap: !0, + onCycleTo: function(t) { + var e = i.index + ;(i.index = a(t).index()), + i.$activeTabLink.removeClass( + 'active' + ), + (i.$activeTabLink = i.$tabLinks.eq( + i.index + )), + i.$activeTabLink.addClass( + 'active' + ), + i._animateIndicator(e), + 'function' == + typeof i.options + .onShow && + i.options.onShow.call( + i, + i.$content[0] + ) + }, + } + )), + this._tabsCarousel.set(e) + }, + }, + { + key: '_teardownSwipeableTabs', + value: function() { + var t = this._tabsCarousel.$el + this._tabsCarousel.destroy(), + t.after(t.children()), + t.remove() + }, + }, + { + key: '_setupNormalTabs', + value: function() { + this.$tabLinks + .not(this.$activeTabLink) + .each(function(t) { + if (t.hash) { + var e = a(M.escapeHash(t.hash)) + e.length && + (e[0].style.display = + 'none') + } + }) + }, + }, + { + key: '_teardownNormalTabs', + value: function() { + this.$tabLinks.each(function(t) { + if (t.hash) { + var e = a(M.escapeHash(t.hash)) + e.length && + (e[0].style.display = '') + } + }) + }, + }, + { + key: '_setTabsAndTabWidth', + value: function() { + ;(this.tabsWidth = this.$el.width()), + (this.tabWidth = + Math.max( + this.tabsWidth, + this.el.scrollWidth + ) / this.$tabLinks.length) + }, + }, + { + key: '_calcRightPos', + value: function(t) { + return Math.ceil( + this.tabsWidth - + t.position().left - + t[0].getBoundingClientRect().width + ) + }, + }, + { + key: '_calcLeftPos', + value: function(t) { + return Math.floor(t.position().left) + }, + }, + { + key: 'updateTabIndicator', + value: function() { + this._setTabsAndTabWidth(), + this._animateIndicator(this.index) + }, + }, + { + key: '_animateIndicator', + value: function(t) { + var e = 0, + i = 0 + 0 <= this.index - t ? (e = 90) : (i = 90) + var n = { + targets: this._indicator, + left: { + value: this._calcLeftPos( + this.$activeTabLink + ), + delay: e, + }, + right: { + value: this._calcRightPos( + this.$activeTabLink + ), + delay: i, + }, + duration: this.options.duration, + easing: 'easeOutQuad', + } + s.remove(this._indicator), s(n) + }, + }, + { + key: 'select', + value: function(t) { + var e = this.$tabLinks.filter( + '[href="#' + t + '"]' + ) + e.length && e.trigger('click') + }, + }, + ], + [ + { + key: 'init', + value: function(t, e) { + return _get( + n.__proto__ || Object.getPrototypeOf(n), + 'init', + this + ).call(this, this, t, e) + }, + }, + { + key: 'getInstance', + value: function(t) { + return (t.jquery ? t[0] : t).M_Tabs + }, + }, + { + key: 'defaults', + get: function() { + return e + }, + }, + ] + ), + n + ) + })() + ;(M.Tabs = t), + M.jQueryLoaded && M.initializeJqueryWrapper(t, 'tabs', 'M_Tabs') + })(cash, M.anime), + (function(d, e) { + 'use strict' + var i = { + exitDelay: 200, + enterDelay: 0, + html: null, + margin: 5, + inDuration: 250, + outDuration: 200, + position: 'bottom', + transitionMovement: 10, + }, + t = (function(t) { + function n(t, e) { + _classCallCheck(this, n) + var i = _possibleConstructorReturn( + this, + (n.__proto__ || Object.getPrototypeOf(n)).call( + this, + n, + t, + e + ) + ) + return ( + ((i.el.M_Tooltip = i).options = d.extend( + {}, + n.defaults, + e + )), + (i.isOpen = !1), + (i.isHovered = !1), + (i.isFocused = !1), + i._appendTooltipEl(), + i._setupEventHandlers(), + i + ) + } + return ( + _inherits(n, Component), + _createClass( + n, + [ + { + key: 'destroy', + value: function() { + d(this.tooltipEl).remove(), + this._removeEventHandlers(), + (this.el.M_Tooltip = void 0) + }, + }, + { + key: '_appendTooltipEl', + value: function() { + var t = document.createElement('div') + t.classList.add('material-tooltip'), + (this.tooltipEl = t) + var e = document.createElement('div') + e.classList.add('tooltip-content'), + (e.innerHTML = this.options.html), + t.appendChild(e), + document.body.appendChild(t) + }, + }, + { + key: '_updateTooltipContent', + value: function() { + this.tooltipEl.querySelector( + '.tooltip-content' + ).innerHTML = this.options.html + }, + }, + { + key: '_setupEventHandlers', + value: function() { + ;(this._handleMouseEnterBound = this._handleMouseEnter.bind( + this + )), + (this._handleMouseLeaveBound = this._handleMouseLeave.bind( + this + )), + (this._handleFocusBound = this._handleFocus.bind( + this + )), + (this._handleBlurBound = this._handleBlur.bind( + this + )), + this.el.addEventListener( + 'mouseenter', + this._handleMouseEnterBound + ), + this.el.addEventListener( + 'mouseleave', + this._handleMouseLeaveBound + ), + this.el.addEventListener( + 'focus', + this._handleFocusBound, + !0 + ), + this.el.addEventListener( + 'blur', + this._handleBlurBound, + !0 + ) + }, + }, + { + key: '_removeEventHandlers', + value: function() { + this.el.removeEventListener( + 'mouseenter', + this._handleMouseEnterBound + ), + this.el.removeEventListener( + 'mouseleave', + this._handleMouseLeaveBound + ), + this.el.removeEventListener( + 'focus', + this._handleFocusBound, + !0 + ), + this.el.removeEventListener( + 'blur', + this._handleBlurBound, + !0 + ) + }, + }, + { + key: 'open', + value: function(t) { + this.isOpen || + ((t = void 0 === t || void 0), + (this.isOpen = !0), + (this.options = d.extend( + {}, + this.options, + this._getAttributeOptions() + )), + this._updateTooltipContent(), + this._setEnterDelayTimeout(t)) + }, + }, + { + key: 'close', + value: function() { + this.isOpen && + ((this.isHovered = !1), + (this.isFocused = !1), + (this.isOpen = !1), + this._setExitDelayTimeout()) + }, + }, + { + key: '_setExitDelayTimeout', + value: function() { + var t = this + clearTimeout(this._exitDelayTimeout), + (this._exitDelayTimeout = setTimeout( + function() { + t.isHovered || + t.isFocused || + t._animateOut() + }, + this.options.exitDelay + )) + }, + }, + { + key: '_setEnterDelayTimeout', + value: function(t) { + var e = this + clearTimeout(this._enterDelayTimeout), + (this._enterDelayTimeout = setTimeout( + function() { + ;(e.isHovered || + e.isFocused || + t) && + e._animateIn() + }, + this.options.enterDelay + )) + }, + }, + { + key: '_positionTooltip', + value: function() { + var t, + e = this.el, + i = this.tooltipEl, + n = e.offsetHeight, + s = e.offsetWidth, + o = i.offsetHeight, + a = i.offsetWidth, + r = this.options.margin, + l = void 0, + h = void 0 + ;(this.xMovement = 0), + (this.yMovement = 0), + (l = + e.getBoundingClientRect().top + + M.getDocumentScrollTop()), + (h = + e.getBoundingClientRect().left + + M.getDocumentScrollLeft()), + 'top' === this.options.position + ? ((l += -o - r), + (h += s / 2 - a / 2), + (this.yMovement = -this.options + .transitionMovement)) + : 'right' === this.options.position + ? ((l += n / 2 - o / 2), + (h += s + r), + (this.xMovement = this.options.transitionMovement)) + : 'left' === this.options.position + ? ((l += n / 2 - o / 2), + (h += -a - r), + (this.xMovement = -this.options + .transitionMovement)) + : ((l += n + r), + (h += s / 2 - a / 2), + (this.yMovement = this.options.transitionMovement)), + (t = this._repositionWithinScreen( + h, + l, + a, + o + )), + d(i).css({ + top: t.y + 'px', + left: t.x + 'px', + }) + }, + }, + { + key: '_repositionWithinScreen', + value: function(t, e, i, n) { + var s = M.getDocumentScrollLeft(), + o = M.getDocumentScrollTop(), + a = t - s, + r = e - o, + l = { + left: a, + top: r, + width: i, + height: n, + }, + h = + this.options.margin + + this.options.transitionMovement, + d = M.checkWithinContainer( + document.body, + l, + h + ) + return ( + d.left + ? (a = h) + : d.right && + (a -= a + i - window.innerWidth), + d.top + ? (r = h) + : d.bottom && + (r -= r + n - window.innerHeight), + { x: a + s, y: r + o } + ) + }, + }, + { + key: '_animateIn', + value: function() { + this._positionTooltip(), + (this.tooltipEl.style.visibility = + 'visible'), + e.remove(this.tooltipEl), + e({ + targets: this.tooltipEl, + opacity: 1, + translateX: this.xMovement, + translateY: this.yMovement, + duration: this.options.inDuration, + easing: 'easeOutCubic', + }) + }, + }, + { + key: '_animateOut', + value: function() { + e.remove(this.tooltipEl), + e({ + targets: this.tooltipEl, + opacity: 0, + translateX: 0, + translateY: 0, + duration: this.options.outDuration, + easing: 'easeOutCubic', + }) + }, + }, + { + key: '_handleMouseEnter', + value: function() { + ;(this.isHovered = !0), + (this.isFocused = !1), + this.open(!1) + }, + }, + { + key: '_handleMouseLeave', + value: function() { + ;(this.isHovered = !1), + (this.isFocused = !1), + this.close() + }, + }, + { + key: '_handleFocus', + value: function() { + M.tabPressed && + ((this.isFocused = !0), this.open(!1)) + }, + }, + { + key: '_handleBlur', + value: function() { + ;(this.isFocused = !1), this.close() + }, + }, + { + key: '_getAttributeOptions', + value: function() { + var t = {}, + e = this.el.getAttribute( + 'data-tooltip' + ), + i = this.el.getAttribute( + 'data-position' + ) + return ( + e && (t.html = e), + i && (t.position = i), + t + ) + }, + }, + ], + [ + { + key: 'init', + value: function(t, e) { + return _get( + n.__proto__ || Object.getPrototypeOf(n), + 'init', + this + ).call(this, this, t, e) + }, + }, + { + key: 'getInstance', + value: function(t) { + return (t.jquery ? t[0] : t).M_Tooltip + }, + }, + { + key: 'defaults', + get: function() { + return i + }, + }, + ] + ), + n + ) + })() + ;(M.Tooltip = t), + M.jQueryLoaded && + M.initializeJqueryWrapper(t, 'tooltip', 'M_Tooltip') + })(cash, M.anime), + (function(i) { + 'use strict' + var t = t || {}, + e = document.querySelectorAll.bind(document) + function m(t) { + var e = '' + for (var i in t) t.hasOwnProperty(i) && (e += i + ':' + t[i] + ';') + return e + } + var g = { + duration: 750, + show: function(t, e) { + if (2 === t.button) return !1 + var i = e || this, + n = document.createElement('div') + ;(n.className = 'waves-ripple'), i.appendChild(n) + var s, + o, + a, + r, + l, + h, + d, + u = + ((h = { top: 0, left: 0 }), + (d = (s = i) && s.ownerDocument), + (o = d.documentElement), + void 0 !== s.getBoundingClientRect && + (h = s.getBoundingClientRect()), + (a = + null !== (l = r = d) && l === l.window + ? r + : 9 === r.nodeType && r.defaultView), + { + top: h.top + a.pageYOffset - o.clientTop, + left: h.left + a.pageXOffset - o.clientLeft, + }), + c = t.pageY - u.top, + p = t.pageX - u.left, + v = 'scale(' + (i.clientWidth / 100) * 10 + ')' + 'touches' in t && + ((c = t.touches[0].pageY - u.top), + (p = t.touches[0].pageX - u.left)), + n.setAttribute('data-hold', Date.now()), + n.setAttribute('data-scale', v), + n.setAttribute('data-x', p), + n.setAttribute('data-y', c) + var f = { top: c + 'px', left: p + 'px' } + ;(n.className = n.className + ' waves-notransition'), + n.setAttribute('style', m(f)), + (n.className = n.className.replace( + 'waves-notransition', + '' + )), + (f['-webkit-transform'] = v), + (f['-moz-transform'] = v), + (f['-ms-transform'] = v), + (f['-o-transform'] = v), + (f.transform = v), + (f.opacity = '1'), + (f['-webkit-transition-duration'] = g.duration + 'ms'), + (f['-moz-transition-duration'] = g.duration + 'ms'), + (f['-o-transition-duration'] = g.duration + 'ms'), + (f['transition-duration'] = g.duration + 'ms'), + (f['-webkit-transition-timing-function'] = + 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'), + (f['-moz-transition-timing-function'] = + 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'), + (f['-o-transition-timing-function'] = + 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'), + (f['transition-timing-function'] = + 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'), + n.setAttribute('style', m(f)) + }, + hide: function(t) { + l.touchup(t) + var e = this, + i = (e.clientWidth, null), + n = e.getElementsByClassName('waves-ripple') + if (!(0 < n.length)) return !1 + var s = (i = n[n.length - 1]).getAttribute('data-x'), + o = i.getAttribute('data-y'), + a = i.getAttribute('data-scale'), + r = + 350 - + (Date.now() - Number(i.getAttribute('data-hold'))) + r < 0 && (r = 0), + setTimeout(function() { + var t = { + top: o + 'px', + left: s + 'px', + opacity: '0', + '-webkit-transition-duration': + g.duration + 'ms', + '-moz-transition-duration': g.duration + 'ms', + '-o-transition-duration': g.duration + 'ms', + 'transition-duration': g.duration + 'ms', + '-webkit-transform': a, + '-moz-transform': a, + '-ms-transform': a, + '-o-transform': a, + transform: a, + } + i.setAttribute('style', m(t)), + setTimeout(function() { + try { + e.removeChild(i) + } catch (t) { + return !1 + } + }, g.duration) + }, r) + }, + wrapInput: function(t) { + for (var e = 0; e < t.length; e++) { + var i = t[e] + if ('input' === i.tagName.toLowerCase()) { + var n = i.parentNode + if ( + 'i' === n.tagName.toLowerCase() && + -1 !== n.className.indexOf('waves-effect') + ) + continue + var s = document.createElement('i') + s.className = i.className + ' waves-input-wrapper' + var o = i.getAttribute('style') + o || (o = ''), + s.setAttribute('style', o), + (i.className = 'waves-button-input'), + i.removeAttribute('style'), + n.replaceChild(s, i), + s.appendChild(i) + } + } + }, + }, + l = { + touches: 0, + allowEvent: function(t) { + var e = !0 + return ( + 'touchstart' === t.type + ? (l.touches += 1) + : 'touchend' === t.type || 'touchcancel' === t.type + ? setTimeout(function() { + 0 < l.touches && (l.touches -= 1) + }, 500) + : 'mousedown' === t.type && + 0 < l.touches && + (e = !1), + e + ) + }, + touchup: function(t) { + l.allowEvent(t) + }, + } + function n(t) { + var e = (function(t) { + if (!1 === l.allowEvent(t)) return null + for ( + var e = null, i = t.target || t.srcElement; + null !== i.parentNode; + + ) { + if ( + !(i instanceof SVGElement) && + -1 !== i.className.indexOf('waves-effect') + ) { + e = i + break + } + i = i.parentNode + } + return e + })(t) + null !== e && + (g.show(t, e), + 'ontouchstart' in i && + (e.addEventListener('touchend', g.hide, !1), + e.addEventListener('touchcancel', g.hide, !1)), + e.addEventListener('mouseup', g.hide, !1), + e.addEventListener('mouseleave', g.hide, !1), + e.addEventListener('dragend', g.hide, !1)) + } + ;(t.displayEffect = function(t) { + 'duration' in (t = t || {}) && (g.duration = t.duration), + g.wrapInput(e('.waves-effect')), + 'ontouchstart' in i && + document.body.addEventListener('touchstart', n, !1), + document.body.addEventListener('mousedown', n, !1) + }), + (t.attach = function(t) { + 'input' === t.tagName.toLowerCase() && + (g.wrapInput([t]), (t = t.parentNode)), + 'ontouchstart' in i && + t.addEventListener('touchstart', n, !1), + t.addEventListener('mousedown', n, !1) + }), + (i.Waves = t), + document.addEventListener( + 'DOMContentLoaded', + function() { + t.displayEffect() + }, + !1 + ) + })(window), + (function(i, n) { + 'use strict' + var t = { + html: '', + displayLength: 4e3, + inDuration: 300, + outDuration: 375, + classes: '', + completeCallback: null, + activationPercent: 0.8, + }, + e = (function() { + function s(t) { + _classCallCheck(this, s), + (this.options = i.extend({}, s.defaults, t)), + (this.message = this.options.html), + (this.panning = !1), + (this.timeRemaining = this.options.displayLength), + 0 === s._toasts.length && s._createContainer(), + s._toasts.push(this) + var e = this._createToast() + ;((e.M_Toast = this).el = e), + (this.$el = i(e)), + this._animateIn(), + this._setTimer() + } + return ( + _createClass( + s, + [ + { + key: '_createToast', + value: function() { + var t = document.createElement('div') + return ( + t.classList.add('toast'), + this.options.classes.length && + i(t).addClass(this.options.classes), + ('object' == typeof HTMLElement + ? this.message instanceof HTMLElement + : this.message && + 'object' == typeof this.message && + null !== this.message && + 1 === this.message.nodeType && + 'string' == + typeof this.message.nodeName) + ? t.appendChild(this.message) + : this.message.jquery + ? i(t).append(this.message[0]) + : (t.innerHTML = this.message), + s._container.appendChild(t), + t + ) + }, + }, + { + key: '_animateIn', + value: function() { + n({ + targets: this.el, + top: 0, + opacity: 1, + duration: this.options.inDuration, + easing: 'easeOutCubic', + }) + }, + }, + { + key: '_setTimer', + value: function() { + var t = this + this.timeRemaining !== 1 / 0 && + (this.counterInterval = setInterval( + function() { + t.panning || + (t.timeRemaining -= 20), + t.timeRemaining <= 0 && + t.dismiss() + }, + 20 + )) + }, + }, + { + key: 'dismiss', + value: function() { + var t = this + window.clearInterval(this.counterInterval) + var e = + this.el.offsetWidth * + this.options.activationPercent + this.wasSwiped && + ((this.el.style.transition = + 'transform .05s, opacity .05s'), + (this.el.style.transform = + 'translateX(' + e + 'px)'), + (this.el.style.opacity = 0)), + n({ + targets: this.el, + opacity: 0, + marginTop: -40, + duration: this.options.outDuration, + easing: 'easeOutExpo', + complete: function() { + 'function' == + typeof t.options + .completeCallback && + t.options.completeCallback(), + t.$el.remove(), + s._toasts.splice( + s._toasts.indexOf(t), + 1 + ), + 0 === s._toasts.length && + s._removeContainer() + }, + }) + }, + }, + ], + [ + { + key: 'getInstance', + value: function(t) { + return (t.jquery ? t[0] : t).M_Toast + }, + }, + { + key: '_createContainer', + value: function() { + var t = document.createElement('div') + t.setAttribute('id', 'toast-container'), + t.addEventListener( + 'touchstart', + s._onDragStart + ), + t.addEventListener( + 'touchmove', + s._onDragMove + ), + t.addEventListener( + 'touchend', + s._onDragEnd + ), + t.addEventListener( + 'mousedown', + s._onDragStart + ), + document.addEventListener( + 'mousemove', + s._onDragMove + ), + document.addEventListener( + 'mouseup', + s._onDragEnd + ), + document.body.appendChild(t), + (s._container = t) + }, + }, + { + key: '_removeContainer', + value: function() { + document.removeEventListener( + 'mousemove', + s._onDragMove + ), + document.removeEventListener( + 'mouseup', + s._onDragEnd + ), + i(s._container).remove(), + (s._container = null) + }, + }, + { + key: '_onDragStart', + value: function(t) { + if ( + t.target && + i(t.target).closest('.toast').length + ) { + var e = i(t.target).closest('.toast')[0] + .M_Toast + ;(e.panning = !0), + (s._draggedToast = e).el.classList.add( + 'panning' + ), + (e.el.style.transition = ''), + (e.startingXPos = s._xPos(t)), + (e.time = Date.now()), + (e.xPos = s._xPos(t)) + } + }, + }, + { + key: '_onDragMove', + value: function(t) { + if (s._draggedToast) { + t.preventDefault() + var e = s._draggedToast + ;(e.deltaX = Math.abs( + e.xPos - s._xPos(t) + )), + (e.xPos = s._xPos(t)), + (e.velocityX = + e.deltaX / + (Date.now() - e.time)), + (e.time = Date.now()) + var i = e.xPos - e.startingXPos, + n = + e.el.offsetWidth * + e.options.activationPercent + ;(e.el.style.transform = + 'translateX(' + i + 'px)'), + (e.el.style.opacity = + 1 - Math.abs(i / n)) + } + }, + }, + { + key: '_onDragEnd', + value: function() { + if (s._draggedToast) { + var t = s._draggedToast + ;(t.panning = !1), + t.el.classList.remove('panning') + var e = t.xPos - t.startingXPos, + i = + t.el.offsetWidth * + t.options.activationPercent + Math.abs(e) > i || 1 < t.velocityX + ? ((t.wasSwiped = !0), t.dismiss()) + : ((t.el.style.transition = + 'transform .2s, opacity .2s'), + (t.el.style.transform = ''), + (t.el.style.opacity = '')), + (s._draggedToast = null) + } + }, + }, + { + key: '_xPos', + value: function(t) { + return t.targetTouches && + 1 <= t.targetTouches.length + ? t.targetTouches[0].clientX + : t.clientX + }, + }, + { + key: 'dismissAll', + value: function() { + for (var t in s._toasts) + s._toasts[t].dismiss() + }, + }, + { + key: 'defaults', + get: function() { + return t + }, + }, + ] + ), + s + ) + })() + ;(e._toasts = []), + (e._container = null), + (e._draggedToast = null), + (M.Toast = e), + (M.toast = function(t) { + return new e(t) + }) + })(cash, M.anime), + (function(s, o) { + 'use strict' + var e = { + edge: 'left', + draggable: !0, + inDuration: 250, + outDuration: 200, + onOpenStart: null, + onOpenEnd: null, + onCloseStart: null, + onCloseEnd: null, + preventScrolling: !0, + }, + t = (function(t) { + function n(t, e) { + _classCallCheck(this, n) + var i = _possibleConstructorReturn( + this, + (n.__proto__ || Object.getPrototypeOf(n)).call( + this, + n, + t, + e + ) + ) + return ( + ((i.el.M_Sidenav = i).id = i.$el.attr('id')), + (i.options = s.extend({}, n.defaults, e)), + (i.isOpen = !1), + (i.isFixed = i.el.classList.contains('sidenav-fixed')), + (i.isDragged = !1), + (i.lastWindowWidth = window.innerWidth), + (i.lastWindowHeight = window.innerHeight), + i._createOverlay(), + i._createDragTarget(), + i._setupEventHandlers(), + i._setupClasses(), + i._setupFixed(), + n._sidenavs.push(i), + i + ) + } + return ( + _inherits(n, Component), + _createClass( + n, + [ + { + key: 'destroy', + value: function() { + this._removeEventHandlers(), + this._enableBodyScrolling(), + this._overlay.parentNode.removeChild( + this._overlay + ), + this.dragTarget.parentNode.removeChild( + this.dragTarget + ), + (this.el.M_Sidenav = void 0), + (this.el.style.transform = '') + var t = n._sidenavs.indexOf(this) + 0 <= t && n._sidenavs.splice(t, 1) + }, + }, + { + key: '_createOverlay', + value: function() { + var t = document.createElement('div') + ;(this._closeBound = this.close.bind(this)), + t.classList.add('sidenav-overlay'), + t.addEventListener( + 'click', + this._closeBound + ), + document.body.appendChild(t), + (this._overlay = t) + }, + }, + { + key: '_setupEventHandlers', + value: function() { + 0 === n._sidenavs.length && + document.body.addEventListener( + 'click', + this._handleTriggerClick + ), + (this._handleDragTargetDragBound = this._handleDragTargetDrag.bind( + this + )), + (this._handleDragTargetReleaseBound = this._handleDragTargetRelease.bind( + this + )), + (this._handleCloseDragBound = this._handleCloseDrag.bind( + this + )), + (this._handleCloseReleaseBound = this._handleCloseRelease.bind( + this + )), + (this._handleCloseTriggerClickBound = this._handleCloseTriggerClick.bind( + this + )), + this.dragTarget.addEventListener( + 'touchmove', + this._handleDragTargetDragBound + ), + this.dragTarget.addEventListener( + 'touchend', + this._handleDragTargetReleaseBound + ), + this._overlay.addEventListener( + 'touchmove', + this._handleCloseDragBound + ), + this._overlay.addEventListener( + 'touchend', + this._handleCloseReleaseBound + ), + this.el.addEventListener( + 'touchmove', + this._handleCloseDragBound + ), + this.el.addEventListener( + 'touchend', + this._handleCloseReleaseBound + ), + this.el.addEventListener( + 'click', + this._handleCloseTriggerClickBound + ), + this.isFixed && + ((this._handleWindowResizeBound = this._handleWindowResize.bind( + this + )), + window.addEventListener( + 'resize', + this._handleWindowResizeBound + )) + }, + }, + { + key: '_removeEventHandlers', + value: function() { + 1 === n._sidenavs.length && + document.body.removeEventListener( + 'click', + this._handleTriggerClick + ), + this.dragTarget.removeEventListener( + 'touchmove', + this._handleDragTargetDragBound + ), + this.dragTarget.removeEventListener( + 'touchend', + this._handleDragTargetReleaseBound + ), + this._overlay.removeEventListener( + 'touchmove', + this._handleCloseDragBound + ), + this._overlay.removeEventListener( + 'touchend', + this._handleCloseReleaseBound + ), + this.el.removeEventListener( + 'touchmove', + this._handleCloseDragBound + ), + this.el.removeEventListener( + 'touchend', + this._handleCloseReleaseBound + ), + this.el.removeEventListener( + 'click', + this._handleCloseTriggerClickBound + ), + this.isFixed && + window.removeEventListener( + 'resize', + this._handleWindowResizeBound + ) + }, + }, + { + key: '_handleTriggerClick', + value: function(t) { + var e = s(t.target).closest( + '.sidenav-trigger' + ) + if (t.target && e.length) { + var i = M.getIdFromTrigger(e[0]), + n = document.getElementById(i) + .M_Sidenav + n && n.open(e), t.preventDefault() + } + }, + }, + { + key: '_startDrag', + value: function(t) { + var e = t.targetTouches[0].clientX + ;(this.isDragged = !0), + (this._startingXpos = e), + (this._xPos = this._startingXpos), + (this._time = Date.now()), + (this._width = this.el.getBoundingClientRect().width), + (this._overlay.style.display = 'block'), + (this._initialScrollTop = this.isOpen + ? this.el.scrollTop + : M.getDocumentScrollTop()), + (this._verticallyScrolling = !1), + o.remove(this.el), + o.remove(this._overlay) + }, + }, + { + key: '_dragMoveUpdate', + value: function(t) { + var e = t.targetTouches[0].clientX, + i = this.isOpen + ? this.el.scrollTop + : M.getDocumentScrollTop() + ;(this.deltaX = Math.abs(this._xPos - e)), + (this._xPos = e), + (this.velocityX = + this.deltaX / + (Date.now() - this._time)), + (this._time = Date.now()), + this._initialScrollTop !== i && + (this._verticallyScrolling = !0) + }, + }, + { + key: '_handleDragTargetDrag', + value: function(t) { + if ( + this.options.draggable && + !this._isCurrentlyFixed() && + !this._verticallyScrolling + ) { + this.isDragged || this._startDrag(t), + this._dragMoveUpdate(t) + var e = this._xPos - this._startingXpos, + i = 0 < e ? 'right' : 'left' + ;(e = Math.min( + this._width, + Math.abs(e) + )), + this.options.edge === i && (e = 0) + var n = e, + s = 'translateX(-100%)' + 'right' === this.options.edge && + ((s = 'translateX(100%)'), + (n = -n)), + (this.percentOpen = Math.min( + 1, + e / this._width + )), + (this.el.style.transform = + s + ' translateX(' + n + 'px)'), + (this._overlay.style.opacity = this.percentOpen) + } + }, + }, + { + key: '_handleDragTargetRelease', + value: function() { + this.isDragged && + (0.2 < this.percentOpen + ? this.open() + : this._animateOut(), + (this.isDragged = !1), + (this._verticallyScrolling = !1)) + }, + }, + { + key: '_handleCloseDrag', + value: function(t) { + if (this.isOpen) { + if ( + !this.options.draggable || + this._isCurrentlyFixed() || + this._verticallyScrolling + ) + return + this.isDragged || this._startDrag(t), + this._dragMoveUpdate(t) + var e = this._xPos - this._startingXpos, + i = 0 < e ? 'right' : 'left' + ;(e = Math.min( + this._width, + Math.abs(e) + )), + this.options.edge !== i && (e = 0) + var n = -e + 'right' === this.options.edge && + (n = -n), + (this.percentOpen = Math.min( + 1, + 1 - e / this._width + )), + (this.el.style.transform = + 'translateX(' + n + 'px)'), + (this._overlay.style.opacity = this.percentOpen) + } + }, + }, + { + key: '_handleCloseRelease', + value: function() { + this.isOpen && + this.isDragged && + (0.8 < this.percentOpen + ? this._animateIn() + : this.close(), + (this.isDragged = !1), + (this._verticallyScrolling = !1)) + }, + }, + { + key: '_handleCloseTriggerClick', + value: function(t) { + s(t.target).closest('.sidenav-close') + .length && + !this._isCurrentlyFixed() && + this.close() + }, + }, + { + key: '_handleWindowResize', + value: function() { + this.lastWindowWidth !== + window.innerWidth && + (992 < window.innerWidth + ? this.open() + : this.close()), + (this.lastWindowWidth = + window.innerWidth), + (this.lastWindowHeight = + window.innerHeight) + }, + }, + { + key: '_setupClasses', + value: function() { + 'right' === this.options.edge && + (this.el.classList.add('right-aligned'), + this.dragTarget.classList.add( + 'right-aligned' + )) + }, + }, + { + key: '_removeClasses', + value: function() { + this.el.classList.remove('right-aligned'), + this.dragTarget.classList.remove( + 'right-aligned' + ) + }, + }, + { + key: '_setupFixed', + value: function() { + this._isCurrentlyFixed() && this.open() + }, + }, + { + key: '_isCurrentlyFixed', + value: function() { + return ( + this.isFixed && 992 < window.innerWidth + ) + }, + }, + { + key: '_createDragTarget', + value: function() { + var t = document.createElement('div') + t.classList.add('drag-target'), + document.body.appendChild(t), + (this.dragTarget = t) + }, + }, + { + key: '_preventBodyScrolling', + value: function() { + document.body.style.overflow = 'hidden' + }, + }, + { + key: '_enableBodyScrolling', + value: function() { + document.body.style.overflow = '' + }, + }, + { + key: 'open', + value: function() { + !0 !== this.isOpen && + ((this.isOpen = !0), + 'function' == + typeof this.options.onOpenStart && + this.options.onOpenStart.call( + this, + this.el + ), + this._isCurrentlyFixed() + ? (o.remove(this.el), + o({ + targets: this.el, + translateX: 0, + duration: 0, + easing: 'easeOutQuad', + }), + this._enableBodyScrolling(), + (this._overlay.style.display = + 'none')) + : (this.options.preventScrolling && + this._preventBodyScrolling(), + (this.isDragged && + 1 == this.percentOpen) || + this._animateIn())) + }, + }, + { + key: 'close', + value: function() { + if (!1 !== this.isOpen) + if ( + ((this.isOpen = !1), + 'function' == + typeof this.options + .onCloseStart && + this.options.onCloseStart.call( + this, + this.el + ), + this._isCurrentlyFixed()) + ) { + var t = + 'left' === this.options.edge + ? '-105%' + : '105%' + this.el.style.transform = + 'translateX(' + t + ')' + } else + this._enableBodyScrolling(), + this.isDragged && + 0 == this.percentOpen + ? (this._overlay.style.display = + 'none') + : this._animateOut() + }, + }, + { + key: '_animateIn', + value: function() { + this._animateSidenavIn(), + this._animateOverlayIn() + }, + }, + { + key: '_animateSidenavIn', + value: function() { + var t = this, + e = + 'left' === this.options.edge + ? -1 + : 1 + this.isDragged && + (e = + 'left' === this.options.edge + ? e + this.percentOpen + : e - this.percentOpen), + o.remove(this.el), + o({ + targets: this.el, + translateX: [100 * e + '%', 0], + duration: this.options.inDuration, + easing: 'easeOutQuad', + complete: function() { + 'function' == + typeof t.options + .onOpenEnd && + t.options.onOpenEnd.call( + t, + t.el + ) + }, + }) + }, + }, + { + key: '_animateOverlayIn', + value: function() { + var t = 0 + this.isDragged + ? (t = this.percentOpen) + : s(this._overlay).css({ + display: 'block', + }), + o.remove(this._overlay), + o({ + targets: this._overlay, + opacity: [t, 1], + duration: this.options.inDuration, + easing: 'easeOutQuad', + }) + }, + }, + { + key: '_animateOut', + value: function() { + this._animateSidenavOut(), + this._animateOverlayOut() + }, + }, + { + key: '_animateSidenavOut', + value: function() { + var t = this, + e = + 'left' === this.options.edge + ? -1 + : 1, + i = 0 + this.isDragged && + (i = + 'left' === this.options.edge + ? e + this.percentOpen + : e - this.percentOpen), + o.remove(this.el), + o({ + targets: this.el, + translateX: [ + 100 * i + '%', + 105 * e + '%', + ], + duration: this.options.outDuration, + easing: 'easeOutQuad', + complete: function() { + 'function' == + typeof t.options + .onCloseEnd && + t.options.onCloseEnd.call( + t, + t.el + ) + }, + }) + }, + }, + { + key: '_animateOverlayOut', + value: function() { + var t = this + o.remove(this._overlay), + o({ + targets: this._overlay, + opacity: 0, + duration: this.options.outDuration, + easing: 'easeOutQuad', + complete: function() { + s(t._overlay).css( + 'display', + 'none' + ) + }, + }) + }, + }, + ], + [ + { + key: 'init', + value: function(t, e) { + return _get( + n.__proto__ || Object.getPrototypeOf(n), + 'init', + this + ).call(this, this, t, e) + }, + }, + { + key: 'getInstance', + value: function(t) { + return (t.jquery ? t[0] : t).M_Sidenav + }, + }, + { + key: 'defaults', + get: function() { + return e + }, + }, + ] + ), + n + ) + })() + ;(t._sidenavs = []), + (M.Sidenav = t), + M.jQueryLoaded && + M.initializeJqueryWrapper(t, 'sidenav', 'M_Sidenav') + })(cash, M.anime), + (function(o, a) { + 'use strict' + var e = { + throttle: 100, + scrollOffset: 200, + activeClass: 'active', + getActiveElement: function(t) { + return 'a[href="#' + t + '"]' + }, + }, + t = (function(t) { + function c(t, e) { + _classCallCheck(this, c) + var i = _possibleConstructorReturn( + this, + (c.__proto__ || Object.getPrototypeOf(c)).call( + this, + c, + t, + e + ) + ) + return ( + ((i.el.M_ScrollSpy = i).options = o.extend( + {}, + c.defaults, + e + )), + c._elements.push(i), + c._count++, + c._increment++, + (i.tickId = -1), + (i.id = c._increment), + i._setupEventHandlers(), + i._handleWindowScroll(), + i + ) + } + return ( + _inherits(c, Component), + _createClass( + c, + [ + { + key: 'destroy', + value: function() { + c._elements.splice( + c._elements.indexOf(this), + 1 + ), + c._elementsInView.splice( + c._elementsInView.indexOf(this), + 1 + ), + c._visibleElements.splice( + c._visibleElements.indexOf( + this.$el + ), + 1 + ), + c._count--, + this._removeEventHandlers(), + o( + this.options.getActiveElement( + this.$el.attr('id') + ) + ).removeClass(this.options.activeClass), + (this.el.M_ScrollSpy = void 0) + }, + }, + { + key: '_setupEventHandlers', + value: function() { + var t = M.throttle( + this._handleWindowScroll, + 200 + ) + ;(this._handleThrottledResizeBound = t.bind( + this + )), + (this._handleWindowScrollBound = this._handleWindowScroll.bind( + this + )), + 1 === c._count && + (window.addEventListener( + 'scroll', + this._handleWindowScrollBound + ), + window.addEventListener( + 'resize', + this._handleThrottledResizeBound + ), + document.body.addEventListener( + 'click', + this._handleTriggerClick + )) + }, + }, + { + key: '_removeEventHandlers', + value: function() { + 0 === c._count && + (window.removeEventListener( + 'scroll', + this._handleWindowScrollBound + ), + window.removeEventListener( + 'resize', + this._handleThrottledResizeBound + ), + document.body.removeEventListener( + 'click', + this._handleTriggerClick + )) + }, + }, + { + key: '_handleTriggerClick', + value: function(t) { + for ( + var e = o(t.target), + i = c._elements.length - 1; + 0 <= i; + i-- + ) { + var n = c._elements[i] + if ( + e.is( + 'a[href="#' + + n.$el.attr('id') + + '"]' + ) + ) { + t.preventDefault() + var s = n.$el.offset().top + 1 + a({ + targets: [ + document.documentElement, + document.body, + ], + scrollTop: + s - n.options.scrollOffset, + duration: 400, + easing: 'easeOutCubic', + }) + break + } + } + }, + }, + { + key: '_handleWindowScroll', + value: function() { + c._ticks++ + for ( + var t = M.getDocumentScrollTop(), + e = M.getDocumentScrollLeft(), + i = e + window.innerWidth, + n = t + window.innerHeight, + s = c._findElements(t, i, n, e), + o = 0; + o < s.length; + o++ + ) { + var a = s[o] + a.tickId < 0 && a._enter(), + (a.tickId = c._ticks) + } + for ( + var r = 0; + r < c._elementsInView.length; + r++ + ) { + var l = c._elementsInView[r], + h = l.tickId + 0 <= h && + h !== c._ticks && + (l._exit(), (l.tickId = -1)) + } + c._elementsInView = s + }, + }, + { + key: '_enter', + value: function() { + ;(c._visibleElements = c._visibleElements.filter( + function(t) { + return 0 != t.height() + } + ))[0] + ? (o( + this.options.getActiveElement( + c._visibleElements[0].attr( + 'id' + ) + ) + ).removeClass( + this.options.activeClass + ), + c._visibleElements[0][0] + .M_ScrollSpy && + this.id < + c._visibleElements[0][0] + .M_ScrollSpy.id + ? c._visibleElements.unshift( + this.$el + ) + : c._visibleElements.push( + this.$el + )) + : c._visibleElements.push(this.$el), + o( + this.options.getActiveElement( + c._visibleElements[0].attr('id') + ) + ).addClass(this.options.activeClass) + }, + }, + { + key: '_exit', + value: function() { + var e = this + ;(c._visibleElements = c._visibleElements.filter( + function(t) { + return 0 != t.height() + } + ))[0] && + (o( + this.options.getActiveElement( + c._visibleElements[0].attr('id') + ) + ).removeClass(this.options.activeClass), + (c._visibleElements = c._visibleElements.filter( + function(t) { + return ( + t.attr('id') != + e.$el.attr('id') + ) + } + ))[0] && + o( + this.options.getActiveElement( + c._visibleElements[0].attr( + 'id' + ) + ) + ).addClass( + this.options.activeClass + )) + }, + }, + ], + [ + { + key: 'init', + value: function(t, e) { + return _get( + c.__proto__ || Object.getPrototypeOf(c), + 'init', + this + ).call(this, this, t, e) + }, + }, + { + key: 'getInstance', + value: function(t) { + return (t.jquery ? t[0] : t).M_ScrollSpy + }, + }, + { + key: '_findElements', + value: function(t, e, i, n) { + for ( + var s = [], o = 0; + o < c._elements.length; + o++ + ) { + var a = c._elements[o], + r = + t + a.options.scrollOffset || + 200 + if (0 < a.$el.height()) { + var l = a.$el.offset().top, + h = a.$el.offset().left, + d = h + a.$el.width(), + u = l + a.$el.height() + !( + e < h || + d < n || + i < l || + u < r + ) && s.push(a) + } + } + return s + }, + }, + { + key: 'defaults', + get: function() { + return e + }, + }, + ] + ), + c + ) + })() + ;(t._elements = []), + (t._elementsInView = []), + (t._visibleElements = []), + (t._count = 0), + (t._increment = 0), + (t._ticks = 0), + (M.ScrollSpy = t), + M.jQueryLoaded && + M.initializeJqueryWrapper(t, 'scrollSpy', 'M_ScrollSpy') + })(cash, M.anime), + (function(h) { + 'use strict' + var e = { + data: {}, + limit: 1 / 0, + onAutocomplete: null, + minLength: 1, + sortFunction: function(t, e, i) { + return t.indexOf(i) - e.indexOf(i) + }, + }, + t = (function(t) { + function s(t, e) { + _classCallCheck(this, s) + var i = _possibleConstructorReturn( + this, + (s.__proto__ || Object.getPrototypeOf(s)).call( + this, + s, + t, + e + ) + ) + return ( + ((i.el.M_Autocomplete = i).options = h.extend( + {}, + s.defaults, + e + )), + (i.isOpen = !1), + (i.count = 0), + (i.activeIndex = -1), + i.oldVal, + (i.$inputField = i.$el.closest('.input-field')), + (i.$active = h()), + (i._mousedown = !1), + i._setupDropdown(), + i._setupEventHandlers(), + i + ) + } + return ( + _inherits(s, Component), + _createClass( + s, + [ + { + key: 'destroy', + value: function() { + this._removeEventHandlers(), + this._removeDropdown(), + (this.el.M_Autocomplete = void 0) + }, + }, + { + key: '_setupEventHandlers', + value: function() { + ;(this._handleInputBlurBound = this._handleInputBlur.bind( + this + )), + (this._handleInputKeyupAndFocusBound = this._handleInputKeyupAndFocus.bind( + this + )), + (this._handleInputKeydownBound = this._handleInputKeydown.bind( + this + )), + (this._handleInputClickBound = this._handleInputClick.bind( + this + )), + (this._handleContainerMousedownAndTouchstartBound = this._handleContainerMousedownAndTouchstart.bind( + this + )), + (this._handleContainerMouseupAndTouchendBound = this._handleContainerMouseupAndTouchend.bind( + this + )), + this.el.addEventListener( + 'blur', + this._handleInputBlurBound + ), + this.el.addEventListener( + 'keyup', + this._handleInputKeyupAndFocusBound + ), + this.el.addEventListener( + 'focus', + this._handleInputKeyupAndFocusBound + ), + this.el.addEventListener( + 'keydown', + this._handleInputKeydownBound + ), + this.el.addEventListener( + 'click', + this._handleInputClickBound + ), + this.container.addEventListener( + 'mousedown', + this + ._handleContainerMousedownAndTouchstartBound + ), + this.container.addEventListener( + 'mouseup', + this + ._handleContainerMouseupAndTouchendBound + ), + void 0 !== window.ontouchstart && + (this.container.addEventListener( + 'touchstart', + this + ._handleContainerMousedownAndTouchstartBound + ), + this.container.addEventListener( + 'touchend', + this + ._handleContainerMouseupAndTouchendBound + )) + }, + }, + { + key: '_removeEventHandlers', + value: function() { + this.el.removeEventListener( + 'blur', + this._handleInputBlurBound + ), + this.el.removeEventListener( + 'keyup', + this._handleInputKeyupAndFocusBound + ), + this.el.removeEventListener( + 'focus', + this._handleInputKeyupAndFocusBound + ), + this.el.removeEventListener( + 'keydown', + this._handleInputKeydownBound + ), + this.el.removeEventListener( + 'click', + this._handleInputClickBound + ), + this.container.removeEventListener( + 'mousedown', + this + ._handleContainerMousedownAndTouchstartBound + ), + this.container.removeEventListener( + 'mouseup', + this + ._handleContainerMouseupAndTouchendBound + ), + void 0 !== window.ontouchstart && + (this.container.removeEventListener( + 'touchstart', + this + ._handleContainerMousedownAndTouchstartBound + ), + this.container.removeEventListener( + 'touchend', + this + ._handleContainerMouseupAndTouchendBound + )) + }, + }, + { + key: '_setupDropdown', + value: function() { + var e = this + ;(this.container = document.createElement( + 'ul' + )), + (this.container.id = + 'autocomplete-options-' + M.guid()), + h(this.container).addClass( + 'autocomplete-content dropdown-content' + ), + this.$inputField.append(this.container), + this.el.setAttribute( + 'data-target', + this.container.id + ), + (this.dropdown = M.Dropdown.init( + this.el, + { + autoFocus: !1, + closeOnClick: !1, + coverTrigger: !1, + onItemClick: function(t) { + e.selectOption(h(t)) + }, + } + )), + this.el.removeEventListener( + 'click', + this.dropdown._handleClickBound + ) + }, + }, + { + key: '_removeDropdown', + value: function() { + this.container.parentNode.removeChild( + this.container + ) + }, + }, + { + key: '_handleInputBlur', + value: function() { + this._mousedown || + (this.close(), + this._resetAutocomplete()) + }, + }, + { + key: '_handleInputKeyupAndFocus', + value: function(t) { + 'keyup' === t.type && (s._keydown = !1), + (this.count = 0) + var e = this.el.value.toLowerCase() + 13 !== t.keyCode && + 38 !== t.keyCode && + 40 !== t.keyCode && + (this.oldVal === e || + (!M.tabPressed && + 'focus' === t.type) || + this.open(), + (this.oldVal = e)) + }, + }, + { + key: '_handleInputKeydown', + value: function(t) { + s._keydown = !0 + var e = t.keyCode, + i = void 0, + n = h(this.container).children('li') + .length + e === M.keys.ENTER && 0 <= this.activeIndex + ? (i = h(this.container) + .children('li') + .eq(this.activeIndex)).length && + (this.selectOption(i), + t.preventDefault()) + : (e !== M.keys.ARROW_UP && + e !== M.keys.ARROW_DOWN) || + (t.preventDefault(), + e === M.keys.ARROW_UP && + 0 < this.activeIndex && + this.activeIndex--, + e === M.keys.ARROW_DOWN && + this.activeIndex < n - 1 && + this.activeIndex++, + this.$active.removeClass('active'), + 0 <= this.activeIndex && + ((this.$active = h(this.container) + .children('li') + .eq(this.activeIndex)), + this.$active.addClass('active'))) + }, + }, + { + key: '_handleInputClick', + value: function(t) { + this.open() + }, + }, + { + key: '_handleContainerMousedownAndTouchstart', + value: function(t) { + this._mousedown = !0 + }, + }, + { + key: '_handleContainerMouseupAndTouchend', + value: function(t) { + this._mousedown = !1 + }, + }, + { + key: '_highlight', + value: function(t, e) { + var i = e.find('img'), + n = e + .text() + .toLowerCase() + .indexOf('' + t.toLowerCase()), + s = n + t.length - 1, + o = e.text().slice(0, n), + a = e.text().slice(n, s + 1), + r = e.text().slice(s + 1) + e.html( + '' + + o + + "" + + a + + '' + + r + + '' + ), + i.length && e.prepend(i) + }, + }, + { + key: '_resetCurrentElement', + value: function() { + ;(this.activeIndex = -1), + this.$active.removeClass('active') + }, + }, + { + key: '_resetAutocomplete', + value: function() { + h(this.container).empty(), + this._resetCurrentElement(), + (this.oldVal = null), + (this.isOpen = !1), + (this._mousedown = !1) + }, + }, + { + key: 'selectOption', + value: function(t) { + var e = t.text().trim() + ;(this.el.value = e), + this.$el.trigger('change'), + this._resetAutocomplete(), + this.close(), + 'function' == + typeof this.options + .onAutocomplete && + this.options.onAutocomplete.call( + this, + e + ) + }, + }, + { + key: '_renderDropdown', + value: function(t, i) { + var n = this + this._resetAutocomplete() + var e = [] + for (var s in t) + if ( + t.hasOwnProperty(s) && + -1 !== s.toLowerCase().indexOf(i) + ) { + if ( + this.count >= this.options.limit + ) + break + var o = { data: t[s], key: s } + e.push(o), this.count++ + } + if (this.options.sortFunction) { + e.sort(function(t, e) { + return n.options.sortFunction( + t.key.toLowerCase(), + e.key.toLowerCase(), + i.toLowerCase() + ) + }) + } + for (var a = 0; a < e.length; a++) { + var r = e[a], + l = h('
  • ') + r.data + ? l.append( + '' + + r.key + + '' + ) + : l.append( + '' + r.key + '' + ), + h(this.container).append(l), + this._highlight(i, l) + } + }, + }, + { + key: 'open', + value: function() { + var t = this.el.value.toLowerCase() + this._resetAutocomplete(), + t.length >= this.options.minLength && + ((this.isOpen = !0), + this._renderDropdown( + this.options.data, + t + )), + this.dropdown.isOpen + ? this.dropdown.recalculateDimensions() + : this.dropdown.open() + }, + }, + { + key: 'close', + value: function() { + this.dropdown.close() + }, + }, + { + key: 'updateData', + value: function(t) { + var e = this.el.value.toLowerCase() + ;(this.options.data = t), + this.isOpen && + this._renderDropdown(t, e) + }, + }, + ], + [ + { + key: 'init', + value: function(t, e) { + return _get( + s.__proto__ || Object.getPrototypeOf(s), + 'init', + this + ).call(this, this, t, e) + }, + }, + { + key: 'getInstance', + value: function(t) { + return (t.jquery ? t[0] : t).M_Autocomplete + }, + }, + { + key: 'defaults', + get: function() { + return e + }, + }, + ] + ), + s + ) + })() + ;(t._keydown = !1), + (M.Autocomplete = t), + M.jQueryLoaded && + M.initializeJqueryWrapper(t, 'autocomplete', 'M_Autocomplete') + })(cash), + (function(d) { + ;(M.updateTextFields = function() { + d( + 'input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], input[type=date], input[type=time], textarea' + ).each(function(t, e) { + var i = d(this) + 0 < t.value.length || + d(t).is(':focus') || + t.autofocus || + null !== i.attr('placeholder') + ? i.siblings('label').addClass('active') + : t.validity + ? i + .siblings('label') + .toggleClass('active', !0 === t.validity.badInput) + : i.siblings('label').removeClass('active') + }) + }), + (M.validate_field = function(t) { + var e = null !== t.attr('data-length'), + i = parseInt(t.attr('data-length')), + n = t[0].value.length + 0 !== n || !1 !== t[0].validity.badInput || t.is(':required') + ? t.hasClass('validate') && + ((t.is(':valid') && e && n <= i) || (t.is(':valid') && !e) + ? (t.removeClass('invalid'), t.addClass('valid')) + : (t.removeClass('valid'), t.addClass('invalid'))) + : t.hasClass('validate') && + (t.removeClass('valid'), t.removeClass('invalid')) + }), + (M.textareaAutoResize = function(t) { + if ((t instanceof Element && (t = d(t)), t.length)) { + var e = d('.hiddendiv').first() + e.length || + ((e = d('
    ')), + d('body').append(e)) + var i = t.css('font-family'), + n = t.css('font-size'), + s = t.css('line-height'), + o = t.css('padding-top'), + a = t.css('padding-right'), + r = t.css('padding-bottom'), + l = t.css('padding-left') + n && e.css('font-size', n), + i && e.css('font-family', i), + s && e.css('line-height', s), + o && e.css('padding-top', o), + a && e.css('padding-right', a), + r && e.css('padding-bottom', r), + l && e.css('padding-left', l), + t.data('original-height') || + t.data('original-height', t.height()), + 'off' === t.attr('wrap') && + e + .css('overflow-wrap', 'normal') + .css('white-space', 'pre'), + e.text(t[0].value + '\n') + var h = e.html().replace(/\n/g, '
    ') + e.html(h), + 0 < t[0].offsetWidth && 0 < t[0].offsetHeight + ? e.css('width', t.width() + 'px') + : e.css('width', window.innerWidth / 2 + 'px'), + t.data('original-height') <= e.innerHeight() + ? t.css('height', e.innerHeight() + 'px') + : t[0].value.length < t.data('previous-length') && + t.css('height', t.data('original-height') + 'px'), + t.data('previous-length', t[0].value.length) + } else console.error('No textarea element found') + }), + d(document).ready(function() { + var n = + 'input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], input[type=date], input[type=time], textarea' + d(document).on('change', n, function() { + ;(0 === this.value.length && + null === d(this).attr('placeholder')) || + d(this) + .siblings('label') + .addClass('active'), + M.validate_field(d(this)) + }), + d(document).ready(function() { + M.updateTextFields() + }), + d(document).on('reset', function(t) { + var e = d(t.target) + e.is('form') && + (e + .find(n) + .removeClass('valid') + .removeClass('invalid'), + e.find(n).each(function(t) { + this.value.length && + d(this) + .siblings('label') + .removeClass('active') + }), + setTimeout(function() { + e.find('select').each(function() { + this.M_FormSelect && + d(this).trigger('change') + }) + }, 0)) + }), + document.addEventListener( + 'focus', + function(t) { + d(t.target).is(n) && + d(t.target) + .siblings('label, .prefix') + .addClass('active') + }, + !0 + ), + document.addEventListener( + 'blur', + function(t) { + var e = d(t.target) + if (e.is(n)) { + var i = '.prefix' + 0 === e[0].value.length && + !0 !== e[0].validity.badInput && + null === e.attr('placeholder') && + (i += ', label'), + e.siblings(i).removeClass('active'), + M.validate_field(e) + } + }, + !0 + ) + d(document).on( + 'keyup', + 'input[type=radio], input[type=checkbox]', + function(t) { + if (t.which === M.keys.TAB) + return ( + d(this).addClass('tabbed'), + void d(this).one('blur', function(t) { + d(this).removeClass('tabbed') + }) + ) + } + ) + var t = '.materialize-textarea' + d(t).each(function() { + var t = d(this) + t.data('original-height', t.height()), + t.data('previous-length', this.value.length), + M.textareaAutoResize(t) + }), + d(document).on('keyup', t, function() { + M.textareaAutoResize(d(this)) + }), + d(document).on('keydown', t, function() { + M.textareaAutoResize(d(this)) + }), + d(document).on( + 'change', + '.file-field input[type="file"]', + function() { + for ( + var t = d(this) + .closest('.file-field') + .find('input.file-path'), + e = d(this)[0].files, + i = [], + n = 0; + n < e.length; + n++ + ) + i.push(e[n].name) + ;(t[0].value = i.join(', ')), t.trigger('change') + } + ) + }) + })(cash), + (function(s, o) { + 'use strict' + var e = { indicators: !0, height: 400, duration: 500, interval: 6e3 }, + t = (function(t) { + function n(t, e) { + _classCallCheck(this, n) + var i = _possibleConstructorReturn( + this, + (n.__proto__ || Object.getPrototypeOf(n)).call( + this, + n, + t, + e + ) + ) + return ( + ((i.el.M_Slider = i).options = s.extend( + {}, + n.defaults, + e + )), + (i.$slider = i.$el.find('.slides')), + (i.$slides = i.$slider.children('li')), + (i.activeIndex = i.$slides + .filter(function(t) { + return s(t).hasClass('active') + }) + .first() + .index()), + -1 != i.activeIndex && + (i.$active = i.$slides.eq(i.activeIndex)), + i._setSliderHeight(), + i.$slides.find('.caption').each(function(t) { + i._animateCaptionIn(t, 0) + }), + i.$slides.find('img').each(function(t) { + var e = + 'data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==' + s(t).attr('src') !== e && + (s(t).css( + 'background-image', + 'url("' + s(t).attr('src') + '")' + ), + s(t).attr('src', e)) + }), + i._setupIndicators(), + i.$active + ? i.$active.css('display', 'block') + : (i.$slides.first().addClass('active'), + o({ + targets: i.$slides.first()[0], + opacity: 1, + duration: i.options.duration, + easing: 'easeOutQuad', + }), + (i.activeIndex = 0), + (i.$active = i.$slides.eq(i.activeIndex)), + i.options.indicators && + i.$indicators + .eq(i.activeIndex) + .addClass('active')), + i.$active.find('img').each(function(t) { + o({ + targets: i.$active.find('.caption')[0], + opacity: 1, + translateX: 0, + translateY: 0, + duration: i.options.duration, + easing: 'easeOutQuad', + }) + }), + i._setupEventHandlers(), + i.start(), + i + ) + } + return ( + _inherits(n, Component), + _createClass( + n, + [ + { + key: 'destroy', + value: function() { + this.pause(), + this._removeIndicators(), + this._removeEventHandlers(), + (this.el.M_Slider = void 0) + }, + }, + { + key: '_setupEventHandlers', + value: function() { + var e = this + ;(this._handleIntervalBound = this._handleInterval.bind( + this + )), + (this._handleIndicatorClickBound = this._handleIndicatorClick.bind( + this + )), + this.options.indicators && + this.$indicators.each(function(t) { + t.addEventListener( + 'click', + e._handleIndicatorClickBound + ) + }) + }, + }, + { + key: '_removeEventHandlers', + value: function() { + var e = this + this.options.indicators && + this.$indicators.each(function(t) { + t.removeEventListener( + 'click', + e._handleIndicatorClickBound + ) + }) + }, + }, + { + key: '_handleIndicatorClick', + value: function(t) { + var e = s(t.target).index() + this.set(e) + }, + }, + { + key: '_handleInterval', + value: function() { + var t = this.$slider.find('.active').index() + this.$slides.length === t + 1 + ? (t = 0) + : (t += 1), + this.set(t) + }, + }, + { + key: '_animateCaptionIn', + value: function(t, e) { + var i = { + targets: t, + opacity: 0, + duration: e, + easing: 'easeOutQuad', + } + s(t).hasClass('center-align') + ? (i.translateY = -100) + : s(t).hasClass('right-align') + ? (i.translateX = 100) + : s(t).hasClass('left-align') && + (i.translateX = -100), + o(i) + }, + }, + { + key: '_setSliderHeight', + value: function() { + this.$el.hasClass('fullscreen') || + (this.options.indicators + ? this.$el.css( + 'height', + this.options.height + + 40 + + 'px' + ) + : this.$el.css( + 'height', + this.options.height + 'px' + ), + this.$slider.css( + 'height', + this.options.height + 'px' + )) + }, + }, + { + key: '_setupIndicators', + value: function() { + var n = this + this.options.indicators && + ((this.$indicators = s( + '' + )), + this.$slides.each(function(t, e) { + var i = s( + '
  • ' + ) + n.$indicators.append(i[0]) + }), + this.$el.append(this.$indicators[0]), + (this.$indicators = this.$indicators.children( + 'li.indicator-item' + ))) + }, + }, + { + key: '_removeIndicators', + value: function() { + this.$el.find('ul.indicators').remove() + }, + }, + { + key: 'set', + value: function(t) { + var e = this + if ( + (t >= this.$slides.length + ? (t = 0) + : t < 0 && + (t = this.$slides.length - 1), + this.activeIndex != t) + ) { + this.$active = this.$slides.eq( + this.activeIndex + ) + var i = this.$active.find('.caption') + this.$active.removeClass('active'), + o({ + targets: this.$active[0], + opacity: 0, + duration: this.options.duration, + easing: 'easeOutQuad', + complete: function() { + e.$slides + .not('.active') + .each(function(t) { + o({ + targets: t, + opacity: 0, + translateX: 0, + translateY: 0, + duration: 0, + easing: + 'easeOutQuad', + }) + }) + }, + }), + this._animateCaptionIn( + i[0], + this.options.duration + ), + this.options.indicators && + (this.$indicators + .eq(this.activeIndex) + .removeClass('active'), + this.$indicators + .eq(t) + .addClass('active')), + o({ + targets: this.$slides.eq(t)[0], + opacity: 1, + duration: this.options.duration, + easing: 'easeOutQuad', + }), + o({ + targets: this.$slides + .eq(t) + .find('.caption')[0], + opacity: 1, + translateX: 0, + translateY: 0, + duration: this.options.duration, + delay: this.options.duration, + easing: 'easeOutQuad', + }), + this.$slides + .eq(t) + .addClass('active'), + (this.activeIndex = t), + this.start() + } + }, + }, + { + key: 'pause', + value: function() { + clearInterval(this.interval) + }, + }, + { + key: 'start', + value: function() { + clearInterval(this.interval), + (this.interval = setInterval( + this._handleIntervalBound, + this.options.duration + + this.options.interval + )) + }, + }, + { + key: 'next', + value: function() { + var t = this.activeIndex + 1 + t >= this.$slides.length + ? (t = 0) + : t < 0 && + (t = this.$slides.length - 1), + this.set(t) + }, + }, + { + key: 'prev', + value: function() { + var t = this.activeIndex - 1 + t >= this.$slides.length + ? (t = 0) + : t < 0 && + (t = this.$slides.length - 1), + this.set(t) + }, + }, + ], + [ + { + key: 'init', + value: function(t, e) { + return _get( + n.__proto__ || Object.getPrototypeOf(n), + 'init', + this + ).call(this, this, t, e) + }, + }, + { + key: 'getInstance', + value: function(t) { + return (t.jquery ? t[0] : t).M_Slider + }, + }, + { + key: 'defaults', + get: function() { + return e + }, + }, + ] + ), + n + ) + })() + ;(M.Slider = t), + M.jQueryLoaded && M.initializeJqueryWrapper(t, 'slider', 'M_Slider') + })(cash, M.anime), + (function(n, s) { + n(document).on('click', '.card', function(t) { + if (n(this).children('.card-reveal').length) { + var i = n(t.target).closest('.card') + void 0 === i.data('initialOverflow') && + i.data( + 'initialOverflow', + void 0 === i.css('overflow') ? '' : i.css('overflow') + ) + var e = n(this).find('.card-reveal') + n(t.target).is(n('.card-reveal .card-title')) || + n(t.target).is(n('.card-reveal .card-title i')) + ? s({ + targets: e[0], + translateY: 0, + duration: 225, + easing: 'easeInOutQuad', + complete: function(t) { + var e = t.animatables[0].target + n(e).css({ display: 'none' }), + i.css('overflow', i.data('initialOverflow')) + }, + }) + : (n(t.target).is(n('.card .activator')) || + n(t.target).is(n('.card .activator i'))) && + (i.css('overflow', 'hidden'), + e.css({ display: 'block' }), + s({ + targets: e[0], + translateY: '-100%', + duration: 300, + easing: 'easeInOutQuad', + })) + } + }) + })(cash, M.anime), + (function(h) { + 'use strict' + var e = { + data: [], + placeholder: '', + secondaryPlaceholder: '', + autocompleteOptions: {}, + limit: 1 / 0, + onChipAdd: null, + onChipSelect: null, + onChipDelete: null, + }, + t = (function(t) { + function l(t, e) { + _classCallCheck(this, l) + var i = _possibleConstructorReturn( + this, + (l.__proto__ || Object.getPrototypeOf(l)).call( + this, + l, + t, + e + ) + ) + return ( + ((i.el.M_Chips = i).options = h.extend( + {}, + l.defaults, + e + )), + i.$el.addClass('chips input-field'), + (i.chipsData = []), + (i.$chips = h()), + i._setupInput(), + (i.hasAutocomplete = + 0 < + Object.keys(i.options.autocompleteOptions).length), + i.$input.attr('id') || i.$input.attr('id', M.guid()), + i.options.data.length && + ((i.chipsData = i.options.data), + i._renderChips(i.chipsData)), + i.hasAutocomplete && i._setupAutocomplete(), + i._setPlaceholder(), + i._setupLabel(), + i._setupEventHandlers(), + i + ) + } + return ( + _inherits(l, Component), + _createClass( + l, + [ + { + key: 'getData', + value: function() { + return this.chipsData + }, + }, + { + key: 'destroy', + value: function() { + this._removeEventHandlers(), + this.$chips.remove(), + (this.el.M_Chips = void 0) + }, + }, + { + key: '_setupEventHandlers', + value: function() { + ;(this._handleChipClickBound = this._handleChipClick.bind( + this + )), + (this._handleInputKeydownBound = this._handleInputKeydown.bind( + this + )), + (this._handleInputFocusBound = this._handleInputFocus.bind( + this + )), + (this._handleInputBlurBound = this._handleInputBlur.bind( + this + )), + this.el.addEventListener( + 'click', + this._handleChipClickBound + ), + document.addEventListener( + 'keydown', + l._handleChipsKeydown + ), + document.addEventListener( + 'keyup', + l._handleChipsKeyup + ), + this.el.addEventListener( + 'blur', + l._handleChipsBlur, + !0 + ), + this.$input[0].addEventListener( + 'focus', + this._handleInputFocusBound + ), + this.$input[0].addEventListener( + 'blur', + this._handleInputBlurBound + ), + this.$input[0].addEventListener( + 'keydown', + this._handleInputKeydownBound + ) + }, + }, + { + key: '_removeEventHandlers', + value: function() { + this.el.removeEventListener( + 'click', + this._handleChipClickBound + ), + document.removeEventListener( + 'keydown', + l._handleChipsKeydown + ), + document.removeEventListener( + 'keyup', + l._handleChipsKeyup + ), + this.el.removeEventListener( + 'blur', + l._handleChipsBlur, + !0 + ), + this.$input[0].removeEventListener( + 'focus', + this._handleInputFocusBound + ), + this.$input[0].removeEventListener( + 'blur', + this._handleInputBlurBound + ), + this.$input[0].removeEventListener( + 'keydown', + this._handleInputKeydownBound + ) + }, + }, + { + key: '_handleChipClick', + value: function(t) { + var e = h(t.target).closest('.chip'), + i = h(t.target).is('.close') + if (e.length) { + var n = e.index() + i + ? (this.deleteChip(n), + this.$input[0].focus()) + : this.selectChip(n) + } else this.$input[0].focus() + }, + }, + { + key: '_handleInputFocus', + value: function() { + this.$el.addClass('focus') + }, + }, + { + key: '_handleInputBlur', + value: function() { + this.$el.removeClass('focus') + }, + }, + { + key: '_handleInputKeydown', + value: function(t) { + if (((l._keydown = !0), 13 === t.keyCode)) { + if ( + this.hasAutocomplete && + this.autocomplete && + this.autocomplete.isOpen + ) + return + t.preventDefault(), + this.addChip({ + tag: this.$input[0].value, + }), + (this.$input[0].value = '') + } else + (8 !== t.keyCode && 37 !== t.keyCode) || + '' !== this.$input[0].value || + !this.chipsData.length || + (t.preventDefault(), + this.selectChip( + this.chipsData.length - 1 + )) + }, + }, + { + key: '_renderChip', + value: function(t) { + if (t.tag) { + var e = document.createElement('div'), + i = document.createElement('i') + if ( + (e.classList.add('chip'), + (e.textContent = t.tag), + e.setAttribute('tabindex', 0), + h(i).addClass( + 'material-icons close' + ), + (i.textContent = 'close'), + t.image) + ) { + var n = document.createElement( + 'img' + ) + n.setAttribute('src', t.image), + e.insertBefore(n, e.firstChild) + } + return e.appendChild(i), e + } + }, + }, + { + key: '_renderChips', + value: function() { + this.$chips.remove() + for ( + var t = 0; + t < this.chipsData.length; + t++ + ) { + var e = this._renderChip( + this.chipsData[t] + ) + this.$el.append(e), this.$chips.add(e) + } + this.$el.append(this.$input[0]) + }, + }, + { + key: '_setupAutocomplete', + value: function() { + var e = this + ;(this.options.autocompleteOptions.onAutocomplete = function( + t + ) { + e.addChip({ tag: t }), + (e.$input[0].value = ''), + e.$input[0].focus() + }), + (this.autocomplete = M.Autocomplete.init( + this.$input[0], + this.options.autocompleteOptions + )) + }, + }, + { + key: '_setupInput', + value: function() { + ;(this.$input = this.$el.find('input')), + this.$input.length || + ((this.$input = h( + '' + )), + this.$el.append(this.$input)), + this.$input.addClass('input') + }, + }, + { + key: '_setupLabel', + value: function() { + ;(this.$label = this.$el.find('label')), + this.$label.length && + this.$label.setAttribute( + 'for', + this.$input.attr('id') + ) + }, + }, + { + key: '_setPlaceholder', + value: function() { + void 0 !== this.chipsData && + !this.chipsData.length && + this.options.placeholder + ? h(this.$input).prop( + 'placeholder', + this.options.placeholder + ) + : (void 0 === this.chipsData || + this.chipsData.length) && + this.options.secondaryPlaceholder && + h(this.$input).prop( + 'placeholder', + this.options.secondaryPlaceholder + ) + }, + }, + { + key: '_isValid', + value: function(t) { + if ( + t.hasOwnProperty('tag') && + '' !== t.tag + ) { + for ( + var e = !1, i = 0; + i < this.chipsData.length; + i++ + ) + if ( + this.chipsData[i].tag === t.tag + ) { + e = !0 + break + } + return !e + } + return !1 + }, + }, + { + key: 'addChip', + value: function(t) { + if ( + this._isValid(t) && + !( + this.chipsData.length >= + this.options.limit + ) + ) { + var e = this._renderChip(t) + this.$chips.add(e), + this.chipsData.push(t), + h(this.$input).before(e), + this._setPlaceholder(), + 'function' == + typeof this.options.onChipAdd && + this.options.onChipAdd.call( + this, + this.$el, + e + ) + } + }, + }, + { + key: 'deleteChip', + value: function(t) { + var e = this.$chips.eq(t) + this.$chips.eq(t).remove(), + (this.$chips = this.$chips.filter( + function(t) { + return 0 <= h(t).index() + } + )), + this.chipsData.splice(t, 1), + this._setPlaceholder(), + 'function' == + typeof this.options.onChipDelete && + this.options.onChipDelete.call( + this, + this.$el, + e[0] + ) + }, + }, + { + key: 'selectChip', + value: function(t) { + var e = this.$chips.eq(t) + ;(this._selectedChip = e)[0].focus(), + 'function' == + typeof this.options.onChipSelect && + this.options.onChipSelect.call( + this, + this.$el, + e[0] + ) + }, + }, + ], + [ + { + key: 'init', + value: function(t, e) { + return _get( + l.__proto__ || Object.getPrototypeOf(l), + 'init', + this + ).call(this, this, t, e) + }, + }, + { + key: 'getInstance', + value: function(t) { + return (t.jquery ? t[0] : t).M_Chips + }, + }, + { + key: '_handleChipsKeydown', + value: function(t) { + l._keydown = !0 + var e = h(t.target).closest('.chips'), + i = t.target && e.length + if ( + !h(t.target).is('input, textarea') && + i + ) { + var n = e[0].M_Chips + if ( + 8 === t.keyCode || + 46 === t.keyCode + ) { + t.preventDefault() + var s = n.chipsData.length + if (n._selectedChip) { + var o = n._selectedChip.index() + n.deleteChip(o), + (n._selectedChip = null), + (s = Math.max(o - 1, 0)) + } + n.chipsData.length && + n.selectChip(s) + } else if (37 === t.keyCode) { + if (n._selectedChip) { + var a = + n._selectedChip.index() - 1 + if (a < 0) return + n.selectChip(a) + } + } else if ( + 39 === t.keyCode && + n._selectedChip + ) { + var r = n._selectedChip.index() + 1 + r >= n.chipsData.length + ? n.$input[0].focus() + : n.selectChip(r) + } + } + }, + }, + { + key: '_handleChipsKeyup', + value: function(t) { + l._keydown = !1 + }, + }, + { + key: '_handleChipsBlur', + value: function(t) { + l._keydown || + (h(t.target).closest( + '.chips' + )[0].M_Chips._selectedChip = null) + }, + }, + { + key: 'defaults', + get: function() { + return e + }, + }, + ] + ), + l + ) + })() + ;(t._keydown = !1), + (M.Chips = t), + M.jQueryLoaded && M.initializeJqueryWrapper(t, 'chips', 'M_Chips'), + h(document).ready(function() { + h(document.body).on('click', '.chip .close', function() { + var t = h(this).closest('.chips') + ;(t.length && t[0].M_Chips) || + h(this) + .closest('.chip') + .remove() + }) + }) + })(cash), + (function(s) { + 'use strict' + var e = { top: 0, bottom: 1 / 0, offset: 0, onPositionChange: null }, + t = (function(t) { + function n(t, e) { + _classCallCheck(this, n) + var i = _possibleConstructorReturn( + this, + (n.__proto__ || Object.getPrototypeOf(n)).call( + this, + n, + t, + e + ) + ) + return ( + ((i.el.M_Pushpin = i).options = s.extend( + {}, + n.defaults, + e + )), + (i.originalOffset = i.el.offsetTop), + n._pushpins.push(i), + i._setupEventHandlers(), + i._updatePosition(), + i + ) + } + return ( + _inherits(n, Component), + _createClass( + n, + [ + { + key: 'destroy', + value: function() { + ;(this.el.style.top = null), + this._removePinClasses(), + this._removeEventHandlers() + var t = n._pushpins.indexOf(this) + n._pushpins.splice(t, 1) + }, + }, + { + key: '_setupEventHandlers', + value: function() { + document.addEventListener( + 'scroll', + n._updateElements + ) + }, + }, + { + key: '_removeEventHandlers', + value: function() { + document.removeEventListener( + 'scroll', + n._updateElements + ) + }, + }, + { + key: '_updatePosition', + value: function() { + var t = + M.getDocumentScrollTop() + + this.options.offset + this.options.top <= t && + this.options.bottom >= t && + !this.el.classList.contains('pinned') && + (this._removePinClasses(), + (this.el.style.top = + this.options.offset + 'px'), + this.el.classList.add('pinned'), + 'function' == + typeof this.options + .onPositionChange && + this.options.onPositionChange.call( + this, + 'pinned' + )), + t < this.options.top && + !this.el.classList.contains( + 'pin-top' + ) && + (this._removePinClasses(), + (this.el.style.top = 0), + this.el.classList.add('pin-top'), + 'function' == + typeof this.options + .onPositionChange && + this.options.onPositionChange.call( + this, + 'pin-top' + )), + t > this.options.bottom && + !this.el.classList.contains( + 'pin-bottom' + ) && + (this._removePinClasses(), + this.el.classList.add('pin-bottom'), + (this.el.style.top = + this.options.bottom - + this.originalOffset + + 'px'), + 'function' == + typeof this.options + .onPositionChange && + this.options.onPositionChange.call( + this, + 'pin-bottom' + )) + }, + }, + { + key: '_removePinClasses', + value: function() { + this.el.classList.remove('pin-top'), + this.el.classList.remove('pinned'), + this.el.classList.remove('pin-bottom') + }, + }, + ], + [ + { + key: 'init', + value: function(t, e) { + return _get( + n.__proto__ || Object.getPrototypeOf(n), + 'init', + this + ).call(this, this, t, e) + }, + }, + { + key: 'getInstance', + value: function(t) { + return (t.jquery ? t[0] : t).M_Pushpin + }, + }, + { + key: '_updateElements', + value: function() { + for (var t in n._pushpins) { + n._pushpins[t]._updatePosition() + } + }, + }, + { + key: 'defaults', + get: function() { + return e + }, + }, + ] + ), + n + ) + })() + ;(t._pushpins = []), + (M.Pushpin = t), + M.jQueryLoaded && + M.initializeJqueryWrapper(t, 'pushpin', 'M_Pushpin') + })(cash), + (function(r, s) { + 'use strict' + var e = { direction: 'top', hoverEnabled: !0, toolbarEnabled: !1 } + r.fn.reverse = [].reverse + var t = (function(t) { + function n(t, e) { + _classCallCheck(this, n) + var i = _possibleConstructorReturn( + this, + (n.__proto__ || Object.getPrototypeOf(n)).call( + this, + n, + t, + e + ) + ) + return ( + ((i.el.M_FloatingActionButton = i).options = r.extend( + {}, + n.defaults, + e + )), + (i.isOpen = !1), + (i.$anchor = i.$el.children('a').first()), + (i.$menu = i.$el.children('ul').first()), + (i.$floatingBtns = i.$el.find('ul .btn-floating')), + (i.$floatingBtnsReverse = i.$el + .find('ul .btn-floating') + .reverse()), + (i.offsetY = 0), + (i.offsetX = 0), + i.$el.addClass('direction-' + i.options.direction), + 'top' === i.options.direction + ? (i.offsetY = 40) + : 'right' === i.options.direction + ? (i.offsetX = -40) + : 'bottom' === i.options.direction + ? (i.offsetY = -40) + : (i.offsetX = 40), + i._setupEventHandlers(), + i + ) + } + return ( + _inherits(n, Component), + _createClass( + n, + [ + { + key: 'destroy', + value: function() { + this._removeEventHandlers(), + (this.el.M_FloatingActionButton = void 0) + }, + }, + { + key: '_setupEventHandlers', + value: function() { + ;(this._handleFABClickBound = this._handleFABClick.bind( + this + )), + (this._handleOpenBound = this.open.bind( + this + )), + (this._handleCloseBound = this.close.bind( + this + )), + this.options.hoverEnabled && + !this.options.toolbarEnabled + ? (this.el.addEventListener( + 'mouseenter', + this._handleOpenBound + ), + this.el.addEventListener( + 'mouseleave', + this._handleCloseBound + )) + : this.el.addEventListener( + 'click', + this._handleFABClickBound + ) + }, + }, + { + key: '_removeEventHandlers', + value: function() { + this.options.hoverEnabled && + !this.options.toolbarEnabled + ? (this.el.removeEventListener( + 'mouseenter', + this._handleOpenBound + ), + this.el.removeEventListener( + 'mouseleave', + this._handleCloseBound + )) + : this.el.removeEventListener( + 'click', + this._handleFABClickBound + ) + }, + }, + { + key: '_handleFABClick', + value: function() { + this.isOpen ? this.close() : this.open() + }, + }, + { + key: '_handleDocumentClick', + value: function(t) { + r(t.target).closest(this.$menu).length || + this.close() + }, + }, + { + key: 'open', + value: function() { + this.isOpen || + (this.options.toolbarEnabled + ? this._animateInToolbar() + : this._animateInFAB(), + (this.isOpen = !0)) + }, + }, + { + key: 'close', + value: function() { + this.isOpen && + (this.options.toolbarEnabled + ? (window.removeEventListener( + 'scroll', + this._handleCloseBound, + !0 + ), + document.body.removeEventListener( + 'click', + this._handleDocumentClickBound, + !0 + ), + this._animateOutToolbar()) + : this._animateOutFAB(), + (this.isOpen = !1)) + }, + }, + { + key: '_animateInFAB', + value: function() { + var e = this + this.$el.addClass('active') + var i = 0 + this.$floatingBtnsReverse.each(function(t) { + s({ + targets: t, + opacity: 1, + scale: [0.4, 1], + translateY: [e.offsetY, 0], + translateX: [e.offsetX, 0], + duration: 275, + delay: i, + easing: 'easeInOutQuad', + }), + (i += 40) + }) + }, + }, + { + key: '_animateOutFAB', + value: function() { + var e = this + this.$floatingBtnsReverse.each(function(t) { + s.remove(t), + s({ + targets: t, + opacity: 0, + scale: 0.4, + translateY: e.offsetY, + translateX: e.offsetX, + duration: 175, + easing: 'easeOutQuad', + complete: function() { + e.$el.removeClass('active') + }, + }) + }) + }, + }, + { + key: '_animateInToolbar', + value: function() { + var t, + e = this, + i = window.innerWidth, + n = window.innerHeight, + s = this.el.getBoundingClientRect(), + o = r('
    '), + a = this.$anchor.css('background-color') + this.$anchor.append(o), + (this.offsetX = + s.left - i / 2 + s.width / 2), + (this.offsetY = n - s.bottom), + (t = i / o[0].clientWidth), + (this.btnBottom = s.bottom), + (this.btnLeft = s.left), + (this.btnWidth = s.width), + this.$el.addClass('active'), + this.$el.css({ + 'text-align': 'center', + width: '100%', + bottom: 0, + left: 0, + transform: + 'translateX(' + + this.offsetX + + 'px)', + transition: 'none', + }), + this.$anchor.css({ + transform: + 'translateY(' + + -this.offsetY + + 'px)', + transition: 'none', + }), + o.css({ 'background-color': a }), + setTimeout(function() { + e.$el.css({ + transform: '', + transition: + 'transform .2s cubic-bezier(0.550, 0.085, 0.680, 0.530), background-color 0s linear .2s', + }), + e.$anchor.css({ + overflow: 'visible', + transform: '', + transition: 'transform .2s', + }), + setTimeout(function() { + e.$el.css({ + overflow: 'hidden', + 'background-color': a, + }), + o.css({ + transform: + 'scale(' + t + ')', + transition: + 'transform .2s cubic-bezier(0.550, 0.055, 0.675, 0.190)', + }), + e.$menu + .children('li') + .children('a') + .css({ opacity: 1 }), + (e._handleDocumentClickBound = e._handleDocumentClick.bind( + e + )), + window.addEventListener( + 'scroll', + e._handleCloseBound, + !0 + ), + document.body.addEventListener( + 'click', + e._handleDocumentClickBound, + !0 + ) + }, 100) + }, 0) + }, + }, + { + key: '_animateOutToolbar', + value: function() { + var t = this, + e = window.innerWidth, + i = window.innerHeight, + n = this.$el.find('.fab-backdrop'), + s = this.$anchor.css('background-color') + ;(this.offsetX = + this.btnLeft - e / 2 + this.btnWidth / 2), + (this.offsetY = i - this.btnBottom), + this.$el.removeClass('active'), + this.$el.css({ + 'background-color': 'transparent', + transition: 'none', + }), + this.$anchor.css({ transition: 'none' }), + n.css({ + transform: 'scale(0)', + 'background-color': s, + }), + this.$menu + .children('li') + .children('a') + .css({ opacity: '' }), + setTimeout(function() { + n.remove(), + t.$el.css({ + 'text-align': '', + width: '', + bottom: '', + left: '', + overflow: '', + 'background-color': '', + transform: + 'translate3d(' + + -t.offsetX + + 'px,0,0)', + }), + t.$anchor.css({ + overflow: '', + transform: + 'translate3d(0,' + + t.offsetY + + 'px,0)', + }), + setTimeout(function() { + t.$el.css({ + transform: + 'translate3d(0,0,0)', + transition: 'transform .2s', + }), + t.$anchor.css({ + transform: + 'translate3d(0,0,0)', + transition: + 'transform .2s cubic-bezier(0.550, 0.055, 0.675, 0.190)', + }) + }, 20) + }, 200) + }, + }, + ], + [ + { + key: 'init', + value: function(t, e) { + return _get( + n.__proto__ || Object.getPrototypeOf(n), + 'init', + this + ).call(this, this, t, e) + }, + }, + { + key: 'getInstance', + value: function(t) { + return (t.jquery ? t[0] : t) + .M_FloatingActionButton + }, + }, + { + key: 'defaults', + get: function() { + return e + }, + }, + ] + ), + n + ) + })() + ;(M.FloatingActionButton = t), + M.jQueryLoaded && + M.initializeJqueryWrapper( + t, + 'floatingActionButton', + 'M_FloatingActionButton' + ) + })(cash, M.anime), + (function(g) { + 'use strict' + var e = { + autoClose: !1, + format: 'mmm dd, yyyy', + parse: null, + defaultDate: null, + setDefaultDate: !1, + disableWeekends: !1, + disableDayFn: null, + firstDay: 0, + minDate: null, + maxDate: null, + yearRange: 10, + minYear: 0, + maxYear: 9999, + minMonth: void 0, + maxMonth: void 0, + startRange: null, + endRange: null, + isRTL: !1, + showMonthAfterYear: !1, + showDaysInNextAndPreviousMonths: !1, + container: null, + showClearBtn: !1, + i18n: { + cancel: 'Cancel', + clear: 'Clear', + done: 'Ok', + previousMonth: '‹', + nextMonth: '›', + months: [ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December', + ], + monthsShort: [ + 'Jan', + 'Feb', + 'Mar', + 'Apr', + 'May', + 'Jun', + 'Jul', + 'Aug', + 'Sep', + 'Oct', + 'Nov', + 'Dec', + ], + weekdays: [ + 'Sunday', + 'Monday', + 'Tuesday', + 'Wednesday', + 'Thursday', + 'Friday', + 'Saturday', + ], + weekdaysShort: [ + 'Sun', + 'Mon', + 'Tue', + 'Wed', + 'Thu', + 'Fri', + 'Sat', + ], + weekdaysAbbrev: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], + }, + events: [], + onSelect: null, + onOpen: null, + onClose: null, + onDraw: null, + }, + t = (function(t) { + function B(t, e) { + _classCallCheck(this, B) + var i = _possibleConstructorReturn( + this, + (B.__proto__ || Object.getPrototypeOf(B)).call( + this, + B, + t, + e + ) + ) + ;((i.el.M_Datepicker = i).options = g.extend( + {}, + B.defaults, + e + )), + e && + e.hasOwnProperty('i18n') && + 'object' == typeof e.i18n && + (i.options.i18n = g.extend( + {}, + B.defaults.i18n, + e.i18n + )), + i.options.minDate && + i.options.minDate.setHours(0, 0, 0, 0), + i.options.maxDate && + i.options.maxDate.setHours(0, 0, 0, 0), + (i.id = M.guid()), + i._setupVariables(), + i._insertHTMLIntoDOM(), + i._setupModal(), + i._setupEventHandlers(), + i.options.defaultDate || + (i.options.defaultDate = new Date( + Date.parse(i.el.value) + )) + var n = i.options.defaultDate + return ( + B._isDate(n) + ? i.options.setDefaultDate + ? (i.setDate(n, !0), i.setInputValue()) + : i.gotoDate(n) + : i.gotoDate(new Date()), + (i.isOpen = !1), + i + ) + } + return ( + _inherits(B, Component), + _createClass( + B, + [ + { + key: 'destroy', + value: function() { + this._removeEventHandlers(), + this.modal.destroy(), + g(this.modalEl).remove(), + this.destroySelects(), + (this.el.M_Datepicker = void 0) + }, + }, + { + key: 'destroySelects', + value: function() { + var t = this.calendarEl.querySelector( + '.orig-select-year' + ) + t && M.FormSelect.getInstance(t).destroy() + var e = this.calendarEl.querySelector( + '.orig-select-month' + ) + e && M.FormSelect.getInstance(e).destroy() + }, + }, + { + key: '_insertHTMLIntoDOM', + value: function() { + this.options.showClearBtn && + (g(this.clearBtn).css({ + visibility: '', + }), + (this.clearBtn.innerHTML = this.options.i18n.clear)), + (this.doneBtn.innerHTML = this.options.i18n.done), + (this.cancelBtn.innerHTML = this.options.i18n.cancel), + this.options.container + ? this.$modalEl.appendTo( + this.options.container + ) + : this.$modalEl.insertBefore( + this.el + ) + }, + }, + { + key: '_setupModal', + value: function() { + var t = this + ;(this.modalEl.id = 'modal-' + this.id), + (this.modal = M.Modal.init( + this.modalEl, + { + onCloseEnd: function() { + t.isOpen = !1 + }, + } + )) + }, + }, + { + key: 'toString', + value: function(t) { + var e = this + return ( + (t = t || this.options.format), + B._isDate(this.date) + ? t + .split( + /(d{1,4}|m{1,4}|y{4}|yy|!.)/g + ) + .map(function(t) { + return e.formats[t] + ? e.formats[t]() + : t + }) + .join('') + : '' + ) + }, + }, + { + key: 'setDate', + value: function(t, e) { + if (!t) + return ( + (this.date = null), + this._renderDateDisplay(), + this.draw() + ) + if ( + ('string' == typeof t && + (t = new Date(Date.parse(t))), + B._isDate(t)) + ) { + var i = this.options.minDate, + n = this.options.maxDate + B._isDate(i) && t < i + ? (t = i) + : B._isDate(n) && n < t && (t = n), + (this.date = new Date(t.getTime())), + this._renderDateDisplay(), + B._setToStartOfDay(this.date), + this.gotoDate(this.date), + e || + 'function' != + typeof this.options + .onSelect || + this.options.onSelect.call( + this, + this.date + ) + } + }, + }, + { + key: 'setInputValue', + value: function() { + ;(this.el.value = this.toString()), + this.$el.trigger('change', { + firedBy: this, + }) + }, + }, + { + key: '_renderDateDisplay', + value: function() { + var t = B._isDate(this.date) + ? this.date + : new Date(), + e = this.options.i18n, + i = e.weekdaysShort[t.getDay()], + n = e.monthsShort[t.getMonth()], + s = t.getDate() + ;(this.yearTextEl.innerHTML = t.getFullYear()), + (this.dateTextEl.innerHTML = + i + ', ' + n + ' ' + s) + }, + }, + { + key: 'gotoDate', + value: function(t) { + var e = !0 + if (B._isDate(t)) { + if (this.calendars) { + var i = new Date( + this.calendars[0].year, + this.calendars[0].month, + 1 + ), + n = new Date( + this.calendars[ + this.calendars.length - + 1 + ].year, + this.calendars[ + this.calendars.length - + 1 + ].month, + 1 + ), + s = t.getTime() + n.setMonth(n.getMonth() + 1), + n.setDate(n.getDate() - 1), + (e = + s < i.getTime() || + n.getTime() < s) + } + e && + (this.calendars = [ + { + month: t.getMonth(), + year: t.getFullYear(), + }, + ]), + this.adjustCalendars() + } + }, + }, + { + key: 'adjustCalendars', + value: function() { + ;(this.calendars[0] = this.adjustCalendar( + this.calendars[0] + )), + this.draw() + }, + }, + { + key: 'adjustCalendar', + value: function(t) { + return ( + t.month < 0 && + ((t.year -= Math.ceil( + Math.abs(t.month) / 12 + )), + (t.month += 12)), + 11 < t.month && + ((t.year += Math.floor( + Math.abs(t.month) / 12 + )), + (t.month -= 12)), + t + ) + }, + }, + { + key: 'nextMonth', + value: function() { + this.calendars[0].month++, + this.adjustCalendars() + }, + }, + { + key: 'prevMonth', + value: function() { + this.calendars[0].month--, + this.adjustCalendars() + }, + }, + { + key: 'render', + value: function(t, e, i) { + var n = this.options, + s = new Date(), + o = B._getDaysInMonth(t, e), + a = new Date(t, e, 1).getDay(), + r = [], + l = [] + B._setToStartOfDay(s), + 0 < n.firstDay && + (a -= n.firstDay) < 0 && + (a += 7) + for ( + var h = 0 === e ? 11 : e - 1, + d = 11 === e ? 0 : e + 1, + u = 0 === e ? t - 1 : t, + c = 11 === e ? t + 1 : t, + p = B._getDaysInMonth(u, h), + v = o + a, + f = v; + 7 < f; + + ) + f -= 7 + v += 7 - f + for (var m = !1, g = 0, _ = 0; g < v; g++) { + var y = new Date(t, e, g - a + 1), + k = + !!B._isDate(this.date) && + B._compareDates(y, this.date), + b = B._compareDates(y, s), + w = + -1 !== + n.events.indexOf( + y.toDateString() + ), + C = g < a || o + a <= g, + E = g - a + 1, + M = e, + O = t, + x = + n.startRange && + B._compareDates( + n.startRange, + y + ), + L = + n.endRange && + B._compareDates(n.endRange, y), + T = + n.startRange && + n.endRange && + n.startRange < y && + y < n.endRange + C && + (g < a + ? ((E = p + E), + (M = h), + (O = u)) + : ((E -= o), (M = d), (O = c))) + var $ = { + day: E, + month: M, + year: O, + hasEvent: w, + isSelected: k, + isToday: b, + isDisabled: + (n.minDate && y < n.minDate) || + (n.maxDate && y > n.maxDate) || + (n.disableWeekends && + B._isWeekend(y)) || + (n.disableDayFn && + n.disableDayFn(y)), + isEmpty: C, + isStartRange: x, + isEndRange: L, + isInRange: T, + showDaysInNextAndPreviousMonths: + n.showDaysInNextAndPreviousMonths, + } + l.push(this.renderDay($)), + 7 == ++_ && + (r.push( + this.renderRow( + l, + n.isRTL, + m + ) + ), + (_ = 0), + (m = !(l = []))) + } + return this.renderTable(n, r, i) + }, + }, + { + key: 'renderDay', + value: function(t) { + var e = [], + i = 'false' + if (t.isEmpty) { + if (!t.showDaysInNextAndPreviousMonths) + return '' + e.push('is-outside-current-month'), + e.push('is-selection-disabled') + } + return ( + t.isDisabled && e.push('is-disabled'), + t.isToday && e.push('is-today'), + t.isSelected && + (e.push('is-selected'), + (i = 'true')), + t.hasEvent && e.push('has-event'), + t.isInRange && e.push('is-inrange'), + t.isStartRange && + e.push('is-startrange'), + t.isEndRange && e.push('is-endrange'), + '' + ) + }, + }, + { + key: 'renderRow', + value: function(t, e, i) { + return ( + '' + + (e ? t.reverse() : t).join('') + + '' + ) + }, + }, + { + key: 'renderTable', + value: function(t, e, i) { + return ( + '
    ' + + this.renderHead(t) + + this.renderBody(e) + + '
    ' + ) + }, + }, + { + key: 'renderHead', + value: function(t) { + var e = void 0, + i = [] + for (e = 0; e < 7; e++) + i.push( + '' + + this.renderDayName(t, e, !0) + + '' + ) + return ( + '' + + (t.isRTL ? i.reverse() : i).join('') + + '' + ) + }, + }, + { + key: 'renderBody', + value: function(t) { + return '' + t.join('') + '' + }, + }, + { + key: 'renderTitle', + value: function(t, e, i, n, s, o) { + var a, + r, + l = void 0, + h = void 0, + d = void 0, + u = this.options, + c = i === u.minYear, + p = i === u.maxYear, + v = + '
    ', + f = !0, + m = !0 + for (d = [], l = 0; l < 12; l++) + d.push( + '' + ) + for ( + a = + '', + g.isArray(u.yearRange) + ? ((l = u.yearRange[0]), + (h = u.yearRange[1] + 1)) + : ((l = i - u.yearRange), + (h = 1 + i + u.yearRange)), + d = []; + l < h && l <= u.maxYear; + l++ + ) + l >= u.minYear && + d.push( + '' + ) + r = + '' + ;(v += + ''), + (v += + '
    '), + u.showMonthAfterYear + ? (v += r + a) + : (v += a + r), + (v += '
    '), + c && + (0 === n || u.minMonth >= n) && + (f = !1), + p && + (11 === n || u.maxMonth <= n) && + (m = !1) + return ( + (v += + '') + + '
    ' + ) + }, + }, + { + key: 'draw', + value: function(t) { + if (this.isOpen || t) { + var e, + i = this.options, + n = i.minYear, + s = i.maxYear, + o = i.minMonth, + a = i.maxMonth, + r = '' + this._y <= n && + ((this._y = n), + !isNaN(o) && + this._m < o && + (this._m = o)), + this._y >= s && + ((this._y = s), + !isNaN(a) && + this._m > a && + (this._m = a)), + (e = + 'datepicker-title-' + + Math.random() + .toString(36) + .replace(/[^a-z]+/g, '') + .substr(0, 2)) + for (var l = 0; l < 1; l++) + this._renderDateDisplay(), + (r += + this.renderTitle( + this, + l, + this.calendars[l].year, + this.calendars[l].month, + this.calendars[0].year, + e + ) + + this.render( + this.calendars[l].year, + this.calendars[l].month, + e + )) + this.destroySelects(), + (this.calendarEl.innerHTML = r) + var h = this.calendarEl.querySelector( + '.orig-select-year' + ), + d = this.calendarEl.querySelector( + '.orig-select-month' + ) + M.FormSelect.init(h, { + classes: 'select-year', + dropdownOptions: { + container: document.body, + constrainWidth: !1, + }, + }), + M.FormSelect.init(d, { + classes: 'select-month', + dropdownOptions: { + container: document.body, + constrainWidth: !1, + }, + }), + h.addEventListener( + 'change', + this._handleYearChange.bind( + this + ) + ), + d.addEventListener( + 'change', + this._handleMonthChange.bind( + this + ) + ), + 'function' == + typeof this.options.onDraw && + this.options.onDraw(this) + } + }, + }, + { + key: '_setupEventHandlers', + value: function() { + ;(this._handleInputKeydownBound = this._handleInputKeydown.bind( + this + )), + (this._handleInputClickBound = this._handleInputClick.bind( + this + )), + (this._handleInputChangeBound = this._handleInputChange.bind( + this + )), + (this._handleCalendarClickBound = this._handleCalendarClick.bind( + this + )), + (this._finishSelectionBound = this._finishSelection.bind( + this + )), + (this._handleMonthChange = this._handleMonthChange.bind( + this + )), + (this._closeBound = this.close.bind( + this + )), + this.el.addEventListener( + 'click', + this._handleInputClickBound + ), + this.el.addEventListener( + 'keydown', + this._handleInputKeydownBound + ), + this.el.addEventListener( + 'change', + this._handleInputChangeBound + ), + this.calendarEl.addEventListener( + 'click', + this._handleCalendarClickBound + ), + this.doneBtn.addEventListener( + 'click', + this._finishSelectionBound + ), + this.cancelBtn.addEventListener( + 'click', + this._closeBound + ), + this.options.showClearBtn && + ((this._handleClearClickBound = this._handleClearClick.bind( + this + )), + this.clearBtn.addEventListener( + 'click', + this._handleClearClickBound + )) + }, + }, + { + key: '_setupVariables', + value: function() { + var e = this + ;(this.$modalEl = g(B._template)), + (this.modalEl = this.$modalEl[0]), + (this.calendarEl = this.modalEl.querySelector( + '.datepicker-calendar' + )), + (this.yearTextEl = this.modalEl.querySelector( + '.year-text' + )), + (this.dateTextEl = this.modalEl.querySelector( + '.date-text' + )), + this.options.showClearBtn && + (this.clearBtn = this.modalEl.querySelector( + '.datepicker-clear' + )), + (this.doneBtn = this.modalEl.querySelector( + '.datepicker-done' + )), + (this.cancelBtn = this.modalEl.querySelector( + '.datepicker-cancel' + )), + (this.formats = { + d: function() { + return e.date.getDate() + }, + dd: function() { + var t = e.date.getDate() + return (t < 10 ? '0' : '') + t + }, + ddd: function() { + return e.options.i18n + .weekdaysShort[ + e.date.getDay() + ] + }, + dddd: function() { + return e.options.i18n.weekdays[ + e.date.getDay() + ] + }, + m: function() { + return e.date.getMonth() + 1 + }, + mm: function() { + var t = e.date.getMonth() + 1 + return (t < 10 ? '0' : '') + t + }, + mmm: function() { + return e.options.i18n + .monthsShort[ + e.date.getMonth() + ] + }, + mmmm: function() { + return e.options.i18n.months[ + e.date.getMonth() + ] + }, + yy: function() { + return ( + '' + e.date.getFullYear() + ).slice(2) + }, + yyyy: function() { + return e.date.getFullYear() + }, + }) + }, + }, + { + key: '_removeEventHandlers', + value: function() { + this.el.removeEventListener( + 'click', + this._handleInputClickBound + ), + this.el.removeEventListener( + 'keydown', + this._handleInputKeydownBound + ), + this.el.removeEventListener( + 'change', + this._handleInputChangeBound + ), + this.calendarEl.removeEventListener( + 'click', + this._handleCalendarClickBound + ) + }, + }, + { + key: '_handleInputClick', + value: function() { + this.open() + }, + }, + { + key: '_handleInputKeydown', + value: function(t) { + t.which === M.keys.ENTER && + (t.preventDefault(), this.open()) + }, + }, + { + key: '_handleCalendarClick', + value: function(t) { + if (this.isOpen) { + var e = g(t.target) + e.hasClass('is-disabled') || + (!e.hasClass( + 'datepicker-day-button' + ) || + e.hasClass('is-empty') || + e.parent().hasClass('is-disabled') + ? e.closest('.month-prev') + .length + ? this.prevMonth() + : e.closest('.month-next') + .length && + this.nextMonth() + : (this.setDate( + new Date( + t.target.getAttribute( + 'data-year' + ), + t.target.getAttribute( + 'data-month' + ), + t.target.getAttribute( + 'data-day' + ) + ) + ), + this.options.autoClose && + this._finishSelection())) + } + }, + }, + { + key: '_handleClearClick', + value: function() { + ;(this.date = null), + this.setInputValue(), + this.close() + }, + }, + { + key: '_handleMonthChange', + value: function(t) { + this.gotoMonth(t.target.value) + }, + }, + { + key: '_handleYearChange', + value: function(t) { + this.gotoYear(t.target.value) + }, + }, + { + key: 'gotoMonth', + value: function(t) { + isNaN(t) || + ((this.calendars[0].month = parseInt( + t, + 10 + )), + this.adjustCalendars()) + }, + }, + { + key: 'gotoYear', + value: function(t) { + isNaN(t) || + ((this.calendars[0].year = parseInt( + t, + 10 + )), + this.adjustCalendars()) + }, + }, + { + key: '_handleInputChange', + value: function(t) { + var e = void 0 + t.firedBy !== this && + ((e = this.options.parse + ? this.options.parse( + this.el.value, + this.options.format + ) + : new Date( + Date.parse(this.el.value) + )), + B._isDate(e) && this.setDate(e)) + }, + }, + { + key: 'renderDayName', + value: function(t, e, i) { + for (e += t.firstDay; 7 <= e; ) e -= 7 + return i + ? t.i18n.weekdaysAbbrev[e] + : t.i18n.weekdays[e] + }, + }, + { + key: '_finishSelection', + value: function() { + this.setInputValue(), this.close() + }, + }, + { + key: 'open', + value: function() { + if (!this.isOpen) + return ( + (this.isOpen = !0), + 'function' == + typeof this.options.onOpen && + this.options.onOpen.call(this), + this.draw(), + this.modal.open(), + this + ) + }, + }, + { + key: 'close', + value: function() { + if (this.isOpen) + return ( + (this.isOpen = !1), + 'function' == + typeof this.options.onClose && + this.options.onClose.call(this), + this.modal.close(), + this + ) + }, + }, + ], + [ + { + key: 'init', + value: function(t, e) { + return _get( + B.__proto__ || Object.getPrototypeOf(B), + 'init', + this + ).call(this, this, t, e) + }, + }, + { + key: '_isDate', + value: function(t) { + return ( + /Date/.test( + Object.prototype.toString.call(t) + ) && !isNaN(t.getTime()) + ) + }, + }, + { + key: '_isWeekend', + value: function(t) { + var e = t.getDay() + return 0 === e || 6 === e + }, + }, + { + key: '_setToStartOfDay', + value: function(t) { + B._isDate(t) && t.setHours(0, 0, 0, 0) + }, + }, + { + key: '_getDaysInMonth', + value: function(t, e) { + return [ + 31, + B._isLeapYear(t) ? 29 : 28, + 31, + 30, + 31, + 30, + 31, + 31, + 30, + 31, + 30, + 31, + ][e] + }, + }, + { + key: '_isLeapYear', + value: function(t) { + return ( + (t % 4 == 0 && t % 100 != 0) || + t % 400 == 0 + ) + }, + }, + { + key: '_compareDates', + value: function(t, e) { + return t.getTime() === e.getTime() + }, + }, + { + key: '_setToStartOfDay', + value: function(t) { + B._isDate(t) && t.setHours(0, 0, 0, 0) + }, + }, + { + key: 'getInstance', + value: function(t) { + return (t.jquery ? t[0] : t).M_Datepicker + }, + }, + { + key: 'defaults', + get: function() { + return e + }, + }, + ] + ), + B + ) + })() + ;(t._template = [ + '', + ].join('')), + (M.Datepicker = t), + M.jQueryLoaded && + M.initializeJqueryWrapper(t, 'datepicker', 'M_Datepicker') + })(cash), + (function(h) { + 'use strict' + var e = { + dialRadius: 135, + outerRadius: 105, + innerRadius: 70, + tickRadius: 20, + duration: 350, + container: null, + defaultTime: 'now', + fromNow: 0, + showClearBtn: !1, + i18n: { cancel: 'Cancel', clear: 'Clear', done: 'Ok' }, + autoClose: !1, + twelveHour: !0, + vibrate: !0, + onOpenStart: null, + onOpenEnd: null, + onCloseStart: null, + onCloseEnd: null, + onSelect: null, + }, + t = (function(t) { + function f(t, e) { + _classCallCheck(this, f) + var i = _possibleConstructorReturn( + this, + (f.__proto__ || Object.getPrototypeOf(f)).call( + this, + f, + t, + e + ) + ) + return ( + ((i.el.M_Timepicker = i).options = h.extend( + {}, + f.defaults, + e + )), + (i.id = M.guid()), + i._insertHTMLIntoDOM(), + i._setupModal(), + i._setupVariables(), + i._setupEventHandlers(), + i._clockSetup(), + i._pickerSetup(), + i + ) + } + return ( + _inherits(f, Component), + _createClass( + f, + [ + { + key: 'destroy', + value: function() { + this._removeEventHandlers(), + this.modal.destroy(), + h(this.modalEl).remove(), + (this.el.M_Timepicker = void 0) + }, + }, + { + key: '_setupEventHandlers', + value: function() { + ;(this._handleInputKeydownBound = this._handleInputKeydown.bind( + this + )), + (this._handleInputClickBound = this._handleInputClick.bind( + this + )), + (this._handleClockClickStartBound = this._handleClockClickStart.bind( + this + )), + (this._handleDocumentClickMoveBound = this._handleDocumentClickMove.bind( + this + )), + (this._handleDocumentClickEndBound = this._handleDocumentClickEnd.bind( + this + )), + this.el.addEventListener( + 'click', + this._handleInputClickBound + ), + this.el.addEventListener( + 'keydown', + this._handleInputKeydownBound + ), + this.plate.addEventListener( + 'mousedown', + this._handleClockClickStartBound + ), + this.plate.addEventListener( + 'touchstart', + this._handleClockClickStartBound + ), + h(this.spanHours).on( + 'click', + this.showView.bind(this, 'hours') + ), + h(this.spanMinutes).on( + 'click', + this.showView.bind(this, 'minutes') + ) + }, + }, + { + key: '_removeEventHandlers', + value: function() { + this.el.removeEventListener( + 'click', + this._handleInputClickBound + ), + this.el.removeEventListener( + 'keydown', + this._handleInputKeydownBound + ) + }, + }, + { + key: '_handleInputClick', + value: function() { + this.open() + }, + }, + { + key: '_handleInputKeydown', + value: function(t) { + t.which === M.keys.ENTER && + (t.preventDefault(), this.open()) + }, + }, + { + key: '_handleClockClickStart', + value: function(t) { + t.preventDefault() + var e = this.plate.getBoundingClientRect(), + i = e.left, + n = e.top + ;(this.x0 = i + this.options.dialRadius), + (this.y0 = n + this.options.dialRadius), + (this.moved = !1) + var s = f._Pos(t) + ;(this.dx = s.x - this.x0), + (this.dy = s.y - this.y0), + this.setHand(this.dx, this.dy, !1), + document.addEventListener( + 'mousemove', + this._handleDocumentClickMoveBound + ), + document.addEventListener( + 'touchmove', + this._handleDocumentClickMoveBound + ), + document.addEventListener( + 'mouseup', + this._handleDocumentClickEndBound + ), + document.addEventListener( + 'touchend', + this._handleDocumentClickEndBound + ) + }, + }, + { + key: '_handleDocumentClickMove', + value: function(t) { + t.preventDefault() + var e = f._Pos(t), + i = e.x - this.x0, + n = e.y - this.y0 + ;(this.moved = !0), + this.setHand(i, n, !1, !0) + }, + }, + { + key: '_handleDocumentClickEnd', + value: function(t) { + var e = this + t.preventDefault(), + document.removeEventListener( + 'mouseup', + this._handleDocumentClickEndBound + ), + document.removeEventListener( + 'touchend', + this._handleDocumentClickEndBound + ) + var i = f._Pos(t), + n = i.x - this.x0, + s = i.y - this.y0 + this.moved && + n === this.dx && + s === this.dy && + this.setHand(n, s), + 'hours' === this.currentView + ? this.showView( + 'minutes', + this.options.duration / 2 + ) + : this.options.autoClose && + (h(this.minutesView).addClass( + 'timepicker-dial-out' + ), + setTimeout(function() { + e.done() + }, this.options.duration / 2)), + 'function' == + typeof this.options.onSelect && + this.options.onSelect.call( + this, + this.hours, + this.minutes + ), + document.removeEventListener( + 'mousemove', + this._handleDocumentClickMoveBound + ), + document.removeEventListener( + 'touchmove', + this._handleDocumentClickMoveBound + ) + }, + }, + { + key: '_insertHTMLIntoDOM', + value: function() { + ;(this.$modalEl = h(f._template)), + (this.modalEl = this.$modalEl[0]), + (this.modalEl.id = 'modal-' + this.id) + var t = document.querySelector( + this.options.container + ) + this.options.container && t + ? this.$modalEl.appendTo(t) + : this.$modalEl.insertBefore(this.el) + }, + }, + { + key: '_setupModal', + value: function() { + var t = this + this.modal = M.Modal.init(this.modalEl, { + onOpenStart: this.options.onOpenStart, + onOpenEnd: this.options.onOpenEnd, + onCloseStart: this.options.onCloseStart, + onCloseEnd: function() { + 'function' == + typeof t.options.onCloseEnd && + t.options.onCloseEnd.call(t), + (t.isOpen = !1) + }, + }) + }, + }, + { + key: '_setupVariables', + value: function() { + ;(this.currentView = 'hours'), + (this.vibrate = navigator.vibrate + ? 'vibrate' + : navigator.webkitVibrate + ? 'webkitVibrate' + : null), + (this._canvas = this.modalEl.querySelector( + '.timepicker-canvas' + )), + (this.plate = this.modalEl.querySelector( + '.timepicker-plate' + )), + (this.hoursView = this.modalEl.querySelector( + '.timepicker-hours' + )), + (this.minutesView = this.modalEl.querySelector( + '.timepicker-minutes' + )), + (this.spanHours = this.modalEl.querySelector( + '.timepicker-span-hours' + )), + (this.spanMinutes = this.modalEl.querySelector( + '.timepicker-span-minutes' + )), + (this.spanAmPm = this.modalEl.querySelector( + '.timepicker-span-am-pm' + )), + (this.footer = this.modalEl.querySelector( + '.timepicker-footer' + )), + (this.amOrPm = 'PM') + }, + }, + { + key: '_pickerSetup', + value: function() { + var t = h( + '' + ) + .appendTo(this.footer) + .on('click', this.clear.bind(this)) + this.options.showClearBtn && + t.css({ visibility: '' }) + var e = h( + '
    ' + ) + h( + '' + ) + .appendTo(e) + .on('click', this.close.bind(this)), + h( + '' + ) + .appendTo(e) + .on('click', this.done.bind(this)), + e.appendTo(this.footer) + }, + }, + { + key: '_clockSetup', + value: function() { + this.options.twelveHour && + ((this.$amBtn = h( + '
    AM
    ' + )), + (this.$pmBtn = h( + '
    PM
    ' + )), + this.$amBtn + .on( + 'click', + this._handleAmPmClick.bind(this) + ) + .appendTo(this.spanAmPm), + this.$pmBtn + .on( + 'click', + this._handleAmPmClick.bind(this) + ) + .appendTo(this.spanAmPm)), + this._buildHoursView(), + this._buildMinutesView(), + this._buildSVGClock() + }, + }, + { + key: '_buildSVGClock', + value: function() { + var t = this.options.dialRadius, + e = this.options.tickRadius, + i = 2 * t, + n = f._createSVGEl('svg') + n.setAttribute('class', 'timepicker-svg'), + n.setAttribute('width', i), + n.setAttribute('height', i) + var s = f._createSVGEl('g') + s.setAttribute( + 'transform', + 'translate(' + t + ',' + t + ')' + ) + var o = f._createSVGEl('circle') + o.setAttribute( + 'class', + 'timepicker-canvas-bearing' + ), + o.setAttribute('cx', 0), + o.setAttribute('cy', 0), + o.setAttribute('r', 4) + var a = f._createSVGEl('line') + a.setAttribute('x1', 0), + a.setAttribute('y1', 0) + var r = f._createSVGEl('circle') + r.setAttribute( + 'class', + 'timepicker-canvas-bg' + ), + r.setAttribute('r', e), + s.appendChild(a), + s.appendChild(r), + s.appendChild(o), + n.appendChild(s), + this._canvas.appendChild(n), + (this.hand = a), + (this.bg = r), + (this.bearing = o), + (this.g = s) + }, + }, + { + key: '_buildHoursView', + value: function() { + var t = h( + '
    ' + ) + if (this.options.twelveHour) + for (var e = 1; e < 13; e += 1) { + var i = t.clone(), + n = (e / 6) * Math.PI, + s = this.options.outerRadius + i.css({ + left: + this.options.dialRadius + + Math.sin(n) * s - + this.options.tickRadius + + 'px', + top: + this.options.dialRadius - + Math.cos(n) * s - + this.options.tickRadius + + 'px', + }), + i.html(0 === e ? '00' : e), + this.hoursView.appendChild(i[0]) + } + else + for (var o = 0; o < 24; o += 1) { + var a = t.clone(), + r = (o / 6) * Math.PI, + l = + 0 < o && o < 13 + ? this.options + .innerRadius + : this.options + .outerRadius + a.css({ + left: + this.options.dialRadius + + Math.sin(r) * l - + this.options.tickRadius + + 'px', + top: + this.options.dialRadius - + Math.cos(r) * l - + this.options.tickRadius + + 'px', + }), + a.html(0 === o ? '00' : o), + this.hoursView.appendChild(a[0]) + } + }, + }, + { + key: '_buildMinutesView', + value: function() { + for ( + var t = h( + '
    ' + ), + e = 0; + e < 60; + e += 5 + ) { + var i = t.clone(), + n = (e / 30) * Math.PI + i.css({ + left: + this.options.dialRadius + + Math.sin(n) * + this.options.outerRadius - + this.options.tickRadius + + 'px', + top: + this.options.dialRadius - + Math.cos(n) * + this.options.outerRadius - + this.options.tickRadius + + 'px', + }), + i.html(f._addLeadingZero(e)), + this.minutesView.appendChild(i[0]) + } + }, + }, + { + key: '_handleAmPmClick', + value: function(t) { + var e = h(t.target) + ;(this.amOrPm = e.hasClass('am-btn') + ? 'AM' + : 'PM'), + this._updateAmPmView() + }, + }, + { + key: '_updateAmPmView', + value: function() { + this.options.twelveHour && + (this.$amBtn.toggleClass( + 'text-primary', + 'AM' === this.amOrPm + ), + this.$pmBtn.toggleClass( + 'text-primary', + 'PM' === this.amOrPm + )) + }, + }, + { + key: '_updateTimeFromInput', + value: function() { + var t = ( + (this.el.value || + this.options.defaultTime || + '') + '' + ).split(':') + if ( + (this.options.twelveHour && + void 0 !== t[1] && + (0 < + t[1].toUpperCase().indexOf('AM') + ? (this.amOrPm = 'AM') + : (this.amOrPm = 'PM'), + (t[1] = t[1] + .replace('AM', '') + .replace('PM', ''))), + 'now' === t[0]) + ) { + var e = new Date( + +new Date() + this.options.fromNow + ) + ;(t = [e.getHours(), e.getMinutes()]), + this.options.twelveHour && + (this.amOrPm = + 12 <= t[0] && t[0] < 24 + ? 'PM' + : 'AM') + } + ;(this.hours = +t[0] || 0), + (this.minutes = +t[1] || 0), + (this.spanHours.innerHTML = this.hours), + (this.spanMinutes.innerHTML = f._addLeadingZero( + this.minutes + )), + this._updateAmPmView() + }, + }, + { + key: 'showView', + value: function(t, e) { + 'minutes' === t && + h(this.hoursView).css('visibility') + var i = 'hours' === t, + n = i + ? this.hoursView + : this.minutesView, + s = i + ? this.minutesView + : this.hoursView + ;(this.currentView = t), + h(this.spanHours).toggleClass( + 'text-primary', + i + ), + h(this.spanMinutes).toggleClass( + 'text-primary', + !i + ), + s.classList.add('timepicker-dial-out'), + h(n) + .css('visibility', 'visible') + .removeClass('timepicker-dial-out'), + this.resetClock(e), + clearTimeout(this.toggleViewTimer), + (this.toggleViewTimer = setTimeout( + function() { + h(s).css('visibility', 'hidden') + }, + this.options.duration + )) + }, + }, + { + key: 'resetClock', + value: function(t) { + var e = this.currentView, + i = this[e], + n = 'hours' === e, + s = i * (Math.PI / (n ? 6 : 30)), + o = + n && 0 < i && i < 13 + ? this.options.innerRadius + : this.options.outerRadius, + a = Math.sin(s) * o, + r = -Math.cos(s) * o, + l = this + t + ? (h(this.canvas).addClass( + 'timepicker-canvas-out' + ), + setTimeout(function() { + h(l.canvas).removeClass( + 'timepicker-canvas-out' + ), + l.setHand(a, r) + }, t)) + : this.setHand(a, r) + }, + }, + { + key: 'setHand', + value: function(t, e, i) { + var n = this, + s = Math.atan2(t, -e), + o = 'hours' === this.currentView, + a = Math.PI / (o || i ? 6 : 30), + r = Math.sqrt(t * t + e * e), + l = + o && + r < + (this.options.outerRadius + + this.options.innerRadius) / + 2, + h = l + ? this.options.innerRadius + : this.options.outerRadius + this.options.twelveHour && + (h = this.options.outerRadius), + s < 0 && (s = 2 * Math.PI + s) + var d = Math.round(s / a) + ;(s = d * a), + this.options.twelveHour + ? o + ? 0 === d && (d = 12) + : (i && (d *= 5), + 60 === d && (d = 0)) + : o + ? (12 === d && (d = 0), + (d = l + ? 0 === d + ? 12 + : d + : 0 === d + ? 0 + : d + 12)) + : (i && (d *= 5), + 60 === d && (d = 0)), + this[this.currentView] !== d && + this.vibrate && + this.options.vibrate && + (this.vibrateTimer || + (navigator[this.vibrate](10), + (this.vibrateTimer = setTimeout( + function() { + n.vibrateTimer = null + }, + 100 + )))), + (this[this.currentView] = d), + o + ? (this.spanHours.innerHTML = d) + : (this.spanMinutes.innerHTML = f._addLeadingZero( + d + )) + var u = + Math.sin(s) * + (h - this.options.tickRadius), + c = + -Math.cos(s) * + (h - this.options.tickRadius), + p = Math.sin(s) * h, + v = -Math.cos(s) * h + this.hand.setAttribute('x2', u), + this.hand.setAttribute('y2', c), + this.bg.setAttribute('cx', p), + this.bg.setAttribute('cy', v) + }, + }, + { + key: 'open', + value: function() { + this.isOpen || + ((this.isOpen = !0), + this._updateTimeFromInput(), + this.showView('hours'), + this.modal.open()) + }, + }, + { + key: 'close', + value: function() { + this.isOpen && + ((this.isOpen = !1), this.modal.close()) + }, + }, + { + key: 'done', + value: function(t, e) { + var i = this.el.value, + n = e + ? '' + : f._addLeadingZero(this.hours) + + ':' + + f._addLeadingZero(this.minutes) + ;(this.time = n), + !e && + this.options.twelveHour && + (n = n + ' ' + this.amOrPm), + (this.el.value = n) !== i && + this.$el.trigger('change'), + this.close(), + this.el.focus() + }, + }, + { + key: 'clear', + value: function() { + this.done(null, !0) + }, + }, + ], + [ + { + key: 'init', + value: function(t, e) { + return _get( + f.__proto__ || Object.getPrototypeOf(f), + 'init', + this + ).call(this, this, t, e) + }, + }, + { + key: '_addLeadingZero', + value: function(t) { + return (t < 10 ? '0' : '') + t + }, + }, + { + key: '_createSVGEl', + value: function(t) { + return document.createElementNS( + 'http://www.w3.org/2000/svg', + t + ) + }, + }, + { + key: '_Pos', + value: function(t) { + return t.targetTouches && + 1 <= t.targetTouches.length + ? { + x: t.targetTouches[0].clientX, + y: t.targetTouches[0].clientY, + } + : { x: t.clientX, y: t.clientY } + }, + }, + { + key: 'getInstance', + value: function(t) { + return (t.jquery ? t[0] : t).M_Timepicker + }, + }, + { + key: 'defaults', + get: function() { + return e + }, + }, + ] + ), + f + ) + })() + ;(t._template = [ + '', + ].join('')), + (M.Timepicker = t), + M.jQueryLoaded && + M.initializeJqueryWrapper(t, 'timepicker', 'M_Timepicker') + })(cash), + (function(s) { + 'use strict' + var e = {}, + t = (function(t) { + function n(t, e) { + _classCallCheck(this, n) + var i = _possibleConstructorReturn( + this, + (n.__proto__ || Object.getPrototypeOf(n)).call( + this, + n, + t, + e + ) + ) + return ( + ((i.el.M_CharacterCounter = i).options = s.extend( + {}, + n.defaults, + e + )), + (i.isInvalid = !1), + (i.isValidLength = !1), + i._setupCounter(), + i._setupEventHandlers(), + i + ) + } + return ( + _inherits(n, Component), + _createClass( + n, + [ + { + key: 'destroy', + value: function() { + this._removeEventHandlers(), + (this.el.CharacterCounter = void 0), + this._removeCounter() + }, + }, + { + key: '_setupEventHandlers', + value: function() { + ;(this._handleUpdateCounterBound = this.updateCounter.bind( + this + )), + this.el.addEventListener( + 'focus', + this._handleUpdateCounterBound, + !0 + ), + this.el.addEventListener( + 'input', + this._handleUpdateCounterBound, + !0 + ) + }, + }, + { + key: '_removeEventHandlers', + value: function() { + this.el.removeEventListener( + 'focus', + this._handleUpdateCounterBound, + !0 + ), + this.el.removeEventListener( + 'input', + this._handleUpdateCounterBound, + !0 + ) + }, + }, + { + key: '_setupCounter', + value: function() { + ;(this.counterEl = document.createElement( + 'span' + )), + s(this.counterEl) + .addClass('character-counter') + .css({ + float: 'right', + 'font-size': '12px', + height: 1, + }), + this.$el.parent().append(this.counterEl) + }, + }, + { + key: '_removeCounter', + value: function() { + s(this.counterEl).remove() + }, + }, + { + key: 'updateCounter', + value: function() { + var t = +this.$el.attr('data-length'), + e = this.el.value.length + this.isValidLength = e <= t + var i = e + t && + ((i += '/' + t), this._validateInput()), + s(this.counterEl).html(i) + }, + }, + { + key: '_validateInput', + value: function() { + this.isValidLength && this.isInvalid + ? ((this.isInvalid = !1), + this.$el.removeClass('invalid')) + : this.isValidLength || + this.isInvalid || + ((this.isInvalid = !0), + this.$el.removeClass('valid'), + this.$el.addClass('invalid')) + }, + }, + ], + [ + { + key: 'init', + value: function(t, e) { + return _get( + n.__proto__ || Object.getPrototypeOf(n), + 'init', + this + ).call(this, this, t, e) + }, + }, + { + key: 'getInstance', + value: function(t) { + return (t.jquery ? t[0] : t) + .M_CharacterCounter + }, + }, + { + key: 'defaults', + get: function() { + return e + }, + }, + ] + ), + n + ) + })() + ;(M.CharacterCounter = t), + M.jQueryLoaded && + M.initializeJqueryWrapper( + t, + 'characterCounter', + 'M_CharacterCounter' + ) + })(cash), + (function(b) { + 'use strict' + var e = { + duration: 200, + dist: -100, + shift: 0, + padding: 0, + numVisible: 5, + fullWidth: !1, + indicators: !1, + noWrap: !1, + onCycleTo: null, + }, + t = (function(t) { + function i(t, e) { + _classCallCheck(this, i) + var n = _possibleConstructorReturn( + this, + (i.__proto__ || Object.getPrototypeOf(i)).call( + this, + i, + t, + e + ) + ) + return ( + ((n.el.M_Carousel = n).options = b.extend( + {}, + i.defaults, + e + )), + (n.hasMultipleSlides = + 1 < n.$el.find('.carousel-item').length), + (n.showIndicators = + n.options.indicators && n.hasMultipleSlides), + (n.noWrap = n.options.noWrap || !n.hasMultipleSlides), + (n.pressed = !1), + (n.dragged = !1), + (n.offset = n.target = 0), + (n.images = []), + (n.itemWidth = n.$el + .find('.carousel-item') + .first() + .innerWidth()), + (n.itemHeight = n.$el + .find('.carousel-item') + .first() + .innerHeight()), + (n.dim = 2 * n.itemWidth + n.options.padding || 1), + (n._autoScrollBound = n._autoScroll.bind(n)), + (n._trackBound = n._track.bind(n)), + n.options.fullWidth && + ((n.options.dist = 0), + n._setCarouselHeight(), + n.showIndicators && + n.$el + .find('.carousel-fixed-item') + .addClass('with-indicators')), + (n.$indicators = b('')), + n.$el.find('.carousel-item').each(function(t, e) { + if ((n.images.push(t), n.showIndicators)) { + var i = b('
  • ') + 0 === e && i[0].classList.add('active'), + n.$indicators.append(i) + } + }), + n.showIndicators && n.$el.append(n.$indicators), + (n.count = n.images.length), + (n.options.numVisible = Math.min( + n.count, + n.options.numVisible + )), + (n.xform = 'transform'), + ['webkit', 'Moz', 'O', 'ms'].every(function(t) { + var e = t + 'Transform' + return ( + void 0 === document.body.style[e] || + ((n.xform = e), !1) + ) + }), + n._setupEventHandlers(), + n._scroll(n.offset), + n + ) + } + return ( + _inherits(i, Component), + _createClass( + i, + [ + { + key: 'destroy', + value: function() { + this._removeEventHandlers(), + (this.el.M_Carousel = void 0) + }, + }, + { + key: '_setupEventHandlers', + value: function() { + var i = this + ;(this._handleCarouselTapBound = this._handleCarouselTap.bind( + this + )), + (this._handleCarouselDragBound = this._handleCarouselDrag.bind( + this + )), + (this._handleCarouselReleaseBound = this._handleCarouselRelease.bind( + this + )), + (this._handleCarouselClickBound = this._handleCarouselClick.bind( + this + )), + void 0 !== window.ontouchstart && + (this.el.addEventListener( + 'touchstart', + this._handleCarouselTapBound + ), + this.el.addEventListener( + 'touchmove', + this._handleCarouselDragBound + ), + this.el.addEventListener( + 'touchend', + this._handleCarouselReleaseBound + )), + this.el.addEventListener( + 'mousedown', + this._handleCarouselTapBound + ), + this.el.addEventListener( + 'mousemove', + this._handleCarouselDragBound + ), + this.el.addEventListener( + 'mouseup', + this._handleCarouselReleaseBound + ), + this.el.addEventListener( + 'mouseleave', + this._handleCarouselReleaseBound + ), + this.el.addEventListener( + 'click', + this._handleCarouselClickBound + ), + this.showIndicators && + this.$indicators && + ((this._handleIndicatorClickBound = this._handleIndicatorClick.bind( + this + )), + this.$indicators + .find('.indicator-item') + .each(function(t, e) { + t.addEventListener( + 'click', + i._handleIndicatorClickBound + ) + })) + var t = M.throttle(this._handleResize, 200) + ;(this._handleThrottledResizeBound = t.bind( + this + )), + window.addEventListener( + 'resize', + this._handleThrottledResizeBound + ) + }, + }, + { + key: '_removeEventHandlers', + value: function() { + var i = this + void 0 !== window.ontouchstart && + (this.el.removeEventListener( + 'touchstart', + this._handleCarouselTapBound + ), + this.el.removeEventListener( + 'touchmove', + this._handleCarouselDragBound + ), + this.el.removeEventListener( + 'touchend', + this._handleCarouselReleaseBound + )), + this.el.removeEventListener( + 'mousedown', + this._handleCarouselTapBound + ), + this.el.removeEventListener( + 'mousemove', + this._handleCarouselDragBound + ), + this.el.removeEventListener( + 'mouseup', + this._handleCarouselReleaseBound + ), + this.el.removeEventListener( + 'mouseleave', + this._handleCarouselReleaseBound + ), + this.el.removeEventListener( + 'click', + this._handleCarouselClickBound + ), + this.showIndicators && + this.$indicators && + this.$indicators + .find('.indicator-item') + .each(function(t, e) { + t.removeEventListener( + 'click', + i._handleIndicatorClickBound + ) + }), + window.removeEventListener( + 'resize', + this._handleThrottledResizeBound + ) + }, + }, + { + key: '_handleCarouselTap', + value: function(t) { + 'mousedown' === t.type && + b(t.target).is('img') && + t.preventDefault(), + (this.pressed = !0), + (this.dragged = !1), + (this.verticalDragged = !1), + (this.reference = this._xpos(t)), + (this.referenceY = this._ypos(t)), + (this.velocity = this.amplitude = 0), + (this.frame = this.offset), + (this.timestamp = Date.now()), + clearInterval(this.ticker), + (this.ticker = setInterval( + this._trackBound, + 100 + )) + }, + }, + { + key: '_handleCarouselDrag', + value: function(t) { + var e = void 0, + i = void 0, + n = void 0 + if (this.pressed) + if ( + ((e = this._xpos(t)), + (i = this._ypos(t)), + (n = this.reference - e), + Math.abs(this.referenceY - i) < + 30 && !this.verticalDragged) + ) + (2 < n || n < -2) && + ((this.dragged = !0), + (this.reference = e), + this._scroll(this.offset + n)) + else { + if (this.dragged) + return ( + t.preventDefault(), + t.stopPropagation(), + !1 + ) + this.verticalDragged = !0 + } + if (this.dragged) + return ( + t.preventDefault(), + t.stopPropagation(), + !1 + ) + }, + }, + { + key: '_handleCarouselRelease', + value: function(t) { + if (this.pressed) + return ( + (this.pressed = !1), + clearInterval(this.ticker), + (this.target = this.offset), + (10 < this.velocity || + this.velocity < -10) && + ((this.amplitude = + 0.9 * this.velocity), + (this.target = + this.offset + + this.amplitude)), + (this.target = + Math.round( + this.target / this.dim + ) * this.dim), + this.noWrap && + (this.target >= + this.dim * (this.count - 1) + ? (this.target = + this.dim * + (this.count - 1)) + : this.target < 0 && + (this.target = 0)), + (this.amplitude = + this.target - this.offset), + (this.timestamp = Date.now()), + requestAnimationFrame( + this._autoScrollBound + ), + this.dragged && + (t.preventDefault(), + t.stopPropagation()), + !1 + ) + }, + }, + { + key: '_handleCarouselClick', + value: function(t) { + if (this.dragged) + return ( + t.preventDefault(), + t.stopPropagation(), + !1 + ) + if (!this.options.fullWidth) { + var e = b(t.target) + .closest('.carousel-item') + .index() + 0 !== this._wrap(this.center) - e && + (t.preventDefault(), + t.stopPropagation()), + this._cycleTo(e) + } + }, + }, + { + key: '_handleIndicatorClick', + value: function(t) { + t.stopPropagation() + var e = b(t.target).closest( + '.indicator-item' + ) + e.length && this._cycleTo(e.index()) + }, + }, + { + key: '_handleResize', + value: function(t) { + this.options.fullWidth + ? ((this.itemWidth = this.$el + .find('.carousel-item') + .first() + .innerWidth()), + (this.imageHeight = this.$el + .find('.carousel-item.active') + .height()), + (this.dim = + 2 * this.itemWidth + + this.options.padding), + (this.offset = + 2 * this.center * this.itemWidth), + (this.target = this.offset), + this._setCarouselHeight(!0)) + : this._scroll() + }, + }, + { + key: '_setCarouselHeight', + value: function(t) { + var i = this, + e = this.$el.find( + '.carousel-item.active' + ).length + ? this.$el + .find('.carousel-item.active') + .first() + : this.$el + .find('.carousel-item') + .first(), + n = e.find('img').first() + if (n.length) + if (n[0].complete) { + var s = n.height() + if (0 < s) + this.$el.css('height', s + 'px') + else { + var o = n[0].naturalWidth, + a = n[0].naturalHeight, + r = + (this.$el.width() / o) * + a + this.$el.css('height', r + 'px') + } + } else + n.one('load', function(t, e) { + i.$el.css( + 'height', + t.offsetHeight + 'px' + ) + }) + else if (!t) { + var l = e.height() + this.$el.css('height', l + 'px') + } + }, + }, + { + key: '_xpos', + value: function(t) { + return t.targetTouches && + 1 <= t.targetTouches.length + ? t.targetTouches[0].clientX + : t.clientX + }, + }, + { + key: '_ypos', + value: function(t) { + return t.targetTouches && + 1 <= t.targetTouches.length + ? t.targetTouches[0].clientY + : t.clientY + }, + }, + { + key: '_wrap', + value: function(t) { + return t >= this.count + ? t % this.count + : t < 0 + ? this._wrap( + this.count + (t % this.count) + ) + : t + }, + }, + { + key: '_track', + value: function() { + var t, e, i, n + ;(e = (t = Date.now()) - this.timestamp), + (this.timestamp = t), + (i = this.offset - this.frame), + (this.frame = this.offset), + (n = (1e3 * i) / (1 + e)), + (this.velocity = + 0.8 * n + 0.2 * this.velocity) + }, + }, + { + key: '_autoScroll', + value: function() { + var t = void 0, + e = void 0 + this.amplitude && + ((t = Date.now() - this.timestamp), + 2 < + (e = + this.amplitude * + Math.exp( + -t / this.options.duration + )) || e < -2 + ? (this._scroll(this.target - e), + requestAnimationFrame( + this._autoScrollBound + )) + : this._scroll(this.target)) + }, + }, + { + key: '_scroll', + value: function(t) { + var e = this + this.$el.hasClass('scrolling') || + this.el.classList.add('scrolling'), + null != this.scrollingTimeout && + window.clearTimeout( + this.scrollingTimeout + ), + (this.scrollingTimeout = window.setTimeout( + function() { + e.$el.removeClass('scrolling') + }, + this.options.duration + )) + var i, + n, + s, + o, + a = void 0, + r = void 0, + l = void 0, + h = void 0, + d = void 0, + u = void 0, + c = this.center, + p = 1 / this.options.numVisible + if ( + ((this.offset = + 'number' == typeof t + ? t + : this.offset), + (this.center = Math.floor( + (this.offset + this.dim / 2) / + this.dim + )), + (o = + (-(s = + (n = + this.offset - + this.center * this.dim) < 0 + ? 1 + : -1) * + n * + 2) / + this.dim), + (i = this.count >> 1), + this.options.fullWidth + ? ((l = 'translateX(0)'), (u = 1)) + : ((l = + 'translateX(' + + (this.el.clientWidth - + this.itemWidth) / + 2 + + 'px) '), + (l += + 'translateY(' + + (this.el.clientHeight - + this.itemHeight) / + 2 + + 'px)'), + (u = 1 - p * o)), + this.showIndicators) + ) { + var v = this.center % this.count, + f = this.$indicators.find( + '.indicator-item.active' + ) + f.index() !== v && + (f.removeClass('active'), + this.$indicators + .find('.indicator-item') + .eq(v)[0] + .classList.add('active')) + } + if ( + !this.noWrap || + (0 <= this.center && + this.center < this.count) + ) { + ;(r = this.images[ + this._wrap(this.center) + ]), + b(r).hasClass('active') || + (this.$el + .find('.carousel-item') + .removeClass('active'), + r.classList.add('active')) + var m = + l + + ' translateX(' + + -n / 2 + + 'px) translateX(' + + s * this.options.shift * o * a + + 'px) translateZ(' + + this.options.dist * o + + 'px)' + this._updateItemStyle(r, u, 0, m) + } + for (a = 1; a <= i; ++a) { + if ( + (this.options.fullWidth + ? ((h = this.options.dist), + (d = + a === i && n < 0 + ? 1 - o + : 1)) + : ((h = + this.options.dist * + (2 * a + o * s)), + (d = + 1 - p * (2 * a + o * s))), + !this.noWrap || + this.center + a < this.count) + ) { + r = this.images[ + this._wrap(this.center + a) + ] + var g = + l + + ' translateX(' + + (this.options.shift + + (this.dim * a - n) / 2) + + 'px) translateZ(' + + h + + 'px)' + this._updateItemStyle(r, d, -a, g) + } + if ( + (this.options.fullWidth + ? ((h = this.options.dist), + (d = + a === i && 0 < n + ? 1 - o + : 1)) + : ((h = + this.options.dist * + (2 * a - o * s)), + (d = + 1 - p * (2 * a - o * s))), + !this.noWrap || + 0 <= this.center - a) + ) { + r = this.images[ + this._wrap(this.center - a) + ] + var _ = + l + + ' translateX(' + + (-this.options.shift + + (-this.dim * a - n) / 2) + + 'px) translateZ(' + + h + + 'px)' + this._updateItemStyle(r, d, -a, _) + } + } + if ( + !this.noWrap || + (0 <= this.center && + this.center < this.count) + ) { + r = this.images[this._wrap(this.center)] + var y = + l + + ' translateX(' + + -n / 2 + + 'px) translateX(' + + s * this.options.shift * o + + 'px) translateZ(' + + this.options.dist * o + + 'px)' + this._updateItemStyle(r, u, 0, y) + } + var k = this.$el + .find('.carousel-item') + .eq(this._wrap(this.center)) + c !== this.center && + 'function' == + typeof this.options.onCycleTo && + this.options.onCycleTo.call( + this, + k[0], + this.dragged + ), + 'function' == + typeof this.oneTimeCallback && + (this.oneTimeCallback.call( + this, + k[0], + this.dragged + ), + (this.oneTimeCallback = null)) + }, + }, + { + key: '_updateItemStyle', + value: function(t, e, i, n) { + ;(t.style[this.xform] = n), + (t.style.zIndex = i), + (t.style.opacity = e), + (t.style.visibility = 'visible') + }, + }, + { + key: '_cycleTo', + value: function(t, e) { + var i = (this.center % this.count) - t + this.noWrap || + (i < 0 + ? Math.abs(i + this.count) < + Math.abs(i) && + (i += this.count) + : 0 < i && + Math.abs(i - this.count) < i && + (i -= this.count)), + (this.target = + this.dim * + Math.round(this.offset / this.dim)), + i < 0 + ? (this.target += + this.dim * Math.abs(i)) + : 0 < i && + (this.target -= this.dim * i), + 'function' == typeof e && + (this.oneTimeCallback = e), + this.offset !== this.target && + ((this.amplitude = + this.target - this.offset), + (this.timestamp = Date.now()), + requestAnimationFrame( + this._autoScrollBound + )) + }, + }, + { + key: 'next', + value: function(t) { + ;(void 0 === t || isNaN(t)) && (t = 1) + var e = this.center + t + if (e >= this.count || e < 0) { + if (this.noWrap) return + e = this._wrap(e) + } + this._cycleTo(e) + }, + }, + { + key: 'prev', + value: function(t) { + ;(void 0 === t || isNaN(t)) && (t = 1) + var e = this.center - t + if (e >= this.count || e < 0) { + if (this.noWrap) return + e = this._wrap(e) + } + this._cycleTo(e) + }, + }, + { + key: 'set', + value: function(t, e) { + if ( + ((void 0 === t || isNaN(t)) && (t = 0), + t > this.count || t < 0) + ) { + if (this.noWrap) return + t = this._wrap(t) + } + this._cycleTo(t, e) + }, + }, + ], + [ + { + key: 'init', + value: function(t, e) { + return _get( + i.__proto__ || Object.getPrototypeOf(i), + 'init', + this + ).call(this, this, t, e) + }, + }, + { + key: 'getInstance', + value: function(t) { + return (t.jquery ? t[0] : t).M_Carousel + }, + }, + { + key: 'defaults', + get: function() { + return e + }, + }, + ] + ), + i + ) + })() + ;(M.Carousel = t), + M.jQueryLoaded && + M.initializeJqueryWrapper(t, 'carousel', 'M_Carousel') + })(cash), + (function(S) { + 'use strict' + var e = { onOpen: void 0, onClose: void 0 }, + t = (function(t) { + function n(t, e) { + _classCallCheck(this, n) + var i = _possibleConstructorReturn( + this, + (n.__proto__ || Object.getPrototypeOf(n)).call( + this, + n, + t, + e + ) + ) + return ( + ((i.el.M_TapTarget = i).options = S.extend( + {}, + n.defaults, + e + )), + (i.isOpen = !1), + (i.$origin = S('#' + i.$el.attr('data-target'))), + i._setup(), + i._calculatePositioning(), + i._setupEventHandlers(), + i + ) + } + return ( + _inherits(n, Component), + _createClass( + n, + [ + { + key: 'destroy', + value: function() { + this._removeEventHandlers(), + (this.el.TapTarget = void 0) + }, + }, + { + key: '_setupEventHandlers', + value: function() { + ;(this._handleDocumentClickBound = this._handleDocumentClick.bind( + this + )), + (this._handleTargetClickBound = this._handleTargetClick.bind( + this + )), + (this._handleOriginClickBound = this._handleOriginClick.bind( + this + )), + this.el.addEventListener( + 'click', + this._handleTargetClickBound + ), + this.originEl.addEventListener( + 'click', + this._handleOriginClickBound + ) + var t = M.throttle(this._handleResize, 200) + ;(this._handleThrottledResizeBound = t.bind( + this + )), + window.addEventListener( + 'resize', + this._handleThrottledResizeBound + ) + }, + }, + { + key: '_removeEventHandlers', + value: function() { + this.el.removeEventListener( + 'click', + this._handleTargetClickBound + ), + this.originEl.removeEventListener( + 'click', + this._handleOriginClickBound + ), + window.removeEventListener( + 'resize', + this._handleThrottledResizeBound + ) + }, + }, + { + key: '_handleTargetClick', + value: function(t) { + this.open() + }, + }, + { + key: '_handleOriginClick', + value: function(t) { + this.close() + }, + }, + { + key: '_handleResize', + value: function(t) { + this._calculatePositioning() + }, + }, + { + key: '_handleDocumentClick', + value: function(t) { + S(t.target).closest('.tap-target-wrapper') + .length || + (this.close(), + t.preventDefault(), + t.stopPropagation()) + }, + }, + { + key: '_setup', + value: function() { + ;(this.wrapper = this.$el.parent()[0]), + (this.waveEl = S(this.wrapper).find( + '.tap-target-wave' + )[0]), + (this.originEl = S(this.wrapper).find( + '.tap-target-origin' + )[0]), + (this.contentEl = this.$el.find( + '.tap-target-content' + )[0]), + S(this.wrapper).hasClass( + '.tap-target-wrapper' + ) || + ((this.wrapper = document.createElement( + 'div' + )), + this.wrapper.classList.add( + 'tap-target-wrapper' + ), + this.$el.before(S(this.wrapper)), + this.wrapper.append(this.el)), + this.contentEl || + ((this.contentEl = document.createElement( + 'div' + )), + this.contentEl.classList.add( + 'tap-target-content' + ), + this.$el.append(this.contentEl)), + this.waveEl || + ((this.waveEl = document.createElement( + 'div' + )), + this.waveEl.classList.add( + 'tap-target-wave' + ), + this.originEl || + ((this.originEl = this.$origin.clone( + !0, + !0 + )), + this.originEl.addClass( + 'tap-target-origin' + ), + this.originEl.removeAttr('id'), + this.originEl.removeAttr( + 'style' + ), + (this.originEl = this.originEl[0]), + this.waveEl.append( + this.originEl + )), + this.wrapper.append(this.waveEl)) + }, + }, + { + key: '_calculatePositioning', + value: function() { + var t = + 'fixed' === this.$origin.css('position') + if (!t) + for ( + var e = this.$origin.parents(), + i = 0; + i < e.length && + !(t = + 'fixed' == + S(e[i]).css('position')); + i++ + ); + var n = this.$origin.outerWidth(), + s = this.$origin.outerHeight(), + o = t + ? this.$origin.offset().top - + M.getDocumentScrollTop() + : this.$origin.offset().top, + a = t + ? this.$origin.offset().left - + M.getDocumentScrollLeft() + : this.$origin.offset().left, + r = window.innerWidth, + l = window.innerHeight, + h = r / 2, + d = l / 2, + u = a <= h, + c = h < a, + p = o <= d, + v = d < o, + f = 0.25 * r <= a && a <= 0.75 * r, + m = this.$el.outerWidth(), + g = this.$el.outerHeight(), + _ = o + s / 2 - g / 2, + y = a + n / 2 - m / 2, + k = t ? 'fixed' : 'absolute', + b = f ? m : m / 2 + n, + w = g / 2, + C = p ? g / 2 : 0, + E = u && !f ? m / 2 - n : 0, + O = n, + x = v ? 'bottom' : 'top', + L = 2 * n, + T = L, + $ = g / 2 - T / 2, + B = m / 2 - L / 2, + D = {} + ;(D.top = p ? _ + 'px' : ''), + (D.right = c ? r - y - m + 'px' : ''), + (D.bottom = v ? l - _ - g + 'px' : ''), + (D.left = u ? y + 'px' : ''), + (D.position = k), + S(this.wrapper).css(D), + S(this.contentEl).css({ + width: b + 'px', + height: w + 'px', + top: C + 'px', + right: '0px', + bottom: '0px', + left: E + 'px', + padding: O + 'px', + verticalAlign: x, + }), + S(this.waveEl).css({ + top: $ + 'px', + left: B + 'px', + width: L + 'px', + height: T + 'px', + }) + }, + }, + { + key: 'open', + value: function() { + this.isOpen || + ('function' == + typeof this.options.onOpen && + this.options.onOpen.call( + this, + this.$origin[0] + ), + (this.isOpen = !0), + this.wrapper.classList.add('open'), + document.body.addEventListener( + 'click', + this._handleDocumentClickBound, + !0 + ), + document.body.addEventListener( + 'touchend', + this._handleDocumentClickBound + )) + }, + }, + { + key: 'close', + value: function() { + this.isOpen && + ('function' == + typeof this.options.onClose && + this.options.onClose.call( + this, + this.$origin[0] + ), + (this.isOpen = !1), + this.wrapper.classList.remove('open'), + document.body.removeEventListener( + 'click', + this._handleDocumentClickBound, + !0 + ), + document.body.removeEventListener( + 'touchend', + this._handleDocumentClickBound + )) + }, + }, + ], + [ + { + key: 'init', + value: function(t, e) { + return _get( + n.__proto__ || Object.getPrototypeOf(n), + 'init', + this + ).call(this, this, t, e) + }, + }, + { + key: 'getInstance', + value: function(t) { + return (t.jquery ? t[0] : t).M_TapTarget + }, + }, + { + key: 'defaults', + get: function() { + return e + }, + }, + ] + ), + n + ) + })() + ;(M.TapTarget = t), + M.jQueryLoaded && + M.initializeJqueryWrapper(t, 'tapTarget', 'M_TapTarget') + })(cash), + (function(d) { + 'use strict' + var e = { classes: '', dropdownOptions: {} }, + t = (function(t) { + function n(t, e) { + _classCallCheck(this, n) + var i = _possibleConstructorReturn( + this, + (n.__proto__ || Object.getPrototypeOf(n)).call( + this, + n, + t, + e + ) + ) + return i.$el.hasClass('browser-default') + ? _possibleConstructorReturn(i) + : (((i.el.M_FormSelect = i).options = d.extend( + {}, + n.defaults, + e + )), + (i.isMultiple = i.$el.prop('multiple')), + (i.el.tabIndex = -1), + (i._keysSelected = {}), + (i._valueDict = {}), + i._setupDropdown(), + i._setupEventHandlers(), + i) + } + return ( + _inherits(n, Component), + _createClass( + n, + [ + { + key: 'destroy', + value: function() { + this._removeEventHandlers(), + this._removeDropdown(), + (this.el.M_FormSelect = void 0) + }, + }, + { + key: '_setupEventHandlers', + value: function() { + var e = this + ;(this._handleSelectChangeBound = this._handleSelectChange.bind( + this + )), + (this._handleOptionClickBound = this._handleOptionClick.bind( + this + )), + (this._handleInputClickBound = this._handleInputClick.bind( + this + )), + d(this.dropdownOptions) + .find('li:not(.optgroup)') + .each(function(t) { + t.addEventListener( + 'click', + e._handleOptionClickBound + ) + }), + this.el.addEventListener( + 'change', + this._handleSelectChangeBound + ), + this.input.addEventListener( + 'click', + this._handleInputClickBound + ) + }, + }, + { + key: '_removeEventHandlers', + value: function() { + var e = this + d(this.dropdownOptions) + .find('li:not(.optgroup)') + .each(function(t) { + t.removeEventListener( + 'click', + e._handleOptionClickBound + ) + }), + this.el.removeEventListener( + 'change', + this._handleSelectChangeBound + ), + this.input.removeEventListener( + 'click', + this._handleInputClickBound + ) + }, + }, + { + key: '_handleSelectChange', + value: function(t) { + this._setValueToInput() + }, + }, + { + key: '_handleOptionClick', + value: function(t) { + t.preventDefault() + var e = d(t.target).closest('li')[0], + i = e.id + if ( + !d(e).hasClass('disabled') && + !d(e).hasClass('optgroup') && + i.length + ) { + var n = !0 + if (this.isMultiple) { + var s = d( + this.dropdownOptions + ).find('li.disabled.selected') + s.length && + (s.removeClass('selected'), + s + .find( + 'input[type="checkbox"]' + ) + .prop('checked', !1), + this._toggleEntryFromArray( + s[0].id + )), + (n = this._toggleEntryFromArray( + i + )) + } else + d(this.dropdownOptions) + .find('li') + .removeClass('selected'), + d(e).toggleClass('selected', n) + d(this._valueDict[i].el).prop( + 'selected' + ) !== n && + (d(this._valueDict[i].el).prop( + 'selected', + n + ), + this.$el.trigger('change')) + } + t.stopPropagation() + }, + }, + { + key: '_handleInputClick', + value: function() { + this.dropdown && + this.dropdown.isOpen && + (this._setValueToInput(), + this._setSelectedStates()) + }, + }, + { + key: '_setupDropdown', + value: function() { + var n = this + ;(this.wrapper = document.createElement( + 'div' + )), + d(this.wrapper).addClass( + 'select-wrapper ' + + this.options.classes + ), + this.$el.before(d(this.wrapper)), + this.wrapper.appendChild(this.el), + this.el.disabled && + this.wrapper.classList.add( + 'disabled' + ), + (this.$selectOptions = this.$el.children( + 'option, optgroup' + )), + (this.dropdownOptions = document.createElement( + 'ul' + )), + (this.dropdownOptions.id = + 'select-options-' + M.guid()), + d(this.dropdownOptions).addClass( + 'dropdown-content select-dropdown ' + + (this.isMultiple + ? 'multiple-select-dropdown' + : '') + ), + this.$selectOptions.length && + this.$selectOptions.each(function( + t + ) { + if (d(t).is('option')) { + var e = void 0 + ;(e = n.isMultiple + ? n._appendOptionWithIcon( + n.$el, + t, + 'multiple' + ) + : n._appendOptionWithIcon( + n.$el, + t + )), + n._addOptionToValueDict( + t, + e + ) + } else if ( + d(t).is('optgroup') + ) { + var i = d(t).children( + 'option' + ) + d(n.dropdownOptions).append( + d( + '
  • ' + + t.getAttribute( + 'label' + ) + + '
  • ' + )[0] + ), + i.each(function(t) { + var e = n._appendOptionWithIcon( + n.$el, + t, + 'optgroup-option' + ) + n._addOptionToValueDict( + t, + e + ) + }) + } + }), + this.$el.after(this.dropdownOptions), + (this.input = document.createElement( + 'input' + )), + d(this.input).addClass( + 'select-dropdown dropdown-trigger' + ), + this.input.setAttribute('type', 'text'), + this.input.setAttribute( + 'readonly', + 'true' + ), + this.input.setAttribute( + 'data-target', + this.dropdownOptions.id + ), + this.el.disabled && + d(this.input).prop( + 'disabled', + 'true' + ), + this.$el.before(this.input), + this._setValueToInput() + var t = d( + '' + ) + if ( + (this.$el.before(t[0]), + !this.el.disabled) + ) { + var e = d.extend( + {}, + this.options.dropdownOptions + ) + ;(e.onOpenEnd = function(t) { + var e = d(n.dropdownOptions) + .find('.selected') + .first() + if ( + e.length && + ((M.keyDown = !0), + (n.dropdown.focusedIndex = e.index()), + n.dropdown._focusFocusedItem(), + (M.keyDown = !1), + n.dropdown.isScrollable) + ) { + var i = + e[0].getBoundingClientRect() + .top - + n.dropdownOptions.getBoundingClientRect() + .top + ;(i -= + n.dropdownOptions + .clientHeight / 2), + (n.dropdownOptions.scrollTop = i) + } + }), + this.isMultiple && + (e.closeOnClick = !1), + (this.dropdown = M.Dropdown.init( + this.input, + e + )) + } + this._setSelectedStates() + }, + }, + { + key: '_addOptionToValueDict', + value: function(t, e) { + var i = Object.keys(this._valueDict).length, + n = this.dropdownOptions.id + i, + s = {} + ;(e.id = n), + (s.el = t), + (s.optionEl = e), + (this._valueDict[n] = s) + }, + }, + { + key: '_removeDropdown', + value: function() { + d(this.wrapper) + .find('.caret') + .remove(), + d(this.input).remove(), + d(this.dropdownOptions).remove(), + d(this.wrapper).before(this.$el), + d(this.wrapper).remove() + }, + }, + { + key: '_appendOptionWithIcon', + value: function(t, e, i) { + var n = e.disabled ? 'disabled ' : '', + s = + 'optgroup-option' === i + ? 'optgroup-option ' + : '', + o = this.isMultiple + ? '' + : e.innerHTML, + a = d('
  • '), + r = d('') + r.html(o), + a.addClass(n + ' ' + s), + a.append(r) + var l = e.getAttribute('data-icon') + if (l) { + var h = d( + '' + ) + a.prepend(h) + } + return ( + d(this.dropdownOptions).append(a[0]), + a[0] + ) + }, + }, + { + key: '_toggleEntryFromArray', + value: function(t) { + var e = !this._keysSelected.hasOwnProperty( + t + ), + i = d(this._valueDict[t].optionEl) + return ( + e + ? (this._keysSelected[t] = !0) + : delete this._keysSelected[t], + i.toggleClass('selected', e), + i + .find('input[type="checkbox"]') + .prop('checked', e), + i.prop('selected', e), + e + ) + }, + }, + { + key: '_setValueToInput', + value: function() { + var i = [] + if ( + (this.$el + .find('option') + .each(function(t) { + if (d(t).prop('selected')) { + var e = d(t).text() + i.push(e) + } + }), + !i.length) + ) { + var t = this.$el + .find('option:disabled') + .eq(0) + t.length && + '' === t[0].value && + i.push(t.text()) + } + this.input.value = i.join(', ') + }, + }, + { + key: '_setSelectedStates', + value: function() { + for (var t in ((this._keysSelected = {}), + this._valueDict)) { + var e = this._valueDict[t], + i = d(e.el).prop('selected') + d(e.optionEl) + .find('input[type="checkbox"]') + .prop('checked', i), + i + ? (this._activateOption( + d(this.dropdownOptions), + d(e.optionEl) + ), + (this._keysSelected[t] = !0)) + : d(e.optionEl).removeClass( + 'selected' + ) + } + }, + }, + { + key: '_activateOption', + value: function(t, e) { + e && + (this.isMultiple || + t + .find('li.selected') + .removeClass('selected'), + d(e).addClass('selected')) + }, + }, + { + key: 'getSelectedValues', + value: function() { + var t = [] + for (var e in this._keysSelected) + t.push(this._valueDict[e].el.value) + return t + }, + }, + ], + [ + { + key: 'init', + value: function(t, e) { + return _get( + n.__proto__ || Object.getPrototypeOf(n), + 'init', + this + ).call(this, this, t, e) + }, + }, + { + key: 'getInstance', + value: function(t) { + return (t.jquery ? t[0] : t).M_FormSelect + }, + }, + { + key: 'defaults', + get: function() { + return e + }, + }, + ] + ), + n + ) + })() + ;(M.FormSelect = t), + M.jQueryLoaded && + M.initializeJqueryWrapper(t, 'formSelect', 'M_FormSelect') + })(cash), + (function(s, e) { + 'use strict' + var i = {}, + t = (function(t) { + function n(t, e) { + _classCallCheck(this, n) + var i = _possibleConstructorReturn( + this, + (n.__proto__ || Object.getPrototypeOf(n)).call( + this, + n, + t, + e + ) + ) + return ( + ((i.el.M_Range = i).options = s.extend( + {}, + n.defaults, + e + )), + (i._mousedown = !1), + i._setupThumb(), + i._setupEventHandlers(), + i + ) + } + return ( + _inherits(n, Component), + _createClass( + n, + [ + { + key: 'destroy', + value: function() { + this._removeEventHandlers(), + this._removeThumb(), + (this.el.M_Range = void 0) + }, + }, + { + key: '_setupEventHandlers', + value: function() { + ;(this._handleRangeChangeBound = this._handleRangeChange.bind( + this + )), + (this._handleRangeMousedownTouchstartBound = this._handleRangeMousedownTouchstart.bind( + this + )), + (this._handleRangeInputMousemoveTouchmoveBound = this._handleRangeInputMousemoveTouchmove.bind( + this + )), + (this._handleRangeMouseupTouchendBound = this._handleRangeMouseupTouchend.bind( + this + )), + (this._handleRangeBlurMouseoutTouchleaveBound = this._handleRangeBlurMouseoutTouchleave.bind( + this + )), + this.el.addEventListener( + 'change', + this._handleRangeChangeBound + ), + this.el.addEventListener( + 'mousedown', + this + ._handleRangeMousedownTouchstartBound + ), + this.el.addEventListener( + 'touchstart', + this + ._handleRangeMousedownTouchstartBound + ), + this.el.addEventListener( + 'input', + this + ._handleRangeInputMousemoveTouchmoveBound + ), + this.el.addEventListener( + 'mousemove', + this + ._handleRangeInputMousemoveTouchmoveBound + ), + this.el.addEventListener( + 'touchmove', + this + ._handleRangeInputMousemoveTouchmoveBound + ), + this.el.addEventListener( + 'mouseup', + this + ._handleRangeMouseupTouchendBound + ), + this.el.addEventListener( + 'touchend', + this + ._handleRangeMouseupTouchendBound + ), + this.el.addEventListener( + 'blur', + this + ._handleRangeBlurMouseoutTouchleaveBound + ), + this.el.addEventListener( + 'mouseout', + this + ._handleRangeBlurMouseoutTouchleaveBound + ), + this.el.addEventListener( + 'touchleave', + this + ._handleRangeBlurMouseoutTouchleaveBound + ) + }, + }, + { + key: '_removeEventHandlers', + value: function() { + this.el.removeEventListener( + 'change', + this._handleRangeChangeBound + ), + this.el.removeEventListener( + 'mousedown', + this + ._handleRangeMousedownTouchstartBound + ), + this.el.removeEventListener( + 'touchstart', + this + ._handleRangeMousedownTouchstartBound + ), + this.el.removeEventListener( + 'input', + this + ._handleRangeInputMousemoveTouchmoveBound + ), + this.el.removeEventListener( + 'mousemove', + this + ._handleRangeInputMousemoveTouchmoveBound + ), + this.el.removeEventListener( + 'touchmove', + this + ._handleRangeInputMousemoveTouchmoveBound + ), + this.el.removeEventListener( + 'mouseup', + this + ._handleRangeMouseupTouchendBound + ), + this.el.removeEventListener( + 'touchend', + this + ._handleRangeMouseupTouchendBound + ), + this.el.removeEventListener( + 'blur', + this + ._handleRangeBlurMouseoutTouchleaveBound + ), + this.el.removeEventListener( + 'mouseout', + this + ._handleRangeBlurMouseoutTouchleaveBound + ), + this.el.removeEventListener( + 'touchleave', + this + ._handleRangeBlurMouseoutTouchleaveBound + ) + }, + }, + { + key: '_handleRangeChange', + value: function() { + s(this.value).html(this.$el.val()), + s(this.thumb).hasClass('active') || + this._showRangeBubble() + var t = this._calcRangeOffset() + s(this.thumb) + .addClass('active') + .css('left', t + 'px') + }, + }, + { + key: '_handleRangeMousedownTouchstart', + value: function(t) { + if ( + (s(this.value).html(this.$el.val()), + (this._mousedown = !0), + this.$el.addClass('active'), + s(this.thumb).hasClass('active') || + this._showRangeBubble(), + 'input' !== t.type) + ) { + var e = this._calcRangeOffset() + s(this.thumb) + .addClass('active') + .css('left', e + 'px') + } + }, + }, + { + key: '_handleRangeInputMousemoveTouchmove', + value: function() { + if (this._mousedown) { + s(this.thumb).hasClass('active') || + this._showRangeBubble() + var t = this._calcRangeOffset() + s(this.thumb) + .addClass('active') + .css('left', t + 'px'), + s(this.value).html(this.$el.val()) + } + }, + }, + { + key: '_handleRangeMouseupTouchend', + value: function() { + ;(this._mousedown = !1), + this.$el.removeClass('active') + }, + }, + { + key: '_handleRangeBlurMouseoutTouchleave', + value: function() { + if (!this._mousedown) { + var t = + 7 + + parseInt( + this.$el.css('padding-left') + ) + + 'px' + s(this.thumb).hasClass('active') && + (e.remove(this.thumb), + e({ + targets: this.thumb, + height: 0, + width: 0, + top: 10, + easing: 'easeOutQuad', + marginLeft: t, + duration: 100, + })), + s(this.thumb).removeClass('active') + } + }, + }, + { + key: '_setupThumb', + value: function() { + ;(this.thumb = document.createElement( + 'span' + )), + (this.value = document.createElement( + 'span' + )), + s(this.thumb).addClass('thumb'), + s(this.value).addClass('value'), + s(this.thumb).append(this.value), + this.$el.after(this.thumb) + }, + }, + { + key: '_removeThumb', + value: function() { + s(this.thumb).remove() + }, + }, + { + key: '_showRangeBubble', + value: function() { + var t = + -7 + + parseInt( + s(this.thumb) + .parent() + .css('padding-left') + ) + + 'px' + e.remove(this.thumb), + e({ + targets: this.thumb, + height: 30, + width: 30, + top: -30, + marginLeft: t, + duration: 300, + easing: 'easeOutQuint', + }) + }, + }, + { + key: '_calcRangeOffset', + value: function() { + var t = this.$el.width() - 15, + e = + parseFloat(this.$el.attr('max')) || + 100, + i = + parseFloat(this.$el.attr('min')) || + 0 + return ( + ((parseFloat(this.$el.val()) - i) / + (e - i)) * + t + ) + }, + }, + ], + [ + { + key: 'init', + value: function(t, e) { + return _get( + n.__proto__ || Object.getPrototypeOf(n), + 'init', + this + ).call(this, this, t, e) + }, + }, + { + key: 'getInstance', + value: function(t) { + return (t.jquery ? t[0] : t).M_Range + }, + }, + { + key: 'defaults', + get: function() { + return i + }, + }, + ] + ), + n + ) + })() + ;(M.Range = t), + M.jQueryLoaded && M.initializeJqueryWrapper(t, 'range', 'M_Range'), + t.init(s('input[type=range]')) + })(cash, M.anime) diff --git a/assets/pause.png b/src/assets/pause.png old mode 100755 new mode 100644 similarity index 100% rename from assets/pause.png rename to src/assets/pause.png diff --git a/assets/play.png b/src/assets/play.png old mode 100755 new mode 100644 similarity index 100% rename from assets/play.png rename to src/assets/play.png diff --git a/src/icons_for_shiny_tray.js b/src/icons_for_shiny_tray.js new file mode 100644 index 000000000..263afb6bb --- /dev/null +++ b/src/icons_for_shiny_tray.js @@ -0,0 +1,31 @@ +const icons = new Image() // icons for YTMD +icons.src = + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAapElEQVR42uzdb2iVZRjH8fNnSzMmgVlRYMr6o2SlYGX5xhdFWYkIUYaamYlhFGFBoFNn9UoKozcWFKiggkK9iF5NXWZgzVkRSkiFkPbGmHOabp0/z9WXoexw8ey0s7OzPed5fjd8lOlQp/td93Xd93NcSmv0lg1NGhk0IIMUwHLvhwm4A3OxGGuwCZ9gP9pwDKdwFl24hD786/ThErpwFqdwDG3Yh+3YiDVYjIcxBROQDv0zwn0saaTK09JKVujTyAKhP5/BZDyCZWjFLnyD33EBvSjCEMBqJIChiF5cwG9ox05sxlLMxeSSAuZlr0qrGGjFa1UX+DRuxeN4CztxDN1hAXdvByhclUcBxauCYSoa3K+Jgd+zTIE4jw7swDo8hluQLlcQVAy04hz6dMju3owX8BGOoNuF0Ac85wIejCVXIHK+QDjd+BbbsATTQrqEtIqBVpxDfxMW4UP8gMswF/Yi8kDVIbcqBVXwH4f/OC/je3yAhZikYqAV7TW80N+F1/Al/g4JQsHtnkNhERMMhftY/d/DOXyBtbhzsL9bFQKtqO322ZBWdjreRjuu+Bm5wsBbPaqwIPgzjis4hHW4J2R0yqor0IrCbp8qcTvW4iB6XQjyQPmgJ8EQR4bAFYM2vIrbkLpGXYHWaAc/43b7cXgGe9EdEvqCAj/sglAIKQbnsRtPYZz/d1Eh0KpV8P1OMxUb8KtCP2bF4CTWY4rvzFQItGoR/DTmYRd6Sq/n1N6P3vmBux0x9GAHHlUh0KpF8BuxGIfc6XUeRQW+9obQFRgKOIBFaFQh0Ko2+OOxAj/C3EFVAFPox7wY2CBdQSeWYbwKgdZQwp9xwV+Fk77N124fKYHjz2AMJ/CSKwQZFQEFP+z0uBFLccI/X6/QR17g+Nct/IIlaEAKGRWCZAff7wQL0AFzO4kZFPy64UcDf05wFE/4zk+FILnt/mx8HbZzKPixKgS+k/sKD2gsSG67fzM+Rh9MwU9cITD0YhsmayyIf/izSCGDVfirJPh5BT9RhcCPeGewsqQrzKoIxHPXn4V2GIoKvgqBe6nyQdynbiB+u/54bMYVGPIoKvgqBG4zMPyDFoxTNxCPXf8hdGrOlwrHgg7M0U1B/e76jdiMPpjafamwEBh60YIGdQPRDr9/1HMGvisJfkHBl0oeL3a3BYdxd+mj4ioC0Qm/b9FW4oJ2fRnhbuA8lpeOmCoC0Wr5m/B56dWeHt2VKoS9/NjwKW7QSBCt8M/EzzDkdMIvNb4pOI4ZKgLRmPefRzcMObX8UuORIAdDF57VucDYzvvvwVDUQZ/UmD8gLMLQihTSKgKjE/4UJmK/HuqRiIwEe9GElA4HR2KVn/enolMtv0RsJOjAFKSQVRGoTfjn4E8ffgVfRl14ETiN2SoCtQn/0+iGIa9dX6LUDbjnBZ5UERjZ8K9EDoEO+yTih4MB+rBcRWBkwv8mDAUd9kldFAHA8LqKQHWn/esVfqnTG4ICDO+oCAwv/FtKr/l02Cd1IfyasEVXhJWF/12FX2JWBDapE/ifmd/v/Lrmk7h1AioC5cO/QeGXuBYBnQmUD/86hV8SUgTeCC0CCQ7/yzAUNPNL7ITfDrwYWgQSGP6FyKGo8EtCikCAPiwILQIJe7a/G4aCwi8xF7jP9a74v3Zg8Ku+ZpxW+CVh/GsH/sA0lw3EM/xppHAjjuuFPWJ6AZGhAxNdRhDfB332wZBT+CWpRcBlYLfLCBDDuf99GHL6X3tFRQADRaDVZQWIUfiX6q5fBHAZKMDwnMsM4nHodz+6YLruEwEQuEycw70uO6j/Q7+fYMgr/CJlbwY60eQyhPo99PssESf+6XTSP5Fl5G4GttfXoeDgc/8rsFh/qS5fBDKZpH9CS/VfisywwmUJ9TX3z0zM3N/QYDZrllljY//bFAF1BDIS5wEzIn8eYOEacCRRc//hw2ZtbWbTpw90A9ls0j+ppbrzgHb31bCAOmj9W0Naf4s1wt+/Ll4027rVbNKka92AxgKpZhRocdlCtFv/ecihmKiHfQ4csP6Vy/EN68wZs9WrjbFAhUAqETh9mBu5UcDCXY+ORL3IxxeAfB4oFq1/HT1qNn/+wPtlszofkEpHgaO4Dikncq3/lsS1/r4AFAp8w6IAUAgGfmzPHrPmZt0WyFD5UWCjyxqi1fo/iF4EQIILQBAYq/973gaM1dNj1tpq1tSksUD+Y+/8Qquswzh+LpYbM0WktokDbWgyJDQwdi7GYJBII9qMBksM/1z0xwwk2IKkdVHihYEOxEC7aLBdFI5YMEm0rVLmqFlDJMQJwxtluMZJp5uQ+/Yg/PLl4eztvPud95z3fX/fA9/XDYYXB57P+zzf53l+v6ClwIzoRYtSIPSJvx+dnvbTADAyIPCWBTduADt2QIKfbUMqSClw1mJCMNTU/22f1N/dDADwgMBTFpjfh4aAujq2DakgXYE9FqVAKG/+1Z5rux8RAAoAgM4ITFnwpGtw6hRQXU1/gPKDwCPPNeRV0JlAEWv/41kO+AABoD46G9D+wNQU0N4OlJfTH6C09AEiR6G9gCIFf9qk/c4f8KEA4PPx9weuXgWamyH/J/0Bym824CV7CNin/wNc8w0MgNz8gYEBYNMm+gPUQobg94UpA/zP9IfoHx7tFQgAufsDs7PAsWNARQXLAgqieXWCUJOFIWi96z/MY72tAeBfFhgQ3LoF7NsHLFlCEBAA3pj7BTo2C/T2f8v5tp89AIL7A6OjwNatHCsmBLxtwbZQswCIlMpEY0z/LQBg4w+IcPo0sGED24YsA8wRYk+pGA33lB++/UMAQNC24b17wKFDwIoVLAuYBewOIQtYcNvvivNDP3YAyK8/MDEB7NoFKQfYNnQ3C/gDelswpLf/Hr79rQEQjj9w8SJQX2/KAvoD7mUBO/OXBSx8zNdvrP1DAYBd29CsHcu/6O4G1q6lP+BeFnDJ/xRh+7f/Gwz+ggDA3h+YngYOHgSWLqU/4BYEWvKSBSC7zrPvbwWAwpcF164Bra0cK3ZnLuAH+7mA7DP/jaJ5Gn9FAYD9WPG5c8CWLRwrTvy24GM1qNjNy9JPL2f+iwoA+7HiuTngxAlg1SqWBcneEei2WBLKuvCzXnSXd/lHAgD2bcPJSeDAAaCsjCBI5vViGdFzKoatzL9O7vtHDgD2/sDYGNDURH8gmecFfLw4MzD74M+fHPyJLADsx4r7+4GNG+kPJOvUoCuiUpvgN+TYztZf5AFg7w/cvw8cOcLbjJIFgVeVF7CoAz++ofkXAwDY+wO8zSh5ZmCvBgACmn9rRBmaf7EDgL0/MDICNDZy7TjeZuBfotUqpgOl/x9w7j+hANAQ0P6A+VluM8K6dRwrju9+wLsqpgNN/g2y/k80ADQI/G8zWr6cZUH8RoPPQsd1jun/C6I5pv/Brwc3AIjhh7cZJa8MeCCqVbGdU/rfwfQ/R5kgOHMm7gDI/TajdJptw/iYgR/6lgHIrp9N+s/gdwwA/mvHvM0ofmXA+f8rA3T6XyuaZfrvJACC32bU0cHbjKIlfUHPjGg9TIzT/ScAFvjY3WbU0sKx4uh2A95TMe47/NNP958AWJQ/IN8BNm+mPxA9APSpGBdlD/5K0RTTfwLA6jajri6gspJlQRGlxoInRc9oCGRL/1/n258AyMtY8e3bwP79QGkpQRCN3YDXzGiwHwC6WP8TAHn1By5fBrZt41hx8QBgVoS/ULGedf9/lBkAARDK2nFfH1Bby7Zh8dqBI3oxSNf/z4sesP4nAPLmD+i24cwMcPgwsHIly4LCSLcDa57EPC/8JACK5Q/cvAns3QuUlLBtWNgs4E1vzGsAHCcACICC+gPDw0BDA/2Bwh0VdjQbAIwzeIn1PwFQ0LVj83319AA1NfQHws8ALug2oPmlWvQ3638CoGhjxZkM0NkJLFtGfyA8H2BaVGV8AG9P8BUe/EkARKIsGB8H2tog3yv9gXDmAV42Wb+58DMl+oj1PwEQqbHiwUGgro5jxfkDgF4PLvFmAD0EAAEQubHihw+Bkye5dpxfAHztzQBMFvC7KQEY/ARA5NqGd+4A7e1cO16klBH4q3nxGwBU0QAkAGKzdtzczLVjeyPwWS8A6s0fEAAEANeOkwkAZQamvQDYzf4/ARDbteOKCpYFwecBdnoB8Dkv/yQAuHbs1Gbgp14A9LIDQABw7dipTkC36L8R4As8AZgA4NqxU52AITMJ+LRogi1AAiDWEAC4dhzsiLBxUXlKHjWiu2wBEgBcO3aqFZgRrXncAuQVYAQA146dA8CsKJ2SR6sInAEgALh27AwAjLan5PE+ZwAIAK4di9ybBXgnJY/P2AIkAJwsC65fd23tWAPgk5Q8vjIA4BAQAcC1YzNW7MStwV+m5PGdKQEIAAKAa8eJXjueV7H+bUoeP3EGgABwviz4l73zC826jOL44wr/zFCUFQtLKDFhQRfeJcQuIpUumowIjIz0KnKsi4QMJQUZeBPM7MIbhYgKC0Z0JWwkDZVCsiAwwhohoZu0LLfafLs4Hdgeeji8Pr3bu9XveZ7PA+dBX9nVPJ/3nPOc7zlWdrxihakPZNkLMOj0+gYAAABAUITs2ALgotPrR3oAAAAgKEJ2bP38e6fXKAAAAMWff5Md9/fbbcc5AOBnp9dvAAAAcBqoD1y7JrJ3r8jSpQYEyQJg3Ok1BQAAAGeOsuOtW21bcYoAmHB6/QUAAACnedmxWmoAmHb+A3oAAABnntuO+/pEVq1KMQK47fjmBwCceaYFtdo/QqOxMZHOTl8bAAAAAAAUUxwcHRU5cECkrS25CIAUAABwmm0fXrfO/z9IDgAUAQEApyABkS0C8gwIADglSYjtMyArwQAAJ/chIvFGoDEAAABw/JzHiMVbgUcAAAAo3vnrhfvnz2c3SNSKgZADAwAcv94o8d27I6PE85IDfw4AAADLRPRMTMwsE1mzJpLnZwWAIafXJ4wEAwD09RexTsyOBPvY6XWSoaAAAGWfyfPLGAp6grHgAABtvwn3CxoL/qbTq4fFIACA6T6uxMUgLzu9nmM1GABgvl+Zq8FYDgoAypjwu2OHiHOlbwiuuxx0A+vBAUDWM/5bW224z3rwYD34PWo/0QsAANjyk7XZHoAf1FqdXi1q53whEAAAAGS6eZopAJ5VW+L0cmrv8xQIAJLO869cEdm5U/R3UXqeHw3/gx6Ad9WcB0Df7Ic1moEAADLdrAHgffxwCICXiAAAADLdonoAXggB8IToP9ILAACSCPcvXLAyXcL9xgHgC4GPhwC4n8lAACAJme6ePaIyXfL85p4Ab6rdFwLgbrWv/VMgEAAAlZLpTk7OyHTXriXPX5gXgItqd3kAtPASAACQ6Zb3AqDW4r/9ndrrAAAAVEqmu20bef7iAOA1H/mHEcDTpAAAoBIy3Z4eUZku4f4CAsB0AT4VRgBLZv/yAIVAAPC/ynSPHROV6eL4i1sA/HW26O/CTkAfCXzBbAAAgEw36/f/c8GX/szlK4Jq71AHAAD/qUy3qwuZ7iIDwHT59oc+bwHwIgAAAMh0s44AnrcACOsAm9T+pA4AAJDpZpn/T6pt8D4fAiCMBL6iDgAAkOlm+e3/pX/182ad36m9TRoAAJDpZqkAfMv7egwAzxIBAIAFkekeOoRMt1rv/13+xS8EgK0DtKv9Qh0AACDTzWoE2A21e42v61UfAp8SBQCAecl0Oztp361m++9A6OPe3B3SgFdZFwYAGn7Wu3oVmW71AfCKzf/DYyOAR9WmSAMAgNhw38p0jx5Fpls9s4N9/lDbFPi4cf76qcAwk4KLBkBcpjswINLRQZ6fxvPfZ9bHYxDwIcIbPAcWCYB4nn/pksj27bTvphX+74uG/3d4DXhM7TZ7A4sBQDzPv35dpLdXZNkywv30VoB1BL4dBYC1s7wGZA+AeJ4/PS1y/LhIezuOn2b4PxgP/+NpQC9pwBxscNAAIPH23TNnRDZvpn03x+p/g2nAQwwJmYMNDRkAJJrnX74s0t1Nnp/H8I8HvU83DADzAx/RE5ANAOLtu+PjIvv3i6xcSbifqPMbX/3AtP4aADSWBnRTB0gWAPE837fv1moip06JrF/Ps15e+f8zBgDmNBYJtKp9x8DQZAEQz/OHh0W2bCHPz0/4863acjXXjPP7KOAwy0OTA0A8zx8ZEdm1S9ThyfPzHP110PtwMxDwdYBH1CYoBiYBgHief+uWyJEjIqtXk+fnW/z7Xe3hSPGvMQCY/OFDioGVBUA83Pd/Pn1aZONG8vz8i3/vza34Z099ADxJHaCyAIiH+3+zdy6hdVVRGKZWExIqsUIRrRMVB6GkEgxpLVgHpXSgwcfAikrR1mocdKDVSaHVmNCMOhGhhYCCHQmigwpCsEbUYCk1jdFRJ5JiRYrQxyAvossFdsFxGxc3d99zPOfs78I3ziDn/9dr773OnhXZsYNruvWP/qbNRwLtrv4nK/OlTQTIAkphAP7x3UuXRAYH2bKTRvQ3TY67J/8im4FPMxIshQH4x3fn5kSOHRPZsAHhpzf6e8pp/kVnAbfwanAJDMAb6506JdLTw1gv3Vd/1/rRPz4L2Mf9gAgDyKvOn5kRGRjg+G7a5/73ONG/ZVlAp/ITDcHCDMCv8y9fFjl4UKSjg3Q/7eg/rbQ70b+lWcArZAHRBhC/ZefECZGNGxnrEf1F2edE/5ZnAR3KDL0A1wDyq/NPnxbp76fOp/Nv0X9KaXOify5ZwAtkATkYgFfnX7ggsns3W3YgTP+fc6J/LiZgf+wM5wIcA2jllp3Dh0XWraPOhzD6f+vM/XPPAh6nDHANIH7LzsmTbNkBL/o/mk/0b/zBkM+5I+AYQLPp/uSkyPbtHN8F78z/Z6bFCPFHXxLaZhlA8q8HBwbQ1FhvdpYtO+BFfmNJ6Xcu/RRqAsd5L+BfBsCWHcjzvv+7rvgLLgPuVn5J/nBQYACr2rLT3U2dD42+9jOr3BWR/ufSEHw1+bFgYAANbdnZtYs6H1Z76Oclv/FXvAkYE2FDMGED8LfsHDjAlh1opvH3RUTkz70XsEVZCBsWyRpAWOfPz7NlB2Iaf3NKn1P7l8IEhs2xEjaAlbfs9PZyfBdiUv+33NS/JGVAp3IuyROCZgCLi2zZgVaf+DujtDun/kqVBTysLCt/JFUKjI+L/tiyA9HiDzr/i8pDEal/sVOBZEuBiYm/xT82xpYdqHjqH18KtCmTSUwFbIQ3Oiqycyd1PrSy6/+1Cd9N/UtaCmxWrtgBoZqbANd0IVr8gVZ+VzaVLPWPfz2ohiZAug/R4o945ad8BhC41gd2jpn1YgDuWi8T/1igoZIbgH9XYL3yA9eGARqq+6eUrogTf6XsB/Rm+wGYAMB/1v2bnbq/WgYQ1DB7sv0ATAAE8UtQ9z8baMbQXz1M4Kj1A5J/QARSF79hvbFhV/w1MAGrZz6hKQiI/x8a+Mg0EiH+yjQFb1fO0xQEoeMvyjnltoimXyWbgvcrszwrDolf8vlZuTei6VfpfsBW5RomAImK/4rS59T9SZjAk3ZzkPEgpDDuu8GSMuCKPyETeNlqIkwAai5+i/57XfEnaAJvckYAEpn1v+6KP2ETOIIJQM3FfygB8UddHBrBBKCm4h9C/I2ZwFFMAGpS85v437FvHPE3mAnQGISaiH8I8TdnAkcwAaiM8Ffu9h9C/HGNwTcUsbMC3B2ACon/NWr+1pjA/kwWsIwJQEnFv5y53fci4m+tCTyhXLeSABOAkl7suao8hvjzMYEtmTXkS0wIoCRjPrvSe1HpQ/z5msB9ynTWBMgGoFDhryz+75V7EH8xJrBe+dRSL5qDULD4wzHfx0oX3f7iRoRrbjBqzReag1CQ+MOJ1Ig95IH4i31azLKB55Vrlg1QEkBBKf9V5ZlMZroG8ef4E78keED5kZIAck75TfzTSk/2G0T8/78JdCkfUhJATqu67Ht6X7kV8ZezL2CPi1ynJIBWpPzBfH8v9X41+gKblO/MBMgGoMlGn4l/Uumm3q9WSdCuDCuLZAPQZNRfUN5W2kj5q2UCN2VStG3K+WxvACOAlYQf9I6mlK3Z7wnxVzcb6FRGlHkmBSD+oZ45ZUjpIOrXLxt4UPnG/umUBckL/88gGHyl9BL1650N3KwMKr9ZWYARJCt8S/d/VfYra4n66WQDdyrHlUX6A8nW+QvKe8odRP10jCAc5fzV3v2DNhHGYRy/SzQQ6ewfioIWRcVN3FpdFUHFYieLFQWHYt20kwjVXdFRxyjoUNBBnIy1oKDVIKhU0K46KJwFE3P//A6ZflxeQmhCEp8ffKZSyF3uee59y6U5gGdZdwZ9fXlfSwxb8E+xHx583fX/vxKwD3Mcw5KKYICCn73Fe4Oj9iEyhV/bAg8FTOEzUiTaGvRX8B3v20dMYr2W+yoBy94JNuACls0FFSJJoVVBT0gyhCb4n3AeRXjwFXyNqwjypgjO4QNSJIhVBD0b/BgJUlRwFkW7z1f4Na0WgddQwAQWEGdddCqELoc+u4xjlDGOgoKvWesi8HEID7Cq7UHPLPNXUcJB+Aq+prNbA2AE1/AFqb04tSpYw8Bnl2yKZVzFdngKvqYbRWD/elzECTxCoDLoeOgDPMRxFO37ouBrOlsE7jvNNszgBf7aMmhIVAjOcxBmhL6G57iIrVkrMwVf090icF+EPvZhFouoITUPp9QRI4HTgAXdilFHZM5RFQu4jL3m/OaQh6fga3pxVWDLYA8u4Ql+Of77TISkFX0UdiuygW9I8ROPMYPd9jzqbq/pjyJw/zFqE8ZxC0uoOj6fDrtKaD1sXQm2+7XZ47DH+QdvcRMnsbHZ6kp3e80glIG9kHPYhUncwWsEjmBFqCNE3JC0y4S8XTEihKgjchRVgFe4jdPYiZw9Vwq9ZvDLAE1+NowjmEUJ7xEgRmqCa4MWme2EoyRae9DGBNz5uQizggnwDiVcwWEMNwl2XqHXDOSk7RWCDccWjGEKN3Afi1jBb9Ra/qZkG160+bs1BFjBS5RwHWcwis3mmJoGXqHXqAxgPqyyziyPrRyGMIIxTGAac7iHeZRRwTf8QIAqQiRGiCoCfMdXVFDGPO5iDtM4hVHswJDrdZpj8eEp9L0z/wDbF4gFMpq8/gAAAABJRU5ErkJggg==' + +const pause = new Image() // Pause icon for dark mode +pause.src = + 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNNiAxOWg0VjVINnYxNHptOC0xNHYxNGg0VjVoLTR6IiBmaWxsPSJ3aGl0ZSIgLz48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PC9zdmc+' + +const play = new Image() // Play icon for dark mode +play.src = + 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNOCA1djE0bDExLTd6IiBmaWxsPSJ3aGl0ZSIvPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48L3N2Zz4=' + +const pause_w = new Image() // Pause icon for bright mode +pause_w.src = + 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNNiAxOWg0VjVINnYxNHptOC0xNHYxNGg0VjVoLTR6IiBmaWxsPSJibGFjayIgLz48cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PC9zdmc+' +const play_w = new Image() // Play icon for bright mode +play_w.src = + 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNOCA1djE0bDExLTd6IiBmaWxsPSJibGFjayIvPjxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48L3N2Zz4=' + +const dark = { + pause: pause, + play: play, + icons: icons, +} +const bright = { + pause: pause_w, + play: play_w, + icons: icons, +} +exports.dark = dark +exports.bright = bright diff --git a/locales/de.json b/src/locales/de.json similarity index 100% rename from locales/de.json rename to src/locales/de.json diff --git a/locales/en.json b/src/locales/en.json similarity index 100% rename from locales/en.json rename to src/locales/en.json diff --git a/locales/es.json b/src/locales/es.json similarity index 100% rename from locales/es.json rename to src/locales/es.json diff --git a/locales/fr.json b/src/locales/fr.json similarity index 100% rename from locales/fr.json rename to src/locales/fr.json diff --git a/locales/id.json b/src/locales/id.json similarity index 100% rename from locales/id.json rename to src/locales/id.json diff --git a/locales/it.json b/src/locales/it.json similarity index 100% rename from locales/it.json rename to src/locales/it.json diff --git a/locales/ja.json b/src/locales/ja.json similarity index 100% rename from locales/ja.json rename to src/locales/ja.json diff --git a/locales/ko.json b/src/locales/ko.json similarity index 100% rename from locales/ko.json rename to src/locales/ko.json diff --git a/locales/nl.json b/src/locales/nl.json similarity index 100% rename from locales/nl.json rename to src/locales/nl.json diff --git a/locales/pt.json b/src/locales/pt.json similarity index 100% rename from locales/pt.json rename to src/locales/pt.json diff --git a/locales/ru.json b/src/locales/ru.json similarity index 100% rename from locales/ru.json rename to src/locales/ru.json diff --git a/locales/scaffold.json b/src/locales/scaffold.json similarity index 100% rename from locales/scaffold.json rename to src/locales/scaffold.json diff --git a/locales/tr.json b/src/locales/tr.json similarity index 100% rename from locales/tr.json rename to src/locales/tr.json diff --git a/locales/uk.json b/src/locales/uk.json similarity index 100% rename from locales/uk.json rename to src/locales/uk.json diff --git a/locales/zh.json b/src/locales/zh.json similarity index 100% rename from locales/zh.json rename to src/locales/zh.json diff --git a/pages/editor/editor.css b/src/pages/editor/editor.css similarity index 100% rename from pages/editor/editor.css rename to src/pages/editor/editor.css diff --git a/src/pages/editor/editor.html b/src/pages/editor/editor.html new file mode 100644 index 000000000..121ba4a18 --- /dev/null +++ b/src/pages/editor/editor.html @@ -0,0 +1,37 @@ + + + + + + + + + +
    
    +        save
    +    
    +
    +    
    +
    +    
    +
    diff --git a/pages/editor/editor.js b/src/pages/editor/editor.js
    similarity index 88%
    rename from pages/editor/editor.js
    rename to src/pages/editor/editor.js
    index 084db6977..1c30b9078 100644
    --- a/pages/editor/editor.js
    +++ b/src/pages/editor/editor.js
    @@ -2,8 +2,8 @@ const { ipcRenderer } = require('electron')
     const app = require('electron').remote.app
     const path = require('electron').remote.require('path')
     
    -const __ = require('../../providers/translateProvider')
    -const fileSystem = require('../../utils/fileSystem')
    +const __ = require('../../src/providers/translateProvider')
    +const fileSystem = require('../../src/utils/fileSystem')
     
     const customCssDir = path.join(
         fileSystem.getAppDocumentsPath(app),
    diff --git a/pages/home/home.css b/src/pages/home/home.css
    similarity index 100%
    rename from pages/home/home.css
    rename to src/pages/home/home.css
    diff --git a/src/pages/home/home.html b/src/pages/home/home.html
    new file mode 100644
    index 000000000..fac532ce6
    --- /dev/null
    +++ b/src/pages/home/home.html
    @@ -0,0 +1,49 @@
    +
    +
    +    
    +        
    +        YouTube Music
    +        
    +        
    +        
    +        
    +    
    +
    +    
    +        
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + signal_wifi_off +
    +
    + + + + diff --git a/pages/home/home.js b/src/pages/home/home.js similarity index 100% rename from pages/home/home.js rename to src/pages/home/home.js diff --git a/pages/lyrics/lyrics.css b/src/pages/lyrics/lyrics.css similarity index 100% rename from pages/lyrics/lyrics.css rename to src/pages/lyrics/lyrics.css diff --git a/pages/lyrics/lyrics.html b/src/pages/lyrics/lyrics.html similarity index 70% rename from pages/lyrics/lyrics.html rename to src/pages/lyrics/lyrics.html index d2a9a6e35..f7871fbd7 100644 --- a/pages/lyrics/lyrics.html +++ b/src/pages/lyrics/lyrics.html @@ -3,16 +3,19 @@ Lyrics - + @@ -24,7 +27,7 @@
    - + diff --git a/pages/lyrics/lyrics.js b/src/pages/lyrics/lyrics.js similarity index 100% rename from pages/lyrics/lyrics.js rename to src/pages/lyrics/lyrics.js diff --git a/pages/miniplayer/miniplayer.css b/src/pages/miniplayer/miniplayer.css similarity index 100% rename from pages/miniplayer/miniplayer.css rename to src/pages/miniplayer/miniplayer.css diff --git a/src/pages/miniplayer/miniplayer.html b/src/pages/miniplayer/miniplayer.html new file mode 100644 index 000000000..d7d696cb5 --- /dev/null +++ b/src/pages/miniplayer/miniplayer.html @@ -0,0 +1,79 @@ + + + + YouTube Music + + + + + + + +
    +
    +
    + drag_indicator +
    +
    + layers +
    +
    + launch +
    +
    + +
    + Title +
    + +
    + Author +
    + +
    + 0:00 / 0:00 +
    + +
    +
    + thumb_down +
    +
    + skip_previous +
    +
    + play_arrow +
    +
    + skip_next +
    +
    + thumb_up +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + + + + diff --git a/pages/miniplayer/miniplayer.js b/src/pages/miniplayer/miniplayer.js similarity index 100% rename from pages/miniplayer/miniplayer.js rename to src/pages/miniplayer/miniplayer.js diff --git a/src/pages/settings/last-fm-login.html b/src/pages/settings/last-fm-login.html new file mode 100644 index 000000000..ca2220c28 --- /dev/null +++ b/src/pages/settings/last-fm-login.html @@ -0,0 +1,53 @@ + + + + + + + + +
    +
    +
    + + +
    +
    + + +
    +
    +
    + +
    +
    + + + + + + + + diff --git a/pages/settings/last-fm-login.js b/src/pages/settings/last-fm-login.js similarity index 100% rename from pages/settings/last-fm-login.js rename to src/pages/settings/last-fm-login.js diff --git a/src/pages/settings/mac_shiny.html b/src/pages/settings/mac_shiny.html new file mode 100644 index 000000000..859f33ec6 --- /dev/null +++ b/src/pages/settings/mac_shiny.html @@ -0,0 +1,253 @@ + + + + + Settings + + + + + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + YTMDesktop App +
    +
    + Play / Pause +
    + Previous Track +
    + Next Track +
    + Lyrics +
    + Settings +
    + Exit +
    +
    +
    +
    +
    + + + + diff --git a/pages/settings/mac_shiny.js b/src/pages/settings/mac_shiny.js similarity index 100% rename from pages/settings/mac_shiny.js rename to src/pages/settings/mac_shiny.js diff --git a/pages/settings/settings.css b/src/pages/settings/settings.css similarity index 100% rename from pages/settings/settings.css rename to src/pages/settings/settings.css diff --git a/pages/settings/settings.html b/src/pages/settings/settings.html similarity index 99% rename from pages/settings/settings.html rename to src/pages/settings/settings.html index 35e947cd8..191c2243a 100644 --- a/pages/settings/settings.html +++ b/src/pages/settings/settings.html @@ -6,14 +6,17 @@ - + @@ -784,7 +787,7 @@ - + diff --git a/pages/settings/settings.js b/src/pages/settings/settings.js similarity index 100% rename from pages/settings/settings.js rename to src/pages/settings/settings.js diff --git a/pages/shared/window-buttons/window-buttons.css b/src/pages/shared/window-buttons/window-buttons.css similarity index 100% rename from pages/shared/window-buttons/window-buttons.css rename to src/pages/shared/window-buttons/window-buttons.css diff --git a/pages/shared/window-buttons/window-buttons.html b/src/pages/shared/window-buttons/window-buttons.html similarity index 90% rename from pages/shared/window-buttons/window-buttons.html rename to src/pages/shared/window-buttons/window-buttons.html index c1025fbc3..f3c443b78 100644 --- a/pages/shared/window-buttons/window-buttons.html +++ b/src/pages/shared/window-buttons/window-buttons.html @@ -3,21 +3,24 @@ YouTube Music - + - + @@ -98,7 +101,7 @@ > - + diff --git a/pages/shared/window-buttons/window-buttons.js b/src/pages/shared/window-buttons/window-buttons.js similarity index 100% rename from pages/shared/window-buttons/window-buttons.js rename to src/pages/shared/window-buttons/window-buttons.js diff --git a/providers/analyticsProvider.js b/src/providers/analyticsProvider.js similarity index 100% rename from providers/analyticsProvider.js rename to src/providers/analyticsProvider.js diff --git a/providers/assetsProvider.js b/src/providers/assetsProvider.js similarity index 76% rename from providers/assetsProvider.js rename to src/providers/assetsProvider.js index 2ad306fe4..02af17e7b 100644 --- a/providers/assetsProvider.js +++ b/src/providers/assetsProvider.js @@ -8,11 +8,11 @@ const systemInfo = require('../utils/systemInfo') * @param {*} asset */ function getLocal(asset) { - return path.join('assets', `${asset}`) + return path.join(app.getAppPath(), 'src/assets', `${asset}`) } function getIcon(assetPath) { - let localAsset = path.join('assets', `${assetPath}`) + let localAsset = path.join(app.getAppPath(), 'src/assets', `${assetPath}`) if (systemInfo.isWindows()) { return `${localAsset}.ico` diff --git a/providers/companionServer.js b/src/providers/companionServer.js similarity index 100% rename from providers/companionServer.js rename to src/providers/companionServer.js diff --git a/src/providers/discordRpcProvider.js b/src/providers/discordRpcProvider.js new file mode 100644 index 000000000..03e7ae2ec --- /dev/null +++ b/src/providers/discordRpcProvider.js @@ -0,0 +1,72 @@ +const clientId = '495666957501071390' +const RPC = require('discord-rpc') +const startTimestamp = new Date() +var client + +var _isStarted + +function isStarted() { + return _isStarted +} + +function _setIsStarted(value) { + _isStarted = value +} + +function start() { + client = new RPC.Client({ transport: 'ipc' }) + + client.on('ready', () => { + _setIsStarted(true) + }) + + client.login({ clientId }).catch(() => { + if (!isStarted()) { + setTimeout(function() { + // console.log('trying to connect') + start() + }, 10000) + } + }) + + client.on('disconnected', () => { + _setIsStarted(false) + start() + }) +} + +function stop() { + client.destroy() + _setIsStarted(false) +} + +function setActivity(info) { + if (isStarted() && info.track.title) { + var now = Date.now() + client + .setActivity({ + details: info.track.title, + state: info.track.author, + startTimestamp: now + info.player.seekbarCurrentPosition * 1000, + endTimestamp: + now + + (info.track.duration - info.player.seekbarCurrentPosition) * + 1000, + largeImageKey: 'ytm_logo_512', + smallImageKey: info.player.isPaused + ? 'discordrpc-pause' + : 'discordrpc-play', + instance: false, + }) + .catch(err => { + console.log(err) + }) + } +} + +module.exports = { + isStarted: isStarted, + start: start, + stop: stop, + setActivity: setActivity, +} diff --git a/providers/infoPlayerProvider.js b/src/providers/infoPlayerProvider.js similarity index 100% rename from providers/infoPlayerProvider.js rename to src/providers/infoPlayerProvider.js diff --git a/providers/mediaProvider.js b/src/providers/mediaProvider.js similarity index 100% rename from providers/mediaProvider.js rename to src/providers/mediaProvider.js diff --git a/providers/mprisProvider.js b/src/providers/mprisProvider.js similarity index 100% rename from providers/mprisProvider.js rename to src/providers/mprisProvider.js diff --git a/providers/rainmeterNowPlaying.js b/src/providers/rainmeterNowPlaying.js similarity index 100% rename from providers/rainmeterNowPlaying.js rename to src/providers/rainmeterNowPlaying.js diff --git a/providers/scrobblerProvider.js b/src/providers/scrobblerProvider.js similarity index 100% rename from providers/scrobblerProvider.js rename to src/providers/scrobblerProvider.js diff --git a/providers/settingsProvider.js b/src/providers/settingsProvider.js similarity index 56% rename from providers/settingsProvider.js rename to src/providers/settingsProvider.js index 97a9f5320..b890f91b9 100644 --- a/providers/settingsProvider.js +++ b/src/providers/settingsProvider.js @@ -1,12 +1,12 @@ -const electronStore = require("electron-store"); -const store = new electronStore(); +const electronStore = require('electron-store') +const store = new electronStore() /** * Get setting value * @param {string} settingName */ function get(settingName) { - return store.get(settingName); + return store.get(settingName) } /** @@ -15,7 +15,7 @@ function get(settingName) { * @param {*} value */ function set(settingName, value) { - store.set(settingName, value); + store.set(settingName, value) } /** @@ -24,13 +24,13 @@ function set(settingName, value) { * @param {*} initialValue */ function setInitialValue(settingName, initialValue) { - if (get(settingName) === undefined) { - set(settingName, initialValue); - } + if (get(settingName) === undefined) { + set(settingName, initialValue) + } } module.exports = { - get: get, - set: set, - setInitialValue: setInitialValue -}; + get: get, + set: set, + setInitialValue: setInitialValue, +} diff --git a/providers/templateProvider.js b/src/providers/templateProvider.js similarity index 100% rename from providers/templateProvider.js rename to src/providers/templateProvider.js diff --git a/src/providers/translateProvider.js b/src/providers/translateProvider.js new file mode 100644 index 000000000..414ef22dd --- /dev/null +++ b/src/providers/translateProvider.js @@ -0,0 +1,59 @@ +const i18n = require('i18n') +const settingsProvider = require('./settingsProvider') + +const defaultLocale = settingsProvider.get('settings-app-language', 'en') + +i18n.configure({ + locales: ['en', 'pt'], + directory: __dirname + '/../locales', + defaultLocale: defaultLocale, +}) + +function setLocale(locale) { + i18n.setLocale(locale) +} + +function trans(id, params) { + params = typeof params !== 'undefined' ? params : {} + try { + let tmp = i18n.__(id, params) + if (tmp === id) { + return i18n.__({ phrase: id, locale: 'en' }, params) // fallback to english + } else { + return tmp + } + } catch (_) { + return i18n.__({ phrase: id, locale: 'en' }, params) // fallback to english + } +} + +function translateHelper() { + const prefix = 'i18n_' + var items = [] + var i18n_items = document.getElementsByTagName('*') + for (var i = 0; i < i18n_items.length; i++) { + //omitting undefined null check for brevity + if ( + i18n_items[i].getAttribute('i18n') && + i18n_items[i].getAttribute('i18n').lastIndexOf(prefix, 0) === 0 + ) { + items.push([ + i18n_items[i].getAttribute('i18n').replace('i18n_', ''), + i18n_items[i], + ]) + } + } + return items +} + +function loadi18n() { + translateHelper().forEach(([i18n, element]) => { + element.innerHTML = trans(i18n) + }) +} + +module.exports = { + setLocale: setLocale, + trans: trans, + loadi18n: loadi18n, +} diff --git a/providers/trayProvider.js b/src/providers/trayProvider.js similarity index 90% rename from providers/trayProvider.js rename to src/providers/trayProvider.js index 93e8e0eff..c747046d3 100644 --- a/providers/trayProvider.js +++ b/src/providers/trayProvider.js @@ -6,7 +6,6 @@ const settingsProvider = require('./settingsProvider') const __ = require('./translateProvider') const Notification = require('electron-native-notification') const { doBehavior } = require('../utils/window') -// const base64Img = require("base64-img"); const systemInfo = require('../utils/systemInfo') const imageToBase64 = require('image-to-base64') @@ -39,8 +38,7 @@ let init_tray = () => { let popUpMenu = null function createTray(mainWindow, icon) { - saved_icon = path.join(__dirname, `../${icon}`) - let nativeImageIcon = nativeImage.createFromPath(saved_icon) + let nativeImageIcon = nativeImage.createFromPath(icon) tray = new Tray(nativeImageIcon) saved_mainWindow = mainWindow @@ -64,21 +62,6 @@ function updateTrayIcon(icon) { tray.setImage(nativeImageIcon) } -/*function balloon(title, content, cover, icon) { - if (title && content && cover) { - - base64Img.requestBase64(cover, function (err, res, body) { - let image = nativeImage.createFromPath(icon) - - if (!err && body !== undefined) { - image = nativeImage.createFromDataURL(body); - } - - _doNotification(title, content, image) - }); - } -}*/ - function balloon(title, content, cover, icon) { if (title && content && cover) { imageToBase64(cover) diff --git a/providers/updateProvider.js b/src/providers/updateProvider.js similarity index 100% rename from providers/updateProvider.js rename to src/providers/updateProvider.js diff --git a/utils/calcYTViewSize.js b/src/utils/calcYTViewSize.js similarity index 100% rename from utils/calcYTViewSize.js rename to src/utils/calcYTViewSize.js diff --git a/utils/defaultSettings.js b/src/utils/defaultSettings.js similarity index 100% rename from utils/defaultSettings.js rename to src/utils/defaultSettings.js diff --git a/utils/fileSystem.js b/src/utils/fileSystem.js similarity index 100% rename from utils/fileSystem.js rename to src/utils/fileSystem.js diff --git a/utils/injectControls.js b/src/utils/injectControls.js similarity index 100% rename from utils/injectControls.js rename to src/utils/injectControls.js diff --git a/src/utils/systemInfo.js b/src/utils/systemInfo.js new file mode 100644 index 000000000..50f2faa20 --- /dev/null +++ b/src/utils/systemInfo.js @@ -0,0 +1,26 @@ +/** + * system-info.js + * Utils for System info + */ + +function isWindows() { + return process.platform === 'win32' +} + +function isLinux() { + return ( + process.platform === 'freebsd' || + process.platform === 'linux' || + process.platform === 'openbsd' + ) +} + +function isMac() { + return process.platform === 'darwin' +} + +module.exports = { + isWindows: isWindows, + isLinux: isLinux, + isMac: isMac, +} diff --git a/utils/window.js b/src/utils/window.js similarity index 100% rename from utils/window.js rename to src/utils/window.js diff --git a/utils/systemInfo.js b/utils/systemInfo.js deleted file mode 100644 index 727e49522..000000000 --- a/utils/systemInfo.js +++ /dev/null @@ -1,26 +0,0 @@ -/** - * system-info.js - * Utils for System info - */ - -function isWindows() { - return process.platform === "win32"; -} - -function isLinux() { - return ( - process.platform === "freebsd" || - process.platform === "linux" || - process.platform === "openbsd" - ); -} - -function isMac() { - return process.platform === "darwin"; -} - -module.exports = { - isWindows: isWindows, - isLinux: isLinux, - isMac: isMac -} \ No newline at end of file