jaredreich /
notie
🔔 a clean and simple notification, input, and selection suite for javascript, with no dependencies
Loading repository data…
xxjapp / repository
A simple and beautiful javascript dialog library
xdialog is a simple JavaScript library to create beautiful modern dialogs with lots of cool effects using CSS3 transitions and transforms.
Online demo is here xdialog demo
Inspired by codrops' ModalWindowEffects, this dialog library enhanced some of the original CSS effects, and added many convenient functions.
You can use CDN or local method to install.
CDN
Insert the following code into your html file.
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/xxjapp/xdialog@3/xdialog.min.css">
<script src="https://cdn.jsdelivr.net/gh/xxjapp/xdialog@3/xdialog.min.js"></script>
Or for non-min version, use this.
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/xxjapp/xdialog@3/xdialog.css">
<script src="https://cdn.jsdelivr.net/gh/xxjapp/xdialog@3/xdialog.js"></script>
Thanks to jsdelivr, jsdelivr CDN works like magic. For more details, please refer https://www.jsdelivr.com/package/gh/xxjapp/xdialog.
Local
<link rel="stylesheet" href="path/to/xdialog.min.css">
<script src="path/to/xdialog.min.js"></script>
Or insert non-min version files if you like.
<link rel="stylesheet" href="path/to/xdialog.css">
<script src="path/to/xdialog.js"></script>
Just call xdialog API to open or create dialogs, like the following. See Reference for more details.
let dialog1 = xdialog.open(); // open is a shortcut of create + show
dialog1.close(); // close is a shortcut of hide + destroy
let dialog2 = xdialog.create({title: 'Hello, xdialog', body: 'This is a message.'});
dialog2.show();
dialog2.hide();
dialog2.destroy();
xdialog.init(options)
initialize xdialog
options.zIndex0 - initial z index to use, default value is 10000
xdialog.create(options)
create a dialog
SEE: default options
xdialog.open(options)
create a dialog and show it
SEE: default options
xdialog.alert(text, options)
display an alert dialog, please view the source for details
xdialog.confirm(text, onyes, options)
display a confirm dialog, please view the source for details
xdialog.info(text, options)
display an information dialog, please view the source for details
xdialog.warn(text, options)
display a warning dialog, please view the source for details
xdialog.error(text, options)
display an error dialog, please view the source for details
xdialog.fatal(text, options)
display a fatal error dialog, please view the source for details
xdialog.dialogs()
get all dialog instances
xdialog.startSpin()
start spin animation
xdialog.stopSpin()
stop spin animation
dialog.id
dialog html element id
dialog.element
dialog html element
dialog.show()
show dialog
dialog.hide()
hide dialog
dialog.destroy()
destroy dialog
dialog.close()
hide dialog and destroy it
dialog.adjust()
adjust dialog to make the whole dialog visible
dialog.fixChromeBlur()
fix chrome blur
Default options will be used if you create / open dialog without corresponding attributes. You can overwrite these with your own values.
{
// dialog title
// use null value to remove title
title: 'Dialog Title',
// dialog body
//
// valid values:
// - null
// no body
//
// - string
// body html
//
// - object
// src: body source selector
// element: body source dom element
//
// please use element when selector not usable
//
// example:
// {
// src: '#demo6-content'
// element: document.getElementById('demo6-content')
// }
body: '<p>Dialog body</p>',
// dialog buttons
//
// valid values:
// - null
// no buttons
//
// - array
// predefined button name or user defined button html like
// example: ['ok', 'cancel', 'delete', '<button id="my-button-id" class="my-button-class">Button-text</button>']
//
// - object
// button name to button text(predefined) or button html(user defined) or attribute object map like
// example: {
// ok: {
// text: 'okay',
// style: 'background:#4336f4;',
// clazz: 'xd-button xd-ok demo-copy-button'
// },
// delete: 'Delete',
// cancel: 'Cancel',
// other: '<button id="my-button-id" class="my-button-class">Button-text</button>'
// }
buttons: ['ok', 'cancel'],
// dialog extra classes
// for example 'xd-fatal my-dialog-class'
extraClass: '',
// dialog extra style
// for example 'width: 640px;'
style: '',
// dialog show/hide effect, one of the following values
// - fade_in_and_scale
// - slide_in_right
// - slide_in_bottom
// - newspaper
// - fall
// - side_fall
// - sticky_up
// - 3d_flip_horizontal
// - 3d_flip_vertical
// - 3d_sign
// - super_scaled
// - just_me
// - 3d_slit
// - 3d_rotate_bottom
// - 3d_rotate_in_left
// - blur
// - let_me_in
// - make_way
// - slip_from_top
//
// use '' or null value to disable effect
effect: 'fade_in_and_scale',
// fix dialog blur for chrome browser with/without transform and/or with/without perspective
//
// true: to fix
// false: not to fix
//
fixChromeBlur: true,
// modal or not
modal: true,
// timeout in seconds to close dialog automatically
// use 0 value to disable closing dialog automatically
timeout: 0,
// listen enter key press or not
listenEnterKey: true,
// listen ESC key press or not
listenESCKey: true,
// callback when dialog element is about to be created
// return false to stop creating process
beforecreate: null,
// callback when dialog element has been created
aftercreate: null,
// callback before show
// return false to stop showing process
beforeshow: null,
// callback after show
aftershow: null,
// callback before hide
// return false to stop hidding process
beforehide: null,
// callback after hide
afterhide: null,
// callback when OK button pressed
// return false to avoid to be closed
onok: null,
// callback when Cancel button pressed
// return false to avoid to be closed
oncancel: null,
// callback when Delete button pressed
// return false to avoid to be closed
ondelete: null,
// callback when dialog is about to be destroyed
// return false to avoid to be destroyed
ondestroy: null,
// callback when drag will start
// return false to avoid being dragged by default process
// return true to allow being dragged
// otherwise to go default process
ondrag: null,
}
All callback functions use the same prototype, except the ones with special instruction.
/**
* @param {Object} param - callback parameter
* @param {String} param.id - dialog html element id
* @param {Element} param.element - dialog html element
* @param {Object} param.dialog - dialog instance
* @param {Element} param.overlay - dialog overlay element
* @param {Event} param.event - event if any
*/
function callback(param)
/**
* @param {Element} element - element clicked
* @param {Element} destElement - element to be moved
* @param {Element} srcElement - element to drag on
*/
function ondrag(element, destElement, srcElement)
Example: let jquery Sortable to handle some element's dragging.
SEE: https://jqueryui.com/sortable/
ondrag: function(element) {
if ($(element).closest('.ui-sortable').length > 0) {
return false;
}
// otherwise let go default process
}
Selected from shared topics, language and repository description—not editorial ratings.
jaredreich /
🔔 a clean and simple notification, input, and selection suite for javascript, with no dependencies
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.
artemain /
= // @name MetaBot for YouTube // @namespace yt-metabot-user-js // @description More information about users and videos on YouTube. // @version 200322 // @homepageURL https://vk.com/public159378864 // @supportURL https://github.com/asrdri/yt-metabot-user-js/issues // @updateURL https://raw.githubusercontent.com/asrdri/yt-metabot-user-js/master/yt-metabot.meta.js // @downloadURL https://raw.githubusercontent.com/asrdri/yt-metabot-user-js/master/yt-metabot.user.js // @icon https://raw.githubusercontent.com/asrdri/yt-metabot-user-js/master/logo.png // @include https://*youtube.com/* // @include https://*dislikemeter.com/?v* // @require https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js // @require https://raw.githubusercontent.com/sizzlemctwizzle/GM_config/master/gm_config.js // @grant GM_getValue // @grant GM_setValue // @grant GM_xmlhttpRequest // @grant GM.xmlHttpRequest // @run-at document-start // ==/UserScript== GM_config.init( { 'id': 'ytmetabot_config', 'title': 'MetaBot/YT Settings', 'fields': { 'option1': { 'label': 'Processing mode for comments by known bots', 'type': 'int', 'min': 1, 'max': 2, 'default': 1 }, 'option2': { 'label': 'Auto-dislike comments by known bots', 'type': 'checkbox', 'default': false }, 'option3': { 'label': 'Hide long like/dislike/share button text', 'type': 'checkbox', 'default': true }, 'option4': { 'label': 'Use additional lists', 'type': 'checkbox', 'default': true }, 'option5': { 'label': 'Send alert to server', 'type': 'checkbox', 'default': false }, 'listp1': { 'label': 'Bookmarks (personal list)', 'type': 'text', 'default': '' }, 'listc1': { 'label': 'Custom list URL 1', 'type': 'text', 'default': 'https://github.com/asrdri/yt-metabot-user-js/raw/master/list-sample.txt' }, 'listc2': { 'label': 'Custom list URL 2', 'type': 'text', 'default': '' }, 'listc3': { 'label': 'Custom list URL 3', 'type': 'text', 'default': '' }, 'colorp1': { 'label': 'Personal color', 'type': 'int', 'default': '33023' }, 'colorc1': { 'label': 'Custom color 1', 'type': 'int', 'default': '8388863' }, 'colorc2': { 'label': 'Custom color 2', 'type': 'int', 'default': '16744448' }, 'colorc3': { 'label': 'Custom color 3', 'type': 'int', 'default': '8421504' } }, }); const checkb = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAPCAMAAADXs89aAAAA+VBMVEUAAAD///+qqqp/f39mZmZubm5vb29sbGxtbW1tbW1tbW1ubm5ubm5tbW1ubm5tbW1ubm5ubm5ubm5tbW1tbW1ubm5ubm5tbW1ubm5ubm5tbW1ubm5ubm5vb29wcHBxcXFzc3N0dHR1dXV3d3d4eHh6enp7e3t8fHyAgICCgoKFhYWMjIyOjo6Pj4+QkJCSkpKUlJSWlpaZmZmampqdnZ2hoaGqqqqwsLC0tLS1tbW2tra5ubm+vr7ExMTKysrLy8vQ0NDR0dHS0tLU1NTV1dXW1tbe3t7i4uLj4+Pk5OTl5eXn5+fo6Ojq6urs7Ozu7u7w8PD9/f3////SCMufAAAAHHRSTlMAAAMEBSUnKCpbXV9htre6u87Q0dPp6uvs7u/8pkhKVQAAAMdJREFUeNpN0NdWwlAUANEbgvTeQhnQIE1B1ChYQcEC0gL+/8ewzPWwmMf9OMowDKWUP5YqU0pGTaXTHMqdOcM7G7LBIw4Vnc3b89i9BytwYH+uv7oAOqsbyJjCMb4d/urOgYhwqr55wmvdhIRwufXT0zzrgCVM1X2tA5xva1ARLvE4aQCMXoCCcJLaZNpvX71/3QJx4ShUBx+Lz4fp7hrCwmYWL3v5u7XTPmEVtLRfuk7+5OhJIKP9NO2psDIjCatSiId9/7oHY28awgWqV+8AAAAASUVORK5CYII='; const minf = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAMAAAAMCGV4AAAAM1BMVEUAAAB/f39vb29sbGxtbW1ubm5ubm5sbGxubm5ubm7////Pz8+Li4uampp8fHzb29uSkpKUSDd+AAAACXRSTlMABCcoXbfQ6/zS5clrAAAAYUlEQVQIHQXBAQLCMAgEsBxs+v/32oJJkE5lZ+8Suhu4Z7R6m2c/NVW28zbmew8xeV4A+FWgkjSkCuYDqAo4gNQCgK0BAFMLHsD2pqjL1rqnSSysOdt2U8C9I0insrN3+QOBPC04AhR0BwAAAABJRU5ErkJggg=='; const mred = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAMAAAAMCGV4AAAApVBMVEUzMzP/MzP+MzP+MzP+MzP+MzP9MzP+NTP+NTP/XDP+NTP+NTP+MzP+MzP+NDP+NDP+PTP9NDP+OTP9MzP+NTP+NTP+MzP5MzP/MzP/////e3v/NTP/PT3/Tk7/YWH/UVH/TU3/9/f/+fn/cnL/5eX/QED/ZGT/09P/1tb/wcH/xcX/6Oj/Z2f/hYX/aWn/b2//39//cXH/dXX/oqL/paX/T0//dnb54rKOAAAAGHRSTlMABFzrJurQ1O4Fu+8nt7nQKv1ht17tzyc2HRLDAAAAj0lEQVQIHQXABVIDARAEwLmLuwK9SXB35/9Po5JktB5P9sP5tkmSZDlwsdvtfi2mSbI84rqqvuh1k9EAZ1V1h36TNZxW1Tm0GcOhqm5hlgm4rCvQyR7c1DNYZQju6wF0MgeP9QQ22YKX1zfQplnA+8cnHDfJtIfv+kGvmyQnfQ5/B/rdJEmadtZZdTZtk+QfVeIRvDroEMEAAAAASUVORK5CYII='; const imgdm = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAMAAADzN3VRAAACfFBMVEUAAAD+wgD+wQD+wQD/qgD/vwD1ugD+wQD/vwD+wQD+wQD+wgD+wgD5vwD+xwD9wAD7vwD5vQD+wQD1uwD/zADyuAD0uQDyuADytwDzuADxtwDztwDytwDwuAD+wgDzuAD+wgDyuQD+wgD1ugDxtwD0tgBaanv+wgBEW5H+wAD+wQDytwDxtgBIXpL+wQBPZZb+wgD+wQBmeKP+wgBXa5r//wD+wQBic5ldcZ9ccJ5SZ5dEW5H+wgD+wgBlcHD+wAD+wQBEXZD+wQD3vADzuAB0dGltfaZKX5T+xAD6vgDfnwBGXJFVaZpfcp5EWpD/wgDyuAD+wQD19fVuf7OOeiHyugT7vwD+wgCykRY8RTno6OiGgF1oeq7ksQinsc3nswf7vwHyuwr8wQL9wQD2zEf068/18OP03pj20mGBgnjv7++oscV9e2dpe6/CmxL11nf18uv11nb9wAByaCn2uwCrjBj8wADl5uZqd5J+fGiXiE3rtAXj5einsMWZiUrz8/NYaI1SZ5xCSTj8wAH3yDX9wQK0mTpTaJtabqNZbqJUaZrh5Orb3OF1aihESjdSZ5r03ZP06cSAjalpcHemiRr6vgD09PTBmhKFf1+0vNTp6enbqwpeWy/YrR7GoizIoyuwlz2dqcM2QTtvgKjKpSmReyD4vgVpdo32zUnxugv3vgb7wAT6wQz1ugD0ugAoOD/6wAn179310FgwPT2ihhvEnBFZWDHl5eb5vQCEfmDR1Nvv8PLr6+uEkrFARzi4lBW3lBWMgljS1+Ht7e2VoLs/RziSfCC6wdivjxdHTDbN0t7n6e34vQLutwV/cCb4vQD10V318ef2yTv0uQDkLrBbAAAAT3RSTlMATOr6AwQ4shjgmfhtLBf5/vJjNQWgSfyz2PuA8CT3wOdUvsaHMR9+ZCn+jDi3t9Au+fR22AKW7+XlyjiC+zJB0Typ+MPO9xgaMwg61+5oF3I9zwAAAY1JREFUeAFtzfObG1EUxvETu7Zt2zb63snERVMbTZPatm3b7tr2/kN7JzO7d7PPfn79Pue8pLE6LbamzZr37NWbEjSxO6DyfenakgSdHkJ5h45G0rQwoL7brLVJuxBB9Y8NVDf0aCjatg1xdmD7Q8B/qwRAzAt4YxHWvhWR1QFcLgOWf10J4EQACFxBlHUncgK4+/PX7z+PwL1OS8/IzYOPtSOygCsofLG7FFzYEwx6wpBYJxPZ0Jhq1pm6QPjwftVqxH1mg8ggwqtjx6/e3KrYf+CgmbpBI+1ZukyWVxQrDh0+4qIeiPv47tr1G9tkOd+tuPN3Xx/qC27N2nXrN2zcpBVu85Z+1H8AENmxc9cnCf9FOZo0mGgIpIrKKgkQhds7lGjY8G/ff/jB3ePlvlYejCCikSdPnYbizNlz5y9cVL9dGsXL6DFQ+R8/efrsuTv0cuy48RMmEmecNBm13rxNTkmdQnWmToNGyszKzplOgkk3Qw9IvpmzZheF5sylBMZ5882uBbRw0eIlpKgB/8u5fuwF0eAAAAAASUVORK5CYII='; const imgdma = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAMAAADzN3VRAAABsFBMVEUAAAD+wQD+wgD/qgD+wQD/vwD+wQD+wgD+wgD+wQD+xwBatlz/vwD+wQBft1n+wQDxtwD1ugD9wADyuAD0uQD/zAD7vwD5vQDxtwDzuADyuQDztwDyuADytwDytwDytwDwuAD+wgD0tgCstyvzuAD1uwD+wgD+wgD+wgD+wAD+wQD+wQD+wgD+wQD+wgD//wD+wQD+wgD+wgD+wAD+wQD+wQD+xACtvC1Ztl3/wgD///97uEnyuAD+wQCBu1CWujp7xX32uwCOeiGrjBiykRabx2qc1J5nvWryugRat108RTn7vwH7vwD+wgD9wADxwAb4vQB/cCaSfCAoOD95tkmGt0CihhteWy+ReyDBmhIwPT1HTDb8wAB6t0n6vgD7wAT2zUn03ZP06cR4wXQ2QTv9wQD2zEf068/18OP03pj20mF5ulhyaCnutwX11nf18uv11nb6wQzbqwr10V318ef2yTvksQjCmxI/Rzj6wAn179310FimiRr8wAH3yDX9wQKV0ZdZWDFARzj0uQD5vQDnswdCSTi4lBVESjeKukCvjxe3lBV1aij0ugD4vQLEnBHgcTooAAAAOXRSTlMA6kwD+gTgbfiyF+gYmd5jh8b5/EkF/vL72FSAoLOM8CT3MVjANee+fin+ty75dgKWgvtB0akaVEpkodaYAAABOUlEQVR4XnXPVXMiURCG4SYES4C4u7uvfSO4S9zd3d3d1/5yOAWEGYq8N33xVFdXUyS9RqfOzM3LSK8kWSkGLcIF/lbXSCBJgVi9+UXKKKQlQ9q0UKyKbMgBeBRKwzcUiM+alc3EAJzsA8HLfwDsHsBj7xYKcoj0WuBPH3A88ATg2QE4XmEVCok0AMbGh//fjQDA6P3L79N+BIQSIh0AvE8sbm4x8dt8PpsfolCmIjUS9SCUU0UMesx8KKfTxPODQ1UkecbsZXGchQ0j1UZBnJySipfqwjAzOze/IJd6BkvLK6tr6xtyaWgEurd3dvdE8HKhJogHh0ciACcnyUXU3HJ2fhFEAqHWq+sbsEwWFsfdsuEOSVs7wsXfIVJ2dCYUVte3r4RUSd8VeJNKKn2m/PHTyMTlcjP49QE0u4VtSVu7kQAAAABJRU5ErkJggg=='; const imgdmd = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAZCAMAAACM5megAAAAllBMVEUAAAB/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3+AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAx6H3iAAAAMXRSTlMABAgMFBgcICQoLDA8QERITFBUWGBkaGx4fICDj5OXo6evs7e7v8PH09ff4+fr8/f7vr5GKgAAAN1JREFUGBl9wY1agjAABdAbIoSCWiIJLn8yLKNN7vu/XBvQJ87JOegZLfJDaew3U7ilklcfAW5EiTb7JGtRGFtq8hV9BTsntH5orNH3VrNx9mB4kkYdo29xoUPlAwgCtIKaLgJAqkI0BJ0qABEFGme6xQBUCXhhOOUDuycI7jCRHCAlmSDnsEsGrDjgmL6MAYxOfGyGTiwquikPV0s6bdF3oIMao+9Z8d4Gt5KadxJYMt7xYclok7AJar+KRvVFrYTtSC1Ca07tHbZvkhU6KbUlbPOiyCfo+OuiWOHfHxHEYF/PvYVrAAAAAElFTkSuQmCC'; const imgyto = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAACJVBMVEX///+qAADMMzP/MzPjKiXbJiPVIyPZJSPFGx/QIiLBGB7cKSXRIiLeKSnkKyfOICHcIiLRISLJHB7jKybCGB/QISHVKSDgKifMGRnhKyXMHR/CGR3ZJSPiLCbdKSXiKybFFyLCGR7WJCLdJyTDGB3JHSDhKiXIHB/ZJiPMHiHQIiLXIyPTIyLKHR/FGCDFGh/lMxnjKyXDGR3GGx/cJyTEGR7BGh7NICDUIiLOHiPcLiLiKyXgKSXhKyXPHyHXJSPNICDgKibgKSbJHB/XJCPnLiLfKSXfKSTfKSbDGR7EGR7KHB/CGR3CGB3CGB7BGB7BGB3BGR3////NHyHLHiDo4ODWJCPMHiD//v7p4eHaJyTZJiTYJiTOICHXJSPYJSPPICHeKSXQISHVJCPunZzFGh/UIyPqmpvnzMv89PTlxMTYUVL78vL08fHomZrzzM399/f+/Pzm09PXTk7QNDbfKiXGGx/pmprnj47XSUvktrbompryxMXVOTncKCXKHSDHHB/t5+f7+vrdKCXbJyTsnJvcOTfhgYDIHB/18fHqm5v05eXaMzHZVFTYTEvHGx/++vrZLy3spKThiYnTLi78+vrs19fqnJzYKynVNDXjrq7VPT7rm5vJHSDebm3XKCbRISLZWFrTIyLSIiLtrKzEGh7cZmXWJiXgKibvtLTWQ0Tlvr7bXVzfd3bwvL3sm5vjW1nTIiLDGh7hKybtnJviKybCGR58TkH5AAAAUnRSTlMAAwUFie17+rn8r7n8HzqvFu9b73vWH1sK54nnida5/BaYr1uJ7fqal+cWOu/6H5oKr/q5mls6H9Y6Fnzte3vnfJeYmOcW7Zqa7e2Y1u/8/O/WqnF1KAAAAb9JREFUeF6FzGOb61AYheGV1B3btu05tLHbsY1j27Zt2/h9k7SnyZt0p7m/ruda0BAi59VkxGVlxWXUtEUKMBJhTflLpFgjwNO6qPC3TuHiZQiStPwDR3sStCwr9hpYaQFRnTliKLOa/IWNhBCmftafDqk+0OUdM5EHn2jbGRO2aMiKexU/zvVyFUOS6OhTjG85cKWPw5EIIL1fNc7Y5fM3+4OlA8KCIdUfxtjde18fDOktFVA2SEih5OL0s+eDOmWwdxJnmc+pk7Pv3ndq2JE7Rsih/7Tn85cxKhfNk8R3qQmcdhy6SpZmlL8injDV1p6OR9eUpRyun4Qc0tNduwOLC+GviUuMmrl9R1nCEfOCoOGO+w/JEoOEUWJKyW7cOjpKJSBqmNjP/Ha+eTysFYX5A4Q/7P74aUBvIVo8hBx2fzvoCdYCoYSEhxk7stnDUSIAqV2qbdtfdnGlAmiq8Cr2ePkqmiBZctzUGshKC56aKCiFT+wFE7H4r+hESEUIEOuuh1AnQpHs3GfImQxCrJowUCVCq2HVW47VDQiSnVP7S6c2Jxs8lflp/4i0/EoYERrj3WvXrd+wcZM7vlEANQfRAClqAtKfNQAAAABJRU5ErkJggg=='; const regexdate = /joinedDateText(.*?)ext":"(.*?)ext":"(.*?)"}/; const regexdatemob = /joined_date_text(.*?)"}, {"text": "(.*?)"}]/; const regexid = /"video_id":"(.*?)"/; const regexlinew = /"logged_in","value":"(.*?)"/; const regexliold = /"logged_in":"(.*?)"/; const regexun = /"user_display_name":"(.*?)"/; const regexlang = /"host_language":"(.*?)"/; const regexlangmob = /\\"host_language\\": \\"(.*?)\\"/; const regexannyto = /(.*)(\r\n|\n\r|\n)([\W\w]+)/; const ERKYurl = 'https://raw.githubusercontent.com/FeignedAccomplice/Un-Yt-Kb-Rg/master/Un-Yt-Kb-Rg.CSV'; const annYTOurl = 'https://raw.githubusercontent.com/YTObserver/YT-ACC-DB/master/announcement.txt'; const minDCTime = 36*61; const maxDCTime = 71*58; const alerturl = 'https://кремлеботы.рф/alert'; const reporturl = 'tg://resolve?domain=observers_chat'; var alertSent = false; var annYTOtxt = []; var arrayERKY = []; var arrayListP1 = []; var arrayListC1 = []; var arrayListC2 = []; var arrayListC3 = []; var orderedClicksArray = []; var bDTaskSet = 0; var bDBlur = 0; var ytmode = 0; var listqueue = 0; var descc1 = ''; var descc2 = ''; var descc3 = ''; var iconsdef = ["\uD83D\uDCCC", "\uD83D\uDD32", "\uD83D\uDD34", "\uD83D\uDD3B"]; const iconstyledef = 'font-family: Segoe UI Symbol; line-height: 1em;'; const iconp1 = '<span style="' + iconstyledef + '">' + iconsdef[0] + '</span> '; const iconc1 = '<span style="' + iconstyledef + '">' + iconsdef[1] + '</span> '; const iconc2 = '<span style="' + iconstyledef + '">' + iconsdef[2] + '</span> '; const iconc3 = '<span style="' + iconstyledef + '">' + iconsdef[3] + '</span> '; var txtlistpadd = '\u2003<span id="listpadd" style="cursor: pointer; ' + iconstyledef + '" title="Добавить в закладки">' + iconsdef[0] + '</span>'; if (window.location.hostname == "dislikemeter.com" || window.location.hostname == "www.dislikemeter.com") { var videoid = getURLParameter('v', location.search); if (videoid) { waitForKeyElements('input#form_vid', function dmIDins(jNode) { var pNode = jNode[0]; pNode.value = videoid; }); return; } } else if (window.location.pathname == '/live_chat_replay' || window.location.pathname == '/live_chat') { var requestDB = new XMLHttpRequest(); requestDB.onreadystatechange = function() { if (requestDB.readyState === 4) { if (requestDB.status === 404) { console.log("[MetaBot for Youtube - Chat] XMLHttpRequest done: ERKY-db not found."); } if (requestDB.status === 200) { var responseDB = requestDB.responseText; if (responseDB !== "") { console.log("[MetaBot for Youtube - Chat] XMLHttpRequest done: ERKY-db loaded."); arrayERKY = responseDB.match(/[^\r\n=]+/g); waitForKeyElements('a.ytd-menu-navigation-item-renderer', parsechat); } else { console.log("[MetaBot for Youtube] XMLHttpRequest failed."); } } } }; requestDB.open("GET", ERKYurl, true); requestDB.send(null); } else { if (document.querySelector("meta[http-equiv='origin-trial']")) { console.log("[MetaBot for Youtube] YouTube New design detected."); ytmode = 1; } else if (document.querySelector("meta[http-equiv='Content-Type']")) { console.log("[MetaBot for Youtube] YouTube Mobile mode detected."); ytmode = 3; } else { console.log("[MetaBot for Youtube] YouTube Classic design detected."); ytmode = 2; txtlistpadd = '\u2003<span id="listpadd" style="cursor: pointer; color: #767676;' + iconstyledef + '" title="Добавить в закладки">' + iconsdef[0] + '</span>'; } if (ytmode !== 3) { listqueue++; getlist(filllist, -1, annYTOurl); } listqueue++; getlist(filllist, 0, ERKYurl); if (GM_config.get('option4') === true) { arrayListP1 = GM_config.get('listp1').match(/[^\r\n=]+/g); if (GM_config.get('listc1') !== '') { listqueue++; getlist(filllist, 1, GM_config.get('listc1')); } if (GM_config.get('listc2') !== '') { listqueue++; getlist(filllist, 2, GM_config.get('listc2')); } if (GM_config.get('listc3') !== '') { listqueue++; getlist(filllist, 3, GM_config.get('listc3')); } } waitforlists(); } function filllist(numArr, response, code, url) { if (code !== 200) { console.log("[MetaBot for Youtube] List load error. URL " + url + " Code " + code); } else { switch (numArr) { case -1: annYTOtxt = regexannyto.exec(response); var dbname = "YTO announcement"; switch (ytmode) { case 1: waitForKeyElements('ytd-comments-header-renderer.ytd-item-section-renderer', insertannNew); break; case 2: waitForKeyElements('div.comments-header-renderer', insertann); } break; case 0: arrayERKY = response.match(/[^\r\n=]+/g); var dbname = "ERKY-db"; break; case 1: arrayListC1 = response.match(/[^\r\n=]+/g); var dbname = "Custom list #1"; descc1 = '[' + (arrayListC1.length / 2 - 1) + '] ' + Aparse(arrayListC1[0]) + ': ' + Aparse(arrayListC1[1]) + '<br>\u2003'; break; case 2: arrayListC2 = response.match(/[^\r\n=]+/g); var dbname = "Custom list #2"; descc2 = '[' + (arrayListC2.length / 2 - 1) + '] ' + Aparse(arrayListC2[0]) + ': ' + Aparse(arrayListC2[1]) + '<br>\u2003'; break; case 3: arrayListC3 = response.match(/[^\r\n=]+/g); var dbname = "Custom list #3"; descc3 = '[' + (arrayListC3.length / 2 - 1) + '] ' + Aparse(arrayListC3[0]) + ': ' + Aparse(arrayListC3[1]) + '<br>\u2003'; } if (code === 200) { console.log("[MetaBot for Youtube] " + dbname + " loaded. Code " + code); } else { console.log("[MetaBot for Youtube] " + dbname + " load error. Code " + code); } } listqueue--; } function waitforlists() { if (listqueue === 0) { switch (ytmode) { case 1: spinnercheckNew(); waitForKeyElements('div#main.style-scope.ytd-comment-renderer', parseitemNew); waitForKeyElements('yt-view-count-renderer.style-scope.ytd-video-primary-info-renderer', preparedmNew); waitForKeyElements('div#channel-header.ytd-c4-tabbed-header-renderer', insertchanNew); break; case 2: waitForKeyElements('.comment-renderer-header', parseitem); waitForKeyElements('div#watch7-views-info', insertdm); waitForKeyElements('div#c4-primary-header-contents.primary-header-contents.clearfix', insertchan); break; case 3: waitForKeyElements('div.brb', parseitemMob); } return; } else { setTimeout(waitforlists, 500); } } function parsechat(jNode) { if ($(jNode)[0].hasAttribute('href')) { var deftxt = $(jNode).find('yt-formatted-string.ytd-menu-navigation-item-renderer')[0].innerHTML; markchatmenu(jNode, deftxt); var mutationObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { markchatmenu(jNode, deftxt); }); }); mutationObserver.observe($(jNode)[0], { attributes: true, attributeFilter: ['href'], characterData: false, childList: false, subtree: false, attributeOldValue: false, characterDataOldValue: false }); } } function markchatmenu(jNode, deftxt) { var userID = $(jNode)[0].href.split('/').pop(); var foundID = arrayERKY.indexOf(userID); if (foundID > -1) { $(jNode).parent()[0].style.backgroundColor = 'rgba(255,50,50,0.3)'; $(jNode).find('yt-formatted-string.ytd-menu-navigation-item-renderer')[0].innerHTML = deftxt + '<br><img src="' + mred + '" /> ' + arrayERKY[foundID + 1]; } else { $(jNode).parent()[0].style.backgroundColor = ''; $(jNode).find('yt-formatted-string.ytd-menu-navigation-item-renderer')[0].innerHTML = deftxt; } } function spinnercheckNew() { waitForKeyElements('paper-spinner-lite.ytd-item-section-renderer[aria-hidden="true"]', function(jNode) { if (getURLParameter('v', location.search) === null) { return; } console.log("[MetaBot for Youtube] Comment sorting spinner found."); var mutationObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if ($(jNode).find("#spinnerContainer").hasClass("cooldown")) { setTimeout(recheckallNew, 2000); } else { $('div#main.style-scope.ytd-comment-renderer').each(function() { var cNode = $(this).find(".published-time-text")[0]; deleteitemNew(this, $(cNode).find("a")[0].href); }); } }); }); mutationObserver.observe($(jNode)[0], { attributes: true, attributeFilter: ['active'], characterData: false, childList: false, subtree: true, attributeOldValue: false, characterDataOldValue: false }); }, false); waitForKeyElements('div#continuations.ytd-item-section-renderer', function(jNode) { if (getURLParameter('v', location.search) === null) { return; } console.log("[MetaBot for Youtube] Comment loading spinner found."); var mutationObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if (!$(jNode).find("#spinnerContainer").hasClass("cooldown")) { setTimeout(recheckallNew, 2000); } }); }); mutationObserver.observe($(jNode)[0], { attributes: true, attributeFilter: ['active'], characterData: false, childList: false, subtree: true, attributeOldValue: false, characterDataOldValue: false }); }, false); waitForKeyElements('paper-spinner#spinner.yt-next-continuation[active]', function(jNode) { if (getURLParameter('v', location.search) === null) { return; } console.log("[MetaBot for Youtube] Comment replies loading spinner found."); var mutationObserver = new MutationObserver(function(mutations) { if (mutations[0].removedNodes) { mutationObserver.disconnect(); setTimeout(recheckallNew, 2000); } }); mutationObserver.observe($(jNode)[0].parentNode, { attributes: true, characterData: false, childList: false, subtree: false, attributeOldValue: false, characterDataOldValue: false }); }, false); } function recheckallNew(){ $('div#main.style-scope.ytd-comment-renderer').each(function() { recheckNew(this); }); } function insertchan(jNode) { var noticespan = document.createElement('div'); var chanURL = $(jNode).find('a.spf-link.branded-page-header-title-link.yt-uix-sessionlink')[0].href; var userID = chanURL.split('/').pop(); var foundID = arrayERKY.indexOf(userID); if (foundID > -1) { noticespan.innerHTML = '<img src="' + mred + '" /> Пользователь найден в ЕРКЮ, дата регистрации: <a href="' + chanURL + '/about" title="Открыть страницу с датой регистрации">' + arrayERKY[foundID + 1] + "</a>"; noticespan.style = 'background:rgba(255,50,50,0.3);border-radius:5px;padding:4px 7px 4px 7px'; } else { noticespan.innerHTML = 'Пользователь не найден в ЕРКЮ <a href="' + chanURL + '/about"><img src="' + minf + '" title="Открыть страницу с датой регистрации" /></a>'; noticespan.style = 'background:rgba(100,100,100,0.2);border-radius:5px;padding:4px 7px 4px 7px'; } noticespan.id = 'erkynotice'; $(jNode).find('h1.branded-page-header-title').append(noticespan); } function insertchanNew(jNode) { this.addEventListener('yt-navigate-finish', function insertchanNewR() { this.removeEventListener('yt-navigate-finish', insertchanNewR); setTimeout(insertchanNew, 300, jNode); }); var chanURL = window.location.protocol + '//' + window.location.hostname + window.location.pathname.replace(/\/featured|\/videos|\/playlists|\/channels|\/discussion|\/about/i, ''); if (chanURL.slice(-1) == '/') { chanURL = chanURL.slice(0, -1); } var reuse = false; var userID = chanURL.split('/').pop(); if ($(jNode).find('span#subscriber-count.ytd-c4-tabbed-header-renderer')[0]) { var noticespan = $(jNode).find('span#subscriber-count.ytd-c4-tabbed-header-renderer')[0]; reuse = true; } else { var noticespan = document.createElement('span'); noticespan.id = 'subscriber-count'; noticespan.classList.add("ytd-c4-tabbed-header-renderer"); } var foundID = arrayERKY.indexOf(userID); if (foundID > -1) { noticespan.innerHTML = '<img src="' + mred + '" /> Пользователь найден в ЕРКЮ, дата регистрации: <a href="' + chanURL + '/about" style="color:hsl(206.1, 79.3%, 52.7%);text-decoration:none" title="Открыть страницу с датой регистрации">' + arrayERKY[foundID + 1] + "</a>"; noticespan.style = 'background:rgba(255,50,50,0.3);border-radius:5px;padding:4px 7px 4px 7px;font-weight:400;line-height:3rem;text-transform:none;color:var(--yt-lightsource-primary-title-color)'; } else { noticespan.innerHTML = 'Пользователь не найден в ЕРКЮ <a href="' + chanURL + '/about"><img src="' + minf + '" title="Открыть страницу с датой регистрации" /></a>'; noticespan.style = 'background:rgba(100,100,100,0.2);border-radius:5px;padding:4px 7px 4px 7px;font-weight:400;line-height:3rem;text-transform:none;color:var(--yt-lightsource-primary-title-color)'; } if (!reuse) { $(jNode).find('ytd-channel-name#channel-name.ytd-c4-tabbed-header-renderer').after(noticespan); $(jNode).find('span#subscriber-count.ytd-c4-tabbed-header-renderer').after('<br>'); } } function insertdm(jNode) { var videoid = getURLParameter('v', location.search); var pNode = $(jNode)[0]; var newspan = document.createElement('span'); newspan.innerHTML = '<a id="dmAdd" title="Добавить видео на анализатор Дизлайкметр" href="https://dislikemeter.com/?v=' + videoid + '"><img src="' + imgdma + '" /></a><span style="padding:0 1em 0 0"></span><a style="padding:0 0 0 1px" id="dmGo" title="Открыть статистику видео на анализаторе Дизлайкметр" href="https://dislikemeter.com/video/' + videoid + '" ><img src="' + imgdm + '" /></a>'; newspan.id = 'dmPanel'; $(pNode).css('text-align', 'right'); pNode.insertBefore(newspan, pNode.firstChild); $(pNode).find("#dmPanel")[0].addEventListener("click", function dmClick() { this.removeEventListener("click", dmClick); var newspan = document.createElement('span'); newspan.innerHTML = '<a target="_blank" title="Помочь проекту Дизлайкметр" href="https://dislikemeter.com/?donate"><img src="' + imgdmd + '" /></a><span style="padding:0 1em 0 0"></span>'; $(pNode).find("#dmPanel")[0].insertBefore(newspan, $(pNode).find("#dmPanel")[0].firstChild); }, false); $(pNode).find("#dmPanel")[0].addEventListener("mouseover", function dmOver() { this.removeEventListener("mouseover", dmOver); $(this).find("#dmAdd")[0].target = "_blank"; $(this).find("#dmGo")[0].target = "_blank"; }, false); } function preparedmNew(jNode) { this.addEventListener('yt-navigate-finish', function preparedmNewR() { this.removeEventListener('yt-navigate-finish', preparedmNewR); setTimeout(preparedmNew, 300, jNode); }); var videoid = getURLParameter('v', location.search); if (!videoid) { console.log("[MetaBot for Youtube] Dislikemeter: video id not found."); return; } var pNode = $(jNode).parent().parent().parent().find('div#flex')[0]; if (typeof pNode === 'undefined') { console.log("[MetaBot for Youtube] Dislikemeter: node not found."); return; } pNode.innerHTML = ''; if (GM_config.get('option3')) { var btnText = $(pNode).parent().find('ytd-button-renderer.ytd-menu-renderer')[0]; if ($(btnText).find('yt-formatted-string#text').length > 0) { $(btnText).find('yt-formatted-string#text').html(''); } if (!$(pNode).parent().find('ytd-sentiment-bar-renderer#sentiment').is(":visible")) { btnText = $(pNode).parent().find('ytd-toggle-button-renderer.ytd-menu-renderer.force-icon-button')[0]; $(btnText).find('yt-formatted-string#text').html(''); btnText = $(pNode).parent().find('ytd-toggle-button-renderer.ytd-menu-renderer.force-icon-button')[1]; $(btnText).find('yt-formatted-string#text').html(''); } } console.log("[MetaBot for Youtube] Dislikemeter: requesting data for video id " + videoid); getlist(insertdmNew, pNode, 'https://dislikemeter.com/iframe/?vid=' + videoid); } function insertdmNew(jNode, response, code, url) { if (response.indexOf('"submit"') >= 0){ console.log("[MetaBot for Youtube] Dislikemeter: video already added."); var dmurl = url.replace('iframe/?vid=', 'video/'); var dmtxt = 'Открыть статистику видео на анализаторе Дизлайкметр'; var dmclr = 'var(--yt-spec-call-to-action)'; } else { console.log("[MetaBot for Youtube] Dislikemeter: video not added yet."); var dmurl = url.replace('iframe/?vid=', '?v='); var dmtxt = 'Добавить видео на анализатор Дизлайкметр'; var dmclr = 'var(--yt-spec-icon-inactive)'; } jNode.style.textAlign = "right"; var dmbutton = document.createElement('ytd-button-renderer'); dmbutton.id = 'dmbutton'; dmbutton.setAttribute('button-renderer', ''); dmbutton.setAttribute('is-icon-button', ''); dmbutton.classList.add("style-scope"); dmbutton.classList.add("ytd-menu-renderer"); dmbutton.classList.add("force-icon-button"); dmbutton.classList.add("style-default"); dmbutton.classList.add("size-default"); dmbutton.style.marginTop = "3px"; dmbutton.style.marginRight = "4px"; $(jNode).prepend(dmbutton); $(jNode).find('ytd-button-renderer#dmbutton').html('<a class="yt-simple-endpoint style-scope ytd-button-renderer"><yt-icon-button id="button" class="style-scope ytd-button-renderer style-default size-default" style="padding:8px;width:36px;height:36px;color:rgb(255,200,0)" onclick="window.open(\'' + dmurl + '\', \'_blank\');"><svg viewBox="0 0 20 20" preserveAspectRatio="xMidYMid meet" focusable="false" class="style-scope yt-icon" style="pointer-events: none; display: block; width: 100%; height: 100%; fill:' + dmclr + '"><g class="style-scope yt-icon"><path d="m0 2c0 5.5 8 5.5 8 0 0-1-2-1-2 0 0 3-4 3-4 0 0-1-2-1-2 0m12 0c0 5.5 8 5.5 8 0 0-1-2-1-2 0 0 3-4 3-4 0 0-1-2-1-2 0m-12 16q2-6.5 10-6.5v2q-6 0-8 4.5c0 0.5-2 0.7-2 0m6 2v-3l4-1v4m1 0v-8h4v8m1 0v-11l4-1v12" class="style-scope yt-icon"></path></g></svg></yt-icon-button><paper-tooltip>' + dmtxt + '</paper-tooltip></a>'); } function insertann(jNode) { $(jNode).find('h2.comment-section-header-renderer')[0].style = 'padding-bottom:10;display:inline-flex;align-items:center;line-height:2rem'; var cfgspan = document.createElement('span'); cfgspan.innerHTML = '<span style="opacity:0.4">[</span><span style="font-family: Segoe UI Symbol; color: #848484">\uD83D\uDD27</span><span style="opacity:0.4">]</span>'; cfgspan.id = 'cfgbtn'; cfgspan.title = 'Настройки MetaBot for YouTube'; cfgspan.style = 'margin:-4px 0 0 0.5em;font-size:2.3em;height:2rem;cursor:pointer;color:#000'; $(jNode).find('h2.comment-section-header-renderer').append(cfgspan); var annspan = document.createElement('span'); annspan.innerHTML = '<span style="display:inline-flex;align-items:center"><span style="opacity:0.4">[</span><span style="font-family: Segoe UI Symbol; color: #af1611">\uD83D\uDCE3</span><span style="color:#555;font-size:0.5em;font-weight:420;margin:-1.8em 0.2em 0 0.2em;height:0.3em;text-transform:none">' + Aparse(annYTOtxt[1]) + '</span><span style="opacity:0.4">]</span></span>'; annspan.id = 'annbtn'; annspan.title = 'Последняя информация от Наблюдателя YouTube (#ЕРКЮ)'; annspan.style = 'margin:-4px 0 0 0.5em;font-size:2.3em;height:2rem;cursor:pointer;color:#000'; $(jNode).find('h2.comment-section-header-renderer').append(annspan); var ytoinfosspan = document.createElement('span'); ytoinfosspan.innerHTML = '<span style="float:left;width:40px"><img src="' + imgyto + '" width="40px" height="40px" /></span><span style="float:right;margin: 0 0 0 10px;width:520px"><span id="urlyto" style="font-weight:500;cursor:pointer" data-url="https://www.youtube.com/channel/UCwBID52XA-aajCKYuwsQxWA">Наблюдатель Youtube #ЕРКЮ</span><br><span class="yt-badge" style="margin:4px 0 4px 0;text-align:center;text-transform:none;font-weight:500;width:100%;background-color:hsla(0, 0%, 93.3%, .6)">' + Aparse(annYTOtxt[1]) + '</span><span id="annholder"></span></span>'; ytoinfosspan.id = 'ytoinfo'; ytoinfosspan.style = 'max-width:605px;margin:0 auto 1em auto;display:table'; $(ytoinfosspan).toggle(); $(jNode).find('h2.comment-section-header-renderer').after(ytoinfosspan); $(jNode).find("span#ytoinfo").toggle(); var settingsspan = document.createElement('span'); settingsspan.innerHTML = '<span style="float:left;width:100px"><img src="https://raw.githubusercontent.com/asrdri/yt-metabot-user-js/master/logo.png" width="100px" height="100px" /></span><span style="float:right;margin: 0 0 0 10px;width:460px"><span style="font-weight:500">' + GM_info.script.name + ' v' + GM_info.script.version + '</span>\u2003<span id="urlgithub" style="cursor:pointer" data-url="https://github.com/asrdri/yt-metabot-user-js/">GitHub</span>\u2003<span id="urlissues" style="cursor:pointer" data-url="https://github.com/asrdri/yt-metabot-user-js/issues">Предложения и баги</span>\u2003<span id="urllists" style="cursor:pointer" data-url="https://github.com/asrdri/yt-metabot-user-js/issues/23">Списки</span><span class="yt-badge" style="margin:4px 0 4px 0;text-align:center;text-transform:none;font-weight:500;width:100%;background-color:hsla(0, 0%, 93.3%, .6)">Настройки</span>Комментарии от известных ботов из ЕРКЮ <select id="mbcddm1"><option value="1">помечать</option><option value="2">скрывать</option></select><span id="mbcswg1"><br style="line-height:2em"><label title="Информация о наличии ботов под роликом будет отправлена на кремлеботы.рф"><input type="checkbox" id="mbcbox4">Уведомлять сервер при обнаружении ботов</label><br style="line-height:2em"><label title="Пункт 5.1.H Условий использования YouTube не нарушается - запросы отправляются со значительным интервалом"><input type="checkbox" id="mbcbox1">Автоматически ставить <span style="font-family: Segoe UI Symbol">\uD83D\uDC4E</span> комментариям от ботов из ЕРКЮ</label></span><br style="line-height:2em"><label><input type="checkbox" id="mbcbox3">Дополнительные списки</label><span id="mbcswg2"><br style="line-height:2em">' + iconp1 + ' Закладки: <input type="color" id="colorpersonal" style="height: 1rem; width: 40px"><br style="line-height:1.8em"><textarea id="listpersonal" rows="3" style="width: 440px"></textarea><br style="line-height:1.2em">Сторонние списки:<br>' + iconc1 + descc1 + '<input type="text" id="listcustom1" style="height: 1rem; width: 385px"> <input type="color" id="colorcustom1" style="height: 1rem; width: 40px"><br>' + iconc2 + descc2 + '<input type="text" id="listcustom2" style="height: 1rem; width: 385px"> <input type="color" id="colorcustom2" style="height: 1rem; width: 40px"><br>' + iconc3 + descc3 + '<input type="text" id="listcustom3" style="height: 1rem; width: 385px"> <input type="color" id="colorcustom3" style="height: 1rem; width: 40px"></span><br style="line-height:2em"><span id="classicbtn" style="cursor:pointer">Включить новый дизайн YouTube</span><br><span id="resetbtn" style="cursor:pointer">Сбросить настройки</span><span id="configsaved" class="yt-badge" style="margin:4px 0 4px 0;text-align:center;text-transform:none;font-weight:500;width:100%;background-color:hsla(0, 0%, 93.3%, .6);display:none;-webkit-transition: background-color 0.3s ease-in-out;-moz-transition: background-color 0.3s ease-in-out;-ms-transition: background-color 0.3s ease-in-out;-o-transition: background-color 0.3s ease-in-out;transition: background-color 0.3s ease-in-out;">Настройки сохранены. Для вступления в силу необходимо <span style="cursor:pointer;text-decoration: underline" onclick="javascript:window.location.reload();">\uD83D\uDD03обновить страницу</span>.</span></span>'; settingsspan.id = 'config'; settingsspan.style = 'max-width:605px;margin:0 auto 1em auto;display:table'; $(settingsspan).toggle(); $(jNode).find('h2.comment-section-header-renderer').after(settingsspan); $(jNode).find("span#config").toggle(); var annexspan = document.createElement('span'); annexspan.innerHTML = Aparse(annYTOtxt[3]); $(jNode).find('span#annholder').append(annexspan); $(jNode).find("span#cfgbtn")[0].addEventListener("click", function() { $(jNode).find("span#config").toggle(); $(jNode).find("span#ytoinfo").hide(); }, false); $(jNode).find("span#annbtn")[0].addEventListener("click", function() { $(jNode).find("span#ytoinfo").toggle(); $(jNode).find("span#config").hide(); }, false); $(jNode).find("span#cfgbtn").hover(function() { this.style.backgroundColor = 'hsl(206.1, 79.3%, 52.7%)'; }, function() { this.style.backgroundColor = ''; }); $(jNode).find("span#annbtn").hover(function() { this.style.backgroundColor = 'hsl(206.1, 79.3%, 52.7%)'; }, function() { this.style.backgroundColor = ''; }); $(jNode).find("span#classicbtn, span#resetbtn").hover(function() { this.style.textDecoration = "underline"; }, function() { this.style.textDecoration = ""; }); $(jNode).find("span#urlgithub, span#urlissues, span#urllists, span#urlyto").hover(function() { this.style.textDecoration = "underline"; this.style.color = "hsl(206.1, 79.3%, 52.7%)"; }, function() { this.style.textDecoration = ""; this.style.color = ""; }); $(jNode).find("span#urlgithub, span#urlissues, span#urllists, span#urlyto").click(function() { window.open($(this).attr('data-url')); }); $(jNode).find("span#classicbtn").click(function() { ytNewDesign(); saveconfig(jNode); }); $(jNode).find("span#resetbtn").click(function() { resetconfig(jNode); saveconfig(jNode); }); $(jNode).find("select#mbcddm1").val(GM_config.get('option1')); $(jNode).find("input#mbcbox1").prop('checked', GM_config.get('option2')); $(jNode).find("input#mbcbox3").prop('checked', GM_config.get('option4')); $(jNode).find("input#mbcbox4").prop('checked', GM_config.get('option5')); $(jNode).find("textarea#listpersonal").text(GM_config.get('listp1')); $(jNode).find("input#listcustom1").val(GM_config.get('listc1')); $(jNode).find("input#listcustom2").val(GM_config.get('listc2')); $(jNode).find("input#listcustom3").val(GM_config.get('listc3')); $(jNode).find("input#colorpersonal").val(parseColor(GM_config.get('colorp1'), false)); $(jNode).find("input#colorcustom1").val(parseColor(GM_config.get('colorc1'), false)); $(jNode).find("input#colorcustom2").val(parseColor(GM_config.get('colorc2'), false)); $(jNode).find("input#colorcustom3").val(parseColor(GM_config.get('colorc3'), false)); if ($(jNode).find("select#mbcddm1").val() == 2) { $(jNode).find("span#mbcswg1").hide(); } if ($(jNode).find("input#mbcbox3").prop('checked') == false) { $(jNode).find("span#mbcswg2").hide(); } $(jNode).find("input#mbcbox1, input#mbcbox3, input#mbcbox4, select#mbcddm1, textarea#listpersonal, input#listcustom1, input#listcustom2, input#listcustom3, input#colorpersonal, input#colorcustom1, input#colorcustom2, input#colorcustom3").change(function() { if ($(jNode).find("select#mbcddm1").val() == 2) { $(jNode).find("span#mbcswg1").hide(); } else { $(jNode).find("span#mbcswg1").show(); } if ($(jNode).find("input#mbcbox3").prop('checked') == false) { $(jNode).find("span#mbcswg2").hide(); } else { $(jNode).find("span#mbcswg2").show(); } saveconfig(jNode); }); } function insertannNew(jNode) { waitForKeyElements('div#icon-label.yt-dropdown-menu', function(jNode) { jNode[0].innerHTML = ''; $(jNode).parent()[0].setAttribute("style","margin-top:-0.1em;height:1.9em;width:2.9em"); $(jNode).parent().hover(function() { this.style.backgroundColor = 'hsl(206.1, 79.3%, 52.7%)'; }, function() { this.style.backgroundColor = ''; }); }, false); var cfgspan = document.createElement('span'); cfgspan.innerHTML = '<span style="opacity:0.4">[</span><span style="font-family: Segoe UI Symbol; color: #848484">\uD83D\uDD27</span><span style="opacity:0.4">]</span>'; cfgspan.id = 'cfgbtn'; cfgspan.title = 'Настройки MetaBot for YouTube'; cfgspan.style = 'margin:-6px 0 0 0.5em;font-size:3em;height:1.05em;display:inline-flex;align-items:center;cursor:pointer'; cfgspan.classList.add("content"); cfgspan.classList.add("ytd-video-secondary-info-renderer"); $(jNode).find('div#title').append(cfgspan); var annspan = document.createElement('span'); annspan.innerHTML = '<span style="opacity:0.4">[</span><span style="font-family: Segoe UI Symbol; color: #af1611">\uD83D\uDCE3</span><span style="font-size:0.5em;font-weight:420;margin:0 0.2em 0 0.2em">' + Aparse(annYTOtxt[1]) + '</span><span style="opacity:0.4">]</span>'; annspan.id = 'annbtn'; annspan.title = 'Последняя информация от Наблюдателя YouTube (#ЕРКЮ)'; annspan.style = 'margin:-6px 0 0 0.5em;font-size:3em;height:1.05em;display:inline-flex;align-items:center;cursor:pointer'; annspan.classList.add("content"); annspan.classList.add("ytd-video-secondary-info-renderer"); $(jNode).find('div#title').append(annspan); var ytoinfosspan = document.createElement('span'); ytoinfosspan.innerHTML = '<span style="float:left;width:40px"><img src="' + imgyto + '" width="40px" height="40px" /></span><span style="float:right;margin: 0 0 0 10px;width:585px"><span id="urlyto" style="font-weight:500;cursor:pointer" data-url="https://www.youtube.com/channel/UCwBID52XA-aajCKYuwsQxWA">Наблюдатель Youtube #ЕРКЮ</span><span class="badge badge-style-type-simple ytd-badge-supported-renderer" style="margin:4px 0 4px 0;text-align:center">' + Aparse(annYTOtxt[1]) + '</span><span id="annholder"></span></span>'; ytoinfosspan.id = 'ytoinfo'; ytoinfosspan.classList.add("description"); ytoinfosspan.classList.add("content"); ytoinfosspan.classList.add("ytd-video-secondary-info-renderer"); ytoinfosspan.style = 'font-size:1.4rem;max-width:640px;margin:-10px auto 1em auto;display:none'; $(jNode).find('div#title').after(ytoinfosspan); var settingsspan = document.createElement('span'); settingsspan.innerHTML = '<span style="float:left;width:100px"><img src="https://raw.githubusercontent.com/asrdri/yt-metabot-user-js/master/logo.png" width="100px" height="100px" /></span><span style="float:right;margin: 0 0 0 10px;width:525px"><span style="font-weight:500">' + GM_info.script.name + ' v' + GM_info.script.version + '</span>\u2003<span id="urlgithub" style="cursor:pointer" data-url="https://github.com/asrdri/yt-metabot-user-js/">GitHub</span>\u2003<span id="urlissues" style="cursor:pointer" data-url="https://github.com/asrdri/yt-metabot-user-js/issues">Предложения и баги</span>\u2003<span id="urllists" style="cursor:pointer" data-url="https://github.com/asrdri/yt-metabot-user-js/issues/23">Списки</span><span class="badge badge-style-type-simple ytd-badge-supported-renderer" style="margin:4px 0 4px 0;text-align:center">Настройки</span>Комментарии от известных ботов из ЕРКЮ <select id="mbcddm1"><option value="1">помечать</option><option value="2">скрывать</option></select><span id="mbcswg1"><br style="line-height:2em"><label title="Информация о наличии ботов под роликом будет отправлена на кремлеботы.рф"><input type="checkbox" id="mbcbox4">Уведомлять сервер при обнаружении ботов</label><br style="line-height:2em"><label title="Пункт 5.1.H Условий использования YouTube не нарушается - запросы отправляются со значительным интервалом"><input type="checkbox" id="mbcbox1">Автоматически ставить <span style="font-family: Segoe UI Symbol">\uD83D\uDC4E</span> комментариям от ботов из ЕРКЮ</label></span><br style="line-height:2em"><label title="Актуально для русского интерфейса и небольшой ширины окна браузера"><input type="checkbox" id="mbcbox2">Скрывать длинные подписи кнопок Мне (не) понравилось / Поделиться</label><br style="line-height:2em"><label><input type="checkbox" id="mbcbox3">Дополнительные списки</label><span id="mbcswg2"><br style="line-height:2em">' + iconp1 + ' Закладки: <input type="color" id="colorpersonal" style="height: 1.8rem; width: 40px"><br style="line-height:1.8em"><textarea id="listpersonal" rows="3" style="width: 500px"></textarea><br style="line-height:1.2em">Сторонние списки:<br>' + iconc1 + descc1 + '<input type="text" id="listcustom1" style="height: 1.7rem; width: 440px"> <input type="color" id="colorcustom1" style="height: 1.8rem; width: 40px"><br>' + iconc2 + descc2 + '<input type="text" id="listcustom2" style="height: 1.7rem; width: 440px"> <input type="color" id="colorcustom2" style="height: 1.8rem; width: 40px"><br>' + iconc3 + descc3 + '<input type="text" id="listcustom3" style="height: 1.7rem; width: 440px"> <input type="color" id="colorcustom3" style="height: 1.8rem; width: 40px"></span><br style="line-height:2em"><span id="classicbtn" style="cursor:pointer">Включить классический дизайн YouTube</span><br><span id="resetbtn" style="cursor:pointer">Сбросить настройки</span><span id="configsaved" class="badge badge-style-type-simple ytd-badge-supported-renderer" style="margin:4px 0 4px 0;text-align:center;display:none;-webkit-transition: background-color 0.3s ease-in-out;-moz-transition: background-color 0.3s ease-in-out;-ms-transition: background-color 0.3s ease-in-out;-o-transition: background-color 0.3s ease-in-out;transition: background-color 0.3s ease-in-out;">Настройки сохранены. Для вступления в силу необходимо <span style="cursor:pointer;text-decoration: underline" onclick="javascript:window.location.reload();"><span style="font-family: Segoe UI Symbol">\uD83D\uDD03</span>обновить страницу</span>.</span></span>'; settingsspan.id = 'config'; settingsspan.classList.add("description"); settingsspan.classList.add("content"); settingsspan.classList.add("ytd-video-secondary-info-renderer"); settingsspan.style = 'font-size:1.4rem;max-width:635px;margin:-10px auto 1em auto;display:none'; $(jNode).find('div#title').after(settingsspan); var annexspan = document.createElement('span'); annexspan.innerHTML = Aparse(annYTOtxt[3]); annexspan.classList.add("content"); annexspan.classList.add("ytd-video-secondary-info-renderer"); $(jNode).find('span#annholder').append(annexspan); $(jNode).find("span#cfgbtn")[0].addEventListener("click", function() { $(jNode).find("span#config").toggle(); $(jNode).find("span#ytoinfo").hide(); }, false); $(jNode).find("span#annbtn")[0].addEventListener("click", function() { $(jNode).find("span#ytoinfo").toggle(); $(jNode).find("span#config").hide(); }, false); $(jNode).find("span#cfgbtn").hover(function() { this.style.backgroundColor = 'hsl(206.1, 79.3%, 52.7%)'; }, function() { this.style.backgroundColor = ''; }); $(jNode).find("span#annbtn").hover(function() { this.style.backgroundColor = 'hsl(206.1, 79.3%, 52.7%)'; }, function() { this.style.backgroundColor = ''; }); $(jNode).find("span#classicbtn, span#resetbtn").hover(function() { this.style.textDecoration = "underline"; }, function() { this.style.textDecoration = ""; }); $(jNode).find("span#urlgithub, span#urlissues, span#urllists, span#urlyto").hover(function() { this.style.textDecoration = "underline"; this.style.color = "hsl(206.1, 79.3%, 52.7%)"; }, function() { this.style.textDecoration = ""; this.style.color = ""; }); $(jNode).find("span#urlgithub, span#urlissues, span#urllists, span#urlyto").click(function() { window.open($(this).attr('data-url')); }); $(jNode).find("span#classicbtn").click(function() { ytOldDesign(); saveconfigNew(jNode); }); $(jNode).find("span#resetbtn").click(function() { resetconfigNew(jNode); saveconfigNew(jNode); }); $(jNode).find("select#mbcddm1").val(GM_config.get('option1')); $(jNode).find("input#mbcbox1").prop('checked', GM_config.get('option2')); $(jNode).find("input#mbcbox2").prop('checked', GM_config.get('option3')); $(jNode).find("input#mbcbox3").prop('checked', GM_config.get('option4')); $(jNode).find("input#mbcbox4").prop('checked', GM_config.get('option5')); $(jNode).find("textarea#listpersonal").text(GM_config.get('listp1')); $(jNode).find("input#listcustom1").val(GM_config.get('listc1')); $(jNode).find("input#listcustom2").val(GM_config.get('listc2')); $(jNode).find("input#listcustom3").val(GM_config.get('listc3')); $(jNode).find("input#colorpersonal").val(parseColor(GM_config.get('colorp1'), false)); $(jNode).find("input#colorcustom1").val(parseColor(GM_config.get('colorc1'), false)); $(jNode).find("input#colorcustom2").val(parseColor(GM_config.get('colorc2'), false)); $(jNode).find("input#colorcustom3").val(parseColor(GM_config.get('colorc3'), false)); if ($(jNode).find("select#mbcddm1").val() == 2) { $(jNode).find("span#mbcswg1").hide(); } if ($(jNode).find("input#mbcbox3").prop('checked') == false) { $(jNode).find("span#mbcswg2").hide(); } $(jNode).find("input#mbcbox1, input#mbcbox2, input#mbcbox3, input#mbcbox4, select#mbcddm1, textarea#listpersonal, input#listcustom1, input#listcustom2, input#listcustom3, input#colorpersonal, input#colorcustom1, input#colorcustom2, input#colorcustom3").change(function() { if ($(jNode).find("select#mbcddm1").val() == 2) { $(jNode).find("span#mbcswg1").hide(); } else { $(jNode).find("span#mbcswg1").show(); } if ($(jNode).find("input#mbcbox3").prop('checked') == false) { $(jNode).find("span#mbcswg2").hide(); } else { $(jNode).find("span#mbcswg2").show(); } saveconfigNew(jNode); }); } function saveconfig(jNode) { GM_config.set('option1', $(jNode).find("select#mbcddm1").val()); GM_config.set('option2', $(jNode).find("input#mbcbox1").is(":checked")); GM_config.set('option4', $(jNode).find("input#mbcbox3").is(":checked")); GM_config.set('option5', $(jNode).find("input#mbcbox4").is(":checked")); GM_config.set('listp1', $(jNode).find("textarea#listpersonal").val()); GM_config.set('listc1', $(jNode).find("input#listcustom1").val()); GM_config.set('listc2', $(jNode).find("input#listcustom2").val()); GM_config.set('listc3', $(jNode).find("input#listcustom3").val()); GM_config.set('colorp1', parseColor($(jNode).find("input#colorpersonal").val(), true)); GM_config.set('colorc1', parseColor($(jNode).find("input#colorcustom1").val(), true)); GM_config.set('colorc2', parseColor($(jNode).find("input#colorcustom2").val(), true)); GM_config.set('colorc3', parseColor($(jNode).find("input#colorcustom3").val(), true)); arrayListP1 = GM_config.get('listp1').match(/[^\r\n=]+/g); GM_config.save(); $(jNode).find("span#configsaved").show(); $(jNode).find("span#configsaved")[0].style.backgroundColor = 'rgba(40,150,230,1)'; setTimeout(function(){$(jNode).find("span#configsaved")[0].style.backgroundColor = 'rgba(40,150,230,0)';}, 400); } function saveconfigNew(jNode) { GM_config.set('option1', $(jNode).find("select#mbcddm1").val()); GM_config.set('option2', $(jNode).find("input#mbcbox1").is(":checked")); GM_config.set('option3', $(jNode).find("input#mbcbox2").is(":checked")); GM_config.set('option4', $(jNode).find("input#mbcbox3").is(":checked")); GM_config.set('option5', $(jNode).find("input#mbcbox4").is(":checked")); GM_config.set('listp1', $(jNode).find("textarea#listpersonal").val()); GM_config.set('listc1', $(jNode).find("input#listcustom1").val()); GM_config.set('listc2', $(jNode).find("input#listcustom2").val()); GM_config.set('listc3', $(jNode).find("input#listcustom3").val()); GM_config.set('colorp1', parseColor($(jNode).find("input#colorpersonal").val(), true)); GM_config.set('colorc1', parseColor($(jNode).find("input#colorcustom1").val(), true)); GM_config.set('colorc2', parseColor($(jNode).find("input#colorcustom2").val(), true)); GM_config.set('colorc3', parseColor($(jNode).find("input#colorcustom3").val(), true)); arrayListP1 = GM_config.get('listp1').match(/[^\r\n=]+/g); GM_config.save(); $(jNode).find("span#configsaved").show(); $(jNode).find("span#configsaved")[0].style.backgroundColor = 'rgba(40,150,230,1)'; setTimeout(function(){$(jNode).find("span#configsaved")[0].style.backgroundColor = 'rgba(40,150,230,0)';}, 400); } function resetconfig(jNode) { $(jNode).find("span#mbcswg1").show(); $(jNode).find("span#mbcswg2").show(); $(jNode).find("select#mbcddm1").val(1); $(jNode).find("input#mbcbox1").prop('checked', false); $(jNode).find("input#mbcbox2").prop('checked', true); $(jNode).find("input#mbcbox3").prop('checked', true); $(jNode).find("input#mbcbox4").prop('checked', false); $(jNode).find("input#listcustom1").val('https://github.com/asrdri/yt-metabot-user-js/raw/master/list-sample.txt'); $(jNode).find("input#listcustom2").val(''); $(jNode).find("input#listcustom3").val(''); $(jNode).find("input#colorpersonal").val(parseColor(33023, false)); $(jNode).find("input#colorcustom1").val(parseColor(8388863, false)); $(jNode).find("input#colorcustom2").val(parseColor(16744448, false)); $(jNode).find("input#colorcustom3").val(parseColor(8421504, false)); } function resetconfigNew(jNode) { $(jNode).find("span#mbcswg1").show(); $(jNode).find("span#mbcswg2").show(); $(jNode).find("select#mbcddm1").val(1); $(jNode).find("input#mbcbox1").prop('checked', false); $(jNode).find("input#mbcbox2").prop('checked', true); $(jNode).find("input#mbcbox3").prop('checked', true); $(jNode).find("input#mbcbox4").prop('checked', false); $(jNode).find("input#listcustom1").val('https://github.com/asrdri/yt-metabot-user-js/raw/master/list-sample.txt'); $(jNode).find("input#listcustom2").val(''); $(jNode).find("input#listcustom3").val(''); $(jNode).find("input#colorpersonal").val(parseColor(33023, false)); $(jNode).find("input#colorcustom1").val(parseColor(8388863, false)); $(jNode).find("input#colorcustom2").val(parseColor(16744448, false)); $(jNode).find("input#colorcustom3").val(parseColor(8421504, false)); } function sendAlert(jNode) { if (alertSent || GM_config.get('option5') === false) return; if (ytmode === 1) { var commentURL = $(jNode).find('.published-time-text a').prop('href'); } else { var commentURL = $(jNode).find('.comment-renderer-time a').prop('href'); } var commendid = getURLParameter('lc', commentURL); var videoid = getURLParameter('v', commentURL); var data = $.param({v: videoid, lc: commendid}); var request = new XMLHttpRequest(); request.open("POST", alerturl, true); request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); request.send(data); alertSent = true; this.addEventListener('yt-navigate-start', function clearAlertSentFlag() { this.removeEventListener('yt-navigate-start', clearAlertSentFlag); alertSent = false; }); } function parseitem(jNode) { if (GM_config.get('option4') === true) { var spanlistpadd = txtlistpadd; } else { var spanlistpadd = ''; } var pNode = $(jNode).parent().parent()[0]; $(pNode).hover(function blockShow() { $(pNode).find("#t30sp").show(); }, function blockHide() { $(pNode).find("#t30sp").hide(); }); pNode = jNode[0]; var userID = $(jNode).find("a")[0].href.split('/').pop(); var foundID = arrayERKY.indexOf(userID); var foundIDp1 = -1; var foundIDc1 = -1; var foundIDc2 = -1; var foundIDc3 = -1; if (GM_config.get('option4') === true) { if (arrayListP1 !== null) { foundIDp1 = arrayListP1.indexOf(userID); } if (typeof arrayListC1 !== 'undefined' && arrayListC1.length > 1) { foundIDc1 = arrayListC1.indexOf(userID); } if (typeof arrayListC2 !== 'undefined' && arrayListC2.length > 1) { foundIDc2 = arrayListC2.indexOf(userID); } if (typeof arrayListC3 !== 'undefined' && arrayListC3.length > 1) { foundIDc3 = arrayListC3.indexOf(userID); } } var comURL = $(jNode).find("span.comment-renderer-time")[0]; if ($(jNode).find("span.comment-renderer-linked-comment").length > 0) { comURL = $(jNode).find("span.comment-renderer-linked-comment")[0]; } var t30span = document.createElement('span'); t30span.innerHTML = '\u2003<span id="about" style="cursor: pointer; font-family: Segoe UI Symbol; color: #767676" title="Открыть страницу с датой регистрации">\u2753</span>\u2003<span id="top30" style="cursor: pointer" title="Найти другие комментарии автора с помощью агрегатора ТОП30"><font color="#7777fa">top</font><font color="#fa7777">30</font></span>' + spanlistpadd; t30span.id = 't30sp'; t30span.style = "display:none"; if (foundID > -1) { sendAlert(jNode); console.log("[MetaBot for Youtube] user found in ERKY-db: " + userID); if (GM_config.get('option1') == 2) { foundIDp1 = -1; foundIDc1 = -1; foundIDc2 = -1; foundIDc3 = -1; var hidspan = document.createElement('span'); hidspan.innerHTML = 'Комментарий скрыт: пользователь найден в ЕРКЮ'; hidspan.classList.add('yt-badge'); hidspan.style = 'margin:0 0 10px 0;text-align:center;text-transform:none;font-weight:500;width:100%;background-color:hsla(0, 0%, 93.3%, .6)'; $(jNode).parent().parent().after(hidspan); $(jNode).parent().parent().hide(); } else { markred(pNode, arrayERKY[foundID + 1]); } $(comURL).after(t30span); } else { var newspan = document.createElement('span'); newspan.innerHTML = '<img id="checkbtn" src="' + checkb + '" title="Проверить дату регистрации" style="cursor: help" />'; newspan.id = 'checksp'; pNode.insertBefore(newspan, pNode.firstChild); t30span.innerHTML += '\u2003<span id="sendlink" style="cursor: pointer" title="Помогите пополнить список известных ботов - отправьте нам данные о подозрительном комментарии">\u27A4</span>'; $(comURL).after(t30span); $(jNode).find("img")[0].addEventListener("click", function checkcomment() { checkdate(pNode); }, false); $(jNode).find("#sendlink")[0].addEventListener("click", function displayinfo() { sendinfo(); }, false); } if (GM_config.get('option4') === true) { if (foundIDc1 > -1) { markcustom(pNode, arrayListC1[foundIDc1 + 1], 1); } if (foundIDc2 > -1) { markcustom(pNode, arrayListC2[foundIDc2 + 1], 2); } if (foundIDc3 > -1) { markcustom(pNode, arrayListC3[foundIDc3 + 1], 3); } if (foundIDp1 > -1) { if ($(jNode).find("#checkbtn").length > 0) { $(jNode).find("#checkbtn")[0].remove(); } markpersonal(pNode, arrayListP1[foundIDp1 + 1]); } $(jNode).find("#listpadd")[0].addEventListener("click", function addtolistNew() { if ($(pNode).find("span#bookmark").length > 0) { listpdel(pNode); $(jNode).find("#listpadd").html(iconsdef[0]); $(jNode).find("#listpadd")[0].title = 'Добавить в закладки'; } else { if ($(jNode).find("#checkbtn").length > 0) { $(jNode).find("#checkbtn")[0].remove(); } $(jNode).find("#listpadd").html('\u23F3'); getpage(listpadd, pNode, $(jNode).find("a")[0].href + '/about') } }, false); } $(jNode).find("#about")[0].addEventListener("click", function openabout() { window.open($(jNode).find("a")[0].href + '/about'); }, false); $(jNode).find("#top30")[0].addEventListener("click", function opent30() { window.open('https://www.t30p.ru/search.aspx?s=' + $(jNode).find("a")[0].href.split('/').pop()); }, false); } function parseitemMob(jNode) { var userID = $(jNode).find("a")[0].href.split('/').pop(); var foundID = arrayERKY.indexOf(userID); if (foundID > -1) { console.log("[MetaBot for Youtube] user found in ERKY-db: " + userID); markredMob(jNode, arrayERKY[foundID + 1]); } else { $(jNode)[0].addEventListener("touchstart", function () { $(this).data('moved', '0'); }, false); $(jNode)[0].addEventListener("touchmove", function () { $(this).data('moved', '1'); }, false); $(jNode)[0].addEventListener("touchend", function ttend() { if ($(this).data('moved') == 0){ if (['en', 'en-US', 'en-GB', 'ru', 'uk', 'be', 'bg'].indexOf(currentlangmob()) < 0) { alert('Функция поддерживается только на языках:\n \u2714 English\n \u2714 Русский\n \u2714 Українська\n \u2714 Беларуская \u2714 Български\nВы можете сменить язык интерфейса в меню настроек YouTube.'); return; } this.removeEventListener("touchend", ttend); checkdateMob(this); } }, false); } } function parseitemNew(jNode) { if (GM_config.get('option4') === true) { var spanlistpadd = txtlistpadd; } else { var spanlistpadd = ''; } var pNode = $(jNode).find("#header-author.ytd-comment-renderer")[0]; $(jNode).hover(function blockShow() { $(pNode).find("#t30sp").show(); }, function blockHide() { $(pNode).find("#t30sp").hide(); }); var userID = $(jNode).find("a")[0].href.split('/').pop(); var foundID = arrayERKY.indexOf(userID); var foundIDp1 = -1; var foundIDc1 = -1; var foundIDc2 = -1; var foundIDc3 = -1; if (GM_config.get('option4') === true) { if (arrayListP1 !== null) { foundIDp1 = arrayListP1.indexOf(userID); } if (typeof arrayListC1 !== 'undefined' && arrayListC1.length > 1) { foundIDc1 = arrayListC1.indexOf(userID); } if (typeof arrayListC2 !== 'undefined' && arrayListC2.length > 1) { foundIDc2 = arrayListC2.indexOf(userID); } if (typeof arrayListC3 !== 'undefined' && arrayListC3.length > 1) { foundIDc3 = arrayListC3.indexOf(userID); } } var comURL = $(jNode).find(".published-time-text")[0]; var t30span = document.createElement('span'); t30span.innerHTML = '\u2003<span id="about" style="cursor: pointer; ' + iconstyledef + '" title="Открыть страницу с датой регистрации">\u2753</span>\u2003<span id="top30" style="cursor: pointer" title="Найти другие комментарии автора с помощью агрегатора ТОП30"><font color="#7777fa">top</font><font color="#fa7777">30</font></span>' + spanlistpadd; t30span.id = 't30sp'; t30span.style = "display:none"; var newspan = document.createElement('span'); newspan.id = 'checksp'; if (foundID > -1) { sendAlert(jNode); console.log("[MetaBot for Youtube] user found in ERKY-db: " + userID); if (GM_config.get('option1') == 2) { foundIDp1 = -1; foundIDc1 = -1; foundIDc2 = -1; foundIDc3 = -1; var hidspan = document.createElement('span'); hidspan.innerHTML = 'Комментарий скрыт: пользователь найден в ЕРКЮ'; hidspan.classList.add('badge'); hidspan.classList.add('badge-style-type-simple'); hidspan.classList.add('ytd-badge-supported-renderer'); hidspan.style = 'margin: 0 0 10px 0;text-align:center'; $(jNode).parent().parent().after(hidspan); $(jNode).parent().parent().hide(); } else { markredNew($(pNode).parent(), arrayERKY[foundID + 1]); } $(comURL).append(t30span); $(newspan).attr('data-chan', $(jNode).find("a#author-text")[0].href); pNode.insertBefore(newspan, pNode.firstChild); } else { newspan.innerHTML = '<img id="checkbtn" src="' + checkb + '" title="Проверить дату регистрации" style="cursor: help" />'; $(newspan).attr('data-chan', $(jNode).find("a#author-text")[0].href); pNode.insertBefore(newspan, pNode.firstChild); t30span.innerHTML += '\u2003<span id="sendlink" style="cursor: pointer" title="Помогите пополнить список известных ботов - отправьте нам данные о подозрительном комментарии">\u27A4</span>'; $(comURL).append(t30span); $(jNode).find("#checkbtn")[0].addEventListener("click", function checkcommentNew() { checkdateNew($(pNode).parent()); }, false); $(jNode).find("#sendlink")[0].addEventListener("click", function displayinfoNew() { sendinfo(); }, false); } if (GM_config.get('option4') === true) { if (foundIDc1 > -1) { markcustomNew($(pNode).parent(), arrayListC1[foundIDc1 + 1], 1); } if (foundIDc2 > -1) { markcustomNew($(pNode).parent(), arrayListC2[foundIDc2 + 1], 2); } if (foundIDc3 > -1) { markcustomNew($(pNode).parent(), arrayListC3[foundIDc3 + 1], 3); } if (foundIDp1 > -1) { if ($(jNode).find("#checkbtn").length > 0) { $(jNode).find("#checkbtn")[0].remove(); } markpersonalNew($(pNode).parent(), arrayListP1[foundIDp1 + 1]); } $(jNode).find("#listpadd")[0].addEventListener("click", function addtolistNew() { if ($(pNode).find("span#bookmark").length > 0) { listpdelNew(pNode); $(jNode).find("#listpadd").html(iconsdef[0]); $(jNode).find("#listpadd")[0].title = 'Добавить в закладки'; } else { if ($(jNode).find("#checkbtn").length > 0) { $(jNode).find("#checkbtn")[0].remove(); } $(jNode).find("#listpadd").html('\u23F3'); getpage(listpaddNew, pNode, $(jNode).find("a")[0].href + '/about') } }, false); } $(jNode).find("#about")[0].addEventListener("click", function openaboutNew() { window.open($(jNode).find("a")[0].href + '/about'); }, false); $(jNode).find("#top30")[0].addEventListener("click", function opent30New() { window.open('https://www.t30p.ru/search.aspx?s=' + $(jNode).find("a")[0].href.split('/').pop()); }, false); this.addEventListener('yt-navigate-start', function wipeitemNewS() { this.removeEventListener('yt-navigate-start', wipeitemNewS); deleteitemNew(jNode, $(comURL).find("a")[0].href); }); this.addEventListener('yt-navigate-finish', function wipeitemNewF() { this.removeEventListener('yt-navigate-finish', wipeitemNewF); deleteitemNew(jNode, $(comURL).find("a")[0].href); }); } function recheckNew(jNode) { var checkre = $(jNode).find("#checksp")[0]; if (typeof checkre !== 'undefined') { if ($(checkre).attr('data-chan') !== $(jNode).find("a#author-text")[0].href) { $(jNode).find("#checksp").remove(); $(jNode).find("#t30sp").remove(); $(jNode).find("#botmark").remove(); var cNode = $(jNode).parent().parent().find("#content-text"); $(cNode).parent().removeAttr('style'); $(cNode).removeAttr('style'); $(jNode).find("ytd-toggle-button-renderer.ytd-comment-action-buttons-renderer:eq(1)").removeAttr('style'); parseitemNew(jNode); } } } function deleteitemNew(jNode, url) { if (url.length > 74) { $(jNode).parent().parent().remove(); } else { $(jNode).parent().parent().parent().remove(); } } function sendinfo() { var answer = confirm('Будет запущен Telegram.' + '\n\nПрисоединитесь к группе, отправьте ссылку на подозрительный' + '\nкомментарий (можно скопировать из даты публикации) и обоснуйте подозрения.\n\nПерейти к группе?'); if (answer) { window.open(reporturl); } } function listpadd(jNode, response, url) { window.tempHTML = document.createElement('html'); tempHTML.innerHTML = response; window.aboutSTAT = tempHTML.getElementsByClassName('about-stat'); var day = Dparse(aboutSTAT[aboutSTAT.length - 1].innerHTML); $('textarea#listpersonal')[0].value += url.substring(0, url.length - 6).split('/').pop() + '=' + day + '\n'; var tempArray = $('textarea#listpersonal')[0].value.split('\n'); var uniqArray = tempArray.reduce(function(a,b){ if (a.indexOf(b) < 0) a.push(b); return a; },[]); $('textarea#listpersonal')[0].value = uniqArray.join('\n'); GM_config.set('listp1', uniqArray.join('\n')); GM_config.save(); arrayListP1 = GM_config.get('listp1').match(/[^\r\n=]+/g); $(jNode).find("#listpadd").html('\u274C'); $(jNode).find("#listpadd")[0].title = 'Удалить из закладок'; markpersonal(jNode, day); console.log("[MetaBot for Youtube] Bookmarks (personal list) updated."); } function listpaddNew(jNode, response, url) { var matches = regexdate.exec(response); var day = Dparse(matches[3]); $('textarea#listpersonal')[0].value += url.substring(0, url.length - 6).split('/').pop() + '=' + day + '\n'; var tempArray = $('textarea#listpersonal')[0].value.split('\n'); var uniqArray = tempArray.reduce(function(a,b){ if (a.indexOf(b) < 0) a.push(b); return a; },[]); $('textarea#listpersonal')[0].value = uniqArray.join('\n'); GM_config.set('listp1', uniqArray.join('\n')); GM_config.save(); arrayListP1 = GM_config.get('listp1').match(/[^\r\n=]+/g); $(jNode).find("#listpadd").html('\u274C'); $(jNode).find("#listpadd")[0].title = 'Удалить из закладок'; markpersonalNew($(jNode).parent(), day); console.log("[MetaBot for Youtube] Bookmarks (personal list) updated."); } function listpdel(jNode) { $(jNode).find("span#bookmark").remove(); var tempArray = $('textarea#listpersonal')[0].value.split('\n'); var itemDel = arrayListP1.indexOf($(jNode).find("a")[0].href.split('/').pop()); tempArray.splice(itemDel / 2,1); $('textarea#listpersonal')[0].value = tempArray.join('\n'); GM_config.set('listp1', tempArray.join('\n')); GM_config.save(); arrayListP1 = GM_config.get('listp1').match(/[^\r\n=]+/g); $(jNode).next().css({ "background-image": "none", "border-right": "", "padding-right": "" }); console.log("[MetaBot for Youtube] Bookmarks (personal list) updated."); } function listpdelNew(jNode) { $(jNode).find("span#bookmark").remove(); var tempArray = $('textarea#listpersonal')[0].value.split('\n'); var itemDel = arrayListP1.indexOf($(jNode).find("a")[0].href.split('/').pop()); tempArray.splice(itemDel / 2,1); $('textarea#listpersonal')[0].value = tempArray.join('\n'); GM_config.set('listp1', tempArray.join('\n')); GM_config.save(); arrayListP1 = GM_config.get('listp1').match(/[^\r\n=]+/g); $(jNode).parent().parent().find("#content-text").parent().css({ "background-image": "none", "border-right": "", "padding-right": "" }); console.log("[MetaBot for Youtube] Bookmarks (personal list) updated."); } function checkdate(jNode) { if (['en', 'en-US', 'en-GB', 'ru', 'uk', 'be', 'bg'].indexOf(currentlang()) < 0) { alert('Функция поддерживается только на языках:\n \u2714 English\n \u2714 Русский\n \u2714 Українська\n \u2714 Беларуская \u2714 Български\nВы можете сменить язык интерфейса в меню настроек YouTube.'); return; } $(jNode).find("img")[0].remove(); getpage(procdate, jNode, $(jNode).find("a")[0].href + '/about'); } function checkdateMob(jNode) { var channelURL = $(jNode).find("a")[0].href + '/about?ajax=1'; var request = new XMLHttpRequest(); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { var response = request.responseText; if (response !== "") { console.log("[MetaBot for Youtube] XMLHttpRequest done."); var matches = regexdatemob.exec(response); var testday = Dparse(decodeURIComponent(JSON.parse('"' + matches[3] + '"'))); $(jNode).parent().find("div.erb").find("a")[0].innerHTML = $(jNode).parent().find("div.erb").find("a")[0].innerHTML + ' <img src="' + minf + '" title="Дата регистрации:" /> ' + testday; $(jNode).parent().find("div.zqb").css({ "background": "rgba(170,170,170,0.3)", "border-left": "3px solid rgba(170,170,170,0.3)", "padding-left": "3px" }); } else { console.log("[MetaBot for Youtube] XMLHttpRequest failed."); } } } }; request.open("GET", channelURL, true); request.send(null); } function checkdateNew(jNode) { if (['en', 'en-US', 'en-GB', 'ru', 'uk', 'be', 'bg'].indexOf(currentlang()) < 0) { alert('Функция поддерживается только на языках:\n \u2714 English\n \u2714 Русский\n \u2714 Українська\n \u2714 Беларуская \u2714 Български\nВы можете сменить язык интерфейса в меню настроек YouTube.'); return; } $(jNode).find("#checkbtn")[0].remove(); var userID = $(jNode).find("a")[0].href.split('/').pop(); var foundID = arrayERKY.indexOf(userID); if (foundID > -1) { console.log("[MetaBot for Youtube] user found in ERKY-db: " + userID); markredNew(jNode, arrayERKY[foundID + 1]); } else { getpage(procdateNew, jNode, $(jNode).find("a")[0].href + '/about'); } } function procdate(jNode, response, url) { window.tempHTML = document.createElement('html'); tempHTML.innerHTML = response; window.aboutSTAT = tempHTML.getElementsByClassName('about-stat'); var testday = Dparse(aboutSTAT[aboutSTAT.length - 1].innerHTML); var newspan = document.createElement('span'); newspan.id = 'botmark'; newspan.innerHTML = ' <img src="' + minf + '" title="Дата регистрации:" /> ' + testday; $(jNode).find("a.comment-author-text").after(newspan); $(jNode).next().css({ "background": "rgba(170,170,170,0.3)", "border-left": "3px solid rgba(170,170,170,0.3)", "padding-left": "3px" }); delete window.aboutSTAT; delete window.tempHTML; } function procdateNew(jNode, response, url) { var matches = regexdate.exec(response); var testday = Dparse(matches[3]); var aNode = $(jNode).find("#author-text")[0]; var cNode = $(jNode).parent().find("#content-text")[0]; var newspan = document.createElement('span'); newspan.id = 'botmark'; var checkBadge = $(aNode).parent().find('span#author-comment-badge')[0]; newspan.innerHTML = '<img src="' + minf + '" title="Дата регистрации:" /> ' + testday; $(aNode).append(newspan); if ($(checkBadge).length > 0) { $(checkBadge).attr('hidden', ''); $(aNode).removeAttr('hidden'); } $(cNode).parent().css({ "background": "rgba(170,170,170,0.3)", "border-left": "3px solid rgba(170,170,170,0.3)", "padding-left": "3px" }); aNode = $(jNode).find("#checksp"); aNode.attr('data-chan', $(jNode).find("a#author-text")[0].href); aNode.hide(); } function markred(jNode, day) { var newspan = document.createElement('span'); newspan.id = 'botmark'; newspan.innerHTML = ' <img src="' + mred + '" title="- пользователь найден в #ЕРКЮ, дата регистрации -" /> ' + day; $(jNode).find("a.comment-author-text").after(newspan); $(jNode).next().css({ "background": "rgba(255,50,50,0.3)", "border-left": "3px solid rgba(255,50,50,0.3)", "padding-left": "3px" }); if (GM_config.get('option2') === true) { requestDislike(jNode, false); } } function markredMob(jNode, day) { $(jNode).parent().find("div.erb").find("a")[0].innerHTML = $(jNode).parent().find("div.erb").find("a")[0].innerHTML + ' <img src="' + mred + '" title="Пользователь найден в ЕРКЮ" /> ' + day; $(jNode).parent().find("div.zqb").css({ "background": "rgba(255,50,50,0.3)", "border-left": "3px solid rgba(255,50,50,0.3)", "padding-left": "3px" }); } function markredNew(jNode, day) { var aNode = $(jNode).find("#author-text")[0]; var cNode = $(jNode).parent().find("#content-text")[0]; var newspan = document.createElement('span'); newspan.id = 'botmark'; newspan.innerHTML = '<img src="' + mred + '" title="- найден в #ЕРКЮ, дата регистрации -" /> ' + day; $(aNode).append(newspan); var checkBadge = $(aNode).parent().find('span#author-comment-badge')[0]; if ($(checkBadge).length > 0) { $(checkBadge).attr('hidden', ''); $(aNode).removeAttr('hidden'); } $(cNode).parent().css({ "background": "rgba(255,50,50,0.3)", "border-left": "3px solid rgba(255,50,50,0.3)", "padding-left": "3px" }); if (GM_config.get('option2') === true) { requestDislike(jNode, true); } } function markcustom(jNode, day, list) { switch (list) { case 1: var listname = Aparse(arrayListC1[0]); break case 2: var listname = Aparse(arrayListC2[0]); break case 3: var listname = Aparse(arrayListC3[0]); } var botmark = $(jNode).find("#botmark"); var rgbCustom = gmColor('colorc' + list, 1) + "," + gmColor('colorc' + list, 2) + "," + gmColor('colorc' + list, 3); var marktxt = ' <span style="' + iconstyledef + ' color: rgb(' + rgbCustom + '); font-size: 1.3em;" title="Найден в списке ' + listname + '">' + iconsdef[list] + '</span> '; if (botmark.length > 0) { $(botmark).prepend(marktxt); } else { $(jNode).find("#checkbtn")[0].remove(); var newspan = document.createElement('span'); newspan.id = 'botmark'; newspan.innerHTML = marktxt + day; $(jNode).find("a.comment-author-text").after(newspan); $(jNode).next().css({ "background": "rgba(" + rgbCustom + ",.3)", "border-left": "3px solid rgba(" + rgbCustom + ",0.3)", "padding-left": "3px" }); } } function markcustomNew(jNode, day, list) { switch (list) { case 1: var listname = Aparse(arrayListC1[0]); break case 2: var listname = Aparse(arrayListC2[0]); break case 3: var listname = Aparse(arrayListC3[0]); } var aNode = $(jNode).find("#author-text")[0]; var cNode = $(jNode).parent().find("#content-text")[0]; var checkBadge = $(aNode).parent().find('span#author-comment-badge')[0]; var botmark = $(cNode).parent().parent().parent().find("#botmark"); var rgbCustom = gmColor('colorc' + list, 1) + "," + gmColor('colorc' + list, 2) + "," + gmColor('colorc' + list, 3); var marktxt = '<span style="' + iconstyledef + ' color: rgb(' + rgbCustom + '); font-size: 1.3em;" title="Найден в списке ' + listname + '">' + iconsdef[list] + '</span> '; if (botmark.length > 0) { $(botmark).prepend(marktxt); } else { $(jNode).find("#checkbtn")[0].remove(); var newspan = document.createElement('span'); newspan.id = 'botmark'; newspan.innerHTML = marktxt + day; $(aNode).append(newspan); if ($(checkBadge).length > 0) { $(checkBadge).attr('hidden', ''); $(aNode).removeAttr('hidden'); } $(cNode).parent().css({ "background": "rgba(" + rgbCustom + ",.3)", "border-left": "3px solid rgba(" + rgbCustom + ",0.3)", "padding-left": "3px" }); } } function markpersonal(jNode, day) { $(jNode).find("#listpadd").html('\u274C'); $(jNode).find("#listpadd")[0].title = 'Удалить из закладок'; var botmark = $(jNode).parent().find("#botmark"); var rgbCustom = gmColor('colorp1', 1) + "," + gmColor('colorp1', 2) + "," + gmColor('colorp1', 3); var marktxt = ' <span id="bookmark" style="' + iconstyledef + ' color: rgb(' + rgbCustom + '); font-size: 1.3em;" title="Добавлен в закладки">' + iconsdef[0] + '</span> '; if (botmark.length > 0) { $(botmark).prepend(marktxt); $(jNode).next().css({ "background-image": "linear-gradient(230deg, rgba(" + rgbCustom + ",.4) 20%, rgba(0,0,0,0) 30%)" }); } else { var newspan = document.createElement('span'); newspan.id = 'botmark'; newspan.innerHTML = marktxt + day; $(jNode).find("a.comment-author-text").after(newspan); $(jNode).next().css({ "background": "linear-gradient(230deg, rgba(" + rgbCustom + ",.4) 20%, rgba(0,0,0,0) 30%)" }); } $(jNode).next().css({ "background-origin": "border-box", "border-right": "3px solid rgba(" + rgbCustom + ",.3)", "padding-right": "3px" }); } function markpersonalNew(jNode, day) { $(jNode).find("#listpadd").html('\u274C'); $(jNode).find("#listpadd")[0].title = 'Удалить из закладок'; var aNode = $(jNode).find("#author-text")[0]; var cNode = $(jNode).parent().find("#content-text")[0]; var checkBadge = $(aNode).parent().find('span#author-comment-badge')[0]; var botmark = $(cNode).parent().parent().parent().find("#botmark"); var rgbCustom = gmColor('colorp1', 1) + "," + gmColor('colorp1', 2) + "," + gmColor('colorp1', 3); var marktxt = '<span id="bookmark" style="' + iconstyledef + ' color: rgb(' + rgbCustom + '); font-size: 1.3em;" title="Добавлен в закладки">' + iconsdef[0] + '</span> '; if (botmark.length > 0) { $(botmark).prepend(marktxt); $(cNode).parent().css({ "background-image": "linear-gradient(230deg, rgba(" + rgbCustom + ",.4) 20%, rgba(0,0,0,0) 30%)" }); } else { var newspan = document.createElement('span'); newspan.id = 'botmark'; newspan.innerHTML = marktxt + day; $(aNode).append(newspan); if ($(checkBadge).length > 0) { $(checkBadge).attr('hidden', ''); $(aNode).removeAttr('hidden'); } $(cNode).parent().css({ "background": "linear-gradient(230deg, rgba(" + rgbCustom + ",.4) 20%, rgba(0,0,0,0) 30%)" }); } $(cNode).parent().css({ "background-origin": "border-box", "border-right": "3px solid rgba(" + rgbCustom + ",.3)", "padding-right": "3px" }); } function gmColor(gmVar, colpos) { return parseInt(parseColor(GM_config.get(gmVar), false).slice(colpos*2-1, colpos*2+1), 16) } function requestDislike(jNode, isNew) { var element; if (isNew) { element = $(jNode).parent().find("ytd-toggle-button-renderer.ytd-comment-action-buttons-renderer:not(.style-default-active)")[1]; } else { element = $(jNode).parent().find(".yt-uix-button.comment-action-buttons-renderer-thumb[aria-checked='false']")[1]; } if (element) orderedClicksArray.push(element); if (bDTaskSet == 0) { bDTaskSet = 1; setTimeout(scheduledDislike, minDCTime + Math.random() * (maxDCTime - minDCTime), isNew); } } function scheduledDislike(isNew) { if ( bDBlur || document.querySelector('paper-dialog.ytd-popup-container:not([style*="display:none"]):not([style*="display: none"])') || document.querySelector('div.yt-dialog-fg-content.yt-dialog-show-content') ) { setTimeout(scheduledDislike, minDCTime + Math.random() * (maxDCTime - minDCTime), isNew); } else { if (orderedClicksArray.length) { var element = orderedClicksArray.shift(); if ( (isNew && !(element.classList.contains("style-default-active"))) || (element.getAttribute("aria-checked") == "false") ) { $(element).css({"background": "rgba(255,50,50,0.3)"}); if (isNew) {$(element).css({"border-radius": "50%"});} element.click(); } else { setTimeout(scheduledDislike, 100, isNew); return; } setTimeout(scheduledDislike, minDCTime + Math.random() * (maxDCTime - minDCTime), isNew); } else { bDTaskSet = 0; } } } function Dparse(day) { day = day.replace(/Joined |Дата регистрации: |Ви приєдналися |Член от |Далучыўся(-лася) /i, ''); day = day.replace(/ янв\. | января | січ\. |\.01\./i, ' Jan, '); day = day.replace(/ февр\. | февраля | лют\. |\.02\./i, ' Feb, '); day = day.replace(/ мар\. | марта | бер\. |\.03\./i, ' Mar, '); day = day.replace(/ апр\. | апреля | квіт\. |\.04\./i, ' Apr, '); day = day.replace(/ мая\. | мая | трав\. |\.05\./i, ' May, '); day = day.replace(/ июн\. | июня | черв\.|\.06\./i, ' Jun, '); day = day.replace(/ июл\. | июля | лип\. |\.07\./i, ' Jul, '); day = day.replace(/ авг\. | августа | серп\. |\.08\./i, ' Aug, '); day = day.replace(/ сент\. | сентября | вер\. |\.09\./i, ' Sep, '); day = day.replace(/ окт\. | октября | жовт\. |\.10\./i, ' Oct, '); day = day.replace(/ нояб\. | ноября | лист\. |\.11\./i, ' Nov, '); day = day.replace(/ дек\. | декабря | груд\. |\.12\./i, ' Dec, '); day = day.replace(/ г\.| р\./i, ''); return day; } function Aparse(text) { if (ytmode === 1) { var isNew = true; } else { var isNew = false; } text = text.replace(/&/g, '&'); text = text.replace(/</g, '<'); text = text.replace(/>/g, '>'); text = text.replace(/\r\n/g, '<br>'); if (isNew) { text = text.replace(/\[(.+?)\]\((.+?)\)/g, '<a href="$2" target="_blank" style="color:rgba(39,147,230,1);">$1</a>'); } else { text = text.replace(/\[(.+?)\]\((.+?)\)/g, '<a href="$2" target="_blank">$1</a>'); } text = text.replace(/\*\*(.*?)\*\*/g, '<b>$1</b>'); text = text.replace(/\*(.*?)\*/g, '<i>$1</i>'); text = text.replace(/__(.*?)__/g, '<u>$1</u>'); return text; } function currentlang() { return regexlang.exec(document.body.innerHTML)[1]; } function currentlangmob() { return document.documentElement.lang; } function getURLParameter(name, link) { return decodeURIComponent((new RegExp('[?|&]' + name + '=([^&;]+?)(&|#|;|$)').exec(link) || [null, ''])[1].replace(/\+/g, '%20')) || null; } function ytOldDesign() { var getDesignCookie = function (cookie) { var prefs = cookie.split("; ").filter(function (v) { return v.indexOf("PREF=") === 0; })[0]; if (!prefs) { return "PREF=f6=8"; } var entries = prefs.substr(5).split('&'); var set = false; for (var i = 0; i < entries.length; i++) { if (entries[i].indexOf("f6=") === 0) { set = true; entries[i] = "f6=8"; } } if (!set) { entries.push("f6=8"); } return "PREF=" + entries.join('&'); }; document.cookie = getDesignCookie(document.cookie) + ";domain=.youtube.com;path=/"; } function ytNewDesign() { var requestSw = new XMLHttpRequest(); requestSw.open("POST", "https://www.youtube.com/new?optin=true", true); requestSw.send(null); } function parseColor(color, toNumber) { if (toNumber === true) { if (typeof color === 'number') { return (color | 0); } if (typeof color === 'string' && color[0] === '#') { color = color.slice(1); } return parseInt(color, 16); } else { color = '#' + ('00000' + (color | 0).toString(16)).substr(-6); return color; } } $(window).focus(function() { bDBlur = 0; }); $(window).blur(function() { bDBlur = 1; }); function getpage(callback, jNode, url) { var request = new XMLHttpRequest(); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { if (request.responseText !== "") { console.log("[MetaBot for Youtube] XMLHttpRequest done: " + url); callback(jNode, request.responseText, url); } } } }; request.open("GET", url, true); request.send(null); } function getlist(callback, numArr, url) { if (typeof GM_xmlhttpRequest !== 'undefined') { GM_xmlhttpRequest({ method: "GET", url: url, onload: function(response) { callback(numArr, response.responseText, response.status, url); } }); } else if (typeof GM !== 'undefined') { GM.xmlHttpRequest({ method: "GET", url: url, onload: function(response) { callback(numArr, response.responseText, response.status, url); } }); } else { console.log("[MetaBot for Youtube] Unable to get supported cross-origin XMLHttpRequest function."); } } function waitForKeyElements(selectorTxt, actionFunction, bWaitOnce, iframeSelector) { var targetNodes, btargetsFound; if (typeof iframeSelector == "undefined") targetNodes = $(selectorTxt); else targetNodes = $(iframeSelector).contents().find(selectorTxt); if (targetNodes && targetNodes.length > 0) { btargetsFound = true; targetNodes.each(function() { var jThis = $(this); var alreadyFound = jThis.data('alreadyFound') || false; if (!alreadyFound) { var cancelFound = actionFunction(jThis); if (cancelFound) btargetsFound = false; else jThis.data('alreadyFound', true); } }); } else { btargetsFound = false; } var controlObj = waitForKeyElements.controlObj || {}; var controlKey = selectorTxt.replace(/[^\w]/g, "_"); var timeControl = controlObj[controlKey]; if (btargetsFound && bWaitOnce && timeControl) { clearInterval(timeControl); delete controlObj[controlKey]; } else { if (!timeControl) { timeControl = setInterval(function() { waitForKeyElements(selectorTxt, actionFunction, bWaitOnce, iframeSelector); }, 300); controlObj[controlKey] = timeControl; } } waitForKeyElements.controlObj = controlObj; }
thewebdeveloper2017 /
<!DOCTYPE html> <html dir="ltr" lang="en" xml:lang="en"> <head> <!-- front --> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>iLearn: Log in to the site</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script type="text/javascript">window.NREUM||(NREUM={}),__nr_require=function(e,t,n){function r(n){if(!t[n]){var o=t[n]={exports:{}};e[n][0].call(o.exports,function(t){var o=e[n][1][t];return r(o||t)},o,o.exports)}return t[n].exports}if("function"==typeof __nr_require)return __nr_require;for(var o=0;o<n.length;o++)r(n[o]);return r}({1:[function(e,t,n){function r(){}function o(e,t,n){return function(){return i(e,[(new Date).getTime()].concat(u(arguments)),t?null:this,n),t?void 0:this}}var i=e("handle"),a=e(2),u=e(3),c=e("ee").get("tracer"),f=NREUM;"undefined"==typeof window.newrelic&&(newrelic=f);var s=["setPageViewName","setCustomAttribute","setErrorHandler","finished","addToTrace","inlineHit","addRelease"],l="api-",p=l+"ixn-";a(s,function(e,t){f[t]=o(l+t,!0,"api")}),f.addPageAction=o(l+"addPageAction",!0),f.setCurrentRouteName=o(l+"routeName",!0),t.exports=newrelic,f.interaction=function(){return(new r).get()};var d=r.prototype={createTracer:function(e,t){var n={},r=this,o="function"==typeof t;return i(p+"tracer",[Date.now(),e,n],r),function(){if(c.emit((o?"":"no-")+"fn-start",[Date.now(),r,o],n),o)try{return t.apply(this,arguments)}finally{c.emit("fn-end",[Date.now()],n)}}}};a("setName,setAttribute,save,ignore,onEnd,getContext,end,get".split(","),function(e,t){d[t]=o(p+t)}),newrelic.noticeError=function(e){"string"==typeof e&&(e=new Error(e)),i("err",[e,(new Date).getTime()])}},{}],2:[function(e,t,n){function r(e,t){var n=[],r="",i=0;for(r in e)o.call(e,r)&&(n[i]=t(r,e[r]),i+=1);return n}var o=Object.prototype.hasOwnProperty;t.exports=r},{}],3:[function(e,t,n){function r(e,t,n){t||(t=0),"undefined"==typeof n&&(n=e?e.length:0);for(var r=-1,o=n-t||0,i=Array(o<0?0:o);++r<o;)i[r]=e[t+r];return i}t.exports=r},{}],ee:[function(e,t,n){function r(){}function o(e){function t(e){return e&&e instanceof r?e:e?c(e,u,i):i()}function n(n,r,o){if(!p.aborted){e&&e(n,r,o);for(var i=t(o),a=v(n),u=a.length,c=0;c<u;c++)a[c].apply(i,r);var f=s[w[n]];return f&&f.push([y,n,r,i]),i}}function d(e,t){b[e]=v(e).concat(t)}function v(e){return b[e]||[]}function g(e){return l[e]=l[e]||o(n)}function m(e,t){f(e,function(e,n){t=t||"feature",w[n]=t,t in s||(s[t]=[])})}var b={},w={},y={on:d,emit:n,get:g,listeners:v,context:t,buffer:m,abort:a,aborted:!1};return y}function i(){return new r}function a(){(s.api||s.feature)&&(p.aborted=!0,s=p.backlog={})}var u="nr@context",c=e("gos"),f=e(2),s={},l={},p=t.exports=o();p.backlog=s},{}],gos:[function(e,t,n){function r(e,t,n){if(o.call(e,t))return e[t];var r=n();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!1}),r}catch(i){}return e[t]=r,r}var o=Object.prototype.hasOwnProperty;t.exports=r},{}],handle:[function(e,t,n){function r(e,t,n,r){o.buffer([e],r),o.emit(e,t,n)}var o=e("ee").get("handle");t.exports=r,r.ee=o},{}],id:[function(e,t,n){function r(e){var t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===window?0:a(e,i,function(){return o++})}var o=1,i="nr@id",a=e("gos");t.exports=r},{}],loader:[function(e,t,n){function r(){if(!h++){var e=y.info=NREUM.info,t=l.getElementsByTagName("script")[0];if(setTimeout(f.abort,3e4),!(e&&e.licenseKey&&e.applicationID&&t))return f.abort();c(b,function(t,n){e[t]||(e[t]=n)}),u("mark",["onload",a()],null,"api");var n=l.createElement("script");n.src="https://"+e.agent,t.parentNode.insertBefore(n,t)}}function o(){"complete"===l.readyState&&i()}function i(){u("mark",["domContent",a()],null,"api")}function a(){return(new Date).getTime()}var u=e("handle"),c=e(2),f=e("ee"),s=window,l=s.document,p="addEventListener",d="attachEvent",v=s.XMLHttpRequest,g=v&&v.prototype;NREUM.o={ST:setTimeout,CT:clearTimeout,XHR:v,REQ:s.Request,EV:s.Event,PR:s.Promise,MO:s.MutationObserver},e(1);var m=""+location,b={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",agent:"js-agent.newrelic.com/nr-1016.min.js"},w=v&&g&&g[p]&&!/CriOS/.test(navigator.userAgent),y=t.exports={offset:a(),origin:m,features:{},xhrWrappable:w};l[p]?(l[p]("DOMContentLoaded",i,!1),s[p]("load",r,!1)):(l[d]("onreadystatechange",o),s[d]("onload",r)),u("mark",["firstbyte",a()],null,"api");var h=0},{}]},{},["loader"]);</script> <meta name="keywords" content="moodle, iLearn: Log in to the site" /> <link rel="stylesheet" type="text/css" href="https://ilearn.mq.edu.au/theme/yui_combo.php?r1487942275&rollup/3.17.2/yui-moodlesimple-min.css" /><script id="firstthemesheet" type="text/css">/** Required in order to fix style inclusion problems in IE with YUI **/</script><link rel="stylesheet" type="text/css" href="https://ilearn.mq.edu.au/theme/styles.php/mqu/1487942275/all" /> <script type="text/javascript"> //<![CDATA[ var M = {}; M.yui = {}; M.pageloadstarttime = new Date(); M.cfg = {"wwwroot":"https:\/\/ilearn.mq.edu.au","sesskey":"mDL5SddUvA","loadingicon":"https:\/\/ilearn.mq.edu.au\/theme\/image.php\/mqu\/core\/1487942275\/i\/loading_small","themerev":"1487942275","slasharguments":1,"theme":"mqu","jsrev":"1487942275","admin":"admin","svgicons":true};var yui1ConfigFn = function(me) {if(/-skin|reset|fonts|grids|base/.test(me.name)){me.type='css';me.path=me.path.replace(/\.js/,'.css');me.path=me.path.replace(/\/yui2-skin/,'/assets/skins/sam/yui2-skin')}}; var yui2ConfigFn = function(me) {var parts=me.name.replace(/^moodle-/,'').split('-'),component=parts.shift(),module=parts[0],min='-min';if(/-(skin|core)$/.test(me.name)){parts.pop();me.type='css';min=''};if(module){var filename=parts.join('-');me.path=component+'/'+module+'/'+filename+min+'.'+me.type}else me.path=component+'/'+component+'.'+me.type}; YUI_config = {"debug":false,"base":"https:\/\/ilearn.mq.edu.au\/lib\/yuilib\/3.17.2\/","comboBase":"https:\/\/ilearn.mq.edu.au\/theme\/yui_combo.php?r1487942275&","combine":true,"filter":null,"insertBefore":"firstthemesheet","groups":{"yui2":{"base":"https:\/\/ilearn.mq.edu.au\/lib\/yuilib\/2in3\/2.9.0\/build\/","comboBase":"https:\/\/ilearn.mq.edu.au\/theme\/yui_combo.php?r1487942275&","combine":true,"ext":false,"root":"2in3\/2.9.0\/build\/","patterns":{"yui2-":{"group":"yui2","configFn":yui1ConfigFn}}},"moodle":{"name":"moodle","base":"https:\/\/ilearn.mq.edu.au\/theme\/yui_combo.php?m\/1487942275\/","combine":true,"comboBase":"https:\/\/ilearn.mq.edu.au\/theme\/yui_combo.php?r1487942275&","ext":false,"root":"m\/1487942275\/","patterns":{"moodle-":{"group":"moodle","configFn":yui2ConfigFn}},"filter":null,"modules":{"moodle-core-actionmenu":{"requires":["base","event","node-event-simulate"]},"moodle-core-blocks":{"requires":["base","node","io","dom","dd","dd-scroll","moodle-core-dragdrop","moodle-core-notification"]},"moodle-core-checknet":{"requires":["base-base","moodle-core-notification-alert","io-base"]},"moodle-core-chooserdialogue":{"requires":["base","panel","moodle-core-notification"]},"moodle-core-dock":{"requires":["base","node","event-custom","event-mouseenter","event-resize","escape","moodle-core-dock-loader","moodle-core-event"]},"moodle-core-dock-loader":{"requires":["escape"]},"moodle-core-dragdrop":{"requires":["base","node","io","dom","dd","event-key","event-focus","moodle-core-notification"]},"moodle-core-event":{"requires":["event-custom"]},"moodle-core-formautosubmit":{"requires":["base","event-key"]},"moodle-core-formchangechecker":{"requires":["base","event-focus","moodle-core-event"]},"moodle-core-handlebars":{"condition":{"trigger":"handlebars","when":"after"}},"moodle-core-languninstallconfirm":{"requires":["base","node","moodle-core-notification-confirm","moodle-core-notification-alert"]},"moodle-core-lockscroll":{"requires":["plugin","base-build"]},"moodle-core-maintenancemodetimer":{"requires":["base","node"]},"moodle-core-notification":{"requires":["moodle-core-notification-dialogue","moodle-core-notification-alert","moodle-core-notification-confirm","moodle-core-notification-exception","moodle-core-notification-ajaxexception"]},"moodle-core-notification-dialogue":{"requires":["base","node","panel","escape","event-key","dd-plugin","moodle-core-widget-focusafterclose","moodle-core-lockscroll"]},"moodle-core-notification-alert":{"requires":["moodle-core-notification-dialogue"]},"moodle-core-notification-confirm":{"requires":["moodle-core-notification-dialogue"]},"moodle-core-notification-exception":{"requires":["moodle-core-notification-dialogue"]},"moodle-core-notification-ajaxexception":{"requires":["moodle-core-notification-dialogue"]},"moodle-core-popuphelp":{"requires":["moodle-core-tooltip"]},"moodle-core-session-extend":{"requires":["base","node","io-base","panel","dd-plugin"]},"moodle-core-tooltip":{"requires":["base","node","io-base","moodle-core-notification-dialogue","json-parse","widget-position","widget-position-align","event-outside","cache-base"]},"moodle-core_availability-form":{"requires":["base","node","event","panel","moodle-core-notification-dialogue","json"]},"moodle-backup-backupselectall":{"requires":["node","event","node-event-simulate","anim"]},"moodle-backup-confirmcancel":{"requires":["node","node-event-simulate","moodle-core-notification-confirm"]},"moodle-calendar-info":{"requires":["base","node","event-mouseenter","event-key","overlay","moodle-calendar-info-skin"]},"moodle-course-categoryexpander":{"requires":["node","event-key"]},"moodle-course-dragdrop":{"requires":["base","node","io","dom","dd","dd-scroll","moodle-core-dragdrop","moodle-core-notification","moodle-course-coursebase","moodle-course-util"]},"moodle-course-formatchooser":{"requires":["base","node","node-event-simulate"]},"moodle-course-management":{"requires":["base","node","io-base","moodle-core-notification-exception","json-parse","dd-constrain","dd-proxy","dd-drop","dd-delegate","node-event-delegate"]},"moodle-course-modchooser":{"requires":["moodle-core-chooserdialogue","moodle-course-coursebase"]},"moodle-course-toolboxes":{"requires":["node","base","event-key","node","io","moodle-course-coursebase","moodle-course-util"]},"moodle-course-util":{"requires":["node"],"use":["moodle-course-util-base"],"submodules":{"moodle-course-util-base":{},"moodle-course-util-section":{"requires":["node","moodle-course-util-base"]},"moodle-course-util-cm":{"requires":["node","moodle-course-util-base"]}}},"moodle-form-dateselector":{"requires":["base","node","overlay","calendar"]},"moodle-form-passwordunmask":{"requires":["node","base"]},"moodle-form-shortforms":{"requires":["node","base","selector-css3","moodle-core-event"]},"moodle-form-showadvanced":{"requires":["node","base","selector-css3"]},"moodle-core_message-messenger":{"requires":["escape","handlebars","io-base","moodle-core-notification-ajaxexception","moodle-core-notification-alert","moodle-core-notification-dialogue","moodle-core-notification-exception"]},"moodle-core_message-deletemessage":{"requires":["node","event"]},"moodle-question-chooser":{"requires":["moodle-core-chooserdialogue"]},"moodle-question-preview":{"requires":["base","dom","event-delegate","event-key","core_question_engine"]},"moodle-question-qbankmanager":{"requires":["node","selector-css3"]},"moodle-question-searchform":{"requires":["base","node"]},"moodle-availability_completion-form":{"requires":["base","node","event","moodle-core_availability-form"]},"moodle-availability_date-form":{"requires":["base","node","event","io","moodle-core_availability-form"]},"moodle-availability_grade-form":{"requires":["base","node","event","moodle-core_availability-form"]},"moodle-availability_group-form":{"requires":["base","node","event","moodle-core_availability-form"]},"moodle-availability_grouping-form":{"requires":["base","node","event","moodle-core_availability-form"]},"moodle-availability_profile-form":{"requires":["base","node","event","moodle-core_availability-form"]},"moodle-qtype_ddimageortext-dd":{"requires":["node","dd","dd-drop","dd-constrain"]},"moodle-qtype_ddimageortext-form":{"requires":["moodle-qtype_ddimageortext-dd","form_filepicker"]},"moodle-qtype_ddmarker-dd":{"requires":["node","event-resize","dd","dd-drop","dd-constrain","graphics"]},"moodle-qtype_ddmarker-form":{"requires":["moodle-qtype_ddmarker-dd","form_filepicker","graphics","escape"]},"moodle-qtype_ddwtos-dd":{"requires":["node","dd","dd-drop","dd-constrain"]},"moodle-mod_assign-history":{"requires":["node","transition"]},"moodle-mod_attendance-groupfilter":{"requires":["base","node"]},"moodle-mod_dialogue-autocomplete":{"requires":["base","node","json-parse","autocomplete","autocomplete-filters","autocomplete-highlighters","event","event-key"]},"moodle-mod_dialogue-clickredirector":{"requires":["base","node","json-parse","clickredirector","clickredirector-filters","clickredirector-highlighters","event","event-key"]},"moodle-mod_dialogue-userpreference":{"requires":["base","node","json-parse","userpreference","userpreference-filters","userpreference-highlighters","event","event-key"]},"moodle-mod_forum-subscriptiontoggle":{"requires":["base-base","io-base"]},"moodle-mod_oublog-savecheck":{"requires":["base","node","io","panel","moodle-core-notification-alert"]},"moodle-mod_oublog-tagselector":{"requires":["base","node","autocomplete","autocomplete-filters","autocomplete-highlighters"]},"moodle-mod_quiz-autosave":{"requires":["base","node","event","event-valuechange","node-event-delegate","io-form"]},"moodle-mod_quiz-dragdrop":{"requires":["base","node","io","dom","dd","dd-scroll","moodle-core-dragdrop","moodle-core-notification","moodle-mod_quiz-quizbase","moodle-mod_quiz-util-base","moodle-mod_quiz-util-page","moodle-mod_quiz-util-slot","moodle-course-util"]},"moodle-mod_quiz-modform":{"requires":["base","node","event"]},"moodle-mod_quiz-questionchooser":{"requires":["moodle-core-chooserdialogue","moodle-mod_quiz-util","querystring-parse"]},"moodle-mod_quiz-quizbase":{"requires":["base","node"]},"moodle-mod_quiz-quizquestionbank":{"requires":["base","event","node","io","io-form","yui-later","moodle-question-qbankmanager","moodle-core-notification-dialogue"]},"moodle-mod_quiz-randomquestion":{"requires":["base","event","node","io","moodle-core-notification-dialogue"]},"moodle-mod_quiz-repaginate":{"requires":["base","event","node","io","moodle-core-notification-dialogue"]},"moodle-mod_quiz-toolboxes":{"requires":["base","node","event","event-key","io","moodle-mod_quiz-quizbase","moodle-mod_quiz-util-slot","moodle-core-notification-ajaxexception"]},"moodle-mod_quiz-util":{"requires":["node"],"use":["moodle-mod_quiz-util-base"],"submodules":{"moodle-mod_quiz-util-base":{},"moodle-mod_quiz-util-slot":{"requires":["node","moodle-mod_quiz-util-base"]},"moodle-mod_quiz-util-page":{"requires":["node","moodle-mod_quiz-util-base"]}}},"moodle-message_airnotifier-toolboxes":{"requires":["base","node","io"]},"moodle-filter_glossary-autolinker":{"requires":["base","node","io-base","json-parse","event-delegate","overlay","moodle-core-event","moodle-core-notification-alert","moodle-core-notification-exception","moodle-core-notification-ajaxexception"]},"moodle-filter_mathjaxloader-loader":{"requires":["moodle-core-event"]},"moodle-editor_atto-editor":{"requires":["node","transition","io","overlay","escape","event","event-simulate","event-custom","node-event-html5","node-event-simulate","yui-throttle","moodle-core-notification-dialogue","moodle-core-notification-confirm","moodle-editor_atto-rangy","handlebars","timers","querystring-stringify"]},"moodle-editor_atto-plugin":{"requires":["node","base","escape","event","event-outside","handlebars","event-custom","timers","moodle-editor_atto-menu"]},"moodle-editor_atto-menu":{"requires":["moodle-core-notification-dialogue","node","event","event-custom"]},"moodle-editor_atto-rangy":{"requires":[]},"moodle-report_eventlist-eventfilter":{"requires":["base","event","node","node-event-delegate","datatable","autocomplete","autocomplete-filters"]},"moodle-report_loglive-fetchlogs":{"requires":["base","event","node","io","node-event-delegate"]},"moodle-gradereport_grader-gradereporttable":{"requires":["base","node","event","handlebars","overlay","event-hover"]},"moodle-gradereport_history-userselector":{"requires":["escape","event-delegate","event-key","handlebars","io-base","json-parse","moodle-core-notification-dialogue"]},"moodle-tool_capability-search":{"requires":["base","node"]},"moodle-tool_lp-dragdrop-reorder":{"requires":["moodle-core-dragdrop"]},"moodle-assignfeedback_editpdf-editor":{"requires":["base","event","node","io","graphics","json","event-move","event-resize","transition","querystring-stringify-simple","moodle-core-notification-dialog","moodle-core-notification-exception","moodle-core-notification-ajaxexception"]},"moodle-atto_accessibilitychecker-button":{"requires":["color-base","moodle-editor_atto-plugin"]},"moodle-atto_accessibilityhelper-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_align-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_bold-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_charmap-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_chemistry-button":{"requires":["moodle-editor_atto-plugin","moodle-core-event","io","event-valuechange","tabview","array-extras"]},"moodle-atto_clear-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_collapse-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_emoticon-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_equation-button":{"requires":["moodle-editor_atto-plugin","moodle-core-event","io","event-valuechange","tabview","array-extras"]},"moodle-atto_html-button":{"requires":["moodle-editor_atto-plugin","event-valuechange"]},"moodle-atto_image-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_indent-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_italic-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_link-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_managefiles-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_managefiles-usedfiles":{"requires":["node","escape"]},"moodle-atto_media-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_noautolink-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_orderedlist-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_rtl-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_strike-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_subscript-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_superscript-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_table-button":{"requires":["moodle-editor_atto-plugin","moodle-editor_atto-menu","event","event-valuechange"]},"moodle-atto_title-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_underline-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_undo-button":{"requires":["moodle-editor_atto-plugin"]},"moodle-atto_unorderedlist-button":{"requires":["moodle-editor_atto-plugin"]}}},"gallery":{"name":"gallery","base":"https:\/\/ilearn.mq.edu.au\/lib\/yuilib\/gallery\/","combine":true,"comboBase":"https:\/\/ilearn.mq.edu.au\/theme\/yui_combo.php?","ext":false,"root":"gallery\/1487942275\/","patterns":{"gallery-":{"group":"gallery"}}}},"modules":{"core_filepicker":{"name":"core_filepicker","fullpath":"https:\/\/ilearn.mq.edu.au\/lib\/javascript.php\/1487942275\/repository\/filepicker.js","requires":["base","node","node-event-simulate","json","async-queue","io-base","io-upload-iframe","io-form","yui2-treeview","panel","cookie","datatable","datatable-sort","resize-plugin","dd-plugin","escape","moodle-core_filepicker"]},"core_comment":{"name":"core_comment","fullpath":"https:\/\/ilearn.mq.edu.au\/lib\/javascript.php\/1487942275\/comment\/comment.js","requires":["base","io-base","node","json","yui2-animation","overlay"]}}}; M.yui.loader = {modules: {}}; //]]> </script> <meta name="robots" content="noindex" /> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script> <![endif]--> <link rel="apple-touch-icon-precomposed" href="https://ilearn.mq.edu.au/theme/image.php/mqu/theme/1487942275/apple-touch-icon-144-precomposed" sizes="144x144"> <link rel="shortcut icon" href="https://ilearn.mq.edu.au/theme/image.php/mqu/theme/1487942275/favicon"> </head> <body id="page-login-index" class="format-site path-login gecko dir-ltr lang-en yui-skin-sam yui3-skin-sam ilearn-mq-edu-au pagelayout-login course-1 context-1 notloggedin content-only layout-option-noblocks layout-option-nocourseheaderfooter layout-option-nocustommenu layout-option-nofooter layout-option-nonavbar"> <div class="skiplinks"><a class="skip" href="#maincontent">Skip to main content</a></div> <script type="text/javascript" src="https://ilearn.mq.edu.au/theme/yui_combo.php?r1487942275&rollup/3.17.2/yui-moodlesimple-min.js&rollup/1487942275/mcore-min.js"></script><script type="text/javascript" src="https://ilearn.mq.edu.au/theme/jquery.php/r1487942275/core/jquery-1.12.1.min.js"></script> <script type="text/javascript" src="https://ilearn.mq.edu.au/lib/javascript.php/1487942275/lib/javascript-static.js"></script> <script type="text/javascript"> //<![CDATA[ document.body.className += ' jsenabled'; //]]> </script> <div id="nice_debug_area"></div> <header id="page-header"> <div class="container"> <div class="login-logos"> <div class="mq-logo"> <a class="login-logo" href="http://ilearn.mq.edu.au"><img alt="Macquarie University" src="https://ilearn.mq.edu.au/theme/image.php/mqu/theme/1487942275/login-logo"></a> </div><!-- /.mq-logo --> <div class="ilearn-logo"> <a class="login-logo-ilearn" href="http://ilearn.mq.edu.au"><img alt="iLearn" src="https://ilearn.mq.edu.au/theme/image.php/mqu/theme/1487942275/ilearn-logo"></a> </div><!-- /.ilearn-logo --> </div><!-- /.login-logos --> </div><!-- /.container --> </header><!-- #page-header --> <div id="page"> <div class="container" id="page-content"> <div class="login-wing login-wing-left"></div> <div class="login-wing login-wing-right"></div> <h1 class="login-h1">iLearn Login</h1> <span class="notifications" id="user-notifications"></span><div role="main"><span id="maincontent"></span><div class="loginbox clearfix twocolumns"> <div class="loginpanel"> <h2>Log in</h2> <div class="subcontent loginsub"> <form action="https://ilearn.mq.edu.au/login/index.php" method="post" id="login" > <div class="loginform"> <div class="form-label"><label for="username">Username</label></div> <div class="form-input"> <input type="text" name="username" id="username" size="15" tabindex="1" value="" /> </div> <div class="clearer"><!-- --></div> <div class="form-label"><label for="password">Password</label></div> <div class="form-input"> <input type="password" name="password" id="password" size="15" tabindex="2" value="" /> </div> </div> <div class="clearer"><!-- --></div> <div class="clearer"><!-- --></div> <input id="anchor" type="hidden" name="anchor" value="" /> <script>document.getElementById('anchor').value = location.hash</script> <input type="submit" id="loginbtn" value="Log in" /> <div class="forgetpass"><a href="forgot_password.php">Forgotten your username or password?</a></div> </form> <script type="text/javascript"> $(document).ready(function(){ var input = document.getElementById ("username"); input.focus(); }); </script> <div class="desc"> Cookies must be enabled in your browser<span class="helptooltip"><a href="https://ilearn.mq.edu.au/help.php?component=moodle&identifier=cookiesenabled&lang=en" title="Help with Cookies must be enabled in your browser" aria-haspopup="true" target="_blank"><img src="https://ilearn.mq.edu.au/theme/image.php/mqu/core/1487942275/help" alt="Help with Cookies must be enabled in your browser" class="iconhelp" /></a></span> </div> </div> </div> <div class="signuppanel"> <h2>Is this your first time here?</h2> <div class="subcontent"> </div> </div> <script> dataLayer = []; </script> <!-- Google Tag Manager --> <noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-MQZTHB" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-MQZTHB');</script> <!-- End Google Tag Manager --> </div> </div><!-- /.container #page-content --> </div><!-- /#page --> <footer id="page-footer"> <div class="container"> <ul class="page-footer-ul"> <li><a href="http://help.ilearn.mq.edu.au/" target="_blank">iLearn Help and FAQ</a></li> <li><a href="https://oneid.mq.edu.au/" target="_blank">Forgotten your password?</a></li> <li><a href="http://status.ilearn.mq.edu.au/" target="_blank">iLearn Status</a></li> </ul><!-- /.page-footer-ul --> <div class="login-footer-info"> <p>If you are having trouble accessing your online unit due to a disability or health condition, please go to the <a href="http://www.students.mq.edu.au/support/accessibility_services" target="_blank">Student Services Website</a> for information on how to get assistance</p> <p>All material available on iLearn belongs to Macquarie University or has been copied and communicated to Macquarie staff and students under statutory licences and educational exceptions under Australian copyright law. This material is provided for the educational purposes of Macquarie students and staff. It is illegal to copy and distribute this material beyond iLearn except in very limited circumstances and as provided by specific copyright exceptions.</p> </div><!-- /.login-footer-info --> <div class="login-footer-link"> <div class="bootstrap-row"> <div class="col-md-7"> <p>© Copyright Macquarie University | <a href="http://www.mq.edu.au/privacy/privacy.html" target="_blank">Privacy</a> | <a href="http://www.mq.edu.au/accessibility.html" target="_blank">Accessibility Information</a></p> </div><!-- /.col-md-7 --> <div class="col-md-5"> <p>ABN 90 952 801 237 | CRICOS Provider 00002J</p> </div><!-- /.col-md-5 --> </div><!-- /.bootstrap-row --> </div><!-- /.login-footer-link --> </div><!-- /.container --> </footer><!-- /#page-footer --> <script type="text/javascript"> //<![CDATA[ var require = { baseUrl : 'https://ilearn.mq.edu.au/lib/requirejs.php/1487942275/', // We only support AMD modules with an explicit define() statement. enforceDefine: true, skipDataMain: true, waitSeconds : 0, paths: { jquery: 'https://ilearn.mq.edu.au/lib/javascript.php/1487942275/lib/jquery/jquery-1.12.1.min', jqueryui: 'https://ilearn.mq.edu.au/lib/javascript.php/1487942275/lib/jquery/ui-1.11.4/jquery-ui.min', jqueryprivate: 'https://ilearn.mq.edu.au/lib/javascript.php/1487942275/lib/requirejs/jquery-private' }, // Custom jquery config map. map: { // '*' means all modules will get 'jqueryprivate' // for their 'jquery' dependency. '*': { jquery: 'jqueryprivate' }, // 'jquery-private' wants the real jQuery module // though. If this line was not here, there would // be an unresolvable cyclic dependency. jqueryprivate: { jquery: 'jquery' } } }; //]]> </script> <script type="text/javascript" src="https://ilearn.mq.edu.au/lib/javascript.php/1487942275/lib/requirejs/require.min.js"></script> <script type="text/javascript"> //<![CDATA[ require(['core/first'], function() { ; require(["core/notification"], function(amd) { amd.init(1, [], false); });; require(["core/log"], function(amd) { amd.setConfig({"level":"warn"}); }); }); //]]> </script> <script type="text/javascript"> //<![CDATA[ M.yui.add_module({"mathjax":{"name":"mathjax","fullpath":"https:\/\/cdn.mathjax.org\/mathjax\/2.6-latest\/MathJax.js?delayStartupUntil=configured"}}); //]]> </script> <script type="text/javascript" src="https://ilearn.mq.edu.au/theme/javascript.php/mqu/1487942275/footer"></script> <script type="text/javascript"> //<![CDATA[ M.str = {"moodle":{"lastmodified":"Last modified","name":"Name","error":"Error","info":"Information","namedfiletoolarge":"The file '{$a->filename}' is too large and cannot be uploaded","yes":"Yes","no":"No","morehelp":"More help","loadinghelp":"Loading...","cancel":"Cancel","ok":"OK","confirm":"Confirm","areyousure":"Are you sure?","closebuttontitle":"Close","unknownerror":"Unknown error"},"repository":{"type":"Type","size":"Size","invalidjson":"Invalid JSON string","nofilesattached":"No files attached","filepicker":"File picker","logout":"Logout","nofilesavailable":"No files available","norepositoriesavailable":"Sorry, none of your current repositories can return files in the required format.","fileexistsdialogheader":"File exists","fileexistsdialog_editor":"A file with that name has already been attached to the text you are editing.","fileexistsdialog_filemanager":"A file with that name has already been attached","renameto":"Rename to \"{$a}\"","referencesexist":"There are {$a} alias\/shortcut files that use this file as their source","select":"Select"},"admin":{"confirmdeletecomments":"You are about to delete comments, are you sure?","confirmation":"Confirmation"},"block":{"addtodock":"Move this to the dock","undockitem":"Undock this item","dockblock":"Dock {$a} block","undockblock":"Undock {$a} block","undockall":"Undock all","hidedockpanel":"Hide the dock panel","hidepanel":"Hide panel"},"langconfig":{"thisdirectionvertical":"btt"}}; //]]> </script> <script type="text/javascript"> //<![CDATA[ (function() {M.util.load_flowplayer(); setTimeout("fix_column_widths()", 20); Y.use("moodle-core-dock-loader",function() {M.core.dock.loader.initLoader(); }); M.util.help_popups.setup(Y); Y.use("moodle-core-popuphelp",function() {M.core.init_popuphelp(); }); M.util.js_pending('random58b8dd8d3abcf2'); Y.on('domready', function() { M.util.move_debug_messages(Y); M.util.js_complete('random58b8dd8d3abcf2'); }); M.util.js_pending('random58b8dd8d3abcf3'); Y.on('domready', function() { M.util.netspot_perf_info(Y, "00000000:0423_00000000:0050_58B8DD8D_30F8F6D:3B0C", 1488510349.1968); M.util.js_complete('random58b8dd8d3abcf3'); }); M.util.init_skiplink(Y); Y.use("moodle-filter_glossary-autolinker",function() {M.filter_glossary.init_filter_autolinking({"courseid":0}); }); Y.use("moodle-filter_mathjaxloader-loader",function() {M.filter_mathjaxloader.configure({"mathjaxconfig":"\nMathJax.Hub.Config({\n config: [\"Accessible.js\", \"Safe.js\"],\n errorSettings: { message: [\"!\"] },\n skipStartupTypeset: true,\n messageStyle: \"none\",\n TeX: {\n extensions: [\"mhchem.js\",\"color.js\",\"AMSmath.js\",\"AMSsymbols.js\",\"noErrors.js\",\"noUndefined.js\"]\n }\n});\n ","lang":"en"}); }); M.util.js_pending('random58b8dd8d3abcf5'); Y.on('domready', function() { M.util.js_complete("init"); M.util.js_complete('random58b8dd8d3abcf5'); }); })(); //]]> </script> <script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"d6bb71fb66","applicationID":"3373525,3377726","transactionName":"YVMHYkVQWkIAUERQDFgZMEReHlheBlpeFgpYUgBOGUFcQQ==","queueTime":0,"applicationTime":48,"atts":"TRQEFA1KSUw=","errorBeacon":"bam.nr-data.net","agent":""}</script></body> </html>
alekangelov /
A simple way of managing your alerts, prompts and confirms without defaulting to the browsers ugly implementations
orsifrancesco /
Simple and easy configurable "sexy" alert/confirm dialog box for Javascript.