Found 170 repositories(showing 30)
deel-ai
A runway dataset and a generator of synthetic aerial images with automatic labeling.
Ronald106
<!doctype html> <html lang='en'> <head> <!-- Meta Properties --> <meta charset='UTF-8'> <title>surviv.io - 2d battle royale game</title> <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover, user-scalable=no"> <link rel="manifest" href="manifest.json"> <meta name="mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-title" content="surviv.io"> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> <meta name="application-name" content="surviv.io"> <meta name="description" content="Like games such as Player Unknown's Battlegrounds (PUBG), Fortnite or Apex Legends? Play this free 2d battle royale io game in your browser!"> <meta property="og:description" content="Like games such as Player Unknown's Battlegrounds (PUBG), Fortnite or Apex Legends? Play this free 2d battle royale io game in your browser!"> <meta name="keywords" content="survivio, surviv, 2d battle royale, io, battle royale browser game, 2d battlegrounds, battlegrounds, battleroyale, battle, royale, browser game, br, survival, game, web game, multiplayer"> <meta property="og:type" content="website"> <meta property="og:title" content="surviv.io"> <meta property="og:url" content="/~/https://surviv.io/"> <meta property="og:site_name" content="surviv.io"> <meta content="/~/https://surviv.io/img/title.png" property="og:image"> <link rel="canonical" href="/~/https://surviv.io" /> <link rel="apple-touch-icon-precomposed" href="img/icon_app.png"> <link rel="icon" href="favicon.ico" type="image/x-icon"> <!-- Global site tag (gtag.js) - Google Analytics --> <script> window.adsBlocked = false; window.adBlockDetected = function() { window.adsBlocked = true; } window.alert = function() { } /* Cookie consent */ var cfg = {}; var consented = true; var webview = false; try { cfg = JSON.parse(localStorage.getItem('surviv_config')) || {}; if (cfg.cookiesConsented != undefined) { consented = cfg.cookiesConsented; } webview = localStorage.getItem('surviv_webview'); } catch (e) { } window.cookiesConsented = consented; if (window.cookiesConsented) { document.write("<script async src='/~/https://www.googletagmanager.com/gtag/js?id=UA-108811301-1' onerror='adBlockDetected();'>\x3C/script>"); window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-108811301-1', { 'anonymize_ip': true }); } window.webviewDetected = new RegExp("[?&]webview=true","gi").test(window.location.href) || webview; </script> <!-- AIP --> <script> document.write("<script async src='/~/https://api.adinplay.com/libs/aiptag/pub/SRV/surviv.io/tag.min.js'>\x3C/script>"); var aiptag = aiptag || {}; aiptag.gdprConsent = window.cookiesConsented; aiptag.consented = window.cookiesConsented; aiptag.cmd = aiptag.cmd || []; aiptag.cmd.display = aiptag.cmd.display || []; </script> <!-- Fonts --> <link href="/~/https://fonts.googleapis.com/css?family=Roboto+Condensed:400,700" rel="stylesheet"> <link href="css/app.dacc77a5.css" rel="stylesheet"><meta name="ROBOTS" content="NOINDEX, NOFOLLOW"/> </head> <body> <div id='preroll-wrapper'> <div id="preroll"></div> </div> <div id="fb-root"></div> <canvas tabindex='1' id='cvs'></canvas> <div id='game-area-wrapper' style='display: none' oncontextmenu='return false;'> <div id='game-touch-area'></div> <!-- Class Select --> <div id='ui-role-menu-wrapper'> <div id='ui-role-menu'> <div id='ui-role-header'></div> <div id='ui-role-body'></div> <div id='ui-role-footer'> <div id='ui-role-footer-desc' data-l10n='game-select-class'>SELECT A CLASS</div> <div id='ui-role-footer-enter'>ENTER GAME (20)</div> </div> </div> </div> <div id='ui-game' class='click-through'> <div id='tablet-console'></div> <div id='ui-center'> <div id='ui-game-menu'> <div id='btn-game-tabs' class='btns-game-double-row'> <div class='btn-game-container'> <a id='btn-game-settings' class='btn-game-tab-select btn-game-menu btn-game-menu-selected btn-darken' data-tab='settings'></a> <div class='btn-double-row game-menu-icon-static settings-icon'></div> </div> <div class='btn-game-container'> <a id='btn-game-keybinds' class='btn-game-tab-select btn-game-menu btn-darken' data-tab='keybinds'></a> <div class='btn-double-row game-menu-icon-static keybind-icon'></div> </div> </div> <div id='ui-game-tab-settings' class='ui-game-tab'> <a id='btn-game-fullscreen' class='btn-fullscreen-toggle btn-game-menu btn-darken' data-l10n='game-full-screen'>Full Screen</a> <div id='btn-touch-styles' class='btns-game-double-row'> <div class='btn-game-container'> <a id='btn-game-move-style' class='btn-double-row btn-game-touch-style btn-darken'></a> <div class='btn-double-row game-menu-icon-toggle movement-icon'></div> </div> <div class='btn-game-container'> <a id='btn-game-aim-style' class='btn-double-row btn-game-touch-style btn-darken'></a> <div class='btn-double-row game-menu-icon-toggle target-icon'></div> </div> </div> <a id='btn-game-aim-line' class='btn-game-menu btn-darken locked-on-icon' data-l10n='game-aim-line'>Aim Line</a> <a id='btn-game-sound' class='btn-sound-toggle btn-game-menu btn-darken audio-on-icon' data-l10n='game-sound'>Sound</a> <div class="slider-container ui-slider-container"> <p class='slider-text' data-l10n='index-master-volume'>Master Volume</p> <input type="range" min="0" max="100" value="100" class="slider sl-master-volume"> </div> <div class="slider-container ui-slider-container"> <p class='slider-text' data-l10n='index-sfx-volume'>SFX Volume</p> <input type="range" min="0" max="100" value="100" class="slider sl-sound-volume"> </div> <div class="slider-container ui-slider-container"> <p class='slider-text' data-l10n='index-music-volume'>Music Volume</p> <input type="range" min="0" max="100" value="100" class="slider sl-music-volume"> </div> <a id='btn-game-quit' class='btn-quit btn-game-menu btn-darken' data-l10n='game-quit-game'>Quit Game</a> </div> <div id='ui-game-tab-keybinds' class='ui-game-tab'> <div id='ui-keybind-list' class='js-keybind-list'></div> <a class='js-btn-keybind-restore btn-keybind-restore btn-game-menu btn-darken' data-l10n='game-restore-defaults'>Restore Defaults</a> </div> <a id='btn-game-resume' class='btn-game-menu btn-darken' data-l10n='game-return-to-game'>Return to Game</a> </div> </div> <div id='big-map' class='js-ui-map-show'> <div id='big-map-collision'></div> <div id='big-map-close'></div> </div> <div id='ui-emotes' class='ui-emote-wheel'> <div id='ui-emote-middle' class='ui-emote-middle ui-emote-circle ui-emote-parent' data-key='middle' data-id='0'> <div class='ui-emote ui-emote-bg-circle'></div> <div class='ui-emote ui-emote-hl'></div> <div class='ui-emote-image ui-emote-image-large'></div> </div> <div id='ui-emote-top' class='ui-emote-top ui-emote-quarter ui-emote-parent' data-key='top' data-id='1'> <div class='ui-emote ui-emote-bg-quarter'></div> <div class='ui-emote ui-emote-hl'></div> <div class='ui-emote-image ui-emote-image-large'></div> </div> <div id='ui-emote-right' class='ui-emote-right ui-emote-quarter ui-emote-parent' data-key='right' data-id='2'> <div class='ui-emote ui-emote-bg-quarter'></div> <div class='ui-emote ui-emote-hl'></div> <div class='ui-emote-image ui-emote-image-large'></div> </div> <div id='ui-emote-bottom' class='ui-emote-bottom ui-emote-quarter ui-emote-parent' data-key='bottom' data-id='3'> <div class='ui-emote ui-emote-bg-quarter'></div> <div class='ui-emote ui-emote-hl'></div> <div class='ui-emote-image ui-emote-image-large'></div> </div> <div id='ui-emote-left' class='ui-emote-left ui-emote-quarter ui-emote-parent' data-key='left' data-id='4'> <div class='ui-emote ui-emote-bg-quarter'></div> <div class='ui-emote ui-emote-hl'></div> <div class='ui-emote-image ui-emote-image-large'></div> </div> </div> <div id='ui-team-pings' class='ui-emote-wheel'> <div id='ui-team-ping-middle' class='ui-emote-middle ui-emote-circle ui-emote-parent' data-id='0'> <div class='ui-emote ui-emote-bg-circle'></div> <div class='ui-emote ui-emote-hl'></div> <div class='ui-emote-image ui-emote-image-large'></div> </div> <div id='ui-team-ping-top' class='ui-emote-top ui-emote-quarter ui-emote-parent' data-id='1'> <div class='ui-emote ui-emote-bg-quarter'></div> <div class='ui-emote ui-emote-hl'></div> <div class='ui-emote-image ui-emote-image-large'></div> </div> <div id='ui-team-ping-right' class='ui-emote-right ui-emote-quarter ui-emote-parent' data-id='2'> <div class='ui-emote ui-emote-bg-quarter'></div> <div class='ui-emote ui-emote-hl'></div> <div class='ui-emote-image ui-emote-image-large'></div> </div> <div id='ui-team-ping-bottom' class='ui-emote-bottom ui-emote-quarter ui-emote-parent' data-id='3'> <div class='ui-emote ui-emote-bg-quarter'></div> <div class='ui-emote ui-emote-hl'></div> <div class='ui-emote-image ui-emote-image-large'></div> </div> <div id='ui-team-ping-bottom-left' class='ui-emote-bottom-left ui-emote-eighth ui-emote-parent' data-id='4'> <div class='ui-emote ui-emote-bg-eighth'></div> <div class='ui-emote ui-emote-hl'></div> <div class='ui-emote-image ui-emote-image-small'></div> </div> <div id='ui-team-ping-top-left' class='ui-emote-top-left ui-emote-eighth ui-emote-parent' data-id='5'> <div class='ui-emote ui-emote-bg-eighth'></div> <div class='ui-emote ui-emote-hl'></div> <div class='ui-emote-image ui-emote-image-small'></div> </div> </div> <div id='ui-team-indicators' class='js-ui-map-hidden js-desktop-ui-hud-show'> <div class='ui-team-indicator ui-indicator-main' data-id='0'> <div class='ui-team-indicator-pos ui-background-yellow'></div> </div> <div class='ui-team-indicator ui-indicator-main' data-id='1'> <div class='ui-team-indicator-pos ui-background-purple'></div> </div> <div class='ui-team-indicator ui-indicator-main' data-id='2'> <div class='ui-team-indicator-pos ui-background-cyan'></div> </div> <div class='ui-team-indicator ui-indicator-main' data-id='3'> <div class='ui-team-indicator-pos ui-background-orange'></div> </div> <div class='ui-team-indicator ui-indicator-main' data-id='4'> <div class='ui-team-indicator-pos ui-background-yellow'></div> </div> <div class='ui-team-indicator ui-indicator-ping' data-id='0'> <div class='ui-team-indicator-pos ui-team-indicator-image'></div> </div> <div class='ui-indicator-ping-border' data-id='0'></div> <div class='ui-team-indicator ui-indicator-ping' data-id='1'> <div class='ui-team-indicator-pos ui-team-indicator-image'></div> </div> <div class='ui-indicator-ping-border' data-id='1'></div> <div class='ui-team-indicator ui-indicator-ping' data-id='2'> <div class='ui-team-indicator-pos ui-team-indicator-image'></div> </div> <div class='ui-indicator-ping-border' data-id='2'></div> <div class='ui-team-indicator ui-indicator-ping' data-id='3'> <div class='ui-team-indicator-pos ui-team-indicator-image'></div> </div> <div class='ui-indicator-ping-border' data-id='3'></div> <div class='ui-team-indicator ui-indicator-ping' data-id='4'> <div class='ui-team-indicator-pos ui-team-indicator-image'></div> </div> <div class='ui-indicator-ping-border' data-id='4'></div> </div> <div id='ui-right-center' class='ui-right-center-desktop js-ui-map-hidden'> <div id='ui-medical-interactive'> <div id='ui-loot-bandage' class='ui-loot ui-outline-hover ui-scale-hover ui-medical tooltip'> <div class='tooltip-text'> <div class='tooltip-title' data-l10n='game-bandage'>Bandage</div> <div class='tooltip-description'><span data-l10n='game-bandage-tooltip'>Left-click to restore 15 health.</span></div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> </div> <div id='ui-loot-healthkit' class='ui-loot ui-outline-hover ui-scale-hover ui-medical tooltip'> <div class='tooltip-text'> <div class='tooltip-title' data-l10n='game-healthkit'>Med Kit</div> <div class='tooltip-description'><span data-l10n='game-healthkit-tooltip'>Left-click to restore 100 health.</div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> </div> <div id='ui-loot-soda' class='ui-loot ui-outline-hover ui-scale-hover ui-medical tooltip'> <div class='tooltip-text'> <div class='tooltip-title' data-l10n='game-soda'>Soda</div> <div class='tooltip-description'><span data-l10n='game-soda-tooltip'>Left-click to boost adrenaline by 25.</span><br><span data-l10n='game-adrenaline-tooltip'>Adrenaline restores health over time.</span></div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> </div> <div id='ui-loot-chocolateBox' class='ui-loot ui-outline-hover ui-scale-hover ui-medical tooltip'> <div class='tooltip-text'> <div class='tooltip-title' data-l10n='game-chocolateBox'>ChocolateBox</div> <div class='tooltip-description'><span data-l10n='game-soda-tooltip'>Left-click to boost adrenaline by 25.</span><br><span data-l10n='game-adrenaline-tooltip'>Adrenaline restores health over time.</span><br><span data-l10n='game-chocolateBox-tooltip'>Inmune to frenemy effect for 20s.</span></div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> </div> <div id='ui-loot-painkiller' class='ui-loot ui-outline-hover ui-scale-hover ui-medical tooltip'> <div class='tooltip-text'> <div class='tooltip-title' data-l10n='game-painkiller'>Pills</div> <div class='tooltip-description'><span data-l10n='game-painkiller-tooltip'>Left-click to boost adrenaline by 50.</div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> </div> <div id='ui-loot-flask' class='ui-loot ui-outline-hover ui-scale-hover ui-medical tooltip'> <div class='tooltip-text'> <div class='tooltip-title' data-l10n='game-flask'>Flask</div> <div class='tooltip-description'><span data-l10n='game-flask-tooltip'>Left-click for freeze damage immunity for 20 seconds.</span></div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> </div> </div> <div id='ui-ammo-interactive'> <div id='ui-loot-50AE' class='ui-outline-hover ui-ammo tooltip'> <div class='tooltip-text click-through'> <div class='tooltip-title' data-l10n='game-50AE'></div> <div class='tooltip-description'><span data-l10n='game-50AE-tooltip'></span></div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> <div class='ui-loot-overlay' style='background: rgba(30,30,30,0.75)'></div> </div> <div id='ui-loot-9mm' class='ui-outline-hover ui-ammo tooltip'> <div class='tooltip-text click-through'> <div class='tooltip-title' data-l10n='game-9mm'></div> <div class='tooltip-description'><span data-l10n='game-9mm-tooltip'></span></div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> <div class='ui-loot-overlay' style='background: rgba(255,153,0,0.75)'></div> </div> <div id='ui-loot-308sub' class='ui-outline-hover ui-ammo tooltip'> <div class='tooltip-text click-through'> <div class='tooltip-title' data-l10n='game-308sub'></div> <div class='tooltip-description'><span data-l10n='game-308sub-tooltip'></span></div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> <div class='ui-loot-overlay' style='background: rgba(49,56,0,0.75)'></div> </div> <div id='ui-loot-12gauge' class='ui-outline-hover ui-ammo tooltip'> <div class='tooltip-text click-through'> <div class='tooltip-title' data-l10n='game-12gauge'></div> <div class='tooltip-description'><span data-l10n='game-12gauge-tooltip'></span></div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> <div class='ui-loot-overlay' style='background: rgba(255,0,0,0.75)'></div> </div> <div id='ui-loot-flare' class='ui-outline-hover ui-ammo tooltip'> <div class='tooltip-text click-through'> <div class='tooltip-title' data-l10n='game-flare'></div> <div class='tooltip-description'><span data-l10n='game-flare-tooltip'></span></div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> <div class='ui-loot-overlay' style='background: rgba(255,85,0,0.75)'></div> </div> <div id='ui-loot-762mm' class='ui-outline-hover ui-ammo tooltip'> <div class='tooltip-text click-through'> <div class='tooltip-title' data-l10n='game-762mm'></div> <div class='tooltip-description'><span data-l10n='game-762mm-tooltip'></span></div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> <div class='ui-loot-overlay' style='background: rgba(0,102,255,0.75)'></div> </div> <div id='ui-loot-45acp' class='ui-outline-hover ui-ammo tooltip'> <div class='tooltip-text click-through'> <div class='tooltip-title' data-l10n='game-45acp'></div> <div class='tooltip-description'><span data-l10n='game-45acp-tooltip'></span></div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> <div class='ui-loot-overlay' style='background: rgba(121,0,255,0.75)'></div> </div> <div id='ui-loot-556mm' class='ui-outline-hover ui-ammo tooltip'> <div class='tooltip-text click-through'> <div class='tooltip-title' data-l10n='game-556mm'></div> <div class='tooltip-description'><span data-l10n='game-556mm-tooltip'></span></div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> <div class='ui-loot-overlay' style='background: rgba(3,123,0,0.75)'></div> </div> <div id='ui-loot-40mm' class='ui-outline-hover ui-ammo tooltip'> <div class='tooltip-text click-through'> <div class='tooltip-title' data-l10n='game-40mm'></div> <div class='tooltip-description'><span data-l10n='game-40mm-tooltip'></span></div> </div> <div class='ui-loot-count'>0</div> <img class='ui-loot-image' src=''></img> <div class='ui-loot-overlay' style='background: rgba(12,221,171,0.75)'></div> </div> </div> <div id='ui-emote-button'></div> </div> <div id='ui-top-left' class='js-ui-hud-show click-through'> <div id='ui-team' class='js-ui-mobile-map-hidden'> <div class='ui-team-member ui-bg-standard' data-id='0'> <div class='ui-team-member-name'></div> <div class='ui-team-member-color ui-background-yellow'></div> <div class='ui-team-member-status'></div> <div class='ui-team-member-health'> <div class='ui-bar-inner ui-health-actual'></div> </div> </div> <div class='ui-team-member ui-bg-standard' data-id='1'> <div class='ui-team-member-name'></div> <div class='ui-team-member-color ui-background-purple'></div> <div class='ui-team-member-status'></div> <div class='ui-team-member-health'> <div class='ui-bar-inner ui-health-actual'></div> </div> </div> <div class='ui-team-member ui-bg-standard' data-id='2'> <div class='ui-team-member-name'></div> <div class='ui-team-member-color ui-background-cyan'></div> <div class='ui-team-member-status'></div> <div class='ui-team-member-health'> <div class='ui-bar-inner ui-health-actual'></div> </div> </div> <div class='ui-team-member ui-bg-standard' data-id='3'> <div class='ui-team-member-name'></div> <div class='ui-team-member-color ui-background-orange'></div> <div class='ui-team-member-status'></div> <div class='ui-team-member-health'> <div class='ui-bar-inner ui-health-actual'></div> </div> </div> </div> </div> <div id='ui-map-wrapper' class='ui-map-wrapper-desktop click-through'> <div id='ui-map-container'> <div id='ui-map-info' class='js-ui-map-hidden js-ui-hud-show'> <div id='ui-gas-icon' class='gas-icon'></div> <div id='ui-gas-timer'></div> </div> <div id='ui-spec-counter' class='js-ui-map-hidden js-ui-hud-show'> <div id='ui-spec-counter-icon'></div> <div id='ui-spec-counter-number'></div> </div> <div id='ui-settings-container-desktop' class='js-ui-desktop-map-hidden'> <div id='ui-map-expand-desktop' class='ui-map-expand ui-settings-button'> <img id='mag-glass-white' src=''></img> </div> <div id='ui-map-minimize' class='ui-settings-button js-ui-map-hidden'> <img id='ui-minimize-img' src=''></img> </div> </div> <div id='ui-settings-container-mobile' class='js-ui-mobile-map-hidden'> <div id='ui-alive-info'> <div id='ui-alive-icon' class='ui-map-icon alive-icon'></div> <div id='ui-map-counter-default' class='js-ui-players-alive'>0</div> <div id='ui-map-counter-faction'> <span class='ui-players-alive-red js-ui-players-alive-red'>0</span>:<span class='ui-players-alive-blue js-ui-players-alive-blue'>0</span> </div> </div> <div id='ui-map-expand-mobile' class='ui-map-expand ui-settings-button'></div> </div> </div> </div> <div id='ui-menu-display' class='ui-settings-button prop-event'></div> <div id='ui-kill-leader-container'> <div id='ui-kill-leader-wrapper' class='js-ui-map-hidden js-ui-hud-show hide-on-mobile'> <div id='ui-kill-leader-name'>Waiting for new leader</div> <div id='ui-kill-leader-icon'></div> <div id='ui-kill-leader-count'>0</div> </div> </div> <div id='ui-killfeed-wrapper'> <div id='ui-killfeed' class='js-ui-map-hidden js-ui-hud-show'> <div id='ui-killfeed-contents'></div> </div> </div> <div id='ui-leaderboard-wrapper'> <div id='ui-leaderboard' class='js-ui-hud-show'> <div id='ui-leaderboard-alive'> <span class='ui-players-alive js-ui-players-alive'>0</span> </div> <div id='ui-leaderboard-alive-faction'> <span class='ui-players-alive-red js-ui-players-alive-red'>0</span> <span class='ui-players-alive-blue js-ui-players-alive-blue'>0</span> </div> <div class='ui-leaderboard-header' data-l10n='game-alive'>Alive</div> </div> <div id='ui-kill-counter-wrapper' class='js-ui-map-show'> <div id='ui-kill-counter'> <span class='ui-player-kills js-ui-player-kills'>0</span> </div> <div class='ui-kill-counter-header' data-l10n='game-kills'>Kills</div> </div> </div> <div id='ui-top-center-scopes-wrapper'> <div id='ui-top-center-scopes' class='click-through js-ui-map-hidden'> <div id='ui-scope-1xscope' class='ui-scope ui-zoom'> <div class='ui-zoom-text'> <div class='ui-zoom-level'>1<span class='ui-zoom-append'>x</span></div> </div> </div> <div id='ui-scope-2xscope' class='ui-scope ui-zoom ui-outline-hover'> <div class='ui-zoom-text'> <div class='ui-zoom-level'>2<span class='ui-zoom-append'>x</span></div> </div> </div> <div id='ui-scope-4xscope' class='ui-scope ui-zoom ui-outline-hover'> <div class='ui-zoom-text'> <div class='ui-zoom-level'>4<span class='ui-zoom-append'>x</span></div> </div> </div> <div id='ui-scope-8xscope' class='ui-scope ui-zoom ui-outline-hover'> <div class='ui-zoom-text'> <div class='ui-zoom-level'>8<span class='ui-zoom-append'>x</span></div> </div> </div> <div id='ui-scope-15xscope' class='ui-scope ui-zoom ui-outline-hover'> <div class='ui-zoom-text'> <div class='ui-zoom-level'>15<span class='ui-zoom-append'>x</span></div> </div> </div> </div> </div> <div id='ui-top-center' class='js-ui-map-hidden js-ui-hud-show click-through'> <div id='ui-waiting-text' class='top-center-text'><span data-l10n='game-waiting-for-players'>Waiting for players</span>...</div> <div id='ui-spectate-text' class='top-center-text ui-spectate-mode'> <div class='spectate-text spectate-desc' data-l10n='game-spectating'>Spectating</div> <div id='spectate-player' class='spectate-text'></div> </div> </div> <div id='ui-upper-center' class='click-through'> <div id='ui-announcement'></div> </div> <div id='ui-upper-center-1' class='click-through'> <div id='ui-pickup-notification'> <div id='ui-pickup-description'>Item picked up</div> </div> </div> <div id='ui-lower-center' class='js-ui-map-hidden js-ui-hud-show click-through'> <div id='ui-interaction'> <div id='ui-interaction-press'></div> <div id='ui-interaction-outer'> <div id='ui-interaction-description'></div> </div> </div> </div> <div id='ui-bottom-center-2' class='click-through'> <div id='ui-pickup-message' class='notify-message'></div> <div id='ui-perk-message-wrapper' class='notify-message'> <div id='ui-perk-message-image-wrapper'> <div id='ui-perk-message-image-icon'></div> </div> <div id='ui-perk-message-name' class='notify-message'></div> <div id='ui-perk-message-acquired' class='notify-message'></div> </div> </div> <div id='ui-equipped-ammo-wrapper' class='js-ui-map-hidden js-ui-hud-show'> <div id='ui-equipped-ammo'> <div id='ui-bullet-counter'> <div id='ui-current-clip'>0</div> <div id='ui-remaining-ammo'>0</div> <div id='ui-reload-button-container'> <div id='ui-reload-button'></div> </div> </div> </div> </div> <div id='ui-bottom-center-0' class='click-through js-ui-map-hidden js-ui-hud-show'> <div id='ui-boost-counter'> <div class='ui-boost-base' id='ui-boost-counter-0'> <div class='ui-bar-inner'></div> </div> <div class='ui-boost-base' id='ui-boost-counter-1'> <div class='ui-bar-inner'></div> </div> <div class='ui-boost-base' id='ui-boost-counter-2'> <div class='ui-bar-inner'></div> </div> <div class='ui-boost-base' id='ui-boost-counter-3'> <div class='ui-bar-inner'></div> </div> </div> <div id='ui-health-counter'> <div id='ui-health-flair-left' class='ui-health-flair'></div> <div id='ui-health-flair-right' class='ui-health-flair'></div> <div id='ui-health-container'> <div class='ui-bar-inner' id='ui-health-actual'></div> <div class='ui-bar-inner' id='ui-health-depleted'></div> </div> </div> </div> <div id='ui-bottom-center-left' class='js-ui-map-hidden'> <div id='ui-perk-0' class='ui-armor-counter tooltip-perk ui-outline-hover'> <div class='tooltip-text'> <div class='tooltip-title'></div> <div class='tooltip-desc'></div> </div> <img class='ui-armor-image ui-loot-image' src=''></img> </div> <div id='ui-perk-1' class='ui-armor-counter tooltip-perk ui-outline-hover'> <div class='tooltip-text'> <div class='tooltip-title'></div> <div class='tooltip-desc'></div> </div> <img class='ui-armor-image ui-loot-image' src=''></img> </div> <div id='ui-perk-2' class='ui-armor-counter tooltip-perk ui-outline-hover'> <div class='tooltip-text'> <div class='tooltip-title'></div> <div class='tooltip-desc'></div> </div> <img class='ui-armor-image ui-loot-image' src=''></img> </div> </div> <div id='ui-bottom-center-right' class='js-ui-map-hidden'> <div id='ui-armor-helmet' class='ui-armor-counter ui-outline-hover'> <div class='ui-armor-counter-inner'></div> <div class='ui-armor-level'></div> <img class='ui-armor-image ui-loot-image' src=''></img> </div> <div id='ui-armor-chest' class='ui-armor-counter ui-outline-hover'> <div class='ui-armor-counter-inner'></div> <div class='ui-armor-level'></div> <img class='ui-armor-image ui-loot-image' src=''></img> </div> <div id='ui-armor-backpack' class='ui-armor-counter'> <div class='ui-armor-counter-inner'></div> <div class='ui-armor-level'></div> <img class='ui-armor-image ui-loot-image' src=''></img> </div> </div> <div id='ui-bottom-right' class='js-ui-map-hidden'> <div id='ui-weapon-container'> <div class='ui-weapon-info'> <div class='ui-weapon-switch ui-outline-hover' id='ui-weapon-id-1' data-slot='1'> <div class='ui-weapon-name'></div> <div class='ui-weapon-number'>1</div> <img class='ui-weapon-image' src=''></img> </div> </div> <div class='ui-weapon-info'> <div class='ui-weapon-switch ui-outline-hover' id='ui-weapon-id-2' data-slot='2'> <div class='ui-weapon-name'></div> <div class='ui-weapon-number'>2</div> <img class='ui-weapon-image' src=''></img> </div> </div> <div class='ui-weapon-info'> <div class='ui-weapon-switch ui-outline-hover' id='ui-weapon-id-3'> <div class='ui-weapon-name'></div> <div class='ui-weapon-number'>3</div> <img class='ui-weapon-image' src=''></img> </div> </div> <div class='ui-weapon-info'> <div class='ui-weapon-switch ui-outline-hover' id='ui-weapon-id-4'> <div class='ui-weapon-name'></div> <div class='ui-weapon-number'>4</div> <div class='ui-weapon-exp ui-weapon-ammo-counter'>0</div> <img class='ui-weapon-image' src=''></img> </div> </div> </div> </div> <div id='ui-spectate-options-wrapper'> <div id='ui-spectate-options' class='ui-spectate-mode js-ui-hud-show click-through'> <div id='ui-spectate-buttons' class='ui-bg-standard'> <a class='menu-option btn-darken' id='btn-spectate-next-player' data-l10n='game-next-teammate'>Next Teammate</a> <a class='menu-option btn-darken' id='btn-spectate-prev-player' data-l10n='game-previous-teammate'>Previous Teammate</a> <a class='menu-option btn-darken' id='btn-spectate-view-stats' data-l10n='game-view-match-stats'>View Match Stats</a> <a class='menu-option btn-darken btn-quit' id='btn-spectate-quit' data-l10n='game-leave-game'>Leave Game</a> </div> <div id='ui-spectate-stats' class='ui-bg-standard'> <div id='ui-spectate-stats-header' data-l10n='game-your-results'>Your Results</div> <table id='ui-spectate-stats-table'> <tbody id='ui-spectate-stats-data'> </tbody> </table> </div> </div> </div> <div id='ui-bottom-center-1' class='click-through'> <div id='ui-kills'> <div id='ui-kill-text'></div> <div id='ui-kill-count'></div> </div> </div> </div> <div id='ui-stats'> <div id='ui-stats-bg'></div> <div id='ui-stats-contents'> <div id='ui-stats-contents-inner'> <div id='ui-stats-header'></div> <div id='ui-stats-info-box'></div> <div id='ui-stats-options'></div> <div id='ui-stats-logo'></div> </div> <div id='ui-stats-ad-container-desktop' class='ui-stats-ad-container'> <div id='surviv-io_300x250_2'></div> </div> <div id='ui-stats-ad-container-mobile' class='ui-stats-ad-container'> <div id='surviv-io_300x250_mobile_2'></div> </div> </div> </div> <div class='ui-stats-adblock surviv-shirts'> <a class='surviv-shirts-link' href='/~/https://www.amazon.com/s?rh=n%3A7141123011%2Cp_4%3Asurviv.io&ref=w_bl_sl_s_ap_web_7141123011' target="_blank"></a> </div> <div class='ui-stats-adblock adblock-plea'> <span>Please consider supporting us by disabling your adblocker.</span> </div> </div> <div id='start-menu-wrapper'> <div id='safari-margin'></div> <div id='background'> <div id='start-overlay'></div> </div> <div id='event-modal'> <div id='modal-container'> <p id='modal-header' data-l10n='index-modal-test'>(HEADER TEXT)</p> <img id='modal-img-1'> <div id='modal-content'> <img id='modal-img-2'> <p id='modal-text' data-l10n='event-desc'>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Tincidunt dui ut ornare lectus sit amet est.</p> </div> <button class='close' id='modal-btn' data-l10n='modal-btn-txt' type='button'>(BUTTON TEXT)</button> </div> </div> <div id='start-main'> <div id='start-top-left'> <div id='btn-hamburger' class='icon-hamburger'></div> <div id='start-top-left-desktop'> <div id='featured-streamers'> <div class='streaming-header'> <div id='streaming-header-title' data-l10n='index-streaming-live'>Streaming Live!</div> <div id='streaming-icon'></div> </div> <div class='streamer-list'></div> <div id='featured-streamer-template'> <a href='' target='_blank' class='btn-streamer btn-darken'></a> </div> </div> <div id='featured-youtuber'> <div class='youtube-header'> <div id='youtube-header-title' data-l10n='index-featured-youtuber'>Featured YouTuber</div> </div> <a href='' target='_blank' class='btn-youtuber btn-darken'></a> </div> </div> </div> <!-- Accounts Modals --> <div id='modal-account-name-change' class='modal modal-account'> <div class='modal-content modal-close'> <div class='modal-header modal-header-name'> <span class='close close-corner'></span> <h2 id='modal-account-name-title' data-l10n='index-create-account'>Create Account</h2> </div> <div class='modal-body modal-body-name'> <div class='modal-settings-item'> <p id='modal-account-name-desc' class='modal-body-text' data-l10n='index-set-account-name'>Set your account name:</p> <div id='modal-body-warning'></div> <input type='text' class='menu-option player-name-input' tabindex='0' placeholder='Enter name' id='modal-account-name-input' maxlength='16' /> </div> </div> <div class='modal-footer modal-footer-name modal-footer-round'> <h3 id='modal-account-name-finish' class='finish' data-l10n='index-finish'>Finish</h3> </div> </div> </div> <div id='modal-account-reset-stats' class='modal modal-account'> <div class='modal-content modal-close'> <div class='modal-header modal-header-reset-stats'> <span class='close close-corner'></span> <h2 id='modal-account-name-title' data-l10n='index-reset-stats'>Reset Stats</h2> </div> <div class='modal-body modal-body-reset-stats'> <div class='modal-settings-item'> <p id='modal-account-reset-stats-desc' class='modal-body-text' data-l10n='index-reset-stats-desc'>Enter "RESET STATS" to reset your stats:</p> <p id='modal-account-reset-stats-desc-2' class='modal-body-text' data-l10n='index-reset-stats-desc-2'>(This does not reset pass progress.)</p> <input type='text' class='menu-option player-name-input' tabindex='0' placeholder='' id='modal-account-reset-stats-input' maxlength='16' /> </div> </div> <div class='modal-footer modal-footer-reset-stats modal-footer-round'> <h3 id='modal-account-reset-stats-finish' class='finish' data-l10n='index-confirm'>Confirm</h3> </div> </div> </div> <div id='modal-account-delete' class='modal modal-account'> <div class='modal-content modal-close'> <div class='modal-header modal-header-delete'> <span class='close close-corner'></span> <h2 id='modal-account-name-title' data-l10n='index-delete-account'>Delete Account</h2> </div> <div class='modal-body modal-body-delete'> <div class='modal-settings-item'> <p id='modal-account-delete-desc' class='modal-body-text' data-l10n='index-delete-account-desc'>Enter "DELETE" to delete your account:</p> <input type='text' class='menu-option player-name-input' tabindex='0' placeholder='' id='modal-account-delete-input' maxlength='16' /> </div> </div> <div class='modal-footer modal-footer-delete modal-footer-round'> <h3 id='modal-account-delete-finish' class='finish' data-l10n='index-confirm'>Confirm</h3> </div> </div> </div> <!-- Accounts Mobile --> <div id='modal-mobile-account' class='modal'> <div class='modal-content modal-close'> <div class='modal-header'> <span class='close close-corner'></span> <h2 data-l10n='index-account' data-l10n='index-account'>Account</h2> </div> <div id='modal-mobile-account-body'> <div class='account-buttons-settings account-buttons-wrapper account-block-arrow modal-close'> <div class='account-buttons'> <div class='account-stats-link btn-player-stats-link menu-option btn-darken btn-standard ' data-l10n='index-my-stats'>My Stats</div> <div class='btn-account-link btn-account-turq menu-option btn-darken btn-standard' data-l10n='index-link-account'>Link Account</div> <div class='btn-account-change-name btn-account-turq menu-option btn-darken btn-standard' data-l10n='index-change-account-name'>Change Account Name</div> <div class='btn-account-reset-stats btn-account-turq menu-option btn-darken btn-standard' data-l10n='index-reset-stats'>Reset Stats</div> <div class='btn-account-delete btn-account-turq menu-option btn-darken btn-standard' data-l10n='index-delete-account'>Delete Account</div> <div class='btn-account-logout btn-account-grey menu-option btn-darken btn-standard' data-l10n='index-log-out'>Log Out</div> </div> </div> <div id='account-login-options-mobile' class='account-buttons-link-account account-buttons-wrapper account-block-arrow modal-close'> <div class='login-options-content'></div> </div> </div> </div> </div> <!-- Accounts --> <div id='start-top-right'> <div class='account-block'> <div class='account-details-top'> <div class="account-details-top-buttons"> <div class="account-details-button-wrapper account-details-button-loadout menu-option btn-darken-alt"> <div class='account-details-button'> <div id='loadout-alert-main' class='account-alert-main account-alert'></div> <div class='account-link account-loadout-link'> <span data-l10n='index-loadout'>Loadout</span> </div> </div> </div> <div class="account-details-button-wrapper account-details-link-out menu-option btn-darken hide-on-mobile"> <div class='account-details-button'> <div class='account-link account-stats-link'><span data-l10n='index-my-stats'>My Stats</span></div> </div> </div> <div class="account-details-button-wrapper account-details-link-out menu-option btn-darken hide-on-mobile"> <div class='account-details-button'> <div class='account-link account-leaderboard-link'><span data-l10n='index-leaderboards'>Leaderboards</span></div> </div> </div> </div> </div> <div class='account-overview'> <div class="account-details-user account-details-block"> <div class="account-details"> <div class="account-avatar"></div> <div id="account-login" class="account-player-name account-name account-name-user" data-l10n='index-log-in-desc'>Log In / Create Account</div> <div id="account-player-name" class="account-player-name account-name account-name-user" style="display:none"></div> <div class="account-loading-container"> <div class="account-loading"></div> </div> </div> </div> </div> <div class='account-buttons-settings account-buttons-wrapper account-block-arrow modal-close hide-on-mobile'> <div class='account-buttons'> <div class='btn-account-link btn-account-turq menu-option btn-darken btn-standard' data-l10n='index-link-account'>Link Account</div> <div class='btn-account-change-name btn-account-turq menu-option btn-darken btn-standard' data-l10n='index-change-account-name'>Change Account Name</div> <div class='btn-account-reset-stats btn-account-turq menu-option btn-darken btn-standard' data-l10n='index-reset-stats'>Reset Stats</div> <div class='btn-account-delete btn-account-turq menu-option btn-darken btn-standard' data-l10n='index-delete-account'>Delete Account</div> <div class='btn-account-logout btn-account-grey menu-option btn-darken btn-standard' data-l10n='index-log-out'>Log Out</div> </div> </div> <div id='account-login-options' class='account-buttons-link-account account-buttons-wrapper account-block-arrow modal-close hide-on-mobile'> <div class='login-options-content'></div> </div> </div> </div> <div id='start-main-center'> <div id='start-row-header'> <div id='server-warning'></div> </div> <div id='start-row-top'> <div id='start-rotate-reminder' class='menu-column menu-block'> <span>Rotate to landscape for a better experience.</span> </div> <div id='left-column' class='menu-column'> <div id='ad-block-left'> <div class='surviv-shirts'> <a href='/~/https://www.amazon.com/s?rh=n%3A7141123011%2Cp_4%3Asurviv.io&ref=w_bl_sl_s_ap_web_7141123011' target="_blank"></a> </div> <div class='adblock-plea'> <span>Please consider supporting us by disabling your adblocker.</span> </div> <div class='ad-block-med-rect' id='surviv-io_300x250'> </div> </div> <div id='social-share-block-wrapper'> <div id='social-share-block' class='menu-block'> <div class='btn-social-wrapper'> <a href='/~/https://facebook.com/surviviogame' target='_blank' class='btn-social btn-darken btn-facebook'></a> <a href='/~/https://twitter.com/survivio' target='_blank' class='btn-social btn-darken btn-twitter'></a> <a href='/~/https://www.instagram.com/surviviogame/' target='_blank' class='btn-social btn-darken btn-instagram'></a> <a href='/~/https://discord.gg/survivio' target='_blank' class='btn-social btn-darken btn-discord'></a> <a href='/~/https://www.youtube.com/c/survivio?sub_confirmation=1' target='_blank' class='btn-social btn-darken btn-youtube'></a> </div> </div> </div> </div> <div id='start-menu' class='menu-column menu-block'> <div class='play-loading-outer'> <div class='play-loading-inner'> <div class='play-loading-spinner'></div> </div> </div> <div class='play-button-container'> <div id='player-options'> <input type='text' class='menu-option player-name-input' tabindex='0' placeholder='Enter your name here' id='player-name-input-solo' maxlength='16' /> <a class='btn-darken menu-option player-options-btn' id='btn-customize'></a> </div> <select id='server-select-main' class='server-select menu-option btn-hollow btn-hollow-selected'> <optgroup id='server-opts' label='Region' data-l10n='index-region'> <option value='na' data-label='North America' data-l10n='index-north-america'>North America</option> <option value='sa' data-label='South America' data-l10n='index-south-america'>South America</option> <option value='eu' data-label='Europe' data-l10n='index-europe'>Europe</option> <option value='as' data-label='Asia' data-l10n='index-asia'>Asia</option> <option value='kr' data-label='Korea' data-l10n='index-korea'>South Korea</option> </optgroup> </select> <a class='btn-green btn-darken menu-option' id='btn-start-mode-0' data-l10n='index-play-solo'>Play Solo</a> <div id='btns-quick-start'> <a class='btn-green btn-darken menu-option' id='btn-start-mode-1' data-l10n='index-play-duo'>Play Duo</a> <a class='btn-green btn-darken menu-option' id='btn-start-mode-2' data-l10n='index-play-squad'>Play Squad</a> </div> <div class='btns-double-row'> <a class='btn-darken menu-option btn-team-option' id='btn-join-team' data-l10n='index-join-team'>Join Team</a> <a class='btn-darken menu-option btn-team-option' id='btn-create-team' data-l10n='index-create-team'>Create Team</a> </div> <div id='btn-help' class='menu-option btn-darken' data-l10n='index-how-to-play'>How to Play</div> <div id='start-help'> <h1 data-l10n='index-controls'>Controls</h1> <p><span class='help-action' data-l10n='index-movement'></span>: <span class='help-control' data-l10n='index-movement-ctrl'></span></p> <p><span class='help-action' data-l10n='index-aim'></span>: <span class='help-control' data-l10n='index-aim-ctrl'></span></p> <p><span class='help-action' data-l10n='index-punch'></span>/<span class='help-action' data-l10n='index-shoot'></span>: <span class='help-control' data-l10n='index-shoot-ctrl'></span></p> <p><span class='help-action' data-l10n='index-change-weapons'></span>: <span class='help-control' data-l10n='index-change-weapons-ctrl'></span></p> <p class='hide-on-mobile'><span class='help-action' data-l10n='index-stow-weapons'></span>: <span class='help-control' data-l10n='index-stow-weapons-ctrl'></span></p> <p class='hide-on-mobile'><span class='help-action' data-l10n='index-swap-weapons'></span>: <span class='help-control' data-l10n='index-swap-weapons-ctrl'></span></p> <p class='hide-on-mobile'><span class='help-action' data-l10n='index-swap-weapon-slots'></span>: <span class='help-control' data-l10n='index-swap-weapon-slots-ctrl'></span></p> <p><span class='help-action' data-l10n='index-reload'></span>: <span class='help-control' data-l10n='index-reload-ctrl'></span></p> <p><span class='help-action' data-l10n='index-scope-zoom'></span>: <span class='help-control' data-l10n='index-scope-zoom-ctrl'></span></p> <p><span class='help-action' data-l10n='index-pickup'></span>/<span class='help-action' data-l10n='index-loot'></span>/<span class='help-action' data-l10n='index-revive'></span>: <span class='help-control' data-l10n='index-pickup-ctrl'></span></p> <p><span class='help-action' data-l10n='index-use-medical'></span>: <span class='help-control' data-l10n='index-use-medical-ctrl'></span></p> <p><span class='help-action' data-l10n='index-drop-item'></span>: <span class='help-control' data-l10n='index-drop-item-ctrl'></span></p> <p><span class='help-action' data-l10n='index-cancel-action'></span>: <span class='help-control' data-l10n='index-cancel-action-ctrl'></span></p> <p><span class='help-action' data-l10n='index-view-map'></span>: <span class='help-control' data-l10n='index-view-map-ctrl'></span></p> <p class='hide-on-mobile'><span class='help-action' data-l10n='index-toggle-minimap'></span>: <span class='help-control' data-l10n='index-toggle-minimap-ctrl'></span></p> <p><span class='help-action' data-l10n='index-use-ping'></span>: <span class='help-control' data-l10n='index-use-ping-ctrl'></span></p> <p><span class='help-action' data-l10n='index-use-emote'></span>: <span class='help-control' data-l10n='index-use-emote-ctrl'></span></p> <h1 data-l10n='index-how-to-play'>How to Play</h1> <p data-l10n='index-tips-1-desc'>The goal of surviv.io is to be the last player standing. You only live once per game - there is no respawn!</p> <h1 data-l10n='index-tips-2'>2D PUBG</h1> <p data-l10n='index-tips-2-desc'>If you've played other battle royale games like PUBG, Fortnite or H1Z1, then you're already halfway there! Think of surviv.io as 2D PUBG (with slightly less desync and more chicken).</p> <h1 data-l10n='index-tips-3'>Loot and Kill</h1> <p data-l10n='index-tips-3-desc'>You'll begin the game with no items other than a simple backpack. Move around the map to find loot: weapons, ammo, scopes, and medical items. Eliminate other players and you can take their loot!</p> <h1 data-l10n='index-tips-4'>Red = Bad!</h1> <p data-l10n='index-tips-4-desc'>Players aren't the only thing that can hurt you. The deadly red zone will move in from the sides of the map and deal increasingly greater damage if you stand in it. Keep an eye on the map and stay safe.</p> </div> </div> </div> <div id='team-menu' class='menu-column menu-block'> <div class='play-loading-outer'> <div class='play-loading-inner'> <div class='play-loading-spinner'></div> </div> </div> <div class='play-button-container'> <a class='btn-darken menu-option' id='btn-team-leave' data-l10n='index-leave-team'>Leave Team</a> <div id='team-menu-connecting'> <div class='ui-spinner'></div> <div class='team-menu-connecting-text' id='team-menu-joining-text'><span data-l10n='index-joining-team'>Joining team</span> ...</div> <div class='team-menu-connecting-text' id='team-menu-creating-text'><span data-l10n='index-creating-team'>Creating team</span> ...</div> </div> <div id='team-menu-contents'> <div id='team-desc'> <div id='team-desc-text'><span id='invite-link-text' data-l10n='index-invite-link'>Invite link</span>: <span id='team-url'></span> </div> <a id='team-copy-url' class='copy-item btn-darken'></a> <a id='team-hide-url' class='hide-item btn-darken'></a> <div id='team-code-text'><span id='invite-code-text' data-l10n='index-invite-code'>Invite code</span>: <span id='team-code'></span></div> </div> <div id='team-menu-columns'> <div id='team-menu-members' class='team-menu-block'> <div id='team-menu-member-list'></div> </div> <div id='team-menu-options' class='team-menu-block'> <select id='team-server-select' class='btn-hollow btn-hollow-selected server-select menu-option'> <optgroup id='team-server-opts' label='Region'> <option value='na' data-label='North America' data-l10n='index-north-america'>North America</option> <option value='sa' data-label='South America' data-l10n='index-south-america'>South America</option> <option value='eu' data-label='Europe' data-l10n='index-europe'>Europe</option> <option value='as' data-label='Asia' data-l10n='index-asia'>Asia</option> <option value='kr' data-label='Korea' data-l10n='index-korea'>South Korea</option> </optgroup> </select> <div class='team-menu-options-buttons'> <a class='btn-hollow btn-hollow-selected btn-darken team-menu-option btn-team-queue' id='btn-team-queue-mode-1' data-l10n='index-duo'>Duo</a> <a class='btn-hollow btn-hollow-selected btn-darken team-menu-option btn-team-queue' id='btn-team-queue-mode-2' data-l10n='index-squad'>Squad</a> </div> <div class='team-menu-options-buttons'> <a class='btn-hollow btn-hollow-selected btn-darken team-menu-option btn-team-fill' id='btn-team-fill-auto' data-l10n='index-auto-fill'>Auto Fill</a> <a class='btn-hollow btn-darken team-menu-option btn-team-fill' id='btn-team-fill-none' data-l10n='index-no-fill'>No Fill</a> </div> <div id='team-menu-options-start'> <a class='btn-green btn-darken menu-option' id='btn-start-team' data-label='Play' data-l10n='index-play'>Play</a> <div id='msg-wait-reason'></div> </div> </div> </div> </div> </div> </div> <div id='team-mobile-link' class='menu-column menu-block'> <div id='team-mobile-link-desc' class='team-mobile-link-text' data-l10n='index-join-team-help'>Got a team link or code? Paste it here:</div> <div id='team-mobile-link-warning' class='team-mobile-link-text'>Invalid link!</div> <input type='text' class='menu-option' contenteditable="false" tabindex='0' autofocus placeholder='Paste team link or enter code here' id='team-link-input' /> <a class='btn-darken menu-option btn-team-option' id='btn-team-mobile-link-join' data-l10n='index-join-team'>Join Team</a> <a class='btn-darken menu-option' id='btn-team-mobile-link-leave' data-l10n='index-back-to-main'>Back to Main Menu</a> </div> <div id='right-column' class='menu-column'> <div id='pass-wrapper'> <div id='pass-unlock-tooltip'> <div class='tooltip-pass-title'></div> <div class='tooltip-pass-desc'></div> </div> <div class='right-column-toggle news-toggle'> <div class='account-alert'></div> </div> <div id='pass-loading' class='pass-column menu-block'> <div id='pass-loading-spinner'></div> </div> <div id='pass-block' class='pass-column menu-block'> <div id='pass-name'> <span id='pass-name-text'></span> </div> <div id='pass-progress' class=''> <div id='pass-progress-level' class=''></div> <div id='pass-progress-bar' class=''> <div id='pass-progress-bar-fill'></div> <div id='pass-progress-xp'> <span id='pass-progress-xp-current'></span> <span>/</span> <span id='pass-progress-xp-target'></span> <span>XP</span> </div> </div> <div id='pass-progress-unlock-wrapper'> <div id='pass-progress-unlock' class=''> <div id='pass-progress-unlock-image' class=''></div> </div> <div id='pass-progress-unlock-type-wrapper' class=''> <div id='pass-progress-unlock-type-border' class=''> <div id='pass-progress-unlock-type-image' class=''></div> </div> <div id='pass-progress-unlock-overlay' class=''></div> </div> </div> </div> <div id='pass-quest-wrapper' class=''> <div id='pass-locked'> <div id='btn-pass-locked' class='menu-option btn-darken' data-l10n='quest-login-prompt'>Log in to get quests!</div> </div> <div id='pass-quest-0' class='pass-quest'> <div class='pass-quest-timer'></div> <div class='pass-quest-spinner-container'> <div class='pass-quest-spinner'></div> </div> <div class='pass-quest-refresh-prompt'> <div class='pass-quest-refresh-prompt-text' data-l10n='quest-refresh-prompt'>Get a new quest?</div> <div class='pass-quest-refresh-confirm btn-pass-quest-refresh'></div> <div class='pass-quest-refresh-cancel btn-pass-quest-refresh'></div> </div> <div class='pass-quest-info'> <div class='pass-quest-desc'></div> <div class='pass-quest-xp'></div> <div class='pass-quest-refresh'></div> <div class='pass-quest-progress'> <div class='pass-quest-bar'> <div class='pass-quest-bar-fill'></div> </div> <div class='pass-quest-counter'> <span class='pass-quest-counter-current'></span> <span>/</span> <span class='pass-quest-counter-target'></span> </div> </div> </div> </div> <div id='pass-quest-1' class='pass-quest'> <div class='pass-quest-timer'></div> <div class='pass-quest-spinner-container'> <div class='pass-quest-spinner'></div> </div> <div class='pass-quest-refresh-prompt'> <div class='pass-quest-refresh-prompt-text' data-l10n='quest-refresh-prompt'>Get a new quest?</div> <div class='pass-quest-refresh-confirm btn-pass-quest-refresh'></div> <div class='pass-quest-refresh-cancel btn-pass-quest-refresh'></div> </div> <div class='pass-quest-info'> <div class='pass-quest-desc'></div> <div class='pass-quest-xp'></div> <div class='pass-quest-refresh'></div> <div class='pass-quest-progress'> <div class='pass-quest-bar'> <div class='pass-quest-bar-fill'></div> </div> <div class='pass-quest-counter'> <span class='pass-quest-counter-current'></span> <span>/</span> <span class='pass-quest-counter-target'></span> </div> </div> </div> </div> </div> </div> </div> <div id='news-wrapper'> <div class='right-column-toggle pass-toggle'></div> <div id='news-block' class='menu-block'> <div id='news'> <h3 class='news-header'>What's New!</h3> <div id='news-current' data-date='2020-2-24'> <small class='news-date'>February 24, 2020</small> <p class='news-paragraph'><strong>Curveball</strong></p> <p class='news-paragraph'>The <span class='highlight'>Savannah</span> has returned with a new perk to help flush snipers out of position.</p> <p class='news-paragraph'>The <span class='highlight'>Closer Perk</span> throws grenades much farther, allowing you to put Snipers on the move.</p> </div> <div data-date='2020-2-10'> <small class='news-date'>February 10, 2020</small> <p class='news-paragraph'><strong>Keep Your Enemies Closer</strong></p> <p class='news-paragraph'>PARMA recognizes this season of togetherness and generously offers to help rivals resolve their differences. The all new <span class='highlight'>Heart Cannon</span> diffuses damage taken from your frenemies. For groups of future friends, the same effect is achieved with the all-new <span class='highlight'>Heart Grenade</span>.</p> <p class='news-paragraph'>If you do not trust the intentions of your new friends, eat an entire <span class='highlight'>box of chocolates</span> to counter the effect of <span class='highlight'>Heart Weapons</span>.</p> </div> <div data-date='2020-1-27'> <small class='news-date'>January 27, 2020</small> <p class='news-paragraph'><strong>Dodge This</strong></p> <p class='news-paragraph'><span class='highlight'>Woods</span> Mode is back with two new weapons and things are bound to get explosive. The <span class='highlight'>PKM</span> and <span class='highlight'>Hawk 12G</span> join the Woods Map arsenal, along with increased grenade capacity.</p> <p class='news-paragraph'>The <span class='highlight'>PKM</span> packs a punch while balancing mobility and range. Based on the M870 with an added magazine, the <span class='highlight'>Hawk 12G</span>'s ammo capacity of 5 is the same as its parent weapon, the fire delay is faster and fires a tighter spread. </p> </div> <div data-date='2020-1-13'> <small class='news-date'>January 13, 2020</small> <p class='news-paragraph'><strong>Stay frosty</strong></p> <p class='news-paragraph'>Winter has arrived on the Island with new features and is more dangerous than ever, including PARMA's latest item, the <span class='highlight'>Flask</span>.</p> <p class='news-paragraph'>Track your enemy's footprints and use the <span class='highlight'>Snow Fox</span> perk to cover up your footprints. Be sure to keep moving or take freezing damage. Flasks and the <span class='highlight'>Polar Bear</span> perk keep you from freezing. And watch out for ice. It's slippery.</p> </div> <div data-date='2019-12-30'> <small class='news-date'>December 30, 2019</small> <p class='news-paragraph'><strong>Free Fryer</strong></p> <p class='news-paragraph'>PARMA's FSTMS division is pleased to introduce the next generation in starch-based modern warfare: the <span class='highlight'>spud gun</span>.</p> <p class='news-paragraph'>Officially designated the SMG-8 (Spud Missile Generator), the spud gun uses a proprietary breech-to-muzzle heat expander to fry and propel wedge-shaped projectiles at tremendous speeds. Like its cousin, the potato cannon, the spud gun also features nitroglycerin-spiked ammunition and a nifty tuber replication device!</p> </div> </div> </div> </div> </div> </div> <div class='ad-block-leaderboard-bottom' id='surviv-io_728x90'></div> </div> <div id='start-bottom-left'> <div class='hide-on-mobile'> <a href='/~/https://play.google.com/store/apps/details?id=io.surviv.surviv_io_mobile' target='_blank' class='btn-download-android btn-download-app btn-darken'></a> </div> <div class='hide-on-mobile'> <a href='/~/https://itunes.apple.com/us/app/surviv-io/id1401727934?ls=1&mt=8' target='_blank' class='btn-download-ios btn-download-app btn-darken'></a> </div> <div id='mobile-settings-front'> <div class='btn-settings menu-option btn-darken btn-start-option'></div> </div> </div> <div id="start-bottom-middle"> <a href='changelog.html' target="_blank" class="footer-after">ver 0.9.1b</a> <a href='proxy.txt' target="_blank" data-l10n='index-proxy-sites'>proxy sites</a> </div> <div id='start-bottom-right-wrapper'> <div id='start-bottom-right'> <div class="language-select-wrap"> <select class='language-select'></select> </div> <div class='btn-settings menu-option btn-darken btn-start-option'></div> <div class='btn-keybind menu-option btn-darken btn-start-option'></div> <div id='btn-start-fullscreen' class='btn-fullscreen-toggle menu-option btn-darken btn-start-option'></div> <div class='btn-start-mute btn-sound-toggle menu-option btn-darken btn-start-option audio-on-icon'></div> </div> <div id='mobile-download-app'> <a href='/~/https://play.google.com/store/apps/details?id=io.surviv.surviv_io_mobile' target='_blank' class='btn-download-android btn-download-app-mobile btn-darken'></a> <a href='/~/https://itunes.apple.com/us/app/surviv-io/id1401727934?ls=1&mt=8' target='_blank' class='btn-download-ios btn-download-app-mobile btn-darken'></a> </div> </div> </div> <!-- Modals --> <div id='ui-modal-keybind' class='ui-modal-keybind modal' oncontextmenu='return false;'> <div class='ui-modal-keybind-content modal-content modal-close'> <div id='ui-modal-keybind-header' class='modal-header'> <span id='ui-close-keybind' class='close close-corner'></span> <h2 data-l10n='index-customize-keybinds'>Customize Keybinds</h2> </div> <div id='ui-modal-keybind-body' class='modal-body'> <div id='ui-modal-keybind-list' class='js-keybind-list'></div> <div id='ui-modal-keybind-share'> <div class='ui-modal-keybind-share-row'> <div class='ui-modal-keybind-share-elem'> <span data-l10n='index-keybind-link'>Share your keybinds with this code</span>: </div> <div class='ui-modal-keybind-share-elem'> <div id='keybind-link-text'> <div id='keybind-link'>aFvc42SfhpoFlrJKVkA1fx+5afasdf9034hfSF09nASqqF</div> <span id='keybind-copy' class='copy-item btn-darken'></span> </div> </div> </div> <span class='keybind-share-paste-text' data-l10n='index-keybind-paste'>Load keybinds using a code here</span><span>:</span> <div id='keybind-warning' class='link-warning'>Invalid code!</div> <div class='ui-modal-keybind-share-row'> <input type='text' class='menu-option' contenteditable="false" tabindex='0' autofocus placeholder='Paste a keybind code here' id='keybind-code-input' /> <a class='btn-game-menu btn-darken' id='btn-keybind-code-load' data-l10n='index-keybind-apply'>Load</a> </div> </div> </div> <div id='ui-modal-keybind-footer' class='modal-footer modal-footer-round'> <a class='js-btn-keybind-share btn-game-menu btn-darken' data-l10n='game-share'>Share</a> <a class='js-btn-keybind-restore btn-game-menu btn-darken' data-l10n='game-restore-defaults'>Restore Defaults</a> </div> </div> </div> <!-- Loadouts --> <div id='modal-customize' class='modal'> <div class='ad-block-loadouts-left hide-on-mobile' id='surviv-io_300x600'></div> <div id='modal-customize-wrapper' class='modal-close'> <div id='modal-content-left' class='modal-content-shadow'> <div id='modal-customize-cat-title'></div> <div id="modal-customize-sort-wrap"> <select id='modal-customize-sort'> <option id='customize-sort-newest' value='newest' data-l10n='loadout-newest'>Newest</option> <option id='customize-sort-alpha' value='alpha' data-l10n='loadout-alpha'>Alpha</option> <option id='customize-sort-rarity' value='rarity' data-l10n='loadout-rarity'>Rarity</option> <option id='customize-sort-subcat' value='subcat' data-l10n='loadout-subcat'>Category</option> </select> </div> <div id='modal-customize-close'> <span class='close close-corner'></span> </div> <div id='modal-customize-header' class='modal-header'></div> <div class='modal-disabled'> <div class='modal-disabled-message'>The Edge browser does not support custom cursors.</div> </div> <div id='modal-customize-body' class='modal-body'> <div id='modal-customize-item-header'> <div id='modal-customize-item-name'></div> <div id='modal-customize-item-rarity'></div> <div id='modal-customize-loading-container'> <div id='modal-customize-loading'></div> </div> </div> <div id='modal-customize-list'></div> </div> <div id='modal-customize-footer' class='modal-footer modal-footer-round'> <div id='modal-customize-item-source'></div> <div id='modal-customize-item-lore'></div> </div> <div id='modal-customize-unlocks' class=''> <div id='customize-instagram-follow-unlock' class='customize-social-unlock customize-social-tooltip' data-lock-reason='instagram'> <div class="tooltiptext" data-l10n='loadout-instagram-reward'></div> <a href='/~/https://www.instagram.com/surviviogame/' target="_blank" id='btn-instagram-follow-unlock' class='menu-option btn-darken btn-social-unlock btn-instagram' data-lock-reason='instagram' data-l10n='loadout-instagram-follow'></a> </div> <div id='customize-youtube-subscribe-unlock' class='customize-social-unlock customize-social-tooltip' data-lock-reason='youtube'> <div class="tooltiptext" data-l10n='loadout-youtube-reward'></div> <a href='/~/https://www.youtube.com/c/survivio?sub_confirmation=1' target='_blank' id='btn-youtube-subscribe-unlock' class='menu-option btn-darken btn-social-unlock btn-youtube' data-lock-reason='youtube' data-l10n='loadout-youtube-subscribe'></a> </div> <div id='customize-twitter-follow-unlock' class='customize-social-unlock customize-social-tooltip' data-lock-reason='twitter'> <div class="tooltiptext" data-l10n='loadout-twitter-reward'></div> <a href='/~/https://twitter.com/intent/follow?region=follow_link&screen_name=survivio&tw_p=followbutton' target="_blank" id='btn-twitter-follow-unlock' class='menu-option btn-darken btn-social-unlock btn-twitter' data-lock-reason='twitter' data-l10n='loadout-twitter-follow'></a> </div> <div id='customize-facebook-like-unlock' class='customize-social-unlock customize-social-tooltip' data-lock-reason='facebook'> <div class="tooltiptext" data-l10n='loadout-facebook-reward'></div> <a href='/~/https://www.facebook.com/surviviogame/' target='_blank' id='btn-facebook-like-unlock' class='menu-option btn-darken btn-social-unlock btn-facebook' data-lock-reason='facebook' data-l10n='loadout-facebook-like'></a> </div> </div> </div> <div id='modal-content-right-crosshair' class='modal-content-right modal-content-shadow'> <div class='modal-spacer'></div> <div class='modal-disabled'></div> <div id='customize-crosshair-parent'> <div id='customize-crosshair-selected'> <div class="customize-item-image customize-crosshair-image" draggable="false"></div> </div> <div id='customize-crosshair-sliders'> <div class="crosshair-hex-outer"> <span>#</span><input type="text" id='color-picker-hex'> </div> <section id="color-picker"></section> <div class="crosshair-slider-container"> <p class='' data-l10n='loadout-size'>Size</p> <input type="range" min="0.25" max="1.0" value="0.5" step='0.025' class="crosshair-slider" id="crosshair-size"> </div> <div class="crosshair-slider-container"> <p class='' data-l10n='loadout-stroke'>Stroke</p> <input type="range" min="0.0" max="1.5" value="0.0" step='0.025' class="crosshair-slider" id="crosshair-stroke"> </div> </div> </div> </div> <div id='modal-content-right-emote' class='modal-content-right modal-content-shadow'> <div id='customize-emote-parent'> <div id='customize-emote-wheel' class='ui-emote-wheel'> <div id='customize-emote-middle' class='ui-emote-middle ui-emote-circle ui-emote-parent'> <div class='ui-emote ui-emote-bg-circle'></div> <div class='ui-emote ui-emote-hl'></div> <div class='customize-emote-slot customize-item-image ui-emote-image'></div> </div> <div id='customize-emote-top' class='ui-emote-top ui-emote-quarter ui-emote-parent' data-slot='emoteTop' data-idx='0'> <div class='ui-emote ui-emote-bg-quarter'></div> <div class='ui-emote ui-emote-hl'></div> <div class='customize-emote-slot customize-item-image ui-emote-image'></div> <div class='customize-col customize-col-small' draggable="true"></div> </div> <div id='customize-emote-right' class='ui-emote-right ui-emote-quarter ui-emote-parent' data-slot='emoteRight' data-idx='1'> <div class='ui-emote ui-emote-bg-quarter'></div> <div class='ui-emote ui-emote-hl'></div> <div class='customize-emote-slot customize-item-image ui-emote-image'></div> <div class='customize-col customize-col-small' draggable="true"></div> </div> <div id='customize-emote-bottom' class='ui-emote-bottom ui-emote-quarter ui-emote-parent' data-slot='emoteBottom' data-idx='2'> <div class='ui-emote ui-emote-bg-quarter'></div> <div class='ui-emote ui-emote-hl'></div> <div class='customize-emote-slot customize-item-image ui-emote-image'></div> <div class='customize-col customize-col-small' draggable="true"></div> </div> <div id='customize-emote-left' class='ui-emote-left ui-emote-quarter ui-emote-parent' data-slot='emoteLeft' data-idx='3'> <div class='ui-emote ui-emote-bg-quarter'></div> <div class='ui-emote ui-emote-hl'></div> <div class='customize-emote-slot customize-item-image ui-emote-image'></div> <div class='customize-col customize-col-small' draggable="true"></div> </div> </div> <div id='customize-emote-autos'> <div id='customize-emote-win' class='ui-emote-middle ui-emote-circle ui-emote-parent' data-slot='emoteWin' data-idx='4'> <div class='ui-emote ui-emote-auto-trash'></div> <div class='ui-emote ui-emote-auto-icon ui-emote-auto-chicken'></div> <div class='ui-emote ui-emote-bg-circle-outer'></div> <div class='ui-emote ui-emote-bg-circle'></div> <div class='ui-emote ui-emote-hl'></div> <div class='customize-emote-slot customize-item-image'></div> <div class='customize-col customize-col-large' draggable="true"></div> </div> <div id='customize-emote-death' class='ui-emote-middle ui-emote-circle ui-emote-parent' data-slot='emoteDeath' data-idx='5'> <div class='ui-emote ui-emote-auto-trash'></div> <div class='ui-emote ui-emote-auto-icon ui-emote-auto-skull'></div> <div class='ui-emote ui-emote-bg-circle-outer'></div> <div class='ui-emote ui-emote-bg-circle'></div> <div class='ui-emote ui-emote-hl'></div> <div class='customize-emote-slot customize-item-image'></div> <div class='customize-col customize-col-large' draggable="true"></div> </div> </div> </div> </div> </div> </div> <div id='modal-settings' class='modal'> <div class='modal-content modal-close'> <div class='modal-header'> <span class='close close-corner'></span> <h2 data-l10n='index-settings'>Settings</h2> </div> <div id='modal-settings-body' class='modal-body'> <div id='language-select-mobile-wrapper' class='modal-settings-item'> <div class="language-select-wrap"> <select class='language-select'></select> </div> </div> <div id='modal-settings-high-res' class='modal-settings-item'> <input id='highResTex' type='checkbox'><p class='modal-settings-checkbox-text' data-l10n='index-high-resolution'>High resolution (check to increase visual quality)</p> </div> <div class='modal-settings-item hide-on-mobile'> <input id='screenShake' type='checkbox'><p class='modal-settings-checkbox-text' data-l10n='index-screen-shake'>Screen shake</p> </div> <div class='modal-settings-item'> <input id='anonPlayerNames' type='checkbox'><p class='modal-settings-checkbox-text' data-l10n='index-anon-player-names'>Anonymize player names</p> </div> <div class='modal-settings-item dpad'> <input id='activateDpad' type='checkbox'><p class='modal-settings-checkbox-text' data-l10n='index-left-mode'>Left handed mode </p> </div> <div class='modal-settings-item auto-melee'> <input id='autoMelee' type='checkbox'><p class='modal-settings-checkbox-text' data-l10n='index-auto-melee'>Auto Melee Boxes</p> </div> <div class='modal-settings-item aim-assist'> <input id='aimAssist' type='checkbox'><p class='modal-settings-checkbox-text' data-l10n='index-aim-assist'>Aim Assist</p> </div> <div class="modal-settings-item slider-container main-volume-slider"> <p class='modal-slider-text' data-l10n='index-master-volume'>Master Volume</p> <input type="range" min="0" max="100" value="50" class="slider sl-master-volume" id=""> </div> <div class="modal-settings-item slider-container main-volume-slider"> <p class='modal-slider-text' data-l10n='index-sfx-volume'>SFX Volume</p> <input type="range" min="0" max="100" value="50" class="slider sl-sound-volume" id=""> </div> <div class="modal-settings-item slider-container main-volume-slider"> <p class='modal-slider-text' data-l10n='index-music-volume'>Music Volume</p> <input type="range" min="0" max="100" value="50" class="slider sl-music-volume" id=""> </div> <div class="modal-settings-item slider-container slider-dpad"> <p class='modal-slider-text' data-l10n='index-sensitivy'>Analog Sensitivity</p> <input type="range" min="0" max="100" value="100" class="slider" id="sensitivity-slider"> </div> <div id='settings-links'> <a href='#' class="btn-cookie-settings footer-after">cookie settings</a> <a href='privacy.html' target="_blank" class="footer-after" data-l10n='index-privacy'>privacy</a> <a href='attribution.txt' target="_blank" class="footer-after" data-l10n='index-attributions'>attributions</a> <a href='hof.html' target="_blank" data-l10n='index-hof'>HOF</a> </div> </div> <div class='modal-footer'></div> </div> </div> <div id='modal-hamburger' class='modal'> <div class='modal-content modal-close'> <div class='modal-header'> <span class='close close-hamburger icon-hamburger'></span> <h2> </h2> </div> <div id='modal-hamburger-body' class='modal-body'> <div id='modal-hamburger-leaderboards'> <a href='/~/https://surviv.io/stats' target='_blank' id="btn-mobile-to-stats" class='btn-leaderboard-stats-link menu-option btn-darken' data-l10n='index-leaderboards'>Leaderboards</a> </div> <div class='modal-divider'></div> <div class='btn-social-wrapper'> <a href='/~/https://facebook.com/surviviogame' target='_blank' class='btn-social btn-darken btn-facebook'></a> <a href='/~/https://twitter.com/survivio' target='_blank' class='btn-social btn-darken btn-twitter'></a> <a href='/~/https://www.instagram.com/surviviogame/' target='_blank' class='btn-social btn-darken btn-instagram'></a> <a href='/~/https://discord.gg/survivio' target='_blank' class='btn-social btn-darken btn-discord'></a> <!-- <a href='/~/https://www.youtube.com/c/survivio?sub_confirmation=1' target='_blank' class='btn-social btn-darken btn-youtube'></a> --> </div> <div class='modal-divider'></div> <div id='modal-hamburger-bottom'> <a href='changelog.html' class="footer-after">ver 0.9.1b</a> <a href='#' class="btn-cookie-settings footer-after">cookie settings</a> <a href='privacy.txt' target="_blank" class="footer-after">privacy</a> <a href='attribution.txt' target="_blank">attributions</a> </div> </div> </div> </div> <div id='modal-notification' class='modal'> <div class='modal-content modal-close'> <div class='modal-header'> <span class='close close-corner'></span> <h2>Alert</h2> </div> <div class='modal-body'> <p class='modal-body-text'></p> </div> <div class='modal-footer modal-footer-round'> <h3 class='close close-footer'>OK</h3> </div> </div> </div> <div id='modal-refresh' class='modal'> <div class='modal-content modal-close'> <div class='modal-header'> <span class='close close-corner'></span> <h2>New Update</h2> </div> <div class='modal-body'> <p class='modal-body-text'>A new version of surviv.io is available!<br><br>Press "OK" below to reload the page.</p> </div> <div class='modal-footer modal-footer-round'> <h3 id='force-refresh' class='close close-footer'>OK</h3> </div> </div> </div> <div id='modal-create-account' class='modal modal-account'> <div class='modal-content modal-close'> <div class='modal-header modal-header-name'> <span class='close-loadouts close close-corner'></span> <h2 id='modal-account-name-title' data-l10n='index-log-in-desc'>Log In / Create Account</h2> </div> <div class='modal-body modal-body-name'> <p class='modal-body-text' data-l10n='index-create-account-prompt-1'>Log in to access this feature!</p> <div class='login-options-content'></div> </div> <div class='modal-footer modal-footer-name modal-footer-round'> <h3 class='close close-footer' data-l10n='index-cancel'>Cancel</h3> </div> </div> </div> <div id='modal-screen-block'> <div id='modal-item-confirm' class='modal'> <div class='modal-content modal-close'> <div class='modal-header modal-header-name'> <h2 id='modal-account-name-title'>You got a new item!</h2> </div> <div class='modal-body modal-body-name'> <div id='modal-item-confirm-image-outer'> <div id='modal-item-confirm-image-inner'></div> </div> <div class='modal-settings-item'> <p id='modal-item-confirm-name' class='modal-body-text'></p> </div> </div> <div class='modal-footer modal-footer-name modal-footer-round'> <h3 class='close close-footer' data-l10n='index-confirm'>Confirm</h3> </div> </div> </div> </div> <div id='modal-cookie-settings' class='modal'> <div class='modal-content modal-close'> <div class='modal-header'> <span class='close close-corner'></span> <h2>Cookie Settings</h2> </div> <div class='modal-body'> <p class='modal-body-text'>We use cookies to personalize content and ads, to provide social media features, and to analyze our traffic. We also share information about your use of our site with our social media, advertising and analytics partners who may combine it with other information that you've provided to them or that they've collected from your use of their services. You consent to our cookies if you continue to use our website. Click <a href='#' id='btn-cookie-opt-out' class='close'>here</a> to opt out of using cookies.</p> </div> <div class='modal-footer modal-footer-round'> <h3 class='close close-footer'><div class='btn-cookies-close btn-darken'>Got it!</div></h3> </div> </div> </div> </div> <script type="text/javascript" src="js/manifest.8e62061f.js"></script><script type="text/javascript" src="js/vendor.bd007df0.js"></script><script type="text/javascript" src="js/app.55f8f3a9.
michealbalogun
Copyright 2012 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # Copyright 2012 Nebula, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. import glob import logging import os import sys import warnings from django.utils.translation import pgettext_lazy from django.utils.translation import ugettext_lazy as _ from horizon.utils.escape import monkeypatch_escape from openstack_dashboard import enabled from openstack_dashboard import exceptions from openstack_dashboard.local import enabled as local_enabled from openstack_dashboard import theme_settings from openstack_dashboard.utils import config from openstack_dashboard.utils import settings as settings_utils monkeypatch_escape() _LOG = logging.getLogger(__name__) warnings.formatwarning = lambda message, category, *args, **kwargs: \ '%s: %s' % (category.__name__, message) ROOT_PATH = os.path.dirname(os.path.abspath(__file__)) if ROOT_PATH not in sys.path: sys.path.append(ROOT_PATH) DEBUG = False SITE_BRANDING = 'OpenStack Dashboard' WEBROOT = '/' LOGIN_URL = None LOGOUT_URL = None LOGIN_ERROR = None LOGIN_REDIRECT_URL = None MEDIA_ROOT = None MEDIA_URL = None STATIC_ROOT = None STATIC_URL = None SELECTABLE_THEMES = None INTEGRATION_TESTS_SUPPORT = False NG_TEMPLATE_CACHE_AGE = 2592000 ROOT_URLCONF = 'openstack_dashboard.urls' HORIZON_CONFIG = { 'user_home': 'openstack_dashboard.views.get_user_home', 'ajax_queue_limit': 10, 'auto_fade_alerts': { 'delay': 3000, 'fade_duration': 1500, 'types': ['alert-success', 'alert-info'] }, 'bug_url': None, 'help_url': "https://docs.openstack.org/", 'exceptions': {'recoverable': exceptions.RECOVERABLE, 'not_found': exceptions.NOT_FOUND, 'unauthorized': exceptions.UNAUTHORIZED}, 'modal_backdrop': 'static', 'angular_modules': [], 'js_files': [], 'js_spec_files': [], 'external_templates': [], 'plugins': [], 'integration_tests_support': INTEGRATION_TESTS_SUPPORT } # The OPENSTACK_IMAGE_BACKEND settings can be used to customize features # in the OpenStack Dashboard related to the Image service, such as the list # of supported image formats. OPENSTACK_IMAGE_BACKEND = { 'image_formats': [ ('', _('Select format')), ('aki', _('AKI - Amazon Kernel Image')), ('ami', _('AMI - Amazon Machine Image')), ('ari', _('ARI - Amazon Ramdisk Image')), ('docker', _('Docker')), ('iso', _('ISO - Optical Disk Image')), ('ova', _('OVA - Open Virtual Appliance')), ('ploop', _('PLOOP - Virtuozzo/Parallels Loopback Disk')), ('qcow2', _('QCOW2 - QEMU Emulator')), ('raw', _('Raw')), ('vdi', _('VDI - Virtual Disk Image')), ('vhd', _('VHD - Virtual Hard Disk')), ('vhdx', _('VHDX - Large Virtual Hard Disk')), ('vmdk', _('VMDK - Virtual Machine Disk')), ] } MIDDLEWARE = ( 'openstack_auth.middleware.OpenstackAuthMonkeyPatchMiddleware', 'debreach.middleware.RandomCommentMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'horizon.middleware.OperationLogMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'horizon.middleware.HorizonMiddleware', 'horizon.themes.ThemeMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'openstack_dashboard.contrib.developer.profiler.middleware.' 'ProfilerClientMiddleware', 'openstack_dashboard.contrib.developer.profiler.middleware.' 'ProfilerMiddleware', ) CACHED_TEMPLATE_LOADERS = [ 'django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader', 'horizon.loaders.TemplateLoader' ] ADD_TEMPLATE_LOADERS = [] ADD_TEMPLATE_DIRS = [] TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(ROOT_PATH, 'templates')], 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.i18n', 'django.template.context_processors.request', 'django.template.context_processors.media', 'django.template.context_processors.static', 'django.contrib.messages.context_processors.messages', 'horizon.context_processors.horizon', 'openstack_dashboard.context_processors.openstack', ], 'loaders': [ 'horizon.themes.ThemeTemplateLoader' ], }, }, ] STATICFILES_FINDERS = ( 'django.contrib.staticfiles.finders.FileSystemFinder', 'horizon.contrib.staticfiles.finders.HorizonStaticFinder', 'compressor.finders.CompressorFinder', ) COMPRESS_PRECOMPILERS = ( ('text/scss', 'horizon.utils.scss_filter.HorizonScssFilter'), ) COMPRESS_CSS_FILTERS = ( 'compressor.filters.css_default.CssAbsoluteFilter', ) COMPRESS_ENABLED = True COMPRESS_OUTPUT_DIR = 'dashboard' COMPRESS_CSS_HASHING_METHOD = 'hash' COMPRESS_PARSER = 'compressor.parser.HtmlParser' INSTALLED_APPS = [ 'openstack_dashboard', 'django.contrib.contenttypes', 'django.contrib.auth', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.humanize', 'django_pyscss', 'debreach', 'openstack_dashboard.django_pyscss_fix', 'compressor', 'horizon', 'openstack_auth', ] AUTHENTICATION_BACKENDS = ('openstack_auth.backend.KeystoneBackend',) AUTHENTICATION_URLS = ['openstack_auth.urls'] AUTH_USER_MODEL = 'openstack_auth.User' MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage' SESSION_ENGINE = 'django.contrib.sessions.backends.cache' CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211', }, } SESSION_COOKIE_HTTPONLY = True SESSION_EXPIRE_AT_BROWSER_CLOSE = True SESSION_COOKIE_SECURE = False # Control whether the SESSION_TIMEOUT period is refreshed due to activity. If # False, SESSION_TIMEOUT acts as a hard limit. SESSION_REFRESH = True # This SESSION_TIMEOUT is a method to supercede the token timeout with a # shorter horizon session timeout (in seconds). If SESSION_REFRESH is True (the # default) SESSION_TIMEOUT acts like an idle timeout rather than being a hard # limit, but will never exceed the token expiry. If your token expires in 60 # minutes, a value of 1800 will log users out after 30 minutes of inactivity, # or 60 minutes with activity. Setting SESSION_REFRESH to False will make # SESSION_TIMEOUT act like a hard limit on session times. SESSION_TIMEOUT = 3600 # When using cookie-based sessions, log error when the session cookie exceeds # the following size (common browsers drop cookies above a certain size): SESSION_COOKIE_MAX_SIZE = 4093 # when doing upgrades, it may be wise to stick to PickleSerializer # NOTE(berendt): Check during the K-cycle if this variable can be removed. # https://bugs.launchpad.net/horizon/+bug/1349463 SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer' # MEMOIZED_MAX_SIZE_DEFAULT allows setting a global default to help control # memory usage when caching. It should at least be 2 x the number of threads # with a little bit of extra buffer. MEMOIZED_MAX_SIZE_DEFAULT = 25 CSRF_FAILURE_VIEW = 'openstack_dashboard.views.csrf_failure' LANGUAGES = ( ('cs', 'Czech'), ('de', 'German'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('fr', 'French'), ('id', 'Indonesian'), ('it', 'Italian'), ('ja', 'Japanese'), ('ko', 'Korean (Korea)'), ('pl', 'Polish'), ('pt-br', 'Portuguese (Brazil)'), ('ru', 'Russian'), ('tr', 'Turkish'), ('zh-cn', 'Simplified Chinese'), ('zh-tw', 'Chinese (Taiwan)'), ) LANGUAGE_CODE = 'en' LANGUAGE_COOKIE_NAME = 'horizon_language' USE_I18N = True USE_L10N = True USE_TZ = True # Set OPENSTACK_CLOUDS_YAML_NAME to provide a nicer name for this cloud for # the clouds.yaml file than "openstack". OPENSTACK_CLOUDS_YAML_NAME = 'openstack' # If this cloud has a vendor profile in os-client-config, put it's name here. OPENSTACK_CLOUDS_YAML_PROFILE = '' OPENSTACK_KEYSTONE_DEFAULT_ROLE = '_member_' DEFAULT_EXCEPTION_REPORTER_FILTER = 'horizon.exceptions.HorizonReporterFilter' POLICY_FILES_PATH = os.path.join(ROOT_PATH, "conf") # Map of local copy of service policy files POLICY_FILES = { 'identity': 'keystone_policy.json', 'compute': 'nova_policy.json', 'volume': 'cinder_policy.json', 'image': 'glance_policy.json', 'network': 'neutron_policy.json', } # Services for which horizon has extra policies are defined # in POLICY_DIRS by default. POLICY_DIRS = { 'compute': ['nova_policy.d'], 'volume': ['cinder_policy.d'], } SECRET_KEY = None LOCAL_PATH = None SECURITY_GROUP_RULES = { 'all_tcp': { 'name': _('All TCP'), 'ip_protocol': 'tcp', 'from_port': '1', 'to_port': '65535', }, 'all_udp': { 'name': _('All UDP'), 'ip_protocol': 'udp', 'from_port': '1', 'to_port': '65535', }, 'all_icmp': { 'name': _('All ICMP'), 'ip_protocol': 'icmp', 'from_port': '-1', 'to_port': '-1', }, } ADD_INSTALLED_APPS = [] # NOTE: The default value of USER_MENU_LINKS will be set after loading # local_settings if it is not configured. USER_MENU_LINKS = None # 'key', 'label', 'path' AVAILABLE_THEMES = [ ( 'default', pgettext_lazy('Default style theme', 'Default'), 'themes/default' ), ( 'material', pgettext_lazy("Google's Material Design style theme", "Material"), 'themes/material' ), ] # The default theme if no cookie is present DEFAULT_THEME = 'default' # Theme Static Directory THEME_COLLECTION_DIR = 'themes' # Theme Cookie Name THEME_COOKIE_NAME = 'theme' POLICY_CHECK_FUNCTION = 'openstack_auth.policy.check' CSRF_COOKIE_AGE = None COMPRESS_OFFLINE_CONTEXT = 'horizon.themes.offline_context' SHOW_KEYSTONE_V2_RC = False SHOW_OPENRC_FILE = True SHOW_OPENSTACK_CLOUDS_YAML = True # Dictionary of currently available angular features ANGULAR_FEATURES = { 'images_panel': True, 'key_pairs_panel': True, 'flavors_panel': False, 'domains_panel': False, 'users_panel': False, 'groups_panel': False, 'roles_panel': True } # Notice all customizable configurations should be above this line XSTATIC_MODULES = settings_utils.BASE_XSTATIC_MODULES OPENSTACK_PROFILER = { 'enabled': False } if not LOCAL_PATH: LOCAL_PATH = os.path.join(ROOT_PATH, 'local') LOCAL_SETTINGS_DIR_PATH = os.path.join(LOCAL_PATH, "local_settings.d") _files = glob.glob(os.path.join(LOCAL_PATH, 'local_settings.conf')) _files.extend( sorted(glob.glob(os.path.join(LOCAL_SETTINGS_DIR_PATH, '*.conf')))) _config = config.load_config(_files, ROOT_PATH, LOCAL_PATH) # Apply the general configuration. config.apply_config(_config, globals()) try: from local.local_settings import * # noqa: F403,H303 except ImportError: _LOG.warning("No local_settings file found.") # configure templates if not TEMPLATES[0]['DIRS']: TEMPLATES[0]['DIRS'] = [os.path.join(ROOT_PATH, 'templates')] TEMPLATES[0]['DIRS'] += ADD_TEMPLATE_DIRS # configure template debugging TEMPLATES[0]['OPTIONS']['debug'] = DEBUG # Template loaders if DEBUG: TEMPLATES[0]['OPTIONS']['loaders'].extend( CACHED_TEMPLATE_LOADERS + ADD_TEMPLATE_LOADERS ) else: TEMPLATES[0]['OPTIONS']['loaders'].extend( [('django.template.loaders.cached.Loader', CACHED_TEMPLATE_LOADERS)] + ADD_TEMPLATE_LOADERS ) # allow to drop settings snippets into a local_settings_dir LOCAL_SETTINGS_DIR_PATH = os.path.join(ROOT_PATH, "local", "local_settings.d") if os.path.exists(LOCAL_SETTINGS_DIR_PATH): for (dirpath, dirnames, filenames) in os.walk(LOCAL_SETTINGS_DIR_PATH): for filename in sorted(filenames): if filename.endswith(".py"): try: with open(os.path.join(dirpath, filename)) as f: # pylint: disable=exec-used exec(f.read()) except Exception as e: _LOG.exception( "Can not exec settings snippet %s", filename) # The purpose of OPENSTACK_IMAGE_FORMATS is to provide a simple object # that does not contain the lazy-loaded translations, so the list can # be sent as JSON to the client-side (Angular). OPENSTACK_IMAGE_FORMATS = [fmt for (fmt, name) in OPENSTACK_IMAGE_BACKEND['image_formats']] if USER_MENU_LINKS is None: USER_MENU_LINKS = [] if SHOW_KEYSTONE_V2_RC: USER_MENU_LINKS.append({ 'name': _('OpenStack RC File v2'), 'icon_classes': ['fa-download', ], 'url': 'horizon:project:api_access:openrcv2', }) if SHOW_OPENRC_FILE: USER_MENU_LINKS.append({ 'name': (_('OpenStack RC File v3') if SHOW_KEYSTONE_V2_RC else _('OpenStack RC File')), 'icon_classes': ['fa-download', ], 'url': 'horizon:project:api_access:openrc', }) if not WEBROOT.endswith('/'): WEBROOT += '/' if LOGIN_URL is None: LOGIN_URL = WEBROOT + 'auth/login/' if LOGOUT_URL is None: LOGOUT_URL = WEBROOT + 'auth/logout/' if LOGIN_ERROR is None: LOGIN_ERROR = WEBROOT + 'auth/error/' if LOGIN_REDIRECT_URL is None: LOGIN_REDIRECT_URL = WEBROOT if MEDIA_ROOT is None: MEDIA_ROOT = os.path.abspath(os.path.join(ROOT_PATH, '..', 'media')) if MEDIA_URL is None: MEDIA_URL = WEBROOT + 'media/' if STATIC_ROOT is None: STATIC_ROOT = os.path.abspath(os.path.join(ROOT_PATH, '..', 'static')) if STATIC_URL is None: STATIC_URL = WEBROOT + 'static/' AVAILABLE_THEMES, SELECTABLE_THEMES, DEFAULT_THEME = ( theme_settings.get_available_themes( AVAILABLE_THEMES, DEFAULT_THEME, SELECTABLE_THEMES ) ) # Discover all the directories that contain static files STATICFILES_DIRS = theme_settings.get_theme_static_dirs( AVAILABLE_THEMES, THEME_COLLECTION_DIR, ROOT_PATH) # Ensure that we always have a SECRET_KEY set, even when no local_settings.py # file is present. See local_settings.py.example for full documentation on the # horizon.utils.secret_key module and its use. if not SECRET_KEY: if not LOCAL_PATH: LOCAL_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'local') # pylint: disable=ungrouped-imports from horizon.utils import secret_key SECRET_KEY = secret_key.generate_or_read_from_file(os.path.join(LOCAL_PATH, '.secret_key_store')) # populate HORIZON_CONFIG with auto-discovered JavaScript sources, mock files, # specs files and external templates. settings_utils.find_static_files(HORIZON_CONFIG, AVAILABLE_THEMES, THEME_COLLECTION_DIR, ROOT_PATH) INSTALLED_APPS = list(INSTALLED_APPS) # Make sure it's mutable settings_utils.update_dashboards( [ enabled, local_enabled, ], HORIZON_CONFIG, INSTALLED_APPS, ) INSTALLED_APPS[0:0] = ADD_INSTALLED_APPS NG_TEMPLATE_CACHE_AGE = NG_TEMPLATE_CACHE_AGE if not DEBUG else 0 # Include xstatic_modules specified in plugin XSTATIC_MODULES += HORIZON_CONFIG['xstatic_modules'] # Discover all the xstatic module entry points to embed in our HTML STATICFILES_DIRS += settings_utils.get_xstatic_dirs( XSTATIC_MODULES, HORIZON_CONFIG) # This base context objects gets added to the offline context generator # for each theme configured. HORIZON_COMPRESS_OFFLINE_CONTEXT_BASE = { 'WEBROOT': WEBROOT, 'STATIC_URL': STATIC_URL, 'HORIZON_CONFIG': HORIZON_CONFIG, 'NG_TEMPLATE_CACHE_AGE': NG_TEMPLATE_CACHE_AGE, } if DEBUG: logging.basicConfig(level=logging.DEBUG) # Here comes the Django settings deprecation section. Being at the very end # of settings.py allows it to catch the settings defined in local_settings.py # or inside one of local_settings.d/ snippets.
Aryia-Behroziuan
Quickstart tutorial Prerequisites Before reading this tutorial you should know a bit of Python. If you would like to refresh your memory, take a look at the Python tutorial. If you wish to work the examples in this tutorial, you must also have some software installed on your computer. Please see https://scipy.org/install.html for instructions. Learner profile This tutorial is intended as a quick overview of algebra and arrays in NumPy and want to understand how n-dimensional (n>=2) arrays are represented and can be manipulated. In particular, if you don’t know how to apply common functions to n-dimensional arrays (without using for-loops), or if you want to understand axis and shape properties for n-dimensional arrays, this tutorial might be of help. Learning Objectives After this tutorial, you should be able to: Understand the difference between one-, two- and n-dimensional arrays in NumPy; Understand how to apply some linear algebra operations to n-dimensional arrays without using for-loops; Understand axis and shape properties for n-dimensional arrays. The Basics NumPy’s main object is the homogeneous multidimensional array. It is a table of elements (usually numbers), all of the same type, indexed by a tuple of non-negative integers. In NumPy dimensions are called axes. For example, the coordinates of a point in 3D space [1, 2, 1] has one axis. That axis has 3 elements in it, so we say it has a length of 3. In the example pictured below, the array has 2 axes. The first axis has a length of 2, the second axis has a length of 3. [[ 1., 0., 0.], [ 0., 1., 2.]] NumPy’s array class is called ndarray. It is also known by the alias array. Note that numpy.array is not the same as the Standard Python Library class array.array, which only handles one-dimensional arrays and offers less functionality. The more important attributes of an ndarray object are: ndarray.ndim the number of axes (dimensions) of the array. ndarray.shape the dimensions of the array. This is a tuple of integers indicating the size of the array in each dimension. For a matrix with n rows and m columns, shape will be (n,m). The length of the shape tuple is therefore the number of axes, ndim. ndarray.size the total number of elements of the array. This is equal to the product of the elements of shape. ndarray.dtype an object describing the type of the elements in the array. One can create or specify dtype’s using standard Python types. Additionally NumPy provides types of its own. numpy.int32, numpy.int16, and numpy.float64 are some examples. ndarray.itemsize the size in bytes of each element of the array. For example, an array of elements of type float64 has itemsize 8 (=64/8), while one of type complex32 has itemsize 4 (=32/8). It is equivalent to ndarray.dtype.itemsize. ndarray.data the buffer containing the actual elements of the array. Normally, we won’t need to use this attribute because we will access the elements in an array using indexing facilities. An example >>> import numpy as np a = np.arange(15).reshape(3, 5) a array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14]]) a.shape (3, 5) a.ndim 2 a.dtype.name 'int64' a.itemsize 8 a.size 15 type(a) <class 'numpy.ndarray'> b = np.array([6, 7, 8]) b array([6, 7, 8]) type(b) <class 'numpy.ndarray'> Array Creation There are several ways to create arrays. For example, you can create an array from a regular Python list or tuple using the array function. The type of the resulting array is deduced from the type of the elements in the sequences. >>> >>> import numpy as np >>> a = np.array([2,3,4]) >>> a array([2, 3, 4]) >>> a.dtype dtype('int64') >>> b = np.array([1.2, 3.5, 5.1]) >>> b.dtype dtype('float64') A frequent error consists in calling array with multiple arguments, rather than providing a single sequence as an argument. >>> >>> a = np.array(1,2,3,4) # WRONG Traceback (most recent call last): ... TypeError: array() takes from 1 to 2 positional arguments but 4 were given >>> a = np.array([1,2,3,4]) # RIGHT array transforms sequences of sequences into two-dimensional arrays, sequences of sequences of sequences into three-dimensional arrays, and so on. >>> >>> b = np.array([(1.5,2,3), (4,5,6)]) >>> b array([[1.5, 2. , 3. ], [4. , 5. , 6. ]]) The type of the array can also be explicitly specified at creation time: >>> >>> c = np.array( [ [1,2], [3,4] ], dtype=complex ) >>> c array([[1.+0.j, 2.+0.j], [3.+0.j, 4.+0.j]]) Often, the elements of an array are originally unknown, but its size is known. Hence, NumPy offers several functions to create arrays with initial placeholder content. These minimize the necessity of growing arrays, an expensive operation. The function zeros creates an array full of zeros, the function ones creates an array full of ones, and the function empty creates an array whose initial content is random and depends on the state of the memory. By default, the dtype of the created array is float64. >>> >>> np.zeros((3, 4)) array([[0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.]]) >>> np.ones( (2,3,4), dtype=np.int16 ) # dtype can also be specified array([[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]], [[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]], dtype=int16) >>> np.empty( (2,3) ) # uninitialized array([[ 3.73603959e-262, 6.02658058e-154, 6.55490914e-260], # may vary [ 5.30498948e-313, 3.14673309e-307, 1.00000000e+000]]) To create sequences of numbers, NumPy provides the arange function which is analogous to the Python built-in range, but returns an array. >>> >>> np.arange( 10, 30, 5 ) array([10, 15, 20, 25]) >>> np.arange( 0, 2, 0.3 ) # it accepts float arguments array([0. , 0.3, 0.6, 0.9, 1.2, 1.5, 1.8]) When arange is used with floating point arguments, it is generally not possible to predict the number of elements obtained, due to the finite floating point precision. For this reason, it is usually better to use the function linspace that receives as an argument the number of elements that we want, instead of the step: >>> >>> from numpy import pi >>> np.linspace( 0, 2, 9 ) # 9 numbers from 0 to 2 array([0. , 0.25, 0.5 , 0.75, 1. , 1.25, 1.5 , 1.75, 2. ]) >>> x = np.linspace( 0, 2*pi, 100 ) # useful to evaluate function at lots of points >>> f = np.sin(x) See also array, zeros, zeros_like, ones, ones_like, empty, empty_like, arange, linspace, numpy.random.Generator.rand, numpy.random.Generator.randn, fromfunction, fromfile Printing Arrays When you print an array, NumPy displays it in a similar way to nested lists, but with the following layout: the last axis is printed from left to right, the second-to-last is printed from top to bottom, the rest are also printed from top to bottom, with each slice separated from the next by an empty line. One-dimensional arrays are then printed as rows, bidimensionals as matrices and tridimensionals as lists of matrices. >>> >>> a = np.arange(6) # 1d array >>> print(a) [0 1 2 3 4 5] >>> >>> b = np.arange(12).reshape(4,3) # 2d array >>> print(b) [[ 0 1 2] [ 3 4 5] [ 6 7 8] [ 9 10 11]] >>> >>> c = np.arange(24).reshape(2,3,4) # 3d array >>> print(c) [[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] [[12 13 14 15] [16 17 18 19] [20 21 22 23]]] See below to get more details on reshape. If an array is too large to be printed, NumPy automatically skips the central part of the array and only prints the corners: >>> >>> print(np.arange(10000)) [ 0 1 2 ... 9997 9998 9999] >>> >>> print(np.arange(10000).reshape(100,100)) [[ 0 1 2 ... 97 98 99] [ 100 101 102 ... 197 198 199] [ 200 201 202 ... 297 298 299] ... [9700 9701 9702 ... 9797 9798 9799] [9800 9801 9802 ... 9897 9898 9899] [9900 9901 9902 ... 9997 9998 9999]] To disable this behaviour and force NumPy to print the entire array, you can change the printing options using set_printoptions. >>> >>> np.set_printoptions(threshold=sys.maxsize) # sys module should be imported Basic Operations Arithmetic operators on arrays apply elementwise. A new array is created and filled with the result. >>> >>> a = np.array( [20,30,40,50] ) >>> b = np.arange( 4 ) >>> b array([0, 1, 2, 3]) >>> c = a-b >>> c array([20, 29, 38, 47]) >>> b**2 array([0, 1, 4, 9]) >>> 10*np.sin(a) array([ 9.12945251, -9.88031624, 7.4511316 , -2.62374854]) >>> a<35 array([ True, True, False, False]) Unlike in many matrix languages, the product operator * operates elementwise in NumPy arrays. The matrix product can be performed using the @ operator (in python >=3.5) or the dot function or method: >>> >>> A = np.array( [[1,1], ... [0,1]] ) >>> B = np.array( [[2,0], ... [3,4]] ) >>> A * B # elementwise product array([[2, 0], [0, 4]]) >>> A @ B # matrix product array([[5, 4], [3, 4]]) >>> A.dot(B) # another matrix product array([[5, 4], [3, 4]]) Some operations, such as += and *=, act in place to modify an existing array rather than create a new one. >>> >>> rg = np.random.default_rng(1) # create instance of default random number generator >>> a = np.ones((2,3), dtype=int) >>> b = rg.random((2,3)) >>> a *= 3 >>> a array([[3, 3, 3], [3, 3, 3]]) >>> b += a >>> b array([[3.51182162, 3.9504637 , 3.14415961], [3.94864945, 3.31183145, 3.42332645]]) >>> a += b # b is not automatically converted to integer type Traceback (most recent call last): ... numpy.core._exceptions.UFuncTypeError: Cannot cast ufunc 'add' output from dtype('float64') to dtype('int64') with casting rule 'same_kind' When operating with arrays of different types, the type of the resulting array corresponds to the more general or precise one (a behavior known as upcasting). >>> >>> a = np.ones(3, dtype=np.int32) >>> b = np.linspace(0,pi,3) >>> b.dtype.name 'float64' >>> c = a+b >>> c array([1. , 2.57079633, 4.14159265]) >>> c.dtype.name 'float64' >>> d = np.exp(c*1j) >>> d array([ 0.54030231+0.84147098j, -0.84147098+0.54030231j, -0.54030231-0.84147098j]) >>> d.dtype.name 'complex128' Many unary operations, such as computing the sum of all the elements in the array, are implemented as methods of the ndarray class. >>> >>> a = rg.random((2,3)) >>> a array([[0.82770259, 0.40919914, 0.54959369], [0.02755911, 0.75351311, 0.53814331]]) >>> a.sum() 3.1057109529998157 >>> a.min() 0.027559113243068367 >>> a.max() 0.8277025938204418 By default, these operations apply to the array as though it were a list of numbers, regardless of its shape. However, by specifying the axis parameter you can apply an operation along the specified axis of an array: >>> >>> b = np.arange(12).reshape(3,4) >>> b array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) >>> >>> b.sum(axis=0) # sum of each column array([12, 15, 18, 21]) >>> >>> b.min(axis=1) # min of each row array([0, 4, 8]) >>> >>> b.cumsum(axis=1) # cumulative sum along each row array([[ 0, 1, 3, 6], [ 4, 9, 15, 22], [ 8, 17, 27, 38]]) Universal Functions NumPy provides familiar mathematical functions such as sin, cos, and exp. In NumPy, these are called “universal functions”(ufunc). Within NumPy, these functions operate elementwise on an array, producing an array as output. >>> >>> B = np.arange(3) >>> B array([0, 1, 2]) >>> np.exp(B) array([1. , 2.71828183, 7.3890561 ]) >>> np.sqrt(B) array([0. , 1. , 1.41421356]) >>> C = np.array([2., -1., 4.]) >>> np.add(B, C) array([2., 0., 6.]) See also all, any, apply_along_axis, argmax, argmin, argsort, average, bincount, ceil, clip, conj, corrcoef, cov, cross, cumprod, cumsum, diff, dot, floor, inner, invert, lexsort, max, maximum, mean, median, min, minimum, nonzero, outer, prod, re, round, sort, std, sum, trace, transpose, var, vdot, vectorize, where Indexing, Slicing and Iterating One-dimensional arrays can be indexed, sliced and iterated over, much like lists and other Python sequences. >>> >>> a = np.arange(10)**3 >>> a array([ 0, 1, 8, 27, 64, 125, 216, 343, 512, 729]) >>> a[2] 8 >>> a[2:5] array([ 8, 27, 64]) # equivalent to a[0:6:2] = 1000; # from start to position 6, exclusive, set every 2nd element to 1000 >>> a[:6:2] = 1000 >>> a array([1000, 1, 1000, 27, 1000, 125, 216, 343, 512, 729]) >>> a[ : :-1] # reversed a array([ 729, 512, 343, 216, 125, 1000, 27, 1000, 1, 1000]) >>> for i in a: ... print(i**(1/3.)) ... 9.999999999999998 1.0 9.999999999999998 3.0 9.999999999999998 4.999999999999999 5.999999999999999 6.999999999999999 7.999999999999999 8.999999999999998 Multidimensional arrays can have one index per axis. These indices are given in a tuple separated by commas: >>> >>> def f(x,y): ... return 10*x+y ... >>> b = np.fromfunction(f,(5,4),dtype=int) >>> b array([[ 0, 1, 2, 3], [10, 11, 12, 13], [20, 21, 22, 23], [30, 31, 32, 33], [40, 41, 42, 43]]) >>> b[2,3] 23 >>> b[0:5, 1] # each row in the second column of b array([ 1, 11, 21, 31, 41]) >>> b[ : ,1] # equivalent to the previous example array([ 1, 11, 21, 31, 41]) >>> b[1:3, : ] # each column in the second and third row of b array([[10, 11, 12, 13], [20, 21, 22, 23]]) When fewer indices are provided than the number of axes, the missing indices are considered complete slices: >>> >>> b[-1] # the last row. Equivalent to b[-1,:] array([40, 41, 42, 43]) The expression within brackets in b[i] is treated as an i followed by as many instances of : as needed to represent the remaining axes. NumPy also allows you to write this using dots as b[i,...]. The dots (...) represent as many colons as needed to produce a complete indexing tuple. For example, if x is an array with 5 axes, then x[1,2,...] is equivalent to x[1,2,:,:,:], x[...,3] to x[:,:,:,:,3] and x[4,...,5,:] to x[4,:,:,5,:]. >>> >>> c = np.array( [[[ 0, 1, 2], # a 3D array (two stacked 2D arrays) ... [ 10, 12, 13]], ... [[100,101,102], ... [110,112,113]]]) >>> c.shape (2, 2, 3) >>> c[1,...] # same as c[1,:,:] or c[1] array([[100, 101, 102], [110, 112, 113]]) >>> c[...,2] # same as c[:,:,2] array([[ 2, 13], [102, 113]]) Iterating over multidimensional arrays is done with respect to the first axis: >>> >>> for row in b: ... print(row) ... [0 1 2 3] [10 11 12 13] [20 21 22 23] [30 31 32 33] [40 41 42 43] However, if one wants to perform an operation on each element in the array, one can use the flat attribute which is an iterator over all the elements of the array: >>> >>> for element in b.flat: ... print(element) ... 0 1 2 3 10 11 12 13 20 21 22 23 30 31 32 33 40 41 42 43 See also Indexing, Indexing (reference), newaxis, ndenumerate, indices Shape Manipulation Changing the shape of an array An array has a shape given by the number of elements along each axis: >>> >>> a = np.floor(10*rg.random((3,4))) >>> a array([[3., 7., 3., 4.], [1., 4., 2., 2.], [7., 2., 4., 9.]]) >>> a.shape (3, 4) The shape of an array can be changed with various commands. Note that the following three commands all return a modified array, but do not change the original array: >>> >>> a.ravel() # returns the array, flattened array([3., 7., 3., 4., 1., 4., 2., 2., 7., 2., 4., 9.]) >>> a.reshape(6,2) # returns the array with a modified shape array([[3., 7.], [3., 4.], [1., 4.], [2., 2.], [7., 2.], [4., 9.]]) >>> a.T # returns the array, transposed array([[3., 1., 7.], [7., 4., 2.], [3., 2., 4.], [4., 2., 9.]]) >>> a.T.shape (4, 3) >>> a.shape (3, 4) The order of the elements in the array resulting from ravel() is normally “C-style”, that is, the rightmost index “changes the fastest”, so the element after a[0,0] is a[0,1]. If the array is reshaped to some other shape, again the array is treated as “C-style”. NumPy normally creates arrays stored in this order, so ravel() will usually not need to copy its argument, but if the array was made by taking slices of another array or created with unusual options, it may need to be copied. The functions ravel() and reshape() can also be instructed, using an optional argument, to use FORTRAN-style arrays, in which the leftmost index changes the fastest. The reshape function returns its argument with a modified shape, whereas the ndarray.resize method modifies the array itself: >>> >>> a array([[3., 7., 3., 4.], [1., 4., 2., 2.], [7., 2., 4., 9.]]) >>> a.resize((2,6)) >>> a array([[3., 7., 3., 4., 1., 4.], [2., 2., 7., 2., 4., 9.]]) If a dimension is given as -1 in a reshaping operation, the other dimensions are automatically calculated: >>> >>> a.reshape(3,-1) array([[3., 7., 3., 4.], [1., 4., 2., 2.], [7., 2., 4., 9.]]) See also ndarray.shape, reshape, resize, ravel Stacking together different arrays Several arrays can be stacked together along different axes: >>> >>> a = np.floor(10*rg.random((2,2))) >>> a array([[9., 7.], [5., 2.]]) >>> b = np.floor(10*rg.random((2,2))) >>> b array([[1., 9.], [5., 1.]]) >>> np.vstack((a,b)) array([[9., 7.], [5., 2.], [1., 9.], [5., 1.]]) >>> np.hstack((a,b)) array([[9., 7., 1., 9.], [5., 2., 5., 1.]]) The function column_stack stacks 1D arrays as columns into a 2D array. It is equivalent to hstack only for 2D arrays: >>> >>> from numpy import newaxis >>> np.column_stack((a,b)) # with 2D arrays array([[9., 7., 1., 9.], [5., 2., 5., 1.]]) >>> a = np.array([4.,2.]) >>> b = np.array([3.,8.]) >>> np.column_stack((a,b)) # returns a 2D array array([[4., 3.], [2., 8.]]) >>> np.hstack((a,b)) # the result is different array([4., 2., 3., 8.]) >>> a[:,newaxis] # view `a` as a 2D column vector array([[4.], [2.]]) >>> np.column_stack((a[:,newaxis],b[:,newaxis])) array([[4., 3.], [2., 8.]]) >>> np.hstack((a[:,newaxis],b[:,newaxis])) # the result is the same array([[4., 3.], [2., 8.]]) On the other hand, the function row_stack is equivalent to vstack for any input arrays. In fact, row_stack is an alias for vstack: >>> >>> np.column_stack is np.hstack False >>> np.row_stack is np.vstack True In general, for arrays with more than two dimensions, hstack stacks along their second axes, vstack stacks along their first axes, and concatenate allows for an optional arguments giving the number of the axis along which the concatenation should happen. Note In complex cases, r_ and c_ are useful for creating arrays by stacking numbers along one axis. They allow the use of range literals (“:”) >>> >>> np.r_[1:4,0,4] array([1, 2, 3, 0, 4]) When used with arrays as arguments, r_ and c_ are similar to vstack and hstack in their default behavior, but allow for an optional argument giving the number of the axis along which to concatenate. See also hstack, vstack, column_stack, concatenate, c_, r_ Splitting one array into several smaller ones Using hsplit, you can split an array along its horizontal axis, either by specifying the number of equally shaped arrays to return, or by specifying the columns after which the division should occur: >>> >>> a = np.floor(10*rg.random((2,12))) >>> a array([[6., 7., 6., 9., 0., 5., 4., 0., 6., 8., 5., 2.], [8., 5., 5., 7., 1., 8., 6., 7., 1., 8., 1., 0.]]) # Split a into 3 >>> np.hsplit(a,3) [array([[6., 7., 6., 9.], [8., 5., 5., 7.]]), array([[0., 5., 4., 0.], [1., 8., 6., 7.]]), array([[6., 8., 5., 2.], [1., 8., 1., 0.]])] # Split a after the third and the fourth column >>> np.hsplit(a,(3,4)) [array([[6., 7., 6.], [8., 5., 5.]]), array([[9.], [7.]]), array([[0., 5., 4., 0., 6., 8., 5., 2.], [1., 8., 6., 7., 1., 8., 1., 0.]])] vsplit splits along the vertical axis, and array_split allows one to specify along which axis to split. Copies and Views When operating and manipulating arrays, their data is sometimes copied into a new array and sometimes not. This is often a source of confusion for beginners. There are three cases: No Copy at All Simple assignments make no copy of objects or their data. >>> >>> a = np.array([[ 0, 1, 2, 3], ... [ 4, 5, 6, 7], ... [ 8, 9, 10, 11]]) >>> b = a # no new object is created >>> b is a # a and b are two names for the same ndarray object True Python passes mutable objects as references, so function calls make no copy. >>> >>> def f(x): ... print(id(x)) ... >>> id(a) # id is a unique identifier of an object 148293216 # may vary >>> f(a) 148293216 # may vary View or Shallow Copy Different array objects can share the same data. The view method creates a new array object that looks at the same data. >>> >>> c = a.view() >>> c is a False >>> c.base is a # c is a view of the data owned by a True >>> c.flags.owndata False >>> >>> c = c.reshape((2, 6)) # a's shape doesn't change >>> a.shape (3, 4) >>> c[0, 4] = 1234 # a's data changes >>> a array([[ 0, 1, 2, 3], [1234, 5, 6, 7], [ 8, 9, 10, 11]]) Slicing an array returns a view of it: >>> >>> s = a[ : , 1:3] # spaces added for clarity; could also be written "s = a[:, 1:3]" >>> s[:] = 10 # s[:] is a view of s. Note the difference between s = 10 and s[:] = 10 >>> a array([[ 0, 10, 10, 3], [1234, 10, 10, 7], [ 8, 10, 10, 11]]) Deep Copy The copy method makes a complete copy of the array and its data. >>> >>> d = a.copy() # a new array object with new data is created >>> d is a False >>> d.base is a # d doesn't share anything with a False >>> d[0,0] = 9999 >>> a array([[ 0, 10, 10, 3], [1234, 10, 10, 7], [ 8, 10, 10, 11]]) Sometimes copy should be called after slicing if the original array is not required anymore. For example, suppose a is a huge intermediate result and the final result b only contains a small fraction of a, a deep copy should be made when constructing b with slicing: >>> >>> a = np.arange(int(1e8)) >>> b = a[:100].copy() >>> del a # the memory of ``a`` can be released. If b = a[:100] is used instead, a is referenced by b and will persist in memory even if del a is executed. Functions and Methods Overview Here is a list of some useful NumPy functions and methods names ordered in categories. See Routines for the full list. Array Creation arange, array, copy, empty, empty_like, eye, fromfile, fromfunction, identity, linspace, logspace, mgrid, ogrid, ones, ones_like, r_, zeros, zeros_like Conversions ndarray.astype, atleast_1d, atleast_2d, atleast_3d, mat Manipulations array_split, column_stack, concatenate, diagonal, dsplit, dstack, hsplit, hstack, ndarray.item, newaxis, ravel, repeat, reshape, resize, squeeze, swapaxes, take, transpose, vsplit, vstack Questions all, any, nonzero, where Ordering argmax, argmin, argsort, max, min, ptp, searchsorted, sort Operations choose, compress, cumprod, cumsum, inner, ndarray.fill, imag, prod, put, putmask, real, sum Basic Statistics cov, mean, std, var Basic Linear Algebra cross, dot, outer, linalg.svd, vdot Less Basic Broadcasting rules Broadcasting allows universal functions to deal in a meaningful way with inputs that do not have exactly the same shape. The first rule of broadcasting is that if all input arrays do not have the same number of dimensions, a “1” will be repeatedly prepended to the shapes of the smaller arrays until all the arrays have the same number of dimensions. The second rule of broadcasting ensures that arrays with a size of 1 along a particular dimension act as if they had the size of the array with the largest shape along that dimension. The value of the array element is assumed to be the same along that dimension for the “broadcast” array. After application of the broadcasting rules, the sizes of all arrays must match. More details can be found in Broadcasting. Advanced indexing and index tricks NumPy offers more indexing facilities than regular Python sequences. In addition to indexing by integers and slices, as we saw before, arrays can be indexed by arrays of integers and arrays of booleans. Indexing with Arrays of Indices >>> >>> a = np.arange(12)**2 # the first 12 square numbers >>> i = np.array([1, 1, 3, 8, 5]) # an array of indices >>> a[i] # the elements of a at the positions i array([ 1, 1, 9, 64, 25]) >>> >>> j = np.array([[3, 4], [9, 7]]) # a bidimensional array of indices >>> a[j] # the same shape as j array([[ 9, 16], [81, 49]]) When the indexed array a is multidimensional, a single array of indices refers to the first dimension of a. The following example shows this behavior by converting an image of labels into a color image using a palette. >>> >>> palette = np.array([[0, 0, 0], # black ... [255, 0, 0], # red ... [0, 255, 0], # green ... [0, 0, 255], # blue ... [255, 255, 255]]) # white >>> image = np.array([[0, 1, 2, 0], # each value corresponds to a color in the palette ... [0, 3, 4, 0]]) >>> palette[image] # the (2, 4, 3) color image array([[[ 0, 0, 0], [255, 0, 0], [ 0, 255, 0], [ 0, 0, 0]], [[ 0, 0, 0], [ 0, 0, 255], [255, 255, 255], [ 0, 0, 0]]]) We can also give indexes for more than one dimension. The arrays of indices for each dimension must have the same shape. >>> >>> a = np.arange(12).reshape(3,4) >>> a array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) >>> i = np.array([[0, 1], # indices for the first dim of a ... [1, 2]]) >>> j = np.array([[2, 1], # indices for the second dim ... [3, 3]]) >>> >>> a[i, j] # i and j must have equal shape array([[ 2, 5], [ 7, 11]]) >>> >>> a[i, 2] array([[ 2, 6], [ 6, 10]]) >>> >>> a[:, j] # i.e., a[ : , j] array([[[ 2, 1], [ 3, 3]], [[ 6, 5], [ 7, 7]], [[10, 9], [11, 11]]]) In Python, arr[i, j] is exactly the same as arr[(i, j)]—so we can put i and j in a tuple and then do the indexing with that. >>> >>> l = (i, j) # equivalent to a[i, j] >>> a[l] array([[ 2, 5], [ 7, 11]]) However, we can not do this by putting i and j into an array, because this array will be interpreted as indexing the first dimension of a. >>> >>> s = np.array([i, j]) # not what we want >>> a[s] Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: index 3 is out of bounds for axis 0 with size 3 # same as a[i, j] >>> a[tuple(s)] array([[ 2, 5], [ 7, 11]]) Another common use of indexing with arrays is the search of the maximum value of time-dependent series: >>> >>> time = np.linspace(20, 145, 5) # time scale >>> data = np.sin(np.arange(20)).reshape(5,4) # 4 time-dependent series >>> time array([ 20. , 51.25, 82.5 , 113.75, 145. ]) >>> data array([[ 0. , 0.84147098, 0.90929743, 0.14112001], [-0.7568025 , -0.95892427, -0.2794155 , 0.6569866 ], [ 0.98935825, 0.41211849, -0.54402111, -0.99999021], [-0.53657292, 0.42016704, 0.99060736, 0.65028784], [-0.28790332, -0.96139749, -0.75098725, 0.14987721]]) # index of the maxima for each series >>> ind = data.argmax(axis=0) >>> ind array([2, 0, 3, 1]) # times corresponding to the maxima >>> time_max = time[ind] >>> >>> data_max = data[ind, range(data.shape[1])] # => data[ind[0],0], data[ind[1],1]... >>> time_max array([ 82.5 , 20. , 113.75, 51.25]) >>> data_max array([0.98935825, 0.84147098, 0.99060736, 0.6569866 ]) >>> np.all(data_max == data.max(axis=0)) True You can also use indexing with arrays as a target to assign to: >>> >>> a = np.arange(5) >>> a array([0, 1, 2, 3, 4]) >>> a[[1,3,4]] = 0 >>> a array([0, 0, 2, 0, 0]) However, when the list of indices contains repetitions, the assignment is done several times, leaving behind the last value: >>> >>> a = np.arange(5) >>> a[[0,0,2]]=[1,2,3] >>> a array([2, 1, 3, 3, 4]) This is reasonable enough, but watch out if you want to use Python’s += construct, as it may not do what you expect: >>> >>> a = np.arange(5) >>> a[[0,0,2]]+=1 >>> a array([1, 1, 3, 3, 4]) Even though 0 occurs twice in the list of indices, the 0th element is only incremented once. This is because Python requires “a+=1” to be equivalent to “a = a + 1”. Indexing with Boolean Arrays When we index arrays with arrays of (integer) indices we are providing the list of indices to pick. With boolean indices the approach is different; we explicitly choose which items in the array we want and which ones we don’t. The most natural way one can think of for boolean indexing is to use boolean arrays that have the same shape as the original array: >>> >>> a = np.arange(12).reshape(3,4) >>> b = a > 4 >>> b # b is a boolean with a's shape array([[False, False, False, False], [False, True, True, True], [ True, True, True, True]]) >>> a[b] # 1d array with the selected elements array([ 5, 6, 7, 8, 9, 10, 11]) This property can be very useful in assignments: >>> >>> a[b] = 0 # All elements of 'a' higher than 4 become 0 >>> a array([[0, 1, 2, 3], [4, 0, 0, 0], [0, 0, 0, 0]]) You can look at the following example to see how to use boolean indexing to generate an image of the Mandelbrot set: >>> import numpy as np import matplotlib.pyplot as plt def mandelbrot( h,w, maxit=20 ): """Returns an image of the Mandelbrot fractal of size (h,w).""" y,x = np.ogrid[ -1.4:1.4:h*1j, -2:0.8:w*1j ] c = x+y*1j z = c divtime = maxit + np.zeros(z.shape, dtype=int) for i in range(maxit): z = z**2 + c diverge = z*np.conj(z) > 2**2 # who is diverging div_now = diverge & (divtime==maxit) # who is diverging now divtime[div_now] = i # note when z[diverge] = 2 # avoid diverging too much return divtime plt.imshow(mandelbrot(400,400)) ../_images/quickstart-1.png The second way of indexing with booleans is more similar to integer indexing; for each dimension of the array we give a 1D boolean array selecting the slices we want: >>> >>> a = np.arange(12).reshape(3,4) >>> b1 = np.array([False,True,True]) # first dim selection >>> b2 = np.array([True,False,True,False]) # second dim selection >>> >>> a[b1,:] # selecting rows array([[ 4, 5, 6, 7], [ 8, 9, 10, 11]]) >>> >>> a[b1] # same thing array([[ 4, 5, 6, 7], [ 8, 9, 10, 11]]) >>> >>> a[:,b2] # selecting columns array([[ 0, 2], [ 4, 6], [ 8, 10]]) >>> >>> a[b1,b2] # a weird thing to do array([ 4, 10]) Note that the length of the 1D boolean array must coincide with the length of the dimension (or axis) you want to slice. In the previous example, b1 has length 3 (the number of rows in a), and b2 (of length 4) is suitable to index the 2nd axis (columns) of a. The ix_() function The ix_ function can be used to combine different vectors so as to obtain the result for each n-uplet. For example, if you want to compute all the a+b*c for all the triplets taken from each of the vectors a, b and c: >>> >>> a = np.array([2,3,4,5]) >>> b = np.array([8,5,4]) >>> c = np.array([5,4,6,8,3]) >>> ax,bx,cx = np.ix_(a,b,c) >>> ax array([[[2]], [[3]], [[4]], [[5]]]) >>> bx array([[[8], [5], [4]]]) >>> cx array([[[5, 4, 6, 8, 3]]]) >>> ax.shape, bx.shape, cx.shape ((4, 1, 1), (1, 3, 1), (1, 1, 5)) >>> result = ax+bx*cx >>> result array([[[42, 34, 50, 66, 26], [27, 22, 32, 42, 17], [22, 18, 26, 34, 14]], [[43, 35, 51, 67, 27], [28, 23, 33, 43, 18], [23, 19, 27, 35, 15]], [[44, 36, 52, 68, 28], [29, 24, 34, 44, 19], [24, 20, 28, 36, 16]], [[45, 37, 53, 69, 29], [30, 25, 35, 45, 20], [25, 21, 29, 37, 17]]]) >>> result[3,2,4] 17 >>> a[3]+b[2]*c[4] 17 You could also implement the reduce as follows: >>> >>> def ufunc_reduce(ufct, *vectors): ... vs = np.ix_(*vectors) ... r = ufct.identity ... for v in vs: ... r = ufct(r,v) ... return r and then use it as: >>> >>> ufunc_reduce(np.add,a,b,c) array([[[15, 14, 16, 18, 13], [12, 11, 13, 15, 10], [11, 10, 12, 14, 9]], [[16, 15, 17, 19, 14], [13, 12, 14, 16, 11], [12, 11, 13, 15, 10]], [[17, 16, 18, 20, 15], [14, 13, 15, 17, 12], [13, 12, 14, 16, 11]], [[18, 17, 19, 21, 16], [15, 14, 16, 18, 13], [14, 13, 15, 17, 12]]]) The advantage of this version of reduce compared to the normal ufunc.reduce is that it makes use of the Broadcasting Rules in order to avoid creating an argument array the size of the output times the number of vectors. Indexing with strings See Structured arrays. Linear Algebra Work in progress. Basic linear algebra to be included here. Simple Array Operations See linalg.py in numpy folder for more. >>> >>> import numpy as np >>> a = np.array([[1.0, 2.0], [3.0, 4.0]]) >>> print(a) [[1. 2.] [3. 4.]] >>> a.transpose() array([[1., 3.], [2., 4.]]) >>> np.linalg.inv(a) array([[-2. , 1. ], [ 1.5, -0.5]]) >>> u = np.eye(2) # unit 2x2 matrix; "eye" represents "I" >>> u array([[1., 0.], [0., 1.]]) >>> j = np.array([[0.0, -1.0], [1.0, 0.0]]) >>> j @ j # matrix product array([[-1., 0.], [ 0., -1.]]) >>> np.trace(u) # trace 2.0 >>> y = np.array([[5.], [7.]]) >>> np.linalg.solve(a, y) array([[-3.], [ 4.]]) >>> np.linalg.eig(j) (array([0.+1.j, 0.-1.j]), array([[0.70710678+0.j , 0.70710678-0.j ], [0. -0.70710678j, 0. +0.70710678j]])) Parameters: square matrix Returns The eigenvalues, each repeated according to its multiplicity. The normalized (unit "length") eigenvectors, such that the column ``v[:,i]`` is the eigenvector corresponding to the eigenvalue ``w[i]`` . Tricks and Tips Here we give a list of short and useful tips. “Automatic” Reshaping To change the dimensions of an array, you can omit one of the sizes which will then be deduced automatically: >>> >>> a = np.arange(30) >>> b = a.reshape((2, -1, 3)) # -1 means "whatever is needed" >>> b.shape (2, 5, 3) >>> b array([[[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8], [ 9, 10, 11], [12, 13, 14]], [[15, 16, 17], [18, 19, 20], [21, 22, 23], [24, 25, 26], [27, 28, 29]]]) Vector Stacking How do we construct a 2D array from a list of equally-sized row vectors? In MATLAB this is quite easy: if x and y are two vectors of the same length you only need do m=[x;y]. In NumPy this works via the functions column_stack, dstack, hstack and vstack, depending on the dimension in which the stacking is to be done. For example: >>> >>> x = np.arange(0,10,2) >>> y = np.arange(5) >>> m = np.vstack([x,y]) >>> m array([[0, 2, 4, 6, 8], [0, 1, 2, 3, 4]]) >>> xy = np.hstack([x,y]) >>> xy array([0, 2, 4, 6, 8, 0, 1, 2, 3, 4]) The logic behind those functions in more than two dimensions can be strange. See also NumPy for Matlab users Histograms The NumPy histogram function applied to an array returns a pair of vectors: the histogram of the array and a vector of the bin edges. Beware: matplotlib also has a function to build histograms (called hist, as in Matlab) that differs from the one in NumPy. The main difference is that pylab.hist plots the histogram automatically, while numpy.histogram only generates the data. >>> import numpy as np rg = np.random.default_rng(1) import matplotlib.pyplot as plt # Build a vector of 10000 normal deviates with variance 0.5^2 and mean 2 mu, sigma = 2, 0.5 v = rg.normal(mu,sigma,10000) # Plot a normalized histogram with 50 bins plt.hist(v, bins=50, density=1) # matplotlib version (plot) # Compute the histogram with numpy and then plot it (n, bins) = np.histogram(v, bins=50, density=True) # NumPy version (no plot) plt.plot(.5*(bins[1:]+bins[:-1]), n) ../_images/quickstart-2.png Further reading The Python tutorial NumPy Reference SciPy Tutorial SciPy Lecture Notes A matlab, R, IDL, NumPy/SciPy dictionary © Copyright 2008-2020, The SciPy community. Last updated on Jun 29, 2020. Created using Sphinx 2.4.4.
yanyan-li
A simple image generator for NYU2 (labeled dataset), which provides independent images for your evaluation goals.
A stereo speckle images generator based on Newton iteration for any nonlinear displacement. For the research of 3D DIC or other scene flow estimation tasks.
salmankhanafridi122
<h1 align="center">Hi 👋, I'm HACKER-MSK</h1> <h3 align="center">DREAM TO BECOME A TRILLION LIVE IN HELL</h3> <p align="left"> <img src="https://komarev.com/ghpvc/?username=HACKER-MSK&label=Profile%20views&color=0e75b6&style=flat" alt="HACKER-MSK" /> </p> <p align="left"> <a href="https://github.com/ryo-ma/github-profile-trophy"><img src="https://github-profile-trophy.vercel.app/?username=HACKER-MSK" alt="HACKER-MSK" /></a> </p> - 🔭 I’m currenty working on my Facebook cloning projects **Facebook Cloning** - 👨💻 All of my projects are available at [https://github.com/HACKER-MSK](https://github.com/HACKER-MSK) - 📫 How to reach me **https://www.facebook.com/HACKER-MSK - 📄 Know about my experiences [https://www.facebook.com/HACKER-MSK ](https://www.facebook.com/HACKER-MSK) - ⚡ Fun fact **I think I am mad** <h3 align="left">Connect with me:</h3> <p align="left"> <a href="https://fb.com/HACKER-MSK" target="blank"><img align="center" src="https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/facebook.svg" alt="HACKER-MSK" height="30" width="40" /></a> <a href="https://instagram.com/HACKER-MSK" target="blank"><img align="center" src="https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/instagram.svg" alt="HACKER-MSK" height="30" width="40" /></a> </p> <h3 align="left">Languages and Tools:</h3> <p align="left"> <a href="https://developer.android.com" target="_blank"> <img src="https://raw.githubusercontent.com/devicons/devicon/master/icons/android/android-original-wordmark.svg" alt="android" width="40" height="40"/> </a> <a href="https://golang.org" target="_blank"> <img src="https://raw.githubusercontent.com/devicons/devicon/master/icons/go/go-original.svg" alt="go" width="40" height="40"/> </a> <a href="https://www.linux.org/" target="_blank"> <img src="https://raw.githubusercontent.com/devicons/devicon/master/icons/linux/linux-original.svg" alt="linux" width="40" height="40"/> </a> <a href="https://www.python.org" target="_blank"> <img src="https://raw.githubusercontent.com/devicons/devicon/master/icons/python/python-original.svg" alt="python" width="40" height="40"/> </a> <a href="https://unity.com/" target="_blank"> <img src="https://www.vectorlogo.zone/logos/unity3d/unity3d-icon.svg" alt="unity" width="40" height="40"/> </a> </p> <p><img align="left" src="https://github-readme-stats.vercel.app/api/top-langs?username=HACKER-MSK&show_icons=true&locale=en&layout=compact" alt="HACKER-MSK" /></p> <p> <img align="center" src="https://github-readme-stats.vercel.app/api?username=HACKER-MSK&show_icons=true&locale=en" alt="HACKER-MSK" /></p> <p><img align="center" src="https://github-readme-streak-stats.herokuapp.com/?user=HACKER-MSK&" alt="HACKER-MSK" /></p>
Amir-Hofo
This code implements an example of a CGAN deep learning model using PyTorch. The architecture used for the generator and discriminator is MLP (multi layer perceptron) network. This model is trained with MNIST dataset and finally it can generate images of numbers 0 to 9 according to the label we specify for it.
salmankhanafridi122
<h1 align="center">Hi 👋, I'm HACKER-MSK</h1> <h3 align="center">DREAM TO BECOME A TRILLION LIVE IN HELL</h3> <p align="left"> <img src="https://komarev.com/ghpvc/?username=HACKER-MSK&label=Profile%20views&color=0e75b6&style=flat" alt="HACKER-MSK" /> </p> <p align="left"> <a href="https://github.com/ryo-ma/github-profile-trophy"><img src="https://github-profile-trophy.vercel.app/?username=HACKER-MSK" alt="HACKER-MSK" /></a> </p> - 🔭 I’m currenty working on my Facebook cloning projects **Facebook Cloning** - 👨💻 All of my projects are available at [https://github.com/HACKER-MSK](https://github.com/HACKER-MSK) - 📫 How to reach me **https://www.facebook.com/HACKER-MSK - 📄 Know about my experiences [https://www.facebook.com/HACKER-MSK ](https://www.facebook.com/HACKER-MSK) - ⚡ Fun fact **I think I am mad** <h3 align="left">Connect with me:</h3> <p align="left"> <a href="https://fb.com/HACKER-MSK" target="blank"><img align="center" src="https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/facebook.svg" alt="HACKER-MSK" height="30" width="40" /></a> <a href="https://instagram.com/HACKER-MSK" target="blank"><img align="center" src="https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/instagram.svg" alt="HACKER-MSK" height="30" width="40" /></a> </p> <h3 align="left">Languages and Tools:</h3> <p align="left"> <a href="https://developer.android.com" target="_blank"> <img src="https://raw.githubusercontent.com/devicons/devicon/master/icons/android/android-original-wordmark.svg" alt="android" width="40" height="40"/> </a> <a href="https://golang.org" target="_blank"> <img src="https://raw.githubusercontent.com/devicons/devicon/master/icons/go/go-original.svg" alt="go" width="40" height="40"/> </a> <a href="https://www.linux.org/" target="_blank"> <img src="https://raw.githubusercontent.com/devicons/devicon/master/icons/linux/linux-original.svg" alt="linux" width="40" height="40"/> </a> <a href="https://www.python.org" target="_blank"> <img src="https://raw.githubusercontent.com/devicons/devicon/master/icons/python/python-original.svg" alt="python" width="40" height="40"/> </a> <a href="https://unity.com/" target="_blank"> <img src="https://www.vectorlogo.zone/logos/unity3d/unity3d-icon.svg" alt="unity" width="40" height="40"/> </a> </p> <p><img align="left" src="https://github-readme-stats.vercel.app/api/top-langs?username=HACKER-MSK&show_icons=true&locale=en&layout=compact" alt="HACKER-MSK" /></p> <p> <img align="center" src="https://github-readme-stats.vercel.app/api?username=HACKER-MSK&show_icons=true&locale=en" alt="HACKER-MSK" /></p> <p><img align="center" src="https://github-readme-streak-stas.herokuapp.com/?user=HACKER-MSK&" alt="HACKER-MSK" /></p>
keras ImageDataGenerator for Multi Labeled Data
DatDat8
The project shows implementation based on a variety of applications of convolutional networks. DCGAN structure is used for model construction on GAN to learn deeply with multiple convolutional layers. The accuracy for classification task is about doubled after being supported by GAN-based data augmentation. This quantity is even significantly increased with the suitable selection of batch size, which is distinctly differentiated with 2 given label categories. Particularly, by being provided by more high-quality synthesized images, CNN for cow can obtain up to 95% accuracy with the adequate batch size for the training process on GAN. Lastly, the application of surface-feature extraction of PatchGAN trained along with CycleGAN considering the cycle consistency loss of image reconstruction from a distribution to the target one helps grasping the mapping between them and creates generators able to synthesize the transferred version containing the style feature of the objective distribution from the image of the original one without requiring any paired supportive similarity.
woltzar
<h1 align="center">Stratos Validator kurulum rehberi :atom_symbol:</h1>  # Stratos Türkiye Telegram grubu: [Stratos Türkiye](https://t.me/StratosTurkish) ## Sistem gereksinimleri: ``` 8GB RAM 160 GB SSD 4 vCPU ``` <h1 align="center">Validator kurulumu:</h1> ## root yetkisi: ``` sudo su ``` ## root dizinine gidiyoruz: ``` cd /root ``` ## Sistem güncellemesi: ``` sudo apt update && sudo apt upgrade -y ``` ## Kütüphane kurulumu: ``` sudo apt install make clang pkg-config libssl-dev build-essential git jq ncdu bsdmainutils -y < "/dev/null" ``` ## Binary dosya kurulumu: ``` cd $HOME wget https://github.com/stratosnet/stratos-chain/releases/download/v0.8.0/stchaind ``` ## stchaind ``` md5sum stchain* ``` ### :point_right: Komutu girdikten sonra görselde ki gibi çıktı alıcaksınız  ## Binary dosyalarına execute yetkisi verelim ``` chmod +x stchaind ``` ## Altta ki komutu girdikten sonra görselde ki gibi çıktı alıyoruz. ``` ls ``` ### Sizde sadece schaind yazması yeterli, sui ve stratos-chain yazmayacak.  ## Go kurulumu * go version yazdığınızda 1.16+ üstü sürüm olmalı, genelde 1.18 çıkar. ``` wget -O go1.18.2.linux-amd64.tar.gz https://golang.org/dl/go1.18.2.linux-amd64.tar.gz rm -rf /usr/local/go && tar -C /usr/local -xzf go1.18.2.linux-amd64.tar.gz && rm go1.18.2.linux-amd64.tar.gz echo 'export GOROOT=/usr/local/go' >> $HOME/.bash_profile echo 'export GOPATH=$HOME/go' >> $HOME/.bash_profile echo 'export GO111MODULE=on' >> $HOME/.bash_profile echo 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' >> $HOME/.bash_profile && . $HOME/.bash_profile go version go mod tidy ``` ## Source code ile binary dosyayı derliyoruz. ``` git clone https://github.com/stratosnet/stratos-chain.git cd stratos-chain git checkout v0.8.0 make build ``` #### :point_right: Hata alırsanız * Hata almazsanız bunları girmenıze gerek yok. (yüksek ihtimal hata almayacaksınız) ``` go mod tidy sudo apt update make build ``` ## Binary dosyalarını $GOPATH/bin dizinine yüklüyoruz: ``` cd ~/stratos-chain make install ``` ## initialize işlemi yapıyoruz. * :point_right: Node Name kısmını kendi validator isminizi girin :point_left: ``` cd $HOME ./stchaind init NodeName ``` ## genesis.json ve config.toml dosyalarını indiriyoruz: ``` wget https://raw.githubusercontent.com/stratosnet/stratos-chain-testnet/main/genesis.json wget https://raw.githubusercontent.com/stratosnet/stratos-chain-testnet/main/config.toml ``` ## addrbook.json dosyasını indiriyoruz: ``` wget -O $HOME/.stchaind/config/addrbook.json "https://github.com/mmc6185/node-testnets/blob/main/stratos/stratos-tropos-4/addrbook.json?raw=true" ``` ## genesis.json ve config.toml dosyalarını .stchaind/config/ dizini altına taşıma işlemi: ``` mv config.toml $HOME/.stchaind/config/ mv genesis.json $HOME/.stchaind/config/ ``` ## servis dosyası : ``` echo "[Unit] Description=Stratos Node After=network.target [Service] User=$USER Type=simple ExecStart=$(which stchaind) start Restart=on-failure LimitNOFILE=65535 [Install] WantedBy=multi-user.target" > $HOME/stratosd.service sudo mv $HOME/stratosd.service /etc/systemd/system sudo tee <<EOF >/dev/null /etc/systemd/journald.conf Storage=persistent EOF ``` ## servisimizi aktifleştiriyoruz: ``` sudo systemctl restart systemd-journald sudo systemctl daemon-reload sudo systemctl enable stratosd sudo systemctl restart stratosd ``` ## Node'umuzun loglarına bakıyoruz. * Görselde ki gibi loglar akıcak, 1-2-3 diye başlıyacak sizde. ``` journalctl -u stratosd -f ```  ## Şimdi explorere gidiyoruz: [explorer linki](https://big-dipper-tropos.thestratos.org/) * Sol üstte Latest Block yazıcak, güncel blok orası. * Birazdan false çıktısı komutunu gireceğiz * False çıktınız true yazacak, false olması için güncel bloğa gelmesi gerekiyor, örnek: * Eşleşmesi max 30-60 dakika arası sürer. ``` status 2>&1 | jq .SyncInfo ```  ## Şimdi o eşleşirken biz cüzdan oluşturalım: * WalletName kısmını kendı cüzdan adınız yapın! * Çıkan bilgileri not edin en altta 12 kelımenız olacak o da dahil. ``` stchaind keys add --hd-path "m/44'/606'/0'/0/0" --keyring-backend test WalletName ``` ## Faucetten token alalım * WalletAdres kısmını kaldırın ve cüzdan adresinizi yazın, tırnakları kaldırmayın! ``` curl --header "Content-Type: application/json" --request POST --data '{"denom":"ustos","address":"walletAddress"} ' https://faucet-tropos.thestratos.org/credit ``` ## Bakalım tokenler gelmişmi * st1400.. kısmına kendi cüzdan adresinizi yazın ``` stchaind query bank balances st1400f6e4kes5sk0ltfz8ms74ga9wzd9dulchh5q ```  ## Validator oluşturma * NodeName kısmına validator ismimizi girin! * WalletAddres kısmına cüzdan adınızı girin! ``` stchaind tx staking create-validator \ --amount=100000000ustos \ --pubkey=$(stchaind tendermint show-validator) \ --moniker="NodeName" \ --chain-id=tropos-4 --keyring-backend=test --gas=auto -y \ --commission-rate=0.10 \ --commission-max-rate=0.20 \ --commission-max-change-rate=0.01 \ --min-self-delegation=1 \ --from=walletAddress \ --gas=auto -y ``` ## Explorerde kendimizi kontrol edelim:  # Stratos Türkiye Telegram grubu: [Stratos Türkiye](https://t.me/StratosTurkish) ## Reach out to me <a href="https://twitter.com/Ruesandora0" target="blank"><img align="center" src="https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/twitter.svg" alt="zaferayan" height="30" width="40" /></a> <a href="https://medium.com/@ruesandora" target="blank"><img align="center" src="https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/medium.svg" alt="@zaferayan" height="30" width="40" /></a> <a href="https://www.youtube.com/c/RuesYouTube" target="blank"><img align="center" src="https://raw.githubusercontent.com/rahuldkjain/github-profile-readme-generator/master/src/images/icons/Social/youtube.svg" alt="uc1vykhlufpaoghrwhjikrqg" height="30" width="40" /></a> <br /> <p align="left"> <img src="https://komarev.com/ghpvc/?username=ruesandora&label=Profile%20views&color=0e75b6&style=flat" alt="ruesandora" /> <a href="https://twitter.com/ruesandora0" target="blank"><img src="https://img.shields.io/twitter/follow/ruesandora0?logo=twitter&style=for-the-badge" alt="ruesandora0" /></a> <img src="https://github-readme-stats.vercel.app/api?username=ruesandora&show_icons=true&theme=highcontrast" align="right" width="450" height="350" >
pradip676
AWS Image Label Generator is a Python-based tool that uses AWS Rekognition to analyze images stored in S3 and generate labels with confidence scores. It automates image classification and object detection using AWS services.
Image annotating tools to train YOLOcv2 on darkflow (a python wrapper using tensorflow for YOLO image detection framework )
Amazon Rekognition's Image Labels Generator automatically detects objects, scenes, and activities in images. It uses machine learning to assign descriptive labels to images, making it easy to categorize and search visual content. By integrating it with AWS Lambda or other services, you can automate image processing tasks for large-scale application
ines312692
Conditional GAN: A Generative Adversarial Network (GAN) that generates images conditioned on class labels. It includes: A generator that creates images based on input noise and class labels. A discriminator that evaluates the authenticity of generated images.
happymondaynkanta
Image caption generator is a process of recognizing the context of an image and annotating it with relevant captions using deep learning, and computer vision. It includes the labeling of an image with English keywords with the help of datasets provided during model training.
KoopaPlayer
/*Font Imports*/ @import url(https://fonts.googleapis.com/css?family=Press+Start+2P); /*Keyframes*/ @-webkit-keyframes messagefade { 0% { opacity: 1; } 75% { opacity: 1; } 99% { opacity: 0; top: 0; } 100% { opacity: 0; top: -51px; } } @-moz-keyframes messagefade { 0% { opacity: 1; } 75% { opacity: 1; } 99% { opacity: 0; top: 0; } 100% { opacity: 0; top: -51px; } } @keyframes messagefade { 0% { opacity: 1; } 75% { opacity: 1; } 99% { opacity: 0; top: 0; } 100% { opacity: 0; top: -51px; } } @keyframes helptip { 0% { margin: 0 0 0 0px; } 10% { margin: 0 0 0 -15px; } 20% { margin: 0 0 0 0px; } 30% { margin: 0 0 0 -15px; } 40% { margin: 0 0 0 0px; } 50% { margin: 0 0 0 -15px; } 60% { margin: 0 0 0 0px; } 70% { margin: 0 0 0 -15px; } 80% { margin: 0 0 0 0px; } 90% { margin: 0 0 0 -15px; visibility: visible; opacity: 1; } 100% { margin: 0 0 0 0px; visibility: hidden; opacity: 0; } } @keyframes msg-animation { 80% { opacity: 1; } 99.99% { opacity: 0; height: auto; visibility: visible; margin-bottom: 5px; padding: 5px; } 100%{ height: 0px; margin: 0px; padding: 0px; visibility: hidden; } } /* Didn't work, used transitions instead @keyframes modal-flow { from {visibility: hidden;top:-100px;opacity: 0;} to {visitbility: visible;top:0px;opacity:1;} } @-moz-keyframes modal-flow { from {transform: scale(3.3) rotateX(60deg) translateY(-100%);} to {transform: scale(1) rotateX(0deg) translateY(0%);} }*/ /*END Keyframes*/ /*Top Level Elements*/ ::selection { background: rgba(9, 63, 59, 0.75); } sup { vertical-align: super; font-size: smaller; } html, body { font-family: 'Source Sans Pro', sans-serif; background: saddlebrown; overflow-y: hidden; } a { color: #FF5722; text-decoration: underline; } b { font-weight: bold; } em { font-style: italic; } h2 { font-size: 25px; margin-bottom: 5px; } h3 { font-size: 20px; margin-bottom: 5px; } strong { font-weight: bold; } /*Container classes and whatnot*/ .container { width: 668px; margin: 0 auto; } .clear { clear: both; display: block; } /*Now here's where the fun begins...*/ .controller { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); display: none; margin-top: 30px !important; margin-left: 0px !important; } .controller.half { margin-top: 0px !important; } /*BEGIN Xbox 360 Controller Styling*/ .controller.xbox-old { background: url(xbox-assets-old/bg.png); height: 544px; width: 668px; /* margin-left: -332px; margin-top: -228px;*/ } .xbox-old.disconnected { background: url(xbox-assets-old/bg-disconnect.png); } .xbox-old.disconnected div { display: none; } .xbox-old .triggers { width: 430px; height: 76px; position: absolute; left: 119px; } .xbox-old .trigger { width: 33px; height: 76px; background: url(xbox-assets-old/trigger.png); opacity: 0; } .xbox-old .trigger.left { float: left; background-position: 0 0; } .xbox-old .trigger.right { float: right; background-position: 0 -77px; } .xbox-old .bumper { width: 119px; height: 44px; background: url(xbox-assets-old/bumper.png); opacity: 0; } .xbox-old .bumpers { position: absolute; width: 516px; height: 44px; left: 76px; top: 84px; } .xbox-old .bumper.pressed { opacity: 1; } .xbox-old .bumper.left { float: left; } .xbox-old .bumper.right { float: right; -webkit-transform: rotateY(180deg); transform: rotateY(180deg); } .xbox-old .quadrant { position: absolute; background: url(xbox-assets-old/quadrant.png); height: 100px; width: 100px; top: 165px; left: 284px; z-index: -1; } .xbox-old .p0 { -webkit-transform: rotate(0deg); transform: rotate(0deg); } .xbox-old .p1 { -webkit-transform: rotate(90deg); transform: rotate(90deg); } .xbox-old .p2 { -webkit-transform: rotate(270deg); transform: rotate(270deg); } .xbox-old .p3 { -webkit-transform: rotate(180deg); transform: rotate(180deg); } .xbox-old .arrows { position: absolute; width: 180px; height: 29px; top: 200px; left: 244px; } .xbox-old .back, .xbox-old .start { background: url(xbox-assets-old/arrow.png); width: 34px; height: 29px; } .xbox-old .back.pressed, .xbox-old .start.pressed { background-position: 0 -30px; } .xbox-old .back { float: left; -webkit-transform: rotateY(180deg); transform: rotateY(180deg); } .xbox-old .start { float: right; } .xbox-old .abxy { position: absolute; width: 161px; height: 160px; top: 125px; left: 451px } .xbox-old .button { position: absolute; width: 54px; height: 54px; } .xbox-old .button.a { width: 53px; height: 53px; } .xbox-old .button.y { width: 55px; height: 54px; } .xbox-old .button.pressed { background-position: 0 -55px; margin-top: 6px; opacity: 1; } .xbox-old .button.pressed.a { background-position: 0 -54px; } .xbox-old .button.pressed.y { background-position: 0 -56px; } .xbox-old .a { background: url(xbox-assets-old/a.png); top: 108px; left: 55px; } .xbox-old .b { background: url(xbox-assets-old/b.png); top: 54px; right: 0px; } .xbox-old .x { background: url(xbox-assets-old/x.png); top: 54px; } .xbox-old .y { background: url(xbox-assets-old/y.png); left: 54px; } .xbox-old .sticks { position: absolute; width: 383px; height: 208px; top: 167px; left: 89px; } .xbox-old .stick { position: absolute; background: url(xbox-assets-old/stick.png); height: 86px; width: 86px; } .xbox-old .stick.pressed { background-position: 0 -87px; } .xbox-old .stick.left { top: 0; left: 0; } .xbox-old .stick.right { top: calc(100% - 86px); left: calc(100% - 86px); } .xbox-old .dpad { position: absolute; width: 112px; height: 112px; top: 273px; left: 174px; } .xbox-old .face { position: absolute; font-size: 30px; line-height: 0; color: white; opacity: 0; font-family: 'FontAwesome'; } .xbox-old .face.pressed { opacity: 1; } .xbox-old .face.up { left: 42px; top: 20px; } .xbox-old .face.up:after { content: "\f062"; } .xbox-old .face.down { left: 42px; bottom: 20px; } .xbox-old .face.down:after { content: "\f063"; } .xbox-old .face.left { top: 56px; left: 3px; } .xbox-old .face.left:after { content: "\f060"; } .xbox-old .face.right { top: 56px; right: 3px; } .xbox-old .face.right:after { content: "\f061"; } .xbox-old.half { margin-top: -272px; } /*END Xbox 360 Controller Styling*/ /*BEGIN Xbox One Controller Styling*/ .controller.xbox { background: url(xbox-assets/base.svgz); height: 630px; width: 750px; /* margin-left: -375px; margin-top: -285px;*/ } .xbox.white { background: url(xbox-assets/base-white.svgz); } .xbox.disconnected { background: url(xbox-assets/disconnected.svgz); } .xbox.disconnected div { display: none; } .xbox .triggers { width: 446px; height: 121px; position: absolute; left: 152px; } .xbox .trigger { width: 88px; height: 121px; background: url(xbox-assets/trigger.svgz); opacity: 0; } .xbox .trigger.left { float: left; background-position: 0 0; } .xbox .trigger.right { float: right; transform: rotateY(180deg); } .xbox .bumper { width: 170px; height: 61px; background: url(xbox-assets/bumper.svgz); opacity: 0; } .xbox .bumpers { position: absolute; width: 536px; height: 61px; left: 107px; top: 129px; } .xbox .bumper.pressed { opacity: 1; } .xbox .bumper.left { float: left; } .xbox .bumper.right { float: right; -webkit-transform: rotateY(180deg); transform: rotateY(180deg); } .xbox .quadrant { position: absolute; background: url(xbox-assets/quadrant.svgz); height: 45px; width: 45px; top: 258px; left: 354px; z-index: 0; } .xbox .p0 { -webkit-transform: rotate(0deg); transform: rotate(0deg); } .xbox .p1 { -webkit-transform: rotate(90deg); transform: rotate(90deg); } .xbox .p2 { -webkit-transform: rotate(270deg); transform: rotate(270deg); } .xbox .p3 { -webkit-transform: rotate(180deg); transform: rotate(180deg); } .xbox .arrows { position: absolute; width: 141px; height: 33px; top: 264px; left: 306px; } .xbox .back, .xbox .start { background: url(xbox-assets/start-select.svgz); width: 33px; height: 33px; opacity: 0; } .xbox .back.pressed, .xbox .start.pressed { opacity: 1; } .xbox .back { float: left; } .xbox .start { background-position: 33px 0px; float: right; } .xbox .abxy { position: absolute; width: 153px; height: 156px; top: 192px; left: 488px; } .xbox .button { position: absolute; background: url(xbox-assets/abxy.svgz); width: 48px; height: 48px; } .xbox .button.pressed { background-position-y: -48px; margin-top: 5px; opacity: 1; } .xbox .a { background-position: 0 0; top: 108px; left: 55px; } .xbox .b { background-position: -49px 0; top: 58px; right: 0px; } .xbox .x { background-position: -98px 0; top: 58px; left: 4px; } .xbox .y { background-position: 48px 0; left: 55px; top: 7px; } .xbox .sticks { position: absolute; width: 371px; height: 196px; top: 239px; left: 144px; } .xbox .stick { position: absolute; background: url(xbox-assets/stick.svgz); background-position: -85px 0; height: 83px; width: 83px; } .xbox .stick.pressed { background-position: 0 0; } .xbox .stick.left { top: 0; left: 0; } .xbox .stick.right { top: 113px; left: 288px; } .xbox .dpad { position: absolute; width: 110px; height: 111px; top: 345px; left: 223px; } .xbox .face { background: url(xbox-assets/dpad.svgz); position: absolute; opacity: 0; } .xbox .face.pressed { opacity: 1; } .xbox .face.up { background-position: 34px 0; left: 38px; top: 0px; width: 34px; height: 56px; } .xbox .face.down { left: 38px; bottom: 0; width: 34px; height: 56px; } .xbox .face.left { background-position: 0 -93px; width: 55px; height: 35px; top: 38px; left: 0; } .xbox .face.right { background-position: 0 -57px; width: 55px; height: 35px; top: 38px; right: 0; } .xbox.half { margin-top: -315px; } .xbox { background: no-repeat center; } /*END Xbox One Controller Styling*/ /*BEGIN PS3 Controller Styling*/ .controller.ps { background: url(ps3-assets/base.png); height: 558px; width: 784px; /* margin-left: -392px; margin-top: -259px;*/ } .ps.disconnected { background: url(ps3-assets/base-disconnect.png); } .ps.disconnected div { display: none; } .ps .triggers { width: 586px; height: 65px; position: absolute; left: 99px; } .ps .trigger { width: 86px; height: 65px; background: url(ps3-assets/triggers.png); opacity: 0; } .ps .trigger.left { float: left; } .ps .trigger.right { float: right; } .ps .bumper { width: 89px; height: 28px; background: url(ps3-assets/bumpers.png); opacity: 0; } .ps .bumpers { position: absolute; width: 586px; height: 28px; left: 99px; top: 72px; } .ps .bumper.pressed { opacity: 1; } .ps .bumper.left { -webkit-transform: rotateY(180deg); transform: rotateY(180deg); float: left; } .ps .bumper.right { float: right; } .ps .quadrant { position: absolute; background: url(ps3-assets/player-n.png); height: 17px; width: 111px; top: 140px; left: 240px; } .ps .p0 { background-position: 0 -6px; } .ps .p1 { background-position: 0 -28px; } .ps .p2 { background-position: 0 -49px; } .ps .p3 { background-position: 0 -70px; } .ps .arrows { position: absolute; width: 205px; height: 19px; top: 250px; left: 291px; } .ps .back, .ps .start { background: url(ps3-assets/menus.png); width: 34px; height: 19px; } .ps .back.pressed, .ps .start.pressed { background-position-y: -21px; margin-top: 2px; } .ps .back { float: left; width: 38px; } .ps .start { float: right; width: 36px; background-position: 37px 0; } .ps .abxy { position: absolute; width: 204px; height: 205px; top: 156px; left: 538px; } .ps .button { position: absolute; width: 62px; height: 62px; background: url(ps3-assets/face-buttons.png); } .ps .button.pressed { background-position-y: -64px; margin-top: 5px; } .ps .a { background-position: 62px 0; top: 142px; left: 71px; } .ps .b { background-position: 125px 0; top: 71px; right: 0px; } .ps .x { background-position: 0 0; top: 71px; } .ps .y { background-position: -63px 0; left: 71px; } .ps .sticks { position: absolute; width: 364px; height: 105px; top: 328px; left: 210px; } .ps .stick { position: absolute; background: url(ps3-assets/thumbs.png); height: 105px; width: 105px; } .ps .stick.pressed.left { background-position-x: -106px; } .ps .stick.pressed.right { background-position-x: -211px; } .ps .stick.left { top: 0; left: 0; } .ps .stick.right { top: calc(100% - 105px); left: calc(100% - 105px); } .ps .dpad { position: absolute; width: 140px; height: 132px; top: 192px; left: 74px; } .ps .face { background: url(ps3-assets/dpad.png); position: absolute; } .ps .face.up, .ps .face.down { width: 38px; height: 52px; } .ps .face.left, .ps .face.right { width: 52px; height: 38px; } .ps .face.up { left: 50px; top: 0; background-position: 92px 0px; } .ps .face.down { left: 50px; top: 79px; background-position: 131px 0; } .ps .face.left { top: 47px; left: 0; background-position: 0px 0; } .ps .face.right { top: 47px; right: 0px; background-position: 53px 0; } .ps .face.pressed { margin-top: 5px; background-position-y: 52px; } .ps.half { margin-top: -279px; } /*END PS3 Controller Styling*/ /*BEGIN PS3 White Controller Styling*/ .controller.ps.white { background-image: url(ps3-white-assets/base.png); } .ps.white.disconnected { background-image: url(ps3-white-assets/base-disconnect.png); } .ps.white .trigger { background-image: url(ps3-white-assets/triggers.png); } .ps.white .bumper { background-image: url(ps3-white-assets/bumpers.png); } .ps.white .quadrant { background-image: url(ps3-white-assets/player-n.png); } .ps.white .back, .ps.white .start { background-image: url(ps3-white-assets/menus.png); } .ps.white .button { background-image: url(ps3-white-assets/face-buttons.png); } .ps.white .stick { background-image: url(ps3-white-assets/thumbs.png); } .ps.white .face { background-image: url(ps3-white-assets/dpad.png); } /*END PS3 White Controller Styling*/ /*BEGIN PS4 Controller Styling*/ .controller.ds4 { background: url(ps4-assets/base.svgz); height: 598px; width: 806px; /* margin-left: -403px; margin-top: -280px;*/ } .ds4.disconnected { background: url(ps4-assets/disconnected.svgz); } .ds4.disconnected div { display: none; } .ds4 .triggers { width: 588px; height: 90px; position: absolute; left: 109px; } .ds4 .trigger { width: 99px; height: 100%; background: url(ps4-assets/triggers.svgz); opacity: 0; } .ds4 .trigger.left { float: left; } .ds4 .trigger.right { float: right; background-position-x: 99px; } .ds4 .bumper { width: 99px; height: 23px; background: url(ps4-assets/bumper.svgz) no-repeat; opacity: 0; } .ds4 .bumpers { position: absolute; width: 588px; height: 23px; left: 109px; top: 94px; } .ds4 .bumper.pressed { opacity: 1; } .ds4 .bumper.left { /* -webkit-transform: rotateY(180deg); */ /* transform: rotateY(180deg); */ float: left; } .ds4 .bumper.right { float: right; transform: rotateY(180deg); } .ds4 .touchpad { width: 262px; height: 151px; position: absolute; left: 272px; top: 122px; } .ds4 .touchpad.pressed { background: url(ps4-assets/touchpad.svgz) no-repeat center; } .ds4 .meta { width: 42px; height: 42px; position: absolute; left: 382px; bottom: 216px; } .ds4 .meta.pressed { background: url(ps4-assets/meta.svgz) no-repeat center; } /*Not needed, but I like keeping them here for posterity*/ /*.ds4 .quadrant{ position: absolute; background: url(ps4-assets/player-n.svgz); height: 17px; width: 111px; top: 140px; left: 240px; } .ds4 .p0{ background-position: 0 -6px; } .ds4 .p1{ background-position: 0 -28px; } .ds4 .p2{ background-position: 0 -49px; } .ds4 .p3{ background-position: 0 -70px; }*/ .ds4 .arrows { position: absolute; width: 352px; height: 46px; top: 142px; left: 227px; } .ds4 .back, .ds4 .start { background: url(ps4-assets/start.svgz); width: 28px; height: 46px; opacity: 0; } .ds4 .back.pressed, .ds4 .start.pressed { /* background-position-y: -21px; */ /* margin-top: 2px; */ opacity: 1; } .ds4 .back { float: left; /* width: 28px; */ } .ds4 .start { float: right; /* width: 28px; */ background-position: 28px 0; } .ds4 .abxy { position: absolute; width: 170px; height: 171px; top: 159px; left: 567px; } .ds4 .button { position: absolute; width: 55px; height: 55px; background: url(ps4-assets/face.svgz); } .ds4 .button.pressed { background-position-y: 55px; /* margin-top: 5px; */ } .ds4 .a { background-position: 0 0; bottom: 0; left: 58px; } .ds4 .b { background-position: -57px 0; top: 58px; right: 0px; } .ds4 .x { background-position: -113px 0; top: 58px; } .ds4 .y { background-position: 55px 0; left: 58px; } .ds4 .sticks { position: absolute; width: 361px; height: 105px; top: 308px; left: 228px; } .ds4 .stick { position: absolute; background: url(ps4-assets/sticks.svgz); height: 94px; width: 94px; } .ds4 .stick.pressed.left { background-position-x: -96px; } .ds4 .stick.pressed.right { background-position-x: -192px; } .ds4 .stick.left { top: 0; left: 0; } .ds4 .stick.right { top: calc(100% - 105px); left: calc(100% - 105px); } .ds4 .dpad { position: absolute; width: 125px; height: 126px; top: 181px; left: 92px; } .ds4 .face { background: url(ps4-assets/dpad.svgz); position: absolute; } .ds4 .face.up, .ds4 .face.down { width: 36px; height: 52px; } .ds4 .face.left, .ds4 .face.right { width: 52px; height: 36px; } .ds4 .face.up { left: 44px; top: 0; background-position: -37px 0px; } .ds4 .face.down { left: 44px; bottom: 0; background-position: 0px 0; } .ds4 .face.left { top: 45px; left: 0; background-position: 104px 0; } .ds4 .face.right { top: 45px; right: 0px; background-position: 52px 0; } .ds4 .face.pressed { /* margin-top: 5px; */ background-position-y: 52px; } .ds4.half { margin-top: -300px; } /*END PS4 Controller Styling*/ /*BEGIN PS4 White Controller Styling*/ .controller.ds4.white { background-image: url(ps4-white-assets/base.svgz); } .ds4.white.disconnected { background: url(ps4-assets/disconnected.svgz); } .ds4.white .trigger { background-image: url(ps4-white-assets/triggers.svgz); } .ds4.white .bumper { background-image: url(ps4-white-assets/bumper.svgz); } .ds4.white .touchpad.pressed { background-image: url(ps4-white-assets/touchpad.svgz); } .ds4.white .back, .ds4 .start { background-image: url(ps4-white-assets/start.svgz); } .ds4.white .button { background-image: url(ps4-white-assets/face.svgz); } .ds4.white .stick { background-image: url(ps4-white-assets/sticks.svgz); } .ds4.white .face { background-image: url(ps4-white-assets/dpad.svgz); } /*END PS4 White Controller Styling*/ /*BEGIN NES Controller Styling*/ .controller.nes { background: url(nes-assets/base.png); width: 832px; height: 391px; /* margin-left: -416px; margin-top: -175px;*/ } .nes.disconnected { background: url(nes-assets/base-disconnect.png); } .nes.disconnected div { display: none; } .nes .quadrant { font-family: 'Press Start 2P', cursive; font-size: 16pt; color: white; position: absolute; height: 17px; width: 180px; top: 90px; left: 50px; text-align: center; } .nes .p0:after { content: 'Player 1'; } .nes .p1:after { content: 'Player 2'; } .nes .p2:after { content: 'Player 3'; } .nes .p3:after { content: 'Player 4'; } .nes .arrows { position: absolute; width: 189px; height: 22px; top: 251px; left: 288px; } .nes .back, .nes .start { background: url(nes-assets/menu.png); width: 73px; height: 20px; } .nes .back.pressed, .nes .start.pressed { background-position-y: -21px; margin-top: 4px; } .nes .back { float: left; } .nes .start { float: right; } .nes .abxy { position: absolute; width: 180px; height: 74px; top: 223px; left: 570px; } .nes .button { position: absolute; width: 74px; height: 74px; background: url(nes-assets/buttons.png); top: 0; } .nes .button.pressed { background-position-y: -77px; margin-top: 5px; } .nes .a { right: 0; } .nes .b { left: 0px; } .nes .x, .nes .y { display: none; } .nes .dpad { position: absolute; width: 135px; height: 131px; top: 142px; left: 65px; } .nes .face { background: url(nes-assets/dpad.png); position: absolute; width: 38px; height: 38px; } .nes .face.up, .nes .face.down { left: 50px; } .nes .face.left, .nes .face.right { top: 49px; } .nes .face.up { top: 0; background-position: 111px 0px; } .nes .face.down { top: 98px; background-position: 75px 0; } .nes .face.left { left: 0; background-position: 0px 0; } .nes .face.right { right: 0px; background-position: 39px 0; } .nes .face.pressed { background-position-y: 38px; } .nes.half { margin-top: -195px; } /*END NES Controller Styling*/ /*BEGIN FightPad Pro Controller Styling*/ .controller.fpp { background: url(fpp-assets/base.svgz) center; height: 755px; width: 938px; } .fpp.disconnected { background: url(fpp-assets/base-disconnect.svgz) no-repeat; } .fpp.disconnected div { display: none; } .fpp .triggers { width: 684px; height: 104px; position: absolute; left: 145px; } .fpp .trigger { width: 96px; height: 104px; background: url(fpp-assets/triggers.svgz) no-repeat; opacity: 0; } .fpp .trigger.left { float: left; } .fpp .trigger.right { float: right; background-position-x: -98px } .fpp .bumpers { position: absolute; width: 816px; height: 76px; left: 65px; top: 115px; } .fpp .bumper { width: 221px; height: 75px; background: url(fpp-assets/bumpers.svgz); opacity: 0; } .fpp .bumper.pressed { opacity: 1; } .fpp .bumper.left { float: left; } .fpp .bumper.right { background-position-x: -223px; float: right; } .fpp .bumper.right:after { content: ""; position: absolute; background: url(fpp-assets/buttons.svgz) no-repeat; background-position: -280px 0px; width: 70px; height: 70px; top: 121px; right: 41px; } .fpp .quadrant { position: absolute; background: url(fpp-assets/quadrant.svgz) no-repeat; height: 46px; width: 152px; top: 365px; left: 347px; } .fpp .p0 { background-position: -6px 0; } .fpp .p1 { background-position: -160px 0; } .fpp .p2 { background-position: -317px 0; } .fpp .p3 { background-position: -474px 0; } .fpp .arrows { position: absolute; width: 175px; height: 43px; top: 550px; left: 480px; } .fpp .arrows:before { content: ""; position: absolute; width: 55px; height: 22px; background: url(fpp-assets/slider.svgz) no-repeat; left: -126px; } .fpp .back.pressed, .fpp .start.pressed { background: url(fpp-assets/options.svgz) no-repeat; width: 81px; height: 43px; } .fpp .start.pressed { background-position-x: -83px; } .fpp .back { float: left; } .fpp .start { transform: translateX(-29px); float: right; } .fpp .abxy { position: absolute; width: 201px; height: 205px; top: 235px; left: 600px; } .fpp .trigger-button.right.pressed { position: absolute; width: 70px; height: 70px; background: url(fpp-assets/buttons.svgz) no-repeat; background-position: -351px 0; right: -66px; top: 304px; } .fpp .button { position: absolute; width: 70px; height: 70px; background: url(fpp-assets/buttons.svgz) no-repeat; opacity: 0; } .fpp .button.pressed { opacity: 1; } .fpp .a { background-position: 0 0; top: 135px; left: 57px; } .fpp .b { background-position: -70px 0; top: 79px; right: 0px; } .fpp .x { background-position: -140px 0; top: 67px; } .fpp .y { background-position: -210px 0; left: 75px; top: 11px; } .fpp .sticks { position: absolute; width: 114px; height: 114px; top: 386px; left: 215px; } .fpp .stick { position: absolute; background: url(fpp-assets/sticks.svgz) no-repeat; height: 114px; width: 114px; } .fpp .stick.pressed.left { background-position-x: -115px; } .fpp .stick.pressed.right { background-position-x: -229px; } .fpp .stick.left { top: 0; left: 0; } .fpp .stick.right { display: none; top: 0; left: 0; } .fpp .dpad { position: absolute; width: 157px; height: 156px; top: 242px; left: 69px; } .fpp .face { background: url(fpp-assets/dpad.svgz) no-repeat; position: absolute; opacity: 0; } .fpp .face.pressed { opacity: 1; } .fpp .face.up, .fpp .face.down { width: 110px; height: 78px; } .fpp .face.left, .fpp .face.right { width: 78px; height: 111px; } .fpp .face.up { left: 23px; top: 0; background-position: 0 0px; } .fpp .face.down { left: 23px; bottom: 2px; background-position: -111px 0; } .fpp .face.left { top: 22px; left: 1px; background-position: -222px 0; } .fpp .face.right { top: 22px; right: 0px; background-position: -303px 0; } /*END FightPad Pro Controller Styling*/ /*BEGIN Fight Stick Controller Styling*/ .controller.fight-stick { background: url(stick-assets/base.svgz) center no-repeat; height: 534px; width: 1122px; } .fight-stick.disconnected { background: url(stick-assets/disconnected.svgz) no-repeat; } .fight-stick.disconnected div { display: none; } .fight-stick .triggers { width: 326px; height: 198px; position: absolute; right: 0px; bottom: 66px; } .fight-stick .trigger-button { width: 123px; height: 123px; background: #333333; border-radius: 100%; opacity: 1; display: block; } .fight-stick .trigger-button.pressed { transform: translateY(5px); -webkit-filter: invert(1); } .fight-stick .trigger-button.left { position: absolute; float: right; bottom: 4px; right: 42px; } .fight-stick .trigger-button.right { float: left; } .fight-stick .bumpers { width: 295px; height: 198px; position: absolute; right: 0px; top: 88px; } .fight-stick .bumper { width: 123px; height: 123px; background: #333333; border-radius: 100%; opacity: 1; display: block; } .fight-stick .bumper.pressed { transform: translateY(5px); -webkit-filter: invert(1); } .fight-stick .bumper.left { position: absolute; float: right; bottom: 4px; right: 11px; } .fight-stick .bumper.right { float: left; } .fight-stick .quadrant { position: absolute; font-family: "Press Start 2P"; font-size: 28px; font-weight: normal; top: 20px; left: 236px; color: white; } .fight-stick .p0:after { content: "Player 1"; } .fight-stick .p1:after { content: "Player 2"; } .fight-stick .p2:after { content: "Player 3"; } .fight-stick .p3:after { content: "Player 4"; } .fight-stick .arrows { position: absolute; width: 70px; height: 217px; top: 53px; left: 49px; } .fight-stick .back, .fight-stick .start { width: 70px; height: 70px; background: #333333; display: block; border-radius: 100%; } .fight-stick .back { float: left; } .fight-stick .start { position: absolute; bottom: 4px; left: -1px; } .fight-stick .back.pressed, .fight-stick .start.pressed { transform: translateY(5px); -webkit-filter: invert(1); } .fight-stick .abxy { position: absolute; width: 310px; height: 370px; bottom: 103px; left: 472px; } .fight-stick .button { width: 123px; height: 123px; background: #333333; border-radius: 100%; opacity: 1; display: block; position: absolute; } .fight-stick .button.pressed { transform: translateY(5px); -webkit-filter: invert(1); } .fight-stick .a { bottom: 0px; left: 0px; } .fight-stick .b { bottom: 66px; right: 31px; } .fight-stick .x { top: 66px; left: 33px } .fight-stick .y { right: 0px; top: 0px; } .fight-stick .fstick { position: absolute; width: 221px; height: 221px; top: 199px; left: 192px; background: url(stick-assets/stick.svgz) } .fight-stick .fstick.up { background-position-x: -1762px; } .fight-stick .fstick.down { background-position-x: -882px; } .fight-stick .fstick.left { background-position-x: -1322px; } .fight-stick .fstick.right { background-position-x: -442px; } .fight-stick .fstick.up.right { background-position-x: -222px; } .fight-stick .fstick.up.left { background-position-x: -1542px; } .fight-stick .fstick.down.right { background-position-x: -662px; } .fight-stick .fstick.down.left { background-position-x: -1102px; } /*END Fight Stick Controller Styling*/ /*BEGIN GameCube Controller Styling*/ .controller.gc { background: url(gc-assets/base.svgz) no-repeat; height: 837px; width: 978px; } .gc.disconnected { background: url(gc-assets/disconnected.svgz) no-repeat; } .gc.disconnected div { display: none; } .gc .triggers { width: 775px; height: 95px; position: absolute; left: 102px; } .gc .trigger { width: 131px; height: 100%; background: url(gc-assets/trigger.svgz); opacity: 0; } .gc .trigger.left { float: left; } .gc .trigger.right { float: right; } .gc .bumper { width: 158px; height: 100%; background: url(gc-assets/buttons.svgz) no-repeat; background-position: -358px 0px; opacity: 0; } .gc .bumpers { position: absolute; width: 792px; height: 73px; left: 103px; top: 138px; } .gc .bumper.pressed { opacity: 1; } .gc .bumper.left { /* -webkit-transform: rotateY(180deg); */ /* transform: rotateY(180deg); */ float: left; display: none; } .gc .bumper.right { float: right; } /*Not needed, but I like keeping them here for posterity*/ /*.gc .quadrant{ position: absolute; background: url(gc-assets/player-n.svgz); height: 17px; width: 111px; top: 140px; left: 240px; } .gc .p0{ background-position: 0 -6px; } .gc .p1{ background-position: 0 -28px; } .gc .p2{ background-position: 0 -49px; } .gc .p3{ background-position: 0 -70px; }*/ .gc .arrows { position: absolute; width: 50px; height: 50px; top: 324px; left: 465px; } .gc .back, .gc .start { width: 43px; height: 43px; background: #E7E7E7; border-radius: 100%; border: solid 4.5px rgba(0, 0, 0, .65); background-clip: content-box; opacity: 0; } .gc .back.pressed, .gc .start.pressed { opacity: 1; filter: invert(1); -webkit-filter: invert(1); } .gc .back { display: none; } .gc .start { float: right; } .gc .abxy { position: absolute; width: 288px; height: 230px; top: 207px; left: 640px; } .gc .button { position: absolute; background: url(gc-assets/buttons.svgz); opacity: 0; } .gc .button.pressed { opacity: 1; } .gc .a { background-position: 0 0; width: 114px; height: 114px; bottom: 35px; left: 91px; } .gc .b { width: 71px; height: 71px; background-position: -116px 0; bottom: 0px; left: 1px; } .gc .x { width: 66px; height: 103px; background-position: -292px 0; top: 65px; right: 0px; } .gc .y { width: 103px; height: 66px; background-position: -189px 0; left: 67px; top: 2px; } .gc .sticks { position: absolute; width: 628px; height: 392px; top: 258px; left: 106px; } .gc .stick { position: absolute; } .gc .stick.left { top: 24px; left: 23px; background: url(gc-assets/left-stick.svgz) center no-repeat; height: 121px; width: 121px; } .gc .stick.right { top: calc(100% - 127px); left: calc(100% - 125px); background: url(gc-assets/cstick.svgz) center no-repeat; width: 84px; height: 84px; } .gc .dpad { position: absolute; width: 125px; height: 126px; top: 181px; left: 92px; } .gc .dpad { position: absolute; width: 130px; height: 130px; top: 497px; left: 263px; } .gc .face { background: url(gc-assets/dpad.svgz) no-repeat; position: absolute; opacity: 0; } .gc .face.up, .gc .face.down { width: 44px; height: 65px; } .gc .face.left, .gc .face.right { width: 65px; height: 44px; } .gc .face.up { left: 42px; top: 0; background-position: 0px 0px; } .gc .face.down { left: 42px; bottom: 0; background-position: -46px 0; } .gc .face.left { top: 43px; left: 0; background-position: -93px 0; } .gc .face.right { top: 43px; right: 0px; background-position: -160px 0; } .gc .face.pressed { opacity: 1; } /*END GameCube Controller Styling*/ /*Start N64 Styling*/ .controller.n64 { background: url(n64-assets/base.svgz); height: 851px; width: 810px; } .n64 .bumpers{ position: absolute; height: 100px; width: 664px; top: 140px; left: 73px } .n64 .bumper{ background: url(n64-assets/buttons.svgz); height: 68px; width: 174px; display: block; position: absolute; } .n64 .bumper.right{ right: 0; transform: rotateY(180deg); } .n64 .triggers{ position: absolute; left: 379px; } .n64 .trigger.left{ width: 52px; height: 88px; background: url(n64-assets/buttons.svgz); display: block; background-position-y: -72px; } .n64 .dpad{ width: 150px; height: 150px; /* background: #FF00008F; */ position: absolute; top: 281px; left: 106px; } .n64 .dpad .face{ background: url(n64-assets/buttons.svgz); height: 64px; width: 44px; background-position-y: -164px; display: block; position: absolute } .n64 .dpad .face.up{ left: 32px } .n64 .dpad .face.down{ transform: rotate(180deg); left: 32px; top: 65px } .n64 .dpad .face.left{ transform: rotate(-90deg); top: 33px } .n64 .dpad .face.right{ transform: rotate(90deg); top: 33px; left: 64px; } /* We're using the node used for a controller's system button here */ .n64 .meta{ background: url(n64-assets/buttons.svgz); width: 55px; height: 55px; background-position-y: -282px; position: absolute; left: 377px; top: 344px } .n64 .abxy{ position: absolute; top: 245px; left: 609px } .n64 .abxy .button{ background: url(n64-assets/buttons.svgz); width: 47px; height: 47px; background-position-y: -231px; display: block; position: absolute; } .n64 .abxy .button.a{ left: 45px } .n64 .abxy .button.b{ left: 44px; top: 92px; transform: rotate(180deg); } .n64 .abxy .button.x{ top: 45px; left: -2px; transform: rotate(-90deg) } .n64 .abxy .button.y{ left: 91px; top: 46px; transform: rotate(90deg); } .n64 .arrows{ position: absolute; top: 335px; left: 529px } .n64 .back, .n64 .start{ background: url(n64-assets/buttons.svgz); width: 61px; height: 61px; background-position-y: -341px; display: block; position: relative; } .n64 .start{ background-position-y: -405px; top: -5px; left: 56px } .n64 .sticks{ position: absolute; top: 493px; left: 369px; } .n64 .stick.left{ background: url(n64-assets/buttons.svgz); width: 73px; height: 73px; display: block; background-position-y: 73px } .n64 .button, .n64 .face, .n64 .meta, .n64 .bumper, .n64 .trigger, .n64 .arrows *{ opacity: 0 } .n64 .pressed{ opacity: 1 } /*END N64 Styling*/ /*Navbar Elements & their inner contents*/ .navbar { height: 50px; background: cornflowerblue; border-bottom: 1px solid #5570b8; color: white; width: 100%; z-index: 10; position: absolute; top: 0; text-align: center; } .nocon { background: indianred; border-bottom: none; border-top: 1px solid #FF7474; bottom: 0; top: auto; } .nocon.visible, .pselect.visible { visibility: visible; opacity: 1; } .nocon ul { float: left; display: inline-block; } .navbar .content { font-size: 25px; width: 960px; display: flex; margin: 0 auto; line-height: 50px; justify-content: space-between; } /*.navbar .content .left { float: left; } .navbar .content .right { float: right; }*/ .right a.button { top: 0; background: #FF9900; box-sizing: border-box; padding: 5px; display: inline-block; line-height: normal; text-decoration: none; color: rgba(0, 0, 0, 0.74); border-radius: 3px; margin: 4px; } .navbar .content .center { display: flex; } .pselect, .nocon { visibility: hidden; opacity: 0; transition: .5s ease; } .tooltip { display: inline; position: relative; } .tooltip:after { bottom: 13px; color: rgb(255, 255, 255); content: attr(data-tooltip) '\279F'; display: block; left: -240px; position: absolute; text-shadow: rgb(0, 0, 0) 0px 1px 0px; white-space: nowrap; font-size: 0.5em; text-align: right; line-height: 25px; animation: helptip 7s 1 forwards; -webkit-animation-delay: 4s; -moz-animation-delay: 4s; -o-animation-delay: 4s; animation-delay: 4s; } .box { display: inline-block; width: 50px; height: 50px; font-size: 30pt; font-weight: 700; float: left; } .box a, .box label { text-decoration: none; display: block; height: 50px; width: 50px; } /*.skins{*/ /*margin: 0 0 0 -4px;*/ /*}*/ /*.skins input{*/ /*display: none;*/ /*}*/ .console { padding: 9px; vertical-align: top; -webkit-appearance: none; -moz-appearance: none; height: 50px; border: none; font-size: 20px; width: 50px; color: transparent; outline: 0; -webkit-filter: invert(0.97); -moz-filter: invert(0.97); filter: invert(0.97); transition: .3s ease-out; cursor: pointer; } .console:hover { -webkit-filter: invert(0); -moz-filter: invert(0); filter: invert(0); } .console option { color: black; background: white; } .console.xbox, .console.xbox-old { background: url('icons/xbx.png') no-repeat center; } .console.ps, .console.ds4 { background: url('icons/psn.png') no-repeat center; } .console.nes { background: url('icons/nes.png') no-repeat center; } .console.fpp { background: url('icons/fpp.png') no-repeat center; } .console.fight-stick { background: url('icons/fight-stick.png') no-repeat center; } .console.gc { background: url('icons/gc.png') no-repeat center; } #color-picker { display: inline-block; width: 50px; color: whitesmoke; line-height: normal; } #color-picker i { font-size: 42px; transform: translateY(8%); } #color-picker-input { transform: scale(0); } /*.box.xbx, .box.psn{*/ /*background: #53BDFF;*/ /*}*/ /*.box.xbx label, .box.psn label{*/ /*color: #5570B8;*/ /*text-shadow: 0 1px 0 #90D4FF;*/ /*}*/ /*.box.psn label{*/ /*line-height: 55px;*/ /*font-size: 50px;*/ /*}*/ /*.box.xbx label{*/ /*font-size: 17px;*/ /*line-height: 53px;*/ /*}*/ /*.box.xbx label:hover, .box.xbx input:checked + label{*/ /*background: forestgreen;*/ /*color: white;*/ /*text-shadow: none;*/ /*}*/ /*.box.psn label:hover, .box.psn input:checked + label{*/ /*background: #252EAE;*/ /*color: white;*/ /*text-shadow: none;*/ /*}*/ span.code { border-radius: 2px; font-family: monospace; padding: 2px; background: lightgrey; color: black; } .box .fa { line-height: 50px; display: block; } .help { background: #53BDFF; text-shadow: 0 1px 0 #90D4FF; } .help a { color: #5570B8; } .thanks { background: darkorange; text-shadow: 0 1px 0 #FFC252; font-size: 28pt; } .thanks a { color: darkred; } .talk { background: #9750ed; text-shadow: 0 1px 0 #ba88e8; } .talk a { color: darkslateblue; } .code { background: #9750ed; text-shadow: 0 1px 0 #ba88e8; display: none; } .code a { color: darkslateblue; } .twitch { background: purple; text-shadow: 0 1px 0 #f5f2f5; } .twitch a { color: #e7e4e7; } .yt { background: red; text-shadow: 0 1px 0 #f5f2f5; } .yt a { color: #e7e4e7; } .alert span { color: #a85454; display: block; text-shadow: 0 1px 0 #ffa78b; } .hc { width: 960px; display: block; margin: 0 auto; -webkit-perspective: 1000; -moz-perspective: 1000; color: white; } .hc .content { background: royalblue; box-sizing: border-box; padding: 15px; } /*#help{ -webkit-transform: rotateX(-100deg); -webkit-backface-visibility: hidden; -moz-transform: rotateX(-100deg); -moz-backface-visibility: hidden; -moz-transform-origin: top; transform: rotateX(-100deg); backface-visibility: hidden; transform-origin: top; -webkit-transform-origin: top; transition: transform .3s ease; transition: -webkit-transform .3s ease; visibility: hidden; position: absolute; margin: 0 auto; } #help:target{ -webkit-transform: rotateX(0deg); -moz-transform: rotateX(0deg); transform: rotateX(0deg); transition: -webkit-transform 2s ease; transition: transform 2s ease; transform-origin: top; -moz-transform-origin: top; -webkit-transform-origin: top; visibility: visible; position: relative; margin: 0 auto; }*/ .ac { } .title { width: 100%; line-height: normal; font-size: 40px; margin-bottom: 15px; } .title h1 { float: left; } .title .close { float: right; margin: 8px; } .title .close a { text-decoration: none; font-size: 19pt; width: 25px; height: 25px; display: inline-block; position: relative; top: 4px; line-height: 100%; background: red; text-align: center; border-radius: 25px; font-weight: 700; color: white; } .column { width: 30%; float: left; padding-right: 45px; } .column.last { padding: 0; } .overflow { position: fixed; width: 100%; top: 50px; z-index: 1; } .text { margin-bottom: 5px; } .text ol { display: block; list-style: decimal inside; } .text li { padding: 0 0px 5px 0px; } .changelog ul { list-style: disc inside; margin-left: 1em; text-indent: -1em; } .changelog ul li { padding: 4px 12px; } .log { margin-bottom: 5px; transition: opacity .4s ease-out; } .log:not(:first-child) { opacity: .5; } .log:hover { opacity: 1; } .log code { font-family: "Consolas", monospace; white-space: pre-line; } .player { background: white; padding: 9px; vertical-align: top; -webkit-appearance: none; -moz-appearance: none; height: 50px; border: none; font-size: 25px; outline: 0; cursor: pointer; } .ty { background: green; z-index: 11; display: none; border-bottom: 1px solid darkgreen; } .uc { background: orange; z-index: 11; border-bottom: 1px solid darkorange; display: none; } .update { background: darkred; z-index: 11; border-bottom: 1px solid rgb(125, 0, 0); display: none; } .message { display: block; -webkit-animation: messagefade 6s forwards; -moz-animation: messagefade 6s forwards; animation: messagefade 6s forwards; } .message span { width: 100%; } /* Help Box Stuff .changelog::-webkit-scrollbar { width: 22px; !* for vertical scrollbars *! height: 12px; !* for horizontal scrollbars *! } .changelog::-webkit-scrollbar-track { !*background: rgba(0, 0, 0, 0.1);*! !*border-radius: 12px;*! !*box-shadow: inset 1px 1px 12px rgba(0, 0, 0, 0.28);*! } .changelog::-webkit-scrollbar-thumb { background: linear-gradient(to right, rgba(54, 58, 65, 0.2) 0%,rgba(0,0,0,0.3) 100%); border-radius: 12px; border: 4px solid transparent; background-clip: padding-box; } */ /*.info { display: block; background: #75bbfd; font-size: 13pt; padding: 12px; vertical-align: text-bottom; color: black; } .info span:before { content: "INFO"; padding: 2px 6px; border: solid #95d0fc 2px; margin: 0 6px 0 0; font-weight: 700; border-radius: 3px; } .warning { display: block; background: darkred; font-size: 13pt; padding: 12px; vertical-align: text-bottom; } .warning span:before { content: "WARNING"; padding: 2px 6px; background: red; margin: 0 6px 0 0; font-weight: 700; border-radius: 3px; } .info span, .warning span { text-align: center; display: block; }*/ /*CSS Slideout Menu*/ a .menu-button { color: white; font-size: 36px; vertical-align: text-bottom; -webkit-transform: scaleX(0.75); -moz-transform: scaleX(0.75); transform: scaleX(0.75); } a:active .menu-button { -webkit-filter: invert(100%); filter: invert(100%); } .slideout-menu { z-index: 13; position: absolute; width: 100%; height: 100%; visibility: hidden; transition: all .5s; transition-delay: .1s; transition-timing-function: cubic-bezier(0.27, 1.29, 0.63, 1); } .slideout-menu:target { visibility: visible; } .slideout-menu:target .menu { transform: translateX(0px); box-shadow: black -1px 0 10px; } .slideout-menu:target .modal-bg { transition-delay: 0s; transition-duration: .5s; } .menu { width: 400px; height: 100%; background: whitesmoke; position: absolute; transition: transform cubic-bezier(0.4, 0, 0.2, 1) .4s; transform: translateX(-400px); } .yt-contain { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; } .yt-contain iframe, .yt-contain object, .yt-contain embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } /*Twitch Video Tooltip*/ /*.menu .yt-contain:before, .yt-contain:after{ display: block; visibility: hidden; z-index: 10; position: fixed; white-space: pre-line; transform: translateX(-20px); transition: transform .3s ease-out, opacity .3s ease-out; opacity: 0; } .menu .yt-contain:hover:after, .yt-contain:hover:before{ transform: translateX(-5px); visibility: visible; opacity: 1; } .menu .yt-contain:after { content: "Upsilon Pi Epsilon @ FIU is hosting a Super Smash Bros. tournament on Friday, October 28th at 6pm EST. \AHope to see you in chat!"; width: 200px; text-align: center; padding: 8px 8px 8px 8px; color: whitesmoke; right: -240px; top: 120px; border-radius: 5px; background: rgba(0,0,0,.7); } .menu .yt-contain:before{ content: ""; width: 0px; height: 0; top: 160px; right: -24px; border-style: solid; border-width: 13px 15px 13px 0px; border-color: transparent rgba(0,0,0,.7) transparent transparent; box-sizing: border-box; }*/ .menu ul { height: calc(100% - 50px); overflow-y: auto; } .menu .yt-contain + ul { height: calc(100% - 275px); } .menu a { /* vertical-align: baseline; */ display: block; padding: 10px; font-size: 26px; text-decoration: none; color: rgba(0, 0, 0, 0.65); transition: background ease .5s; } .menu li span { vertical-align: top; } .menu i { font-size: 28px; margin-right: 4px; } .menu h1 { font-size: 30px; padding: 10px; background: darkred; color: floralwhite; padding-left: 64px; } .menu h1 i.material-icons { font-size: 48px; position: absolute; left: 10px; top: 2px; } .menu { /*position: relative;*/ } .menu .divider { border-bottom: 1px solid gray; margin: 10px 50px; } .menu a:hover { background: rgba(0, 0, 0, 0.20); } /* CSS Modals */ .modal-container { /*background: rgba(0, 0, 0, 0);*/ z-index: 13; position: absolute; width: 100%; height: 100%; visibility: hidden; transition: all .5s; transition-delay: .1s; transition-timing-function: cubic-bezier(0.27, 1.29, 0.63, 1); overflow: hidden; } .modal-container:target { visibility: visible; /*background: rgba(0, 0, 0, 0.61);*/ } .modal-container:target .modal { opacity: 1; transform: scale(1) rotateX(0deg) translateY(0%); /*animation: modal-flow .5s;*/ /*animation-timing-function: cubic-bezier(0.27, 1.29, 0.63, 1);*/ } .modal-bg { background: rgba(0, 0, 0, 0); transition: all .5s cubic-bezier(0.27, 1.29, 0.63, 1) .1s; width: 100%; height: 100%; } .bglink { position: absolute; width: 100%; height: 100%; cursor: default; } .modal-container:target .modal-bg, .slideout-menu:target .modal-bg { background: rgba(0, 0, 0, 0.61); } .modal { width: 870px; /*height: calc(100% - 100px);*/ max-height: calc(100% - 100px); min-height: 415px; display: flex; flex-flow: column; background: whitesmoke; margin: 40px auto 0 auto; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); opacity: 0; transform: scale(1.4) rotateX(60deg) translateY(-100%); transform-origin: center -70px; transition: all .7s cubic-bezier(0.27, 1.29, 0.63, 1) .1s, opacity 100ms ease .1s; /*animation: modal-flow .5s reverse;*/ /*animation-timing-function: cubic-bezier(0.27, 1.29, 0.63, 1);*/ } .modal article { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; padding: 18px; overflow-y: auto; flex: 1 1 auto; } /* Unnecessary fix since this flexbox bug has been fixed .modal article > :first-child { margin-top: 18px; } .modal article > :last-child { margin-bottom: 18px; }*/ .modal h1 { font-size: 3em; } .modal a.close { float: right; display: inline-block; text-align: center; font-size: 3em; width: 1em; text-decoration: none; color: white; border-radius: 3em; text-shadow: rgba(0, 0, 0, 0.45) 0px 1px 3px; } .modal a.close:active, .modal a.close:hover { -webkit-filter: invert(100%); filter: invert(100%); } .modal .codeblock { font-family: "Consolas", monospace; background: lightgrey; color: darkgoldenrod; word-wrap: break-word; border-radius: 5px; border: 1px solid hsla(0, 0%, 77%, 1); text-shadow: rgba(0, 0, 0, 0.44) 0 0 .1px; } .modal p { margin-bottom: 15px; } .modal .minimenu { position: absolute; width: 100%; box-sizing: border-box; background: rgba(0, 0, 0, 0.25); } .modal .minimenu li { height: 100%; display: table-cell; } .modal .minimenu li:hover, .modal .minimenu .selected { background: rgba(0, 0, 0, 0.25); } .modal .minimenu a { color: whitesmoke; padding: 7px 8px; text-decoration: none; display: inline-block; } .modal .minimenu + header { background: deepskyblue; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; padding: 35px 2% 2%; flex: 0 0 100px; } #about .video { float: right; width: 50%; margin-left: 10px; } .info { clear: both; } .info div { width: 50%; box-sizing: border-box; } .info ol { list-style: decimal inside; } .info ol li { margin-bottom: 5px; } .info div:nth-of-type(1) { float: left; padding-right: 1%; } .info div:nth-of-type(2) { float: right; padding-left: 1%; } .form-group { margin-bottom: 8px; font-size: 32px; position: relative; } .form-group [id*=-input] { float: right; width: 535px; padding: 0px; border: none; background: transparent; border-bottom: rgba(0, 0, 0, 0.34) 1px solid; text-align: center; transition: border-bottom 0.2s ease-in; font-size: 29px; } .form-group [id*=-input]:focus { border-bottom: black 1px solid; outline: none; } #url-form .form-group [type=checkbox]:before { content: "Disabled"; color: lightgray; display: block; position: absolute; cursor: pointer; width: 535px; text-align: center; background: rgba(255, 0, 0, .8); border-radius: 3px; right: -3px; } #url-form .form-group [type=checkbox]:checked:before { content: "Enabled"; background: rgba(0, 110, 0, .8); } #url-form .form-group [type=checkbox] { width: 0; height: 0; position: relative; } #url-form .form-group .flipped[type=checkbox]:before { content: "Enabled"; background: rgba(0, 110, 0, .8); } #url-form .form-group .flipped[type=checkbox]:checked:before { content: "Disabled"; background: rgba(255, 0, 0, .8); } .form-group .input-unit { position: absolute; right: 0; } .form-group .input-unit + [id*=-input] { width: 474px; padding-right: 60px; } #docs h2 { margin-bottom: 15px; } #docs h2:after { content: attr(data-param); margin-left: 5px; padding: 3px; font-family: "Consolas", monospace; background: lightgrey; color: darkgoldenrod; word-wrap: break-word; border-radius: 5px; border: 1px solid hsla(0, 0%, 77%, 1); text-shadow: rgba(0, 0, 0, 0.44) 0 0 .1px; } #docs .definition, #docs .definition ul { margin-bottom: 15px; } #docs .definition ul li { margin-bottom: 4px; } #docs .definition div.codeblock { padding: 10px; margin-bottom: 15px; } #docs .definition li:before { content: '\2012'; margin-right: 4px; } #docs .definition li:nth-child(1):before { content: "UNIT: "; font-weight: bold; } #docs .definition li:nth-child(2):before { content: "DEFAULT VALUE: "; font-weight: bold; } #docs .definition li:nth-child(3):before { content: "ACCEPTABLE VALUES: "; font-weight: bold; } .generator-container { margin-top: 18px; margin-bottom: 20px; } #generated-url { font-size: 20pt; padding: 18px; margin-bottom: 20px; cursor: pointer; display: inline-block; width: 80%; float: left; position: relative; } #url-generate-reset { font-size: 20pt; padding: 18px; float: right; width: 10%; cursor: pointer; } #url-generate-reset span { text-align: center; display: block; } /*Tooltip Stuff*/ #generated-url:before, #generated-url:after { display: block; position: absolute; font-size: 16px; font-family: 'Source Sans Pro', sans-serif; color: whitesmoke; transform: translatex(-50%); opacity: 0; transition: transform ease .3s, opacity ease .3s; } #generated-url:after { content: attr(data-message); padding: 8px; border-radius: 31px; left: 50%; top: -15px; background: black; } #generated-url:before { content: " "; border-left: transparent solid 9px; width: 0px; height: 0px; border-right: transparent solid 9px; border-top: rgb(0, 0, 0) solid 11px; left: 50%; margin-top: -1px; } #generated-url:hover:before, #generated-url:hover:after { transform: translatex(-50%) translateY(-20px); opacity: 1; } .raw-outputs { display: none; } .raw-outputs.active { display: block; } .raw-outputs li { display: inline-block; min-width: 40px; text-align: right; padding: 20px 5px 5px 10px; background: deepskyblue; box-sizing: border-box; position: relative; margin: 0 5px 5px 0; opacity: .6; } .raw-outputs li.disabled { background: orangered; } .raw-outputs li:before { content: attr(data-shortname); font-size: 15px; font-weight: bold; color: white; position: absolute; top: 3px; left: 4px; } #mapping-config .form-group { font-size: 20px; display: flex; flex-wrap: wrap; } #mapping-config #mappings select { font-size: inherit; } #mapping-config #mappings .form-group > select { display: none; } #mapping-config #mappings button { flex-grow: 1; margin: 0 5px 0px 14px; transition: .4s ease-out; position: relative; } #mapping-config #mappings .form-group > button + button { display: none; margin: 0 5px 0px 0px; } #mapping-config #mappings [data-tooltip]:after { opacity: 0; content: attr(data-tooltip); position: absolute; top: 0; left: 50%; transform: translateX(-50%); pointer-events: none; background: orangered; color: white; padding: 4px; border-radius: 23px; transition: .3s ease-out; white-space: nowrap; } #mapping-config .template { display: none; } #mapping-config .map-control { font-size: 24px; padding-bottom: 10px; text-decoration: none; display: inline-block; color: black; } #mapping-config .map-control i { vertical-align: top; } #mapping-help.map-control { float: right; } #mapping-help.map-control:after { display: block; clear: both; } #mapping-config .form-group .material-icons { color: black; transition: .4s ease-out; opacity: .5; text-decoration: none; font-size: 37px; line-height: normal; vertical-align: bottom; } #mapping-config .form-group .material-icons:hover { opacity: 1; } #mapping-config .add-config:hover { color: green; } #mapping-config .del-config:hover { color: red; } #mapping-config input[type=radio], #mapping-config .disable-item { margin-right: 70px; display: inline-block; width: 0px; height: 23px; font-size: inherit; opacity: .5; transition: .4s ease-out; } #mapping-config input[type=radio][value=axes] { margin-right: 50px; } #mapping-config input[type=radio][value="dpad"] { margin-right: 36px; } #mapping-config select{ margin-left: 6px; } #mapping-config input[type=radio]:checked, #mapping-config .disable-item:checked { opacity: 1; } #mapping-config #mappings .disable-item:checked ~ button { opacity: .5; pointer-events: none; } #mapping-config input[value="buttons"]:after, #mapping-config input[value="axes"]:after, #mapping-config input[value="dpad"]:after, #mapping-config .disable-item:after { display: inline-block; background: orangered; color: white; padding: 5px; border-radius: 3px; cursor: pointer; } #mapping-config input[value="buttons"]:after { content: "Button"; } #mapping-config input[value="axes"]:after { content: "Axis"; } #mapping-config input[value="dpad"]:after { font-family: "Material Icons"; content: "gamepad"; font-size: 23px; } #mapping-config .disable-item:after { content: "Disable"; } #mapping-config .axes-config:after { font-family: inherit; content: "check_box_outline_blank"; line-height: inherit; cursor: pointer; } #mapping-config .axes-config:checked:after { content: "check_box"; } #mapping-config .axes-config { width: 37px; height: 0; padding: 0; margin: 0; outline: none; } #mapping-config .axes-config:checked { opacity: 1; } #mapping-config .axes-config { order: -1; } #mapping-config #mappings input[value="buttons"]:checked ~ select[name="buttons"], #mapping-config #mappings input[value="axes"]:checked ~ select[name="axes"] { display: inline-block; } #mapping-config #mappings .fix-panel { display: none; width: 100%; margin-top: 5px; font-size: 20px; } #mapping-config #mappings .fix-panel span { line-height: 37px; margin-right: 5px; font-size: inherit; } #mapping-config #mappings .fix-axes, #mapping-config #mappings .fix-dpad li{ height: 37px; } #mapping-config #mappings .fix-dpad li{ display: flex; margin-bottom: 5px; justify-content: flex-end; } #mapping-config #mappings .fix-dpad{ flex-direction: column; } #mapping-config #mappings .fix-dpad button { max-width: 655px; } #mapping-config #mappings .axes-config:checked ~ .fix-axes, #mapping-config #mappings input[type=radio][value=dpad]:checked ~ .fix-dpad{ display: flex; } #mapping-config #mappings .axes-config:checked ~ button:nth-of-type(2) { display: none !important; } #mapping-config #mappings input[value="dpad"]:checked ~ .axes-config, #mapping-config #mappings input[value="dpad"]:checked ~ .fix-axes{ display: none; } #mapping-config #mappings input[value="axes"]:checked ~ .axes-config:not(:checked) ~ [data-tooltip]:hover:after, #mapping-config #mappings .fix-axes [data-tooltip]:hover:after { opacity: 1; top: -28px; } #mapping-config #mappings input[value="axes"]:checked ~ button:nth-of-type(2) { display: block; } #mapping-config #mappings .map-message { width: 100%; display: none; order: -2; background: darkgreen; color: #F2F2F2; padding: 5px; border-radius: 3px; margin-bottom: 5px; } #mapping-config #mappings .map-message.error { display: block; background: hsla(0,86%,50%,1); } #mapping-config #mappings .map-message.success{ display: block; animation: 4s msg-animation forwards; } #mapping-config .button-group button { float: right; font-size: 20px; padding: 5px; border-radius: 3px; background: orangered; color: white; border: none; cursor: pointer; margin-left: 10px; } #mappings:empty + div { display: none; } #showcase .preview iframe { width: 100%; height: 100%; } #showcase .preview { height: 150px; width: 200px; float: left; margin-right: 10px; } #showcase .description { } #adoptaskin p { margin-bottom: 8px; } #adoptaskin article ul { list-style: inside disc; margin: 0 0 8px 10px; } #adoptaskin article ul li:not(:last-of-type) { margin-bottom: 4px; } #adoptaskin #skin-tc { color: white; text-align: center; width: 100%; display: block; background: crimson; padding: 10px; box-sizing: border-box; text-decoration: none; border-radius: 4px; } #contact-form input, #contact-form textarea, #contact-form select { width: 100%; box-sizing: border-box; font-size: 30px; padding: 10px; font-family: inherit; } #contact-form textarea { min-height: 200px; } #contact-form .g-recaptcha { float: left; } #contact-form .button-group { float: right; } #contact-form .button-group button { background: tomato; border: 1px solid rgba(0, 0, 0, 0.1); height: 78px; font-size: 30px; padding: 0px 50px; border-radius: 4px; color: white; margin-left: 10px; box-shadow: rgba(0, 0, 0, 0.08) 0px 0px 4px 1px; } #contact-form .button-group button:disabled { opacity: 0.5; } #messages { background: orangered; border-radius: 3px; padding: 10px; box-sizing: border-box; margin-bottom: 10px; color: white; } #messages p { padding: 0px; margin: 0px; } #messages ul { list-style: inside disc; } #messages ul li { margin-bottom: 4px } #messages.success { background: #006b00; } #messages:empty { display: none; } #donate article { display: flex; flex-direction: row; } #donate .donate-buttons { flex: 0 0 250px; display: flex; flex-direction: column; margin-left: 10px; } #donate .donate-buttons a { text-decoration: none; margin: 0.7%; } #donate .donate-buttons .dbutton { text-align: center; box-sizing: border-box; padding: 12px; border-radius: 3px; } #donate .dbutton .fa { margin-right: 5px; } #donate .pp.dbutton { background: #009CDE; color: black; } #donate .btc.dbutton { background: yellowgreen; color: black; } #donate .amzn.dbutton { background: #FF9900; color: black; } /* Survey Beg Box */ .plshalpme { display: none; } .disconnected[id*=gamepad-] .plshalpme { display: block; position: absolute; width: 100%; height: 100%; background: darkred; } .disconnected[id*=gamepad-] .plshalpme div { display: block; /* margin: 0 auto; */ /* width: 238px; */ text-align: center; position: absolute; top: 50%; transform: translateY(-50%) translateX(-50%); color: whitesmoke; font-size: 68px; left: 50%; } .disconnected[id*=gamepad-] .plshalpme a { color: whitesmoke; text-decoration: none; } /*Generic Classes*/ .active { display: block; }
lg9012
parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c<t.length;c++)try{f(t[c])}catch(e){i||(i=e)}if(t.length){var l=f(t[t.length-1]);"object"==typeof exports&&"undefined"!=typeof module?module.exports=l:"function"==typeof define&&define.amd?define(function(){return l}):n&&(this[n]=l)}if(parcelRequire=f,i)throw i;return f}({"sSZ0":[function(require,module,exports) { !function(){"use strict";function e(e,t){return(...o)=>{let s,n=o;if(o&&o.length>0){const e=o[o.length-1];"function"==typeof e&&(n=o.slice(0,o.length-1),s=e)}return new Promise((o,r)=>{try{e(...n,(...e)=>{if(s)try{s(...e)}catch(n){r(n)}if(chrome.runtime.lastError)r(new Error(chrome.runtime.lastError.message||`Error thrown by API ${chrome.runtime.lastError}`));else if(t){const s=t(...e);o(s)}else e&&0!==e.length?1===e.length?o(e[0]):o(e):o()})}catch(a){r(a)}})}}function t(o,s){if(o)for(let n of s){let s;if(s="string"==typeof n?n:n.n,!o.hasOwnProperty(s))continue;const r=o[s];"function"==typeof r?o[s]=e(r.bind(o),n.cb):t(r,n.props)}}const o=["get","set","clear"],s=["clear","get","set","getResourceIdentifiers"],n=["get","getBytesInUse","set","remove","clear"];!function(e){for(let o in e){const s=chrome[o];s&&t(s,e[o])}}({accessibilityFeatures:[{n:"spokenFeedback",props:o},{n:"largeCursor",props:o},{n:"stickyKeys",props:o},{n:"highContrast",props:o},{n:"screenMagnifier",props:o},{n:"autoclick",props:o},{n:"virtualKeyboard",props:o},{n:"animationPolicy",props:o}],alarms:["get","getAll","clear","clearAll"],bookmarks:["get","getChildren","getRecent","getTree","getSubTree","search","create","move","update","remove","removeTree"],browser:["openTab"],browserAction:["getTitle","setIcon","getPopup","getBadgeText","getBadgeBackgroundColor"],browsingData:["settings","remove","removeAppcache","removeCache","removeCookies","removeDownloads","removeFileSystems","removeFormData","removeHistory","removeIndexedDB","removeLocalStorage","removePluginData","removePasswords","removeWebSQL"],commands:["getAll"],contentSettings:[{n:"cookies",props:s},{n:"images",props:s},{n:"javascript",props:s},{n:"location",props:s},{n:"plugins",props:s},{n:"popups",props:s},{n:"notifications",props:s},{n:"fullscreen",props:s},{n:"mouselock",props:s},{n:"microphone",props:s},{n:"camera",props:s},{n:"unsandboxedPlugins",props:s},{n:"automaticDownloads",props:s}],contextMenus:["create","update","remove","removeAll"],cookies:["get","getAll","set","remove","getAllCookieStores"],debugger:["attach","detach","sendCommand","getTargets"],desktopCapture:["chooseDesktopMedia"],documentScan:["scan"],downloads:["download","search","pause","resume","cancel","getFileIcon","erase","removeFile","acceptDanger"],enterprise:[{n:"platformKeys",props:["getToken","getCertificates","importCertificate","removeCertificate"]}],extension:["isAllowedIncognitoAccess","isAllowedFileSchemeAccess"],fileBrowserHandler:["selectFile"],fileSystemProvider:["mount","unmount","getAll","get","notify"],fontSettings:["setDefaultFontSize","getFont","getDefaultFontSize","getMinimumFontSize","setMinimumFontSize","getDefaultFixedFontSize","clearDefaultFontSize","setDefaultFixedFontSize","clearFont","setFont","clearMinimumFontSize","getFontList","clearDefaultFixedFontSize"],gcm:["register","unregister","send"],history:["search","getVisits","addUrl","deleteUrl","deleteRange","deleteAll"],i18n:["getAcceptLanguages","detectLanguage"],identity:["getAuthToken","getProfileUserInfo","removeCachedAuthToken","launchWebAuthFlow"],idle:["queryState"],input:[{n:"ime",props:["setMenuItems","commitText","setCandidates","setComposition","updateMenuItems","setCandidateWindowProperties","clearComposition","setCursorPosition","sendKeyEvents","deleteSurroundingText"]}],management:["setEnabled","getPermissionWarningsById","get","getAll","getPermissionWarningsByManifest","launchApp","uninstall","getSelf","uninstallSelf","createAppShortcut","setLaunchType","generateAppForLink"],networking:[{n:"config",props:["setNetworkFilter","finishAuthentication"]}],notifications:["create","update","clear","getAll","getPermissionLevel"],pageAction:["getTitle","setIcon","getPopup"],pageCapture:["saveAsMHTML"],permissions:["getAll","contains","request","remove"],platformKeys:["selectClientCertificates","verifyTLSServerCertificate",{n:"getKeyPair",cb:(e,t)=>({publicKey:e,privateKey:t})}],runtime:["getBackgroundPage","openOptionsPage","setUninstallURL","restartAfterDelay","sendMessage","sendNativeMessage","getPlatformInfo","getPackageDirectoryEntry",{n:"requestUpdateCheck",cb:(e,t)=>({status:e,details:t})}],scriptBadge:["getPopup"],sessions:["getRecentlyClosed","getDevices","restore"],storage:[{n:"sync",props:n},{n:"local",props:n},{n:"managed",props:n}],socket:["create","connect","bind","read","write","recvFrom","sendTo","listen","accept","setKeepAlive","setNoDelay","getInfo","getNetworkList"],sockets:[{n:"tcp",props:["create","update","setPaused","setKeepAlive","setNoDelay","connect","disconnect","secure","send","close","getInfo","getSockets"]},{n:"tcpServer",props:["create","update","setPaused","listen","disconnect","close","getInfo","getSockets"]},{n:"udp",props:["create","update","setPaused","bind","send","close","getInfo","getSockets","joinGroup","leaveGroup","setMulticastTimeToLive","setMulticastLoopbackMode","getJoinedGroups","setBroadcast"]}],system:[{n:"cpu",props:["getInfo"]},{n:"memory",props:["getInfo"]},{n:"storage",props:["getInfo","ejectDevice","getAvailableCapacity"]}],tabCapture:["capture","getCapturedTabs"],tabs:["get","getCurrent","sendMessage","create","duplicate","query","highlight","update","move","reload","remove","detectLanguage","captureVisibleTab","executeScript","insertCSS","setZoom","getZoom","setZoomSettings","getZoomSettings","discard"],topSites:["get"],tts:["isSpeaking","getVoices","speak"],types:["set","get","clear"],vpnProvider:["createConfig","destroyConfig","setParameters","sendPacket","notifyConnectionStateChanged"],wallpaper:["setWallpaper"],webNavigation:["getFrame","getAllFrames","handlerBehaviorChanged"],windows:["get","getCurrent","getLastFocused","getAll","create","update","remove"]})}(); },{}],"QVnC":[function(require,module,exports) { var define; var t,r=function(t){"use strict";var r,e=Object.prototype,n=e.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(t,r,e){return Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}),t[r]}try{u({},"")}catch(P){u=function(t,r,e){return t[r]=e}}function h(t,r,e,n){var o=r&&r.prototype instanceof d?r:d,i=Object.create(o.prototype),a=new G(n||[]);return i._invoke=function(t,r,e){var n=l;return function(o,i){if(n===p)throw new Error("Generator is already running");if(n===y){if("throw"===o)throw i;return F()}for(e.method=o,e.arg=i;;){var a=e.delegate;if(a){var c=j(a,e);if(c){if(c===v)continue;return c}}if("next"===e.method)e.sent=e._sent=e.arg;else if("throw"===e.method){if(n===l)throw n=y,e.arg;e.dispatchException(e.arg)}else"return"===e.method&&e.abrupt("return",e.arg);n=p;var u=f(t,r,e);if("normal"===u.type){if(n=e.done?y:s,u.arg===v)continue;return{value:u.arg,done:e.done}}"throw"===u.type&&(n=y,e.method="throw",e.arg=u.arg)}}}(t,e,a),i}function f(t,r,e){try{return{type:"normal",arg:t.call(r,e)}}catch(P){return{type:"throw",arg:P}}}t.wrap=h;var l="suspendedStart",s="suspendedYield",p="executing",y="completed",v={};function d(){}function g(){}function m(){}var w={};w[i]=function(){return this};var L=Object.getPrototypeOf,x=L&&L(L(N([])));x&&x!==e&&n.call(x,i)&&(w=x);var b=m.prototype=d.prototype=Object.create(w);function E(t){["next","throw","return"].forEach(function(r){u(t,r,function(t){return this._invoke(r,t)})})}function _(t,r){var e;this._invoke=function(o,i){function a(){return new r(function(e,a){!function e(o,i,a,c){var u=f(t[o],t,i);if("throw"!==u.type){var h=u.arg,l=h.value;return l&&"object"==typeof l&&n.call(l,"__await")?r.resolve(l.__await).then(function(t){e("next",t,a,c)},function(t){e("throw",t,a,c)}):r.resolve(l).then(function(t){h.value=t,a(h)},function(t){return e("throw",t,a,c)})}c(u.arg)}(o,i,e,a)})}return e=e?e.then(a,a):a()}}function j(t,e){var n=t.iterator[e.method];if(n===r){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=r,j(t,e),"throw"===e.method))return v;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return v}var o=f(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,v;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=r),e.delegate=null,v):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,v)}function O(t){var r={tryLoc:t[0]};1 in t&&(r.catchLoc=t[1]),2 in t&&(r.finallyLoc=t[2],r.afterLoc=t[3]),this.tryEntries.push(r)}function k(t){var r=t.completion||{};r.type="normal",delete r.arg,t.completion=r}function G(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(O,this),this.reset(!0)}function N(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,a=function e(){for(;++o<t.length;)if(n.call(t,o))return e.value=t[o],e.done=!1,e;return e.value=r,e.done=!0,e};return a.next=a}}return{next:F}}function F(){return{value:r,done:!0}}return g.prototype=b.constructor=m,m.constructor=g,g.displayName=u(m,c,"GeneratorFunction"),t.isGeneratorFunction=function(t){var r="function"==typeof t&&t.constructor;return!!r&&(r===g||"GeneratorFunction"===(r.displayName||r.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,m):(t.__proto__=m,u(t,c,"GeneratorFunction")),t.prototype=Object.create(b),t},t.awrap=function(t){return{__await:t}},E(_.prototype),_.prototype[a]=function(){return this},t.AsyncIterator=_,t.async=function(r,e,n,o,i){void 0===i&&(i=Promise);var a=new _(h(r,e,n,o),i);return t.isGeneratorFunction(e)?a:a.next().then(function(t){return t.done?t.value:a.next()})},E(b),u(b,c,"Generator"),b[i]=function(){return this},b.toString=function(){return"[object Generator]"},t.keys=function(t){var r=[];for(var e in t)r.push(e);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},t.values=N,G.prototype={constructor:G,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=r,this.done=!1,this.delegate=null,this.method="next",this.arg=r,this.tryEntries.forEach(k),!t)for(var e in this)"t"===e.charAt(0)&&n.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=r)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function o(n,o){return c.type="throw",c.arg=t,e.next=n,o&&(e.method="next",e.arg=r),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var u=n.call(a,"catchLoc"),h=n.call(a,"finallyLoc");if(u&&h){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(u){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!h)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(t,r){for(var e=this.tryEntries.length-1;e>=0;--e){var o=this.tryEntries[e];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=r&&r<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=r,i?(this.method="next",this.next=i.finallyLoc,v):this.complete(a)},complete:function(t,r){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&r&&(this.next=r),v},finish:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.finallyLoc===t)return this.complete(e.completion,e.afterLoc),k(e),v}},catch:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.tryLoc===t){var n=e.completion;if("throw"===n.type){var o=n.arg;k(e)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:N(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=r),v}},t}("object"==typeof module?module.exports:{});try{regeneratorRuntime=r}catch(e){Function("r","regeneratorRuntime = r")(r)} },{}],"vCxL":[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.__extends=e,exports.__rest=n,exports.__decorate=o,exports.__param=a,exports.__metadata=u,exports.__awaiter=i,exports.__generator=c,exports.__exportStar=f,exports.__values=l,exports.__read=s,exports.__spread=p,exports.__await=y,exports.__asyncGenerator=_,exports.__asyncDelegator=h,exports.__asyncValues=b,exports.__makeTemplateObject=v,exports.__importStar=d,exports.__importDefault=x,exports.__assign=void 0;var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(e,r)};function e(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}var r=function(){return exports.__assign=r=Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++)for(var o in e=arguments[r])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t},r.apply(this,arguments)};function n(t,e){var r={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(t);o<n.length;o++)e.indexOf(n[o])<0&&(r[n[o]]=t[n[o]])}return r}function o(t,e,r,n){var o,a=arguments.length,u=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)u=Reflect.decorate(t,e,r,n);else for(var i=t.length-1;i>=0;i--)(o=t[i])&&(u=(a<3?o(u):a>3?o(e,r,u):o(e,r))||u);return a>3&&u&&Object.defineProperty(e,r,u),u}function a(t,e){return function(r,n){e(r,n,t)}}function u(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)}function i(t,e,r,n){return new(r||(r=Promise))(function(o,a){function u(t){try{c(n.next(t))}catch(e){a(e)}}function i(t){try{c(n.throw(t))}catch(e){a(e)}}function c(t){t.done?o(t.value):new r(function(e){e(t.value)}).then(u,i)}c((n=n.apply(t,e||[])).next())})}function c(t,e){var r,n,o,a,u={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function i(a){return function(i){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;u;)try{if(r=1,n&&(o=2&a[0]?n.return:a[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,a[1])).done)return o;switch(n=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return u.label++,{value:a[1],done:!1};case 5:u.label++,n=a[1],a=[0];continue;case 7:a=u.ops.pop(),u.trys.pop();continue;default:if(!(o=(o=u.trys).length>0&&o[o.length-1])&&(6===a[0]||2===a[0])){u=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){u.label=a[1];break}if(6===a[0]&&u.label<o[1]){u.label=o[1],o=a;break}if(o&&u.label<o[2]){u.label=o[2],u.ops.push(a);break}o[2]&&u.ops.pop(),u.trys.pop();continue}a=e.call(t,u)}catch(i){a=[6,i],n=0}finally{r=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,i])}}}function f(t,e){for(var r in t)e.hasOwnProperty(r)||(e[r]=t[r])}function l(t){var e="function"==typeof Symbol&&t[Symbol.iterator],r=0;return e?e.call(t):{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}}}function s(t,e){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,o,a=r.call(t),u=[];try{for(;(void 0===e||e-- >0)&&!(n=a.next()).done;)u.push(n.value)}catch(i){o={error:i}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(o)throw o.error}}return u}function p(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(s(arguments[e]));return t}function y(t){return this instanceof y?(this.v=t,this):new y(t)}function _(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n,o=r.apply(t,e||[]),a=[];return n={},u("next"),u("throw"),u("return"),n[Symbol.asyncIterator]=function(){return this},n;function u(t){o[t]&&(n[t]=function(e){return new Promise(function(r,n){a.push([t,e,r,n])>1||i(t,e)})})}function i(t,e){try{(r=o[t](e)).value instanceof y?Promise.resolve(r.value.v).then(c,f):l(a[0][2],r)}catch(n){l(a[0][3],n)}var r}function c(t){i("next",t)}function f(t){i("throw",t)}function l(t,e){t(e),a.shift(),a.length&&i(a[0][0],a[0][1])}}function h(t){var e,r;return e={},n("next"),n("throw",function(t){throw t}),n("return"),e[Symbol.iterator]=function(){return this},e;function n(n,o){e[n]=t[n]?function(e){return(r=!r)?{value:y(t[n](e)),done:"return"===n}:o?o(e):e}:o}}function b(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,r=t[Symbol.asyncIterator];return r?r.call(t):(t="function"==typeof l?l(t):t[Symbol.iterator](),e={},n("next"),n("throw"),n("return"),e[Symbol.asyncIterator]=function(){return this},e);function n(r){e[r]=t[r]&&function(e){return new Promise(function(n,o){(function(t,e,r,n){Promise.resolve(n).then(function(e){t({value:e,done:r})},e)})(n,o,(e=t[r](e)).done,e.value)})}}}function v(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function d(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}function x(t){return t&&t.__esModule?t:{default:t}}exports.__assign=r; },{}],"uJAj":[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.MDCFoundation=void 0;var e=function(){function e(e){void 0===e&&(e={}),this.adapter_=e}return Object.defineProperty(e,"cssClasses",{get:function(){return{}},enumerable:!0,configurable:!0}),Object.defineProperty(e,"strings",{get:function(){return{}},enumerable:!0,configurable:!0}),Object.defineProperty(e,"numbers",{get:function(){return{}},enumerable:!0,configurable:!0}),Object.defineProperty(e,"defaultAdapter",{get:function(){return{}},enumerable:!0,configurable:!0}),e.prototype.init=function(){},e.prototype.destroy=function(){},e}();exports.MDCFoundation=e;var t=e;exports.default=t; },{}],"EQDb":[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.MDCComponent=void 0;var t=o(require("tslib")),e=require("./foundation");function n(){if("function"!=typeof WeakMap)return null;var t=new WeakMap;return n=function(){return t},t}function o(t){if(t&&t.__esModule)return t;var e=n();if(e&&e.has(t))return e.get(t);var o={};if(null!=t){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in t)if(Object.prototype.hasOwnProperty.call(t,i)){var u=r?Object.getOwnPropertyDescriptor(t,i):null;u&&(u.get||u.set)?Object.defineProperty(o,i,u):o[i]=t[i]}}return o.default=t,e&&e.set(t,o),o}var r=function(){function n(e,n){for(var o=[],r=2;r<arguments.length;r++)o[r-2]=arguments[r];this.root_=e,this.initialize.apply(this,t.__spread(o)),this.foundation_=void 0===n?this.getDefaultFoundation():n,this.foundation_.init(),this.initialSyncWithDOM()}return n.attachTo=function(t){return new n(t,new e.MDCFoundation({}))},n.prototype.initialize=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e]},n.prototype.getDefaultFoundation=function(){throw new Error("Subclasses must override getDefaultFoundation to return a properly configured foundation class")},n.prototype.initialSyncWithDOM=function(){},n.prototype.destroy=function(){this.foundation_.destroy()},n.prototype.listen=function(t,e,n){this.root_.addEventListener(t,e,n)},n.prototype.unlisten=function(t,e,n){this.root_.removeEventListener(t,e,n)},n.prototype.emit=function(t,e,n){var o;void 0===n&&(n=!1),"function"==typeof CustomEvent?o=new CustomEvent(t,{bubbles:n,detail:e}):(o=document.createEvent("CustomEvent")).initCustomEvent(t,n,!1,e),this.root_.dispatchEvent(o)},n}();exports.MDCComponent=r;var i=r;exports.default=i; },{"tslib":"vCxL","./foundation":"uJAj"}],"Hm44":[function(require,module,exports) { "use strict";var e;function t(t,i){if(void 0===t&&(t=window),void 0===i&&(i=!1),void 0===e||i){var r=!1;try{t.document.addEventListener("test",function(){},{get passive(){return r=!0}})}catch(s){}e=r}return!!e&&{passive:!0}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.applyPassive=t; },{}],"g9TK":[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.numbers=exports.strings=exports.cssClasses=void 0;var e={ACTIVE:"mdc-slider--active",DISABLED:"mdc-slider--disabled",DISCRETE:"mdc-slider--discrete",FOCUS:"mdc-slider--focus",HAS_TRACK_MARKER:"mdc-slider--display-markers",IN_TRANSIT:"mdc-slider--in-transit",IS_DISCRETE:"mdc-slider--discrete"};exports.cssClasses=e;var r={ARIA_DISABLED:"aria-disabled",ARIA_VALUEMAX:"aria-valuemax",ARIA_VALUEMIN:"aria-valuemin",ARIA_VALUENOW:"aria-valuenow",CHANGE_EVENT:"MDCSlider:change",INPUT_EVENT:"MDCSlider:input",LAST_TRACK_MARKER_SELECTOR:".mdc-slider__track-marker:last-child",PIN_VALUE_MARKER_SELECTOR:".mdc-slider__pin-value-marker",STEP_DATA_ATTR:"data-step",THUMB_CONTAINER_SELECTOR:".mdc-slider__thumb-container",TRACK_MARKER_CONTAINER_SELECTOR:".mdc-slider__track-marker-container",TRACK_SELECTOR:".mdc-slider__track"};exports.strings=r;var s={PAGE_FACTOR:4};exports.numbers=s; },{}],"EGFR":[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getCorrectPropertyName=i,exports.getCorrectEventName=r;var t={animation:{prefixed:"-webkit-animation",standard:"animation"},transform:{prefixed:"-webkit-transform",standard:"transform"},transition:{prefixed:"-webkit-transition",standard:"transition"}},n={animationend:{cssProperty:"animation",prefixed:"webkitAnimationEnd",standard:"animationend"},animationiteration:{cssProperty:"animation",prefixed:"webkitAnimationIteration",standard:"animationiteration"},animationstart:{cssProperty:"animation",prefixed:"webkitAnimationStart",standard:"animationstart"},transitionend:{cssProperty:"transition",prefixed:"webkitTransitionEnd",standard:"transitionend"}};function e(t){return Boolean(t.document)&&"function"==typeof t.document.createElement}function i(n,i){if(e(n)&&i in t){var r=n.document.createElement("div"),a=t[i],o=a.standard,d=a.prefixed;return o in r.style?o:d}return i}function r(t,i){if(e(t)&&i in n){var r=t.document.createElement("div"),a=n[i],o=a.standard,d=a.prefixed;return a.cssProperty in r.style?o:d}return i} },{}],"DmKx":[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.MDCSliderFoundation=void 0;var t=i(require("tslib")),e=require("@material/animation/util"),r=require("@material/base/foundation"),n=require("./constants");function a(){if("function"!=typeof WeakMap)return null;var t=new WeakMap;return a=function(){return t},t}function i(t){if(t&&t.__esModule)return t;var e=a();if(e&&e.has(t))return e.get(t);var r={};if(null!=t){var n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in t)if(Object.prototype.hasOwnProperty.call(t,i)){var s=n?Object.getOwnPropertyDescriptor(t,i):null;s&&(s.get||s.set)?Object.defineProperty(r,i,s):r[i]=t[i]}}return r.default=t,e&&e.set(t,r),r}var s=["mousedown","pointerdown","touchstart"],o=["mouseup","pointerup","touchend"],u={mousedown:"mousemove",pointerdown:"pointermove",touchstart:"touchmove"},_={ARROW_DOWN:"ArrowDown",ARROW_LEFT:"ArrowLeft",ARROW_RIGHT:"ArrowRight",ARROW_UP:"ArrowUp",END:"End",HOME:"Home",PAGE_DOWN:"PageDown",PAGE_UP:"PageUp"},d=function(r){function a(e){var n=r.call(this,t.__assign({},a.defaultAdapter,e))||this;return n.savedTabIndex_=NaN,n.active_=!1,n.inTransit_=!1,n.isDiscrete_=!1,n.hasTrackMarker_=!1,n.handlingThumbTargetEvt_=!1,n.min_=0,n.max_=100,n.step_=0,n.value_=0,n.disabled_=!1,n.preventFocusState_=!1,n.thumbContainerPointerHandler_=function(){return n.handlingThumbTargetEvt_=!0},n.interactionStartHandler_=function(t){return n.handleDown_(t)},n.keydownHandler_=function(t){return n.handleKeydown_(t)},n.focusHandler_=function(){return n.handleFocus_()},n.blurHandler_=function(){return n.handleBlur_()},n.resizeHandler_=function(){return n.layout()},n}return t.__extends(a,r),Object.defineProperty(a,"cssClasses",{get:function(){return n.cssClasses},enumerable:!0,configurable:!0}),Object.defineProperty(a,"strings",{get:function(){return n.strings},enumerable:!0,configurable:!0}),Object.defineProperty(a,"numbers",{get:function(){return n.numbers},enumerable:!0,configurable:!0}),Object.defineProperty(a,"defaultAdapter",{get:function(){return{hasClass:function(){return!1},addClass:function(){},removeClass:function(){},getAttribute:function(){return null},setAttribute:function(){},removeAttribute:function(){},computeBoundingRect:function(){return{top:0,right:0,bottom:0,left:0,width:0,height:0}},getTabIndex:function(){return 0},registerInteractionHandler:function(){},deregisterInteractionHandler:function(){},registerThumbContainerInteractionHandler:function(){},deregisterThumbContainerInteractionHandler:function(){},registerBodyInteractionHandler:function(){},deregisterBodyInteractionHandler:function(){},registerResizeHandler:function(){},deregisterResizeHandler:function(){},notifyInput:function(){},notifyChange:function(){},setThumbContainerStyleProperty:function(){},setTrackStyleProperty:function(){},setMarkerValue:function(){},appendTrackMarkers:function(){},removeTrackMarkers:function(){},setLastTrackMarkersStyleProperty:function(){},isRTL:function(){return!1}}},enumerable:!0,configurable:!0}),a.prototype.init=function(){var t=this;this.isDiscrete_=this.adapter_.hasClass(n.cssClasses.IS_DISCRETE),this.hasTrackMarker_=this.adapter_.hasClass(n.cssClasses.HAS_TRACK_MARKER),s.forEach(function(e){t.adapter_.registerInteractionHandler(e,t.interactionStartHandler_),t.adapter_.registerThumbContainerInteractionHandler(e,t.thumbContainerPointerHandler_)}),this.adapter_.registerInteractionHandler("keydown",this.keydownHandler_),this.adapter_.registerInteractionHandler("focus",this.focusHandler_),this.adapter_.registerInteractionHandler("blur",this.blurHandler_),this.adapter_.registerResizeHandler(this.resizeHandler_),this.layout(),this.isDiscrete_&&0===this.getStep()&&(this.step_=1)},a.prototype.destroy=function(){var t=this;s.forEach(function(e){t.adapter_.deregisterInteractionHandler(e,t.interactionStartHandler_),t.adapter_.deregisterThumbContainerInteractionHandler(e,t.thumbContainerPointerHandler_)}),this.adapter_.deregisterInteractionHandler("keydown",this.keydownHandler_),this.adapter_.deregisterInteractionHandler("focus",this.focusHandler_),this.adapter_.deregisterInteractionHandler("blur",this.blurHandler_),this.adapter_.deregisterResizeHandler(this.resizeHandler_)},a.prototype.setupTrackMarker=function(){if(this.isDiscrete_&&this.hasTrackMarker_&&0!==this.getStep()){var t=this.getMin(),e=this.getMax(),r=this.getStep(),n=(e-t)/r,a=Math.ceil(n)!==n;if(a&&(n=Math.ceil(n)),this.adapter_.removeTrackMarkers(),this.adapter_.appendTrackMarkers(n),a){var i=(e-n*r)/r+1;this.adapter_.setLastTrackMarkersStyleProperty("flex-grow",String(i))}}},a.prototype.layout=function(){this.rect_=this.adapter_.computeBoundingRect(),this.updateUIForCurrentValue_()},a.prototype.getValue=function(){return this.value_},a.prototype.setValue=function(t){this.setValue_(t,!1)},a.prototype.getMax=function(){return this.max_},a.prototype.setMax=function(t){if(t<this.min_)throw new Error("Cannot set max to be less than the slider's minimum value");this.max_=t,this.setValue_(this.value_,!1,!0),this.adapter_.setAttribute(n.strings.ARIA_VALUEMAX,String(this.max_)),this.setupTrackMarker()},a.prototype.getMin=function(){return this.min_},a.prototype.setMin=function(t){if(t>this.max_)throw new Error("Cannot set min to be greater than the slider's maximum value");this.min_=t,this.setValue_(this.value_,!1,!0),this.adapter_.setAttribute(n.strings.ARIA_VALUEMIN,String(this.min_)),this.setupTrackMarker()},a.prototype.getStep=function(){return this.step_},a.prototype.setStep=function(t){if(t<0)throw new Error("Step cannot be set to a negative number");this.isDiscrete_&&("number"!=typeof t||t<1)&&(t=1),this.step_=t,this.setValue_(this.value_,!1,!0),this.setupTrackMarker()},a.prototype.isDisabled=function(){return this.disabled_},a.prototype.setDisabled=function(t){this.disabled_=t,this.toggleClass_(n.cssClasses.DISABLED,this.disabled_),this.disabled_?(this.savedTabIndex_=this.adapter_.getTabIndex(),this.adapter_.setAttribute(n.strings.ARIA_DISABLED,"true"),this.adapter_.removeAttribute("tabindex")):(this.adapter_.removeAttribute(n.strings.ARIA_DISABLED),isNaN(this.savedTabIndex_)||this.adapter_.setAttribute("tabindex",String(this.savedTabIndex_)))},a.prototype.handleDown_=function(t){var e=this;if(!this.disabled_){this.preventFocusState_=!0,this.setInTransit_(!this.handlingThumbTargetEvt_),this.handlingThumbTargetEvt_=!1,this.setActive_(!0);var r=function(t){e.handleMove_(t)},n=u[t.type],a=function(){e.handleUp_(),e.adapter_.deregisterBodyInteractionHandler(n,r),o.forEach(function(t){return e.adapter_.deregisterBodyInteractionHandler(t,a)})};this.adapter_.registerBodyInteractionHandler(n,r),o.forEach(function(t){return e.adapter_.registerBodyInteractionHandler(t,a)}),this.setValueFromEvt_(t)}},a.prototype.handleMove_=function(t){t.preventDefault(),this.setValueFromEvt_(t)},a.prototype.handleUp_=function(){this.setActive_(!1),this.adapter_.notifyChange()},a.prototype.getPageX_=function(t){return t.targetTouches&&t.targetTouches.length>0?t.targetTouches[0].pageX:t.pageX},a.prototype.setValueFromEvt_=function(t){var e=this.getPageX_(t),r=this.computeValueFromPageX_(e);this.setValue_(r,!0)},a.prototype.computeValueFromPageX_=function(t){var e=this.max_,r=this.min_,n=(t-this.rect_.left)/this.rect_.width;return this.adapter_.isRTL()&&(n=1-n),r+n*(e-r)},a.prototype.handleKeydown_=function(t){var e=this.getKeyId_(t),r=this.getValueForKeyId_(e);isNaN(r)||(t.preventDefault(),this.adapter_.addClass(n.cssClasses.FOCUS),this.setValue_(r,!0),this.adapter_.notifyChange())},a.prototype.getKeyId_=function(t){return t.key===_.ARROW_LEFT||37===t.keyCode?_.ARROW_LEFT:t.key===_.ARROW_RIGHT||39===t.keyCode?_.ARROW_RIGHT:t.key===_.ARROW_UP||38===t.keyCode?_.ARROW_UP:t.key===_.ARROW_DOWN||40===t.keyCode?_.ARROW_DOWN:t.key===_.HOME||36===t.keyCode?_.HOME:t.key===_.END||35===t.keyCode?_.END:t.key===_.PAGE_UP||33===t.keyCode?_.PAGE_UP:t.key===_.PAGE_DOWN||34===t.keyCode?_.PAGE_DOWN:""},a.prototype.getValueForKeyId_=function(t){var e=this.max_,r=this.min_,a=this.step_||(e-r)/100;switch(this.adapter_.isRTL()&&(t===_.ARROW_LEFT||t===_.ARROW_RIGHT)&&(a=-a),t){case _.ARROW_LEFT:case _.ARROW_DOWN:return this.value_-a;case _.ARROW_RIGHT:case _.ARROW_UP:return this.value_+a;case _.HOME:return this.min_;case _.END:return this.max_;case _.PAGE_UP:return this.value_+a*n.numbers.PAGE_FACTOR;case _.PAGE_DOWN:return this.value_-a*n.numbers.PAGE_FACTOR;default:return NaN}},a.prototype.handleFocus_=function(){this.preventFocusState_||this.adapter_.addClass(n.cssClasses.FOCUS)},a.prototype.handleBlur_=function(){this.preventFocusState_=!1,this.adapter_.removeClass(n.cssClasses.FOCUS)},a.prototype.setValue_=function(t,e,r){if(void 0===r&&(r=!1),t!==this.value_||r){var a=this.min_,i=this.max_,s=t===a||t===i;this.step_&&!s&&(t=this.quantize_(t)),t<a?t=a:t>i&&(t=i),this.value_=t,this.adapter_.setAttribute(n.strings.ARIA_VALUENOW,String(this.value_)),this.updateUIForCurrentValue_(),e&&(this.adapter_.notifyInput(),this.isDiscrete_&&this.adapter_.setMarkerValue(t))}},a.prototype.quantize_=function(t){return Math.round(t/this.step_)*this.step_},a.prototype.updateUIForCurrentValue_=function(){var t=this,r=this.max_,n=this.min_,a=(this.value_-n)/(r-n),i=a*this.rect_.width;this.adapter_.isRTL()&&(i=this.rect_.width-i);var s=(0,e.getCorrectPropertyName)(window,"transform"),o=(0,e.getCorrectEventName)(window,"transitionend");if(this.inTransit_){var u=function(){t.setInTransit_(!1),t.adapter_.deregisterThumbContainerInteractionHandler(o,u)};this.adapter_.registerThumbContainerInteractionHandler(o,u)}requestAnimationFrame(function(){t.adapter_.setThumbContainerStyleProperty(s,"translateX("+i+"px) translateX(-50%)"),t.adapter_.setTrackStyleProperty(s,"scaleX("+a+")")})},a.prototype.setActive_=function(t){this.active_=t,this.toggleClass_(n.cssClasses.ACTIVE,this.active_)},a.prototype.setInTransit_=function(t){this.inTransit_=t,this.toggleClass_(n.cssClasses.IN_TRANSIT,this.inTransit_)},a.prototype.toggleClass_=function(t,e){e?this.adapter_.addClass(t):this.adapter_.removeClass(t)},a}(r.MDCFoundation);exports.MDCSliderFoundation=d;var h=d;exports.default=h; },{"tslib":"vCxL","@material/animation/util":"EGFR","@material/base/foundation":"uJAj","./constants":"g9TK"}],"XtGF":[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.MDCSlider=void 0;var t=s(require("tslib")),e=require("@material/base/component"),r=require("@material/dom/events"),n=require("./constants"),i=require("./foundation");function o(){if("function"!=typeof WeakMap)return null;var t=new WeakMap;return o=function(){return t},t}function s(t){if(t&&t.__esModule)return t;var e=o();if(e&&e.has(t))return e.get(t);var r={};if(null!=t){var n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in t)if(Object.prototype.hasOwnProperty.call(t,i)){var s=n?Object.getOwnPropertyDescriptor(t,i):null;s&&(s.get||s.set)?Object.defineProperty(r,i,s):r[i]=t[i]}}return r.default=t,e&&e.set(t,r),r}var a=function(e){function o(){return null!==e&&e.apply(this,arguments)||this}return t.__extends(o,e),o.attachTo=function(t){return new o(t)},Object.defineProperty(o.prototype,"value",{get:function(){return this.foundation_.getValue()},set:function(t){this.foundation_.setValue(t)},enumerable:!0,configurable:!0}),Object.defineProperty(o.prototype,"min",{get:function(){return this.foundation_.getMin()},set:function(t){this.foundation_.setMin(t)},enumerable:!0,configurable:!0}),Object.defineProperty(o.prototype,"max",{get:function(){return this.foundation_.getMax()},set:function(t){this.foundation_.setMax(t)},enumerable:!0,configurable:!0}),Object.defineProperty(o.prototype,"step",{get:function(){return this.foundation_.getStep()},set:function(t){this.foundation_.setStep(t)},enumerable:!0,configurable:!0}),Object.defineProperty(o.prototype,"disabled",{get:function(){return this.foundation_.isDisabled()},set:function(t){this.foundation_.setDisabled(t)},enumerable:!0,configurable:!0}),o.prototype.initialize=function(){this.thumbContainer_=this.root_.querySelector(n.strings.THUMB_CONTAINER_SELECTOR),this.track_=this.root_.querySelector(n.strings.TRACK_SELECTOR),this.pinValueMarker_=this.root_.querySelector(n.strings.PIN_VALUE_MARKER_SELECTOR),this.trackMarkerContainer_=this.root_.querySelector(n.strings.TRACK_MARKER_CONTAINER_SELECTOR)},o.prototype.getDefaultFoundation=function(){var t=this,e={hasClass:function(e){return t.root_.classList.contains(e)},addClass:function(e){return t.root_.classList.add(e)},removeClass:function(e){return t.root_.classList.remove(e)},getAttribute:function(e){return t.root_.getAttribute(e)},setAttribute:function(e,r){return t.root_.setAttribute(e,r)},removeAttribute:function(e){return t.root_.removeAttribute(e)},computeBoundingRect:function(){return t.root_.getBoundingClientRect()},getTabIndex:function(){return t.root_.tabIndex},registerInteractionHandler:function(e,n){return t.listen(e,n,(0,r.applyPassive)())},deregisterInteractionHandler:function(e,n){return t.unlisten(e,n,(0,r.applyPassive)())},registerThumbContainerInteractionHandler:function(e,n){t.thumbContainer_.addEventListener(e,n,(0,r.applyPassive)())},deregisterThumbContainerInteractionHandler:function(e,n){t.thumbContainer_.removeEventListener(e,n,(0,r.applyPassive)())},registerBodyInteractionHandler:function(t,e){return document.body.addEventListener(t,e)},deregisterBodyInteractionHandler:function(t,e){return document.body.removeEventListener(t,e)},registerResizeHandler:function(t){return window.addEventListener("resize",t)},deregisterResizeHandler:function(t){return window.removeEventListener("resize",t)},notifyInput:function(){return t.emit(n.strings.INPUT_EVENT,t)},notifyChange:function(){return t.emit(n.strings.CHANGE_EVENT,t)},setThumbContainerStyleProperty:function(e,r){t.thumbContainer_.style.setProperty(e,r)},setTrackStyleProperty:function(e,r){return t.track_.style.setProperty(e,r)},setMarkerValue:function(e){return t.pinValueMarker_.innerText=e.toLocaleString()},appendTrackMarkers:function(e){for(var r=document.createDocumentFragment(),n=0;n<e;n++){var i=document.createElement("div");i.classList.add("mdc-slider__track-marker"),r.appendChild(i)}t.trackMarkerContainer_.appendChild(r)},removeTrackMarkers:function(){for(;t.trackMarkerContainer_.firstChild;)t.trackMarkerContainer_.removeChild(t.trackMarkerContainer_.firstChild)},setLastTrackMarkersStyleProperty:function(e,r){t.root_.querySelector(n.strings.LAST_TRACK_MARKER_SELECTOR).style.setProperty(e,r)},isRTL:function(){return"rtl"===getComputedStyle(t.root_).direction}};return new i.MDCSliderFoundation(e)},o.prototype.initialSyncWithDOM=function(){var t=this.parseFloat_(this.root_.getAttribute(n.strings.ARIA_VALUENOW),this.value),e=this.parseFloat_(this.root_.getAttribute(n.strings.ARIA_VALUEMIN),this.min),r=this.parseFloat_(this.root_.getAttribute(n.strings.ARIA_VALUEMAX),this.max);e>=this.max?(this.max=r,this.min=e):(this.min=e,this.max=r),this.step=this.parseFloat_(this.root_.getAttribute(n.strings.STEP_DATA_ATTR),this.step),this.value=t,this.disabled=this.root_.hasAttribute(n.strings.ARIA_DISABLED)&&"false"!==this.root_.getAttribute(n.strings.ARIA_DISABLED),this.foundation_.setupTrackMarker()},o.prototype.layout=function(){this.foundation_.layout()},o.prototype.stepUp=function(t){void 0===t&&(t=this.step||1),this.value+=t},o.prototype.stepDown=function(t){void 0===t&&(t=this.step||1),this.value-=t},o.prototype.parseFloat_=function(t,e){var r=parseFloat(t);return"number"==typeof r&&isFinite(r)?r:e},o}(e.MDCComponent);exports.MDCSlider=a; },{"tslib":"vCxL","@material/base/component":"EQDb","@material/dom/events":"Hm44","./constants":"g9TK","./foundation":"DmKx"}],"MWpR":[function(require,module,exports) { "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./component");Object.keys(e).forEach(function(t){"default"!==t&&"__esModule"!==t&&Object.defineProperty(exports,t,{enumerable:!0,get:function(){return e[t]}})});var t=require("./constants");Object.keys(t).forEach(function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(exports,e,{enumerable:!0,get:function(){return t[e]}})});var r=require("./foundation");Object.keys(r).forEach(function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(exports,e,{enumerable:!0,get:function(){return r[e]}})}); },{"./component":"XtGF","./constants":"g9TK","./foundation":"DmKx"}],"GW8s":[function(require,module,exports) { "use strict";function e(e,a){return n(e)||t(e,a)||r()}function r(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function t(e,r){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var t=[],n=!0,a=!1,u=void 0;try{for(var c,i=e[Symbol.iterator]();!(n=(c=i.next()).done)&&(t.push(c.value),!r||t.length!==r);n=!0);}catch(o){a=!0,u=o}finally{try{n||null==i.return||i.return()}finally{if(a)throw u}}return t}}function n(e){if(Array.isArray(e))return e}function a(e,r,t,n,a,u,c){try{var i=e[u](c),o=i.value}catch(s){return void t(s)}i.done?r(o):Promise.resolve(o).then(n,a)}function u(e){return function(){var r=this,t=arguments;return new Promise(function(n,u){var c=e.apply(r,t);function i(e){a(c,n,u,i,o,"next",e)}function o(e){a(c,n,u,i,o,"throw",e)}i(void 0)})}}Object.defineProperty(exports,"__esModule",{value:!0}),require("chrome-extension-async"),require("regenerator-runtime/runtime");var c=require("@material/slider"),i=document.querySelector("#volume-slider"),o=document.querySelectorAll(".mdc-radio a"),s=document.querySelector("#slider-max span"),l=document.querySelector("#disable_control"),m=new c.MDCSlider(i);u(regeneratorRuntime.mark(function e(){var r,t;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i.style.opacity="0",e.next=3,p();case 3:for(r=e.sent,m.value=100*r,f(),1!=r&&h(r),i.style.opacity="1",t=0;t<o.length;t++)("mute"!=o[t].id||0!=r)&&o[t].innerText!=r+"x"||o[t].classList.contains("checked")?o[t].classList.remove("checked"):o[t].classList.add("checked");case 9:case"end":return e.stop()}},e)}))(),l.addEventListener("click",function(){var e=u(regeneratorRuntime.mark(function e(r){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:chrome.runtime.reload();case 1:case"end":return e.stop()}},e)}));return function(r){return e.apply(this,arguments)}}());for(var d=0;d<o.length;d++)o[d].addEventListener("click",function(e){var r=e.target.innerText;h(r="volume_off"==r?"0":r.slice(0,-1)),m.value=100*r,f();for(var t=0;t<o.length;t++)o[t].classList.remove("checked");"volume_off"==e.target.innerText?e.target.parentElement.classList.add("checked"):e.target.classList.add("checked")});function f(){m.value>=m.max-100?(m.max=m.max+100,s.innerText=m.max/200):m.value<=.4*m.max&&m.max>=600&&(m.max=m.max-100,s.innerText=m.max/200)}function p(){return v.apply(this,arguments)}function v(){return(v=u(regeneratorRuntime.mark(function e(){var r,t;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,y();case 2:return r=e.sent,t={name:"get-tab-volume",tabId:r},e.abrupt("return",chrome.runtime.sendMessage(t));case 5:case"end":return e.stop()}},e)}))).apply(this,arguments)}function h(e){return x.apply(this,arguments)}function x(){return(x=u(regeneratorRuntime.mark(function e(r){var t,n,a;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,y();case 2:return t=e.sent,n={name:"set-tab-volume",tabId:t,value:r},e.next=6,chrome.runtime.sendMessage(n);case 6:return a=e.sent,e.abrupt("return",a);case 8:case"end":return e.stop()}},e)}))).apply(this,arguments)}function y(){return g.apply(this,arguments)}function g(){return(g=u(regeneratorRuntime.mark(function r(){var t,n,a;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,chrome.tabs.query({active:!0,currentWindow:!0});case 2:return t=r.sent,n=e(t,1),a=n[0],r.abrupt("return",a.id);case 6:case"end":return r.stop()}},r)}))).apply(this,arguments)}m.listen("MDCSlider:input",function(){for(var e=m.value/100,r=0;r<o.length;r++)("mute"!=o[r].id||0!=e)&&o[r].innerText!=e+"x"||o[r].classList.contains("checked")?o[r].classList.remove("checked"):o[r].classList.add("checked");f(),h(e)}); },{"chrome-extension-async":"sSZ0","regenerator-runtime/runtime":"QVnC","@material/slider":"MWpR"}]},{},["GW8s"], null) //# sourceMappingURL=/popup.af2c14b8.js.map
Ewald120q
Generating Labels for Image Data, based on Carla
Ingenium-Designs
This project demonstrates how to use Flask and Amazon Rekognition to build an image labels generator. Users can upload images, which are stored in Amazon S3, and analyzed to generate descriptive labels with confidence scores. A showcase of AWS and Python integration for image analysis.
tejas1121
Serverless image labeling application using AWS Rekognition
Generates label files for images which are used for training. This one is specific for YOLO , but could likely be adapted for other image detection convolutional neural network frameworks.
ShenLoong99
The AWS Image Labels Generator is a cloud-native automated solution designed to detect and catalog objects, scenes, and concepts within images.
This project uses **Amazon S3**, **Lambda**, and **Rekognition** to detect labels in uploaded images. It’s a simple, serverless application that takes an image filename from S3 and returns objects detected in the image with confidence scores. 🔗 Tech Stack: `AWS Lambda`, `S3`, `Amazon Rekognition`, `Python`
BuiltBySoniya
Developed an AI-powered image label generator using Amazon Rekognition to automatically detect and tag objects in uploaded images stored in Amazon S3. The system identifies multiple labels per image along with confidence scores, enabling intelligent image categorization and visual asset recognition.
yeshwanthlm
Image Labels Generator using Amazon Rekognition
Sujith013
4 labels of marine species are classified with CNN using keras and tensorflow. Data augmentation is done using keras image data generator
No description available
teamikadze
Build an image labels generator using Amazon Rekognition