javascript:void (async () => { let { default: TD } = await import("https://cdn.skypack.dev/turndown"); let json = [ ...document.querySelectorAll(".text-base"), ].map((i) => ({ html: i.innerHTML, text: i.innerText, markdown: new TD().turndown(i), isPrompt: !i.querySelector(".prose"), })); window.open( URL.createObjectURL( new Blob( [ json .map((i) => i.isPrompt ? `**Prompt**: ${i.text}` : `**ChatGPT**: ${i.markdown}` ) .join("\n\n"), ], { type: "text/plain" } ) ) ); })()
Get a quick answer from google for any question
(async function answer(q) {
var html = await fetch(
`https://cors.explosionscratc.repl.co/google.com/search?q=${encodeURI(q)}`,
{
headers: {
"User-Agent":
"Mozilla/5.0 (X11; CrOS x86_64 13982.88.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.162 Safari/537.36",
},
}
).then((res) => res.text());
window.d = new DOMParser().parseFromString(html, "text/html");
var el =
// Google seems to have added data-attrid to some things
d.querySelector("[data-attrid='wa:/description']") ||
d.querySelector("[id*='lrtl-translation-text']") ||
[...d.querySelectorAll(".kp-header [data-md]")][1] ||
//Calculator results
[...d.querySelectorAll(".vXQmIe")]?.slice(-1)?.[0]?.value ||
[...d.querySelectorAll(".kCrYT")]?.[1] ||
[...d.querySelectorAll("*")]
.filter((i) => i.innerText)
.filter((i) => i.innerText.includes("Calculator Result"))
.slice(-2)?.[0]
?.innerText?.split("\n")?.[2] ||
//Big text ("youtube ceo"):
d.querySelector(".IZ6rdc") ||
//Lists of stuff ("who was president during world war II")
// ".JjtOHd", and ".ellip" are for different arrangements, e.g. "snl cast members"
[...d.querySelectorAll(".WGwSK, .JjtOHd")]?.map(i => i?.innerText?.replace(i?.querySelector(".cp7THd .FozYP, .ellip")?.innerText, "")).join(", ") ||
//Snippets
[...d.querySelectorAll("div, span")]
.filter((i) => i.innerText)
.filter(
(i) =>
i.innerText.includes("Featured snippet from the web") ||
i.innerText.includes("Description") ||
i.innerText.includes("Calculator result")
)?.slice(-1)?.[0]?.innerText?.replace(/^(?:description|calculator result | featured snippet from the web)/i, "") ||
//Cards (like at the side)
d.querySelector(
".card-section, [class*='__wholepage-card'] [class*='desc'], .kno-rdesc"
)?.innerText?.split("=")?.[1]?.split("(function()")?.[0]?.trim() ||
//Definitions
[...d.querySelectorAll(".thODed")]
.map((i) => i.querySelector("div span"))
.map((i, idx) => `${idx + 1}. ${i?.innerText}`)
.join("\n") ||
[...d.querySelectorAll("[data-async-token]")]?.slice(-1)?.[0] ||
d.querySelector("miniapps-card-header")?.parentElement ||
d.querySelector("#tw-target");
var text =
typeof el == "array" || typeof el == "string" ? el : el?.innerText?.trim();
if (text?.startsWith("Did you mean") || text?.startsWith("In order to show you the most relevant results,")){
return;
}
if (text?.includes("translation") && text?.includes("Google Translate")) {
text = text.split("Verified")[0].trim();
}
text = text?.split("();")?.slice(-1)?.[0]?.split("http")?.[0];//In case we get a script.
text = text?.split(/^Featured snippet from the web/)?.slice(-1)?.[0];//"define epicness"
text = text?.split(/Wikipedia[A-Z]/)?.[0];//Sometimes it adds random stuff to the end. This usually ends in "WikipediaRandomstuff"
text = text?.replace(/ Wikipedia$/, "");//Lol
if (
text?.includes("Calculator Result") &&
text?.includes("Your calculations and results")
) {
text = text
.split("them")?.[1]
.split("(function()")?.[0]
?.split("=")?.[1]
?.trim();
}
return text;
})(prompt("What do you want to know?")).then((a) => alert(a));
Play snake (snek) in a popup window - With music =) Full version at gist.github.com/Explosion-Scratch/01cb5de69b91a47873f1b6f14bef2ccc I minified this.
javascript:{let e=window.open("about:blank","Snek","popup=yes"),t=setInterval((()=>{"complete"===e.document.readyState&&(e.eval(d),e.document.documentElement.innerHTML="<button onclick='main()'>Start</button><style>button {position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); padding: 10px 15px; font-size: 1.3rem; font-weight: bold; background: #333; color: white; border-radius: 3px; border: none; cursor: pointer;}</style>",clearInterval(t))}),50),d='function main(){document.documentElement.innerHTML="";var e=document.createElement("canvas");e.width=window.innerWidth,e.height=window.innerHeight,document.body.appendChild(e);var t=e.getContext("2d");let i=new Audio;i.src="https://www.myinstants.com/media/sounds/food_G1U6tlb.mp3",fetch("https://cors.explosionscratc.repl.co/gist.githubusercontent.com/Explosion-Scratch/3691d841ff0b99e4366d18742a369391/raw/e8cc257f6a0667c280876c13b49914e697ab3395/snek.mp3").then((e=>e.text())).then((e=>{let t=new Audio;t.src=e,t.loop=!0,t.play()}));var d={x:e.width/2,y:e.height/2,dx:0,dy:0,size:10,speed:3,tail:[],tailLength:10,color:"#35E464"},n={x:0,y:0,size:10,color:"#E45435"},l=0;function o(){t.clearRect(0,0,e.width,e.height),function(){t.fillStyle=d.color,t.fillRect(d.x,d.y,d.size,d.size);for(var e=0;e<d.tail.length;e++)e===d.tail.length-1?t.fillRect(d.tail[e].x-d.size/2,d.tail[e].y-d.size/2,2*d.size,2*d.size):t.fillRect(d.tail[e].x,d.tail[e].y,d.size,d.size)}(),t.fillStyle=n.color,t.fillRect(n.x,n.y,n.size,n.size),t.fillStyle="#333",t.font="20px Arial",t.fillText("Score: "+l,10,20)}document.addEventListener("keydown",(function(e){37===e.keyCode&&0===d.dx&&(d.dx=-d.speed,d.dy=0),38===e.keyCode&&0===d.dy&&(d.dx=0,d.dy=-d.speed),39===e.keyCode&&0===d.dx&&(d.dx=d.speed,d.dy=0),40===e.keyCode&&0===d.dy&&(d.dx=0,d.dy=d.speed)})),n.x=Math.floor(Math.random()*(e.width-n.size)),n.y=Math.floor(Math.random()*(e.height-n.size));var a=document.createElement("style");a.innerHTML="* { margin: 0; padding: 0; }",document.head.appendChild(a),d.dx=-d.speed,d.dy=0,function t(){!function(){for(d.x+=d.dx,d.y+=d.dy,d.x<0&&(d.x=e.width),d.x>e.width&&(d.x=0),d.y<0&&(d.y=e.height),d.y>e.height&&(d.y=0),d.tail.push({x:d.x,y:d.y});d.tail.length>d.tailLength;)d.tail.shift();Math.hypot(n.x-d.x,n.y-d.y)<20&&(d.tailLength+=10,i.play(),l++,d.speed+=.5,n.x=Math.floor(Math.random()*(e.width-n.size)),n.y=Math.floor(Math.random()*(e.height-n.size)));for(var t=0;t<d.tail.length-1;t++)d.x===d.tail[t].x&&d.y===d.tail[t].y&&(d.tailLength=10,d.tail=[],l=0,d.speed=3)}(),o(),requestAnimationFrame(t)}()}'}
Generate a random username, email, avatar, uuid, etc
javascript: {
import("https://cdn.skypack.dev/@faker-js/faker").then(({ faker: f }) => {
const objFlat = (obj) => {
obj = { ...obj };
delete obj.faker;
const flattened = {};
Object.keys(obj)
.filter((i) => typeof obj[i] === "function" || objtest(obj[i]))
.forEach((key) => {
const value = obj[key];
if (objtest(value)) {
Object.assign(flattened, objFlat(value));
} else {
flattened[key.toLowerCase()] = value;
}
});
return flattened;
};
function objtest(value) {
return (
typeof value === "object" && value !== null && !Array.isArray(value)
);
}
const faker = objFlat(f);
console.log(faker);
let p = "What would you like to generate? (username, email, avatar, etc)";
let answer;
while (!answer) {
answer = prompt(p);
if (!answer) {
answer = "CANCEL";
} else {
answer = answer.toLowerCase().trim();
}
if (answer !== "CANCEL" && !faker[answer]) {
answer = null;
p = `[Invalid], valid keys are: ${Object.keys(faker)}`;
}
}
if (answer === "CANCEL") {
return alert("Cancelled");
}
Promise.resolve(faker[answer]()).then((a) => prompt("Here you go:", a));
});
}
Hold alt while scrolling to scroll 5x faster
javascript: void (() => {
let current = window.scrollY;
const multiplier = 5;
let meta = false;
const keyup = (e) => (meta = e.altKey);
const keydown = (e) => (meta = e.altKey);
const blur = () => (meta = false);
const scroll = (e) => {
console.log(meta);
if (!meta) {
return (current = window.scrollY);
}
const speed = (multiplier - 1) * (window.scrollY - current);
window.scrollBy({ left: 0, top: speed, behavior: "instant" });
current = window.scrollY;
};
window.addEventListener("keyup", keyup);
window.addEventListener("keydown", keydown);
window.addEventListener("blur", blur);
window.addEventListener("scroll", scroll);
})();
Convert a file using Convertio. (Upload file directly, show status, download once converted)
(async () => {
let file = await showOpenFilePicker().then(r => r[0].getFile());
convert(file, prompt("Output format"), ({message, percent}) => {
if (percent){message = `${percent}% - ${message}`}
status(message);
}).then(url => {
console.log(`Finished conversion: `, url);
document.querySelector("#status_convert")?.remove();
try { window.open(url, "_blank"); } catch(e){
prompt("URL to converted file: ", url)
}
})
})()
function status(text){
let el = document.querySelector("#status_convert");
if (!el){
let e = document.createElement("div");
e.id = "status_convert";
e.setAttribute("style", `
position: fixed;
bottom: 0;
right: 0;
display: block;
background: white;
border-radius: 3px;
border: 1px solid #0001;
padding: .3rem .5rem;
color: #666;
`)
document.body.appendChild(e);
el = e;
}
el.innerText = text;
}
async function convert(file, format, progress = () => {}){
if (!(file && format && progress)){
return progress({
percent: 0,
message: "No file or format given"
})
}
const KEY = `8688a5872e01895ed37534314211cdfa`;
progress({
percent: 0,
message: "Starting upload..."
})
let f = await fetch("https://api.convertio.co/convert", {
method: "POST",
headers: {
"content-type": "application/json",
},
body: JSON.stringify({
apikey: KEY,
input: "upload",
filename: file.name,
outputformat: format,
options: "",
})
}).then(r => r.json())
if (!f.data.id){
throw new Error("File upload failed (no id found)")
}
const id = f.data.id;
progress({
percent: 0,
message: "Uploading file..."
})
await fetch(`https://api.convertio.co/convert/${id}/${(file.name)}`, {
method: "PUT",
body: file,
}).then(r => r.json()).then(console.log)
progress({
percent: 0,
message: "Uploaded file"
})
let output = await new Promise(resolve => {
let int = setInterval(async () => {
if (window.STOP_CONVERSION){
let res = await fetch(`https://api.convertio.co/convert/${id}`, {method: "DELETE"}).then(r => r.json());
console.log(res);
clearInterval(int);
}
let r = await fetch(`https://api.convertio.co/convert/${id}/status`).then(r => r.json())
if (!(r.code === 200 && r.status === "ok")){
clearInterval(int);
console.error(r);
throw new Error(r.error || "Getting status failed")
}
r = r.data;
if (r.step === "finish" && r.step_percent === 100){
clearInterval(int);
resolve(r.output.url);
} else {
progress({
body: r,
percent: r.step_percent,
message: `Current step: ${r.step}`,
})
}
}, 1000)
})
return output;
}
function fd(obj){
let a = new FormData();
for (let [k, v] of Object.entries(obj)){
a.set(k, v);
}
return a;
}
function dataurl(file){
return new Promise(resolve => {
let r = new FileReader();
r.onload = () => {
resolve(r.result)
}
r.readAsDataURL(file)
})
}
Search CDNJS for a library and return the URL of it.
javascript:function searchFor(e){return new Promise(t=>{fetch("https://2qwlvlxzb6-2.algolianet.com/1/indexes/*/queries",{headers:{accept:"*/*","content-type":"application/x-www-form-urlencoded","x-algolia-api-key":"2663c73014d2e4d6d1778cc8ad9fd010","x-algolia-application-id":"2QWLVLXZB6"},body:JSON.stringify({requests:[{indexName:"libraries",params:`query=${encodeURIComponent(e)}`}]}),method:"POST"}).then(e=>e.json()).then(e=>{return e.results[0].hits[0]}).then(t)})}searchFor(prompt("What library do you want to search for?")).then(e=>prompt(`${e.name} (${e.github.user}/${e.github.repo}): ${50===e.description.slice(0,50).length?e.description.slice(0,50)+"...":e.description}`,`https://cdnjs.cloudflare.com/ajax/libs/${e.objectID}/${e.version}/${e.filename}`));
Open a gitpod port number in a new tab (run in a workspace).
window.open(`https://${prompt("Port to open", 3000)}-${location.hostname}`, "_blank")
Listen for changes to any of the page's resources then reload it if there are any changes. Simply link in a script tag. Set window.HOTRELOAD_OPTIONS before running to set custom options.
(async ({
interval = 500,
method = "fetch",
useIframe = false,
resources = [],
autoDetect = true,
resourceTypes = ["navigation", "script", "resource", "link", "img", "other"],
}) => {
if (autoDetect) {
resources = performance
.getEntries()
.filter((i) => resourceTypes.includes(i.initiatorType))
.map((i) => i.name);
} else if (!resources.length) {
resources = [location.href];
}
console.log({ interval, method, useIframe, resources });
if (useIframe) {
document.documentElement.innerHTML = "";
window.stop();
}
let text = await getText(resources, method);
if (useIframe) {
let ifr = document.createElement("iframe");
ifr.id = "hotreload";
(document.body || document.documentElement).appendChild(ifr);
document
.querySelector("iframe#hotreload")
.setAttribute(
"style",
`position: fixed; top: 0; right: 0; left: 0; bottom: 0; display: block;`
);
document.querySelector(
"iframe#hotreload"
).style.width = `${window.innerWidth}px`;
document.querySelector(
"iframe#hotreload"
).style.height = `${window.innerHeight}px`;
update({ old: "", newText: text });
}
let int = setInterval(async () => {
let newText = await getText(resources, method);
if (newText !== text) {
update({ old: text, newText });
}
}, interval);
function update({ old, newText }) {
if (useIframe) {
let ifr = document.querySelector("iframe#hotreload");
if (!ifr) {
throw new Error("[hotreload] iframe#hotreload nonexistant");
}
let dataURL = `data:text/html,${encodeURIComponent(newText)}`;
ifr.src = dataURL;
text = newText;
} else {
clearInterval(int);
location.reload();
}
}
async function getText(resources, method = "fetch") {
return JSON.stringify(
await Promise.all(resources.map((i) => f(i, method)))
);
async function f(url, method) {
method = method.toLowerCase();
if (method === "fetch") {
return await fetch(url).then((res) => res.text());
} else if (method === "xmlhttprequest") {
return await new Promise((resolve) => {
let req = new XMLHttpRequest();
req.addEventListener("load", (r) => resolve(r.responseText));
req.open(url);
req.send();
});
}
}
}
})(window.HOTRELOAD_OPTIONS || {});
Click this bookmarklet directly on an image page to edit the image and then have the opportunity to save or export it.
;(async () => {
let { default: tui } = await import("https://esm.run/tui-image-editor");
let src = document.querySelector("img").src;
let title = document.title;
document.body.innerHTML = `
<style>
.tui-image-editor-header-logo {display: none !important}
</style>
<div id="editor"></div>
`;
await loadIcons();
loadStyles([
`https://nhn.github.io/tui.image-editor/latest/dist/tui-image-editor.css`,
`https://uicdn.toast.com/tui-color-picker/v2.2.6/tui-color-picker.min.css`,
`data:text/css;base64,QGltcG9ydCB1cmwoaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PU5vdG8rU2Fucyk7CiAgICAgIGh0bWwsCiAgICAgIGJvZHkgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBtYXJnaW46IDA7CiAgICAgIH0=`,
]);
await loadScripts([
`https://cdnjs.cloudflare.com/ajax/libs/fabric.js/4.4.0/fabric.js`,
`https://uicdn.toast.com/tui.code-snippet/v1.5.0/tui-code-snippet.min.js`,
`https://uicdn.toast.com/tui-color-picker/v2.2.6/tui-color-picker.js`,
`https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.3/FileSaver.min.js`,
`https://nhn.github.io/tui.image-editor/latest/dist/tui-image-editor.js`,
`https://nhn.github.io/tui.image-editor/latest/examples/js/theme/white-theme.js`,
`https://nhn.github.io/tui.image-editor/latest/examples/js/theme/black-theme.js`,
]);
let instance = new tui(document.querySelector("#editor"), {
cssMaxWidth: window.innerWidth,
cssMaxHeight: window.innerHeight,
includeUI: {
loadImage: {
path: src,
name: title,
},
theme: window.blackTheme,
initMenu: "filter",
menuBarPosition: "bottom",
},
selectionStyle: {
cornerSize: 20,
cornerColor: "#ffffff",
cornerStrokeColor: "#000000",
transparentCorners: false,
rotatingPointOffset: 70,
},
});
function loadStyles(styles) {
for (let a of styles) {
let style = document.createElement("link");
style.href = a;
style.rel = "stylesheet";
document.head.appendChild(style);
}
}
async function loadScripts(scripts) {
for (let script of scripts) {
let s = document.createElement("script");
s.src = script;
document.head.appendChild(s);
await new Promise((r) => {
s.onload = () => {
r();
};
});
}
}
async function loadIcons() {
document.body.innerHTML += `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" display="none">
<defs id="tui-image-editor-svg-default-icons">
<symbol id="ic-apply" viewBox="0 0 24 24">
<path d="M0 0h24v24H0z" stroke="none" fill="none"></path>
<path fill="none" stroke="inherit" d="M4 12.011l5 5L20.011 6"></path>
</symbol>
<symbol id="ic-cancel" viewBox="0 0 24 24">
<path d="M0 0h24v24H0z" fill="none" stroke="none"></path>
<path fill="none" stroke="inherit" d="M6 6l12 12M18 6L6 18"></path>
</symbol>
<symbol id="ic-crop" viewBox="0 0 24 24">
<path d="M0 0h24v24H0z" stroke="none" fill="none"></path>
<path stroke="none" fill="inherit" d="M4 0h1v20a1 1 0 0 1-1-1V0zM20 17h-1V5h1v12zm0 2v5h-1v-5h1z"></path>
<path stroke="none" fill="inherit" d="M5 19h19v1H5zM4.762 4v1H0V4h4.762zM7 4h12a1 1 0 0 1 1 1H7V4z"></path>
</symbol>
<!-- This icon made by Pixel perfect from www.flaticon.com -->
<symbol id="ic-resize" viewBox="0 0 24 24">
<path d="M0 0h24v24H0z" stroke="none" fill="none"></path>
<path stroke="none" fill="inherit" d="M 18.988281 3.011719 C 18.800781 2.824219 18.5 2.824219 18.3125 3.011719 L 11.621094 9.707031 C 11.429688 9.894531 11.429688 10.195312 11.621094 10.378906 C 11.710938 10.472656 11.835938 10.519531 11.957031 10.519531 C 12.078125 10.519531 12.203125 10.472656 12.292969 10.378906 L 18.988281 3.6875 C 19.175781 3.5 19.175781 3.199219 18.988281 3.011719 Z M 18.988281 3.011719 "></path>
<path stroke="none" fill="inherit" d="M 18.652344 2.867188 C 18.386719 2.867188 18.171875 3.082031 18.171875 3.347656 L 18.171875 9.085938 C 18.171875 9.347656 18.386719 9.5625 18.652344 9.5625 C 18.917969 9.5625 19.132812 9.347656 19.132812 9.085938 L 19.132812 3.347656 C 19.132812 3.082031 18.917969 2.867188 18.652344 2.867188 Z M 18.652344 2.867188 "></path>
<path stroke="none" fill="inherit" d="M 18.652344 2.867188 L 12.914062 2.867188 C 12.652344 2.867188 12.4375 3.082031 12.4375 3.347656 C 12.4375 3.613281 12.652344 3.828125 12.914062 3.828125 L 18.652344 3.828125 C 18.917969 3.828125 19.132812 3.613281 19.132812 3.347656 C 19.132812 3.082031 18.917969 2.867188 18.652344 2.867188 Z M 18.652344 2.867188 "></path>
<path stroke="none" fill="inherit" d="M 10.378906 11.621094 C 10.195312 11.433594 9.890625 11.433594 9.703125 11.621094 L 3.007812 18.316406 C 2.820312 18.5 2.820312 18.804688 3.007812 18.992188 C 3.105469 19.085938 3.226562 19.132812 3.347656 19.132812 C 3.46875 19.132812 3.589844 19.085938 3.683594 18.992188 L 10.378906 12.296875 C 10.566406 12.109375 10.566406 11.804688 10.378906 11.621094 Z M 10.378906 11.621094 "></path>
<path stroke="none" fill="inherit" d="M 3.347656 12.4375 C 3.082031 12.4375 2.867188 12.652344 2.867188 12.914062 L 2.867188 18.652344 C 2.867188 18.917969 3.082031 19.132812 3.347656 19.132812 C 3.613281 19.132812 3.828125 18.917969 3.828125 18.652344 L 3.828125 12.914062 C 3.828125 12.652344 3.613281 12.4375 3.347656 12.4375 Z M 3.347656 12.4375 "></path>
<path stroke="none" fill="inherit" d="M 9.085938 18.171875 L 3.347656 18.171875 C 3.082031 18.171875 2.867188 18.386719 2.867188 18.652344 C 2.867188 18.917969 3.082031 19.132812 3.347656 19.132812 L 9.085938 19.132812 C 9.347656 19.132812 9.5625 18.917969 9.5625 18.652344 C 9.5625 18.386719 9.347656 18.171875 9.085938 18.171875 Z M 9.085938 18.171875 "></path>
<path stroke="none" fill="inherit" d="M 20.5625 0 L 1.4375 0 C 0.644531 0 0 0.644531 0 1.4375 L 0 20.5625 C 0 21.355469 0.644531 22 1.4375 22 L 20.5625 22 C 21.355469 22 22 21.355469 22 20.5625 L 22 1.4375 C 22 0.644531 21.355469 0 20.5625 0 Z M 21.042969 20.5625 C 21.042969 20.828125 20.828125 21.042969 20.5625 21.042969 L 1.4375 21.042969 C 1.171875 21.042969 0.957031 20.828125 0.957031 20.5625 L 0.957031 1.4375 C 0.957031 1.171875 1.171875 0.957031 1.4375 0.957031 L 20.5625 0.957031 C 20.828125 0.957031 21.042969 1.171875 21.042969 1.4375 Z M 21.042969 20.5625 "></path>
</symbol>
<!-- -->
<symbol id="ic-delete-all" viewBox="0 0 24 24">
<path stroke="none" fill="inherit" d="M5 23H3a1 1 0 0 1-1-1V6h1v16h2v1zm16-10h-1V6h1v7zM9 13H8v-3h1v3zm3 0h-1v-3h1v3zm3 0h-1v-3h1v3zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"></path>
<path stroke="none" fill="inherit" d="M0 3h23v1H0zM11.286 21H8.714L8 23H7l1-2.8V20h.071L9.5 16h1l1.429 4H12v.2l1 2.8h-1l-.714-2zm-.357-1L10 17.4 9.071 20h1.858zM20 22h3v1h-4v-7h1v6zm-5 0h3v1h-4v-7h1v6z"></path>
</symbol>
<symbol id="ic-delete" viewBox="0 0 24 24">
<path stroke="none" fill="inherit" d="M3 6v16h17V6h1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6h1zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z"></path>
<path stroke="none" fill="inherit" d="M0 3h23v1H0zM8 10h1v6H8v-6zm3 0h1v6h-1v-6zm3 0h1v6h-1v-6z"></path>
</symbol>
<symbol id="ic-draw-free" viewBox="0 0 32 32">
<path fill="none" stroke="inherit" d="M2.5 20.929C2.594 10.976 4.323 6 7.686 6c5.872 0 2.524 19 7.697 19s1.89-14.929 6.414-14.929 1.357 10.858 5.13 10.858c1.802 0 2.657-2.262 2.566-6.786"></path>
</symbol>
<symbol id="ic-draw-line" viewBox="0 0 32 32">
<path fill="none" stroke="inherit" d="M2 15.5h28"></path>
</symbol>
<symbol id="ic-draw" viewBox="0 0 24 24">
<path fill="none" stroke="inherit" d="M2.5 21.5H5c.245 0 .48-.058.691-.168l.124-.065.14.01c.429.028.85-.127 1.16-.437L22.55 5.405a.5.5 0 0 0 0-.707l-3.246-3.245a.5.5 0 0 0-.707 0L3.162 16.888a1.495 1.495 0 0 0-.437 1.155l.01.14-.065.123c-.111.212-.17.448-.17.694v2.5z"></path>
<path stroke="none" fill="inherit" d="M16.414 3.707l3.89 3.89-.708.706-3.889-3.889z"></path>
</symbol>
<symbol id="ic-filter" viewBox="0 0 24 24">
<path d="M0 0h24v24H0z" fill="none" stroke="none"></path>
<path stroke="none" fill="inherit" d="M12 7v1H2V7h10zm6 0h4v1h-4V7zM12 16v1h10v-1H12zm-6 0H2v1h4v-1z"></path>
<path stroke="none" fill="inherit" d="M8.5 20a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zM15.5 11a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z"></path>
</symbol>
<symbol id="ic-flip-reset" viewBox="0 0 31 32">
<path fill="none" stroke="none" d="M31 0H0v32h31z"></path>
<path stroke="none" fill="inherit" d="M28 16a8 8 0 0 1-8 8H3v-1h1v-7H3a8 8 0 0 1 8-8h17v1h-1v7h1zM11 9a7 7 0 0 0-7 7v7h16a7 7 0 0 0 7-7V9H11z"></path>
<path fill="none" stroke="inherit" stroke-linecap="square" d="M24 5l3.5 3.5L24 12M7 20l-3.5 3.5L7 27"></path>
</symbol>
<symbol id="ic-flip-x" viewBox="0 0 32 32">
<path fill="none" stroke="none" d="M32 32H0V0h32z"></path>
<path stroke="none" fill="inherit" d="M17 32h-1V0h1zM27.167 11l.5 3h-1.03l-.546-3h1.076zm-.5-3h-1.122L25 5h-5V4h5.153a1 1 0 0 1 .986.836L26.667 8zm1.5 9l.5 3h-.94l-.545-3h.985zm1 6l.639 3.836A1 1 0 0 1 28.819 28H26v-1h3l-.726-4h.894zM23 28h-3v-1h3v1zM13 4v1H7L3 27h10v1H3.18a1 1 0 0 1-.986-1.164l3.666-22A1 1 0 0 1 6.847 4H13z"></path>
</symbol>
<symbol id="ic-flip-y" viewBox="0 0 32 32">
<path fill="none" stroke="none" d="M0 0v32h32V0z"></path>
<path stroke="none" fill="inherit" d="M0 16v1h32v-1zM11 27.167l3 .5v-1.03l-3-.546v1.076zm-3-.5v-1.122L5 25v-5H4v5.153a1 1 0 0 0 .836.986L8 26.667zm9 1.5l3 .5v-.94l-3-.545v.985zm6 1l3.836.639A1 1 0 0 0 28 28.82V26h-1v3l-4-.727v.894zM28 23v-3h-1v3h1zM4 13h1V7l22-4v10h1V3.18a1 1 0 0 0-1.164-.986l-22 3.667A1 1 0 0 0 4 6.847V13z"></path>
</symbol>
<symbol id="ic-flip" viewBox="0 0 24 24">
<path d="M0 0h24v24H0z" fill="none" stroke="none"></path>
<path fill="inherit" stroke="none" d="M11 0h1v24h-1zM19 21v-1h2v-2h1v2a1 1 0 0 1-1 1h-2zm-2 0h-3v-1h3v1zm5-5h-1v-3h1v3zm0-5h-1V8h1v3zm0-5h-1V4h-2V3h2a1 1 0 0 1 1 1v2zm-5-3v1h-3V3h3zM9 3v1H2v16h7v1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7z"></path>
</symbol>
<symbol id="ic-history" viewBox="0 0 24 24">
<path fill="none" stroke="none" d="M0 0H24V24H0z" transform="translate(-740 -16) translate(547 8) translate(193 8)"></path>
<path fill="inherit" stroke="none" d="M12.5 1C18.299 1 23 5.701 23 11.5S18.299 22 12.5 22c-5.29 0-9.665-3.911-10.394-8.999h1.012C3.838 17.534 7.764 21 12.5 21c5.247 0 9.5-4.253 9.5-9.5S17.747 2 12.5 2C8.49 2 5.06 4.485 3.666 8H3h4v1H2V4h1v3.022C4.68 3.462 8.303 1 12.5 1zm.5 5l-.001 5.291 2.537 2.537-.708.708L12.292 12H12V6h1z" transform="translate(-740 -16) translate(547 8) translate(193 8)"></path>
</symbol>
<symbol id="ic-history-check" viewBox="0 0 24 24">
<g fill="none" fill-rule="evenodd">
<path stroke="#555555" d="M4.5 -1L1.5 2 6.5 7" transform="translate(-60 -804) translate(60 804) translate(2 3) rotate(-90 4 3)"></path>
</g>
</symbol>
<symbol id="ic-history-crop" viewBox="0 0 24 24">
<g fill="none" stroke="none" fill-rule="evenodd">
<path d="M0 0H12V12H0z" transform="translate(-84 -804) translate(84 804)"></path>
<path fill="#434343" d="M2 0h1v10c-.552 0-1-.448-1-1V0zM10 9v3H9V9h1zM9 2h1v6H9V2z" transform="translate(-84 -804) translate(84 804)"></path>
<path fill="#434343" d="M2 9H12V10H2zM9 2c.513 0 .936.386.993.883L10 3H3V2h6zM2 3H0V2h2v1z" transform="translate(-84 -804) translate(84 804)"></path>
</g>
</symbol>
<!-- This icon made by Pixel perfect from www.flaticon.com -->
<symbol id="ic-history-resize" viewBox="0 0 24 24">
<g fill="none" stroke="none" fill-rule="evenodd">
<path fill="#434343" d="M 9.492188 1.507812 C 9.398438 1.414062 9.25 1.414062 9.15625 1.507812 L 5.8125 4.851562 C 5.714844 4.945312 5.714844 5.097656 5.8125 5.1875 C 5.855469 5.234375 5.917969 5.257812 5.976562 5.257812 C 6.039062 5.257812 6.101562 5.234375 6.148438 5.1875 L 9.492188 1.84375 C 9.585938 1.75 9.585938 1.601562 9.492188 1.507812 Z M 9.492188 1.507812 "></path>
<path fill="#434343" d="M 9.328125 1.433594 C 9.195312 1.433594 9.085938 1.539062 9.085938 1.671875 L 9.085938 4.542969 C 9.085938 4.671875 9.195312 4.78125 9.328125 4.78125 C 9.460938 4.78125 9.566406 4.671875 9.566406 4.542969 L 9.566406 1.671875 C 9.566406 1.539062 9.460938 1.433594 9.328125 1.433594 Z M 9.328125 1.433594 "></path>
<path fill="#434343" d="M 9.328125 1.433594 L 6.457031 1.433594 C 6.328125 1.433594 6.21875 1.539062 6.21875 1.671875 C 6.21875 1.804688 6.328125 1.914062 6.457031 1.914062 L 9.328125 1.914062 C 9.460938 1.914062 9.566406 1.804688 9.566406 1.671875 C 9.566406 1.539062 9.460938 1.433594 9.328125 1.433594 Z M 9.328125 1.433594 "></path>
<path fill="#434343" d="M 5.1875 5.8125 C 5.097656 5.71875 4.945312 5.71875 4.851562 5.8125 L 1.503906 9.15625 C 1.410156 9.25 1.410156 9.402344 1.503906 9.496094 C 1.554688 9.542969 1.613281 9.566406 1.671875 9.566406 C 1.734375 9.566406 1.796875 9.542969 1.84375 9.496094 L 5.1875 6.148438 C 5.28125 6.054688 5.28125 5.902344 5.1875 5.8125 Z M 5.1875 5.8125 "></path>
<path fill="#434343" d="M 1.671875 6.21875 C 1.539062 6.21875 1.433594 6.328125 1.433594 6.457031 L 1.433594 9.328125 C 1.433594 9.460938 1.539062 9.566406 1.671875 9.566406 C 1.804688 9.566406 1.914062 9.460938 1.914062 9.328125 L 1.914062 6.457031 C 1.914062 6.328125 1.804688 6.21875 1.671875 6.21875 Z M 1.671875 6.21875 "></path>
<path fill="#434343" d="M 4.542969 9.085938 L 1.671875 9.085938 C 1.539062 9.085938 1.433594 9.195312 1.433594 9.328125 C 1.433594 9.460938 1.539062 9.566406 1.671875 9.566406 L 4.542969 9.566406 C 4.671875 9.566406 4.78125 9.460938 4.78125 9.328125 C 4.78125 9.195312 4.671875 9.085938 4.542969 9.085938 Z M 4.542969 9.085938 "></path>
<path fill="#434343" d="M 10.28125 0 L 0.71875 0 C 0.320312 0 0 0.320312 0 0.71875 L 0 10.28125 C 0 10.679688 0.320312 11 0.71875 11 L 10.28125 11 C 10.679688 11 11 10.679688 11 10.28125 L 11 0.71875 C 11 0.320312 10.679688 0 10.28125 0 Z M 10.523438 10.28125 C 10.523438 10.414062 10.414062 10.523438 10.28125 10.523438 L 0.71875 10.523438 C 0.585938 10.523438 0.476562 10.414062 0.476562 10.28125 L 0.476562 0.71875 C 0.476562 0.585938 0.585938 0.476562 0.71875 0.476562 L 10.28125 0.476562 C 10.414062 0.476562 10.523438 0.585938 10.523438 0.71875 Z M 10.523438 10.28125 "></path>
</g>
</symbol>
<!-- -->
<symbol id="ic-history-draw" viewBox="0 0 24 24">
<g fill="none" stroke="none" fill-rule="evenodd">
<path d="M0 1H12V13H0z" transform="translate(-156 -804) translate(156 803)"></path>
<path stroke="#434343" d="M9.622 1.584l1.835 1.658-8.31 8.407L.5 12.5V11l9.122-9.416z" transform="translate(-156 -804) translate(156 803)"></path>
<path fill="#434343" d="M7.628 3.753L10.378 3.753 10.378 4.253 7.628 4.253z" transform="translate(-156 -804) translate(156 803) rotate(45 9.003 4.003)"></path>
</g>
</symbol>
<symbol id="ic-history-filter" viewBox="0 0 24 24">
<g fill="none" stroke="none" fill-rule="evenodd">
<path d="M0 0H12V12H0z" transform="translate(-276 -804) translate(276 804)"></path>
<path fill="#434343" d="M12 3v1H9V3h3zM7 4H0V3h7v1z" transform="translate(-276 -804) translate(276 804)"></path>
<path fill="#434343" d="M12 8v1H9V8h3zM7 9H0V8h7v1z" transform="translate(-276 -804) translate(276 804) matrix(-1 0 0 1 12 0)"></path>
<path fill="#434343" d="M8 1c1.105 0 2 .895 2 2s-.895 2-2 2-2-.895-2-2 .895-2 2-2zm0 1c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zM4 7c1.105 0 2 .895 2 2s-.895 2-2 2-2-.895-2-2 .895-2 2-2zm0 1c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1z" transform="translate(-276 -804) translate(276 804)"></path>
</g>
</symbol>
<symbol id="ic-history-flip" viewBox="0 0 24 24">
<g fill="none" stroke="none" fill-rule="evenodd">
<path d="M0 0H12V12H0z" transform="translate(-108 -804) translate(108 804)"></path>
<path fill="#434343" d="M6 0L7 0 7 12 6 12zM11 10V9h1v1.5c0 .276-.224.5-.5.5H10v-1h1zM5 1v1H1v8h4v1H.5c-.276 0-.5-.224-.5-.5v-9c0-.276.224-.5.5-.5H5zm7 5v2h-1V6h1zm0-3v2h-1V3h1zM9 1v1H7V1h2zm2.5 0c.276 0 .5.224.5.5V2h-2V1h1.5zM9 11H7v-1h2v1z" transform="translate(-108 -804) translate(108 804)"></path>
</g>
</symbol>
<symbol id="ic-history-icon" viewBox="0 0 24 24">
<g fill="none" stroke="none" fill-rule="evenodd">
<path d="M0 0H12V12H0z" transform="translate(-204 -804) translate(204 804)"></path>
<path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.1" d="M6 9.568L2.601 11 2.975 7.467 0.5 4.82 4.13 4.068 6 1 7.87 4.068 11.5 4.82 9.025 7.467 9.399 11z" transform="translate(-204 -804) translate(204 804)"></path>
</g>
</symbol>
<symbol id="ic-history-mask" viewBox="0 0 24 24">
<g fill="none" stroke="none" fill-rule="evenodd">
<g transform="translate(-252 -804) translate(252 804)">
<path d="M0 0H12V12H0z"></path>
<circle cx="6" cy="6" r="2.5" stroke="#444"></circle>
<path fill="#434343" d="M11.5 0c.276 0 .5.224.5.5v11c0 .276-.224.5-.5.5H.5c-.276 0-.5-.224-.5-.5V.5C0 .224.224 0 .5 0h11zM11 1H1v10h10V1z"></path>
</g>
</g>
</symbol>
<symbol id="ic-history-rotate" viewBox="0 0 24 24">
<defs>
<path id="rfn4rylffa" d="M7 12c-.335 0-.663-.025-.983-.074C3.171 11.492 1 9.205 1 6.444c0-1.363.534-2.613 1.415-3.58"></path>
<mask id="6f9gn2dysb" width="6" height="9.136" x="0" y="0" maskUnits="objectBoundingBox">
<use xlink:href="#rfn4rylffa" stroke="434343"></use>
</mask>
</defs>
<g fill="none" stroke="none" fill-rule="evenodd">
<g transform="translate(-132 -804) translate(132 804)">
<path d="M0 0.5H12V12.5H0z"></path>
<path fill="#434343" d="M6.5 1C9.538 1 12 3.462 12 6.5c0 2.37-1.5 4.39-3.6 5.163l-.407-.916C9.744 10.13 11 8.462 11 6.5 11 4.015 8.985 2 6.5 2c-.777 0-1.509.197-2.147.544L4 1.75l-.205-.04C4.594 1.258 5.517 1 6.5 1z"></path>
<use stroke="#434343" stroke-dasharray="2 1.25" stroke-width="1" mask="url(#6f9gn2dysb)" xlink:href="#rfn4rylffa"></use>
<path fill="#434343" d="M4.279 0L6 1.75 4.25 3.571 3.543 2.864 4.586 1.75 3.572 0.707z" transform="matrix(-1 0 0 1 9.543 0)"></path>
</g>
</g>
</symbol>
<symbol id="ic-history-shape" viewBox="0 0 24 24">
<g fill="none" stroke="none" fill-rule="evenodd">
<path d="M0 0H12V12H0z" transform="translate(-180 -804) translate(180 804)"></path>
<path fill="#434343" d="M11.5 4c.276 0 .5.224.5.5v7c0 .276-.224.5-.5.5h-7c-.276 0-.5-.224-.5-.5V8.8h1V11h6V5H8.341l-.568-1H11.5z" transform="translate(-180 -804) translate(180 804)"></path>
<path stroke="#434343" stroke-linecap="round" stroke-linejoin="round" d="M4.5 0.5L8.5 7.611 0.5 7.611z" transform="translate(-180 -804) translate(180 804)"></path>
</g>
</symbol>
<symbol id="ic-history-text" viewBox="0 0 24 24">
<g fill="none" stroke="none" fill-rule="evenodd">
<path d="M0 0H12V12H0z" transform="translate(-228 -804) translate(228 804)"></path>
<path fill="#434343" d="M2 1h8c.552 0 1 .448 1 1H1c0-.552.448-1 1-1z" transform="translate(-228 -804) translate(228 804)"></path>
<path fill="#434343" d="M1 1H2V3H1zM10 1H11V3H10zM5.5 1L6.5 1 6.5 11 5.5 11z" transform="translate(-228 -804) translate(228 804)"></path>
<path fill="#434343" d="M4 10H8V11H4z" transform="translate(-228 -804) translate(228 804)"></path>
</g>
</symbol>
<symbol id="ic-history-load" viewBox="0 0 24 24">
<g fill="none" stroke="none" fill-rule="evenodd">
<path d="M0 0H12V12H0z" transform="translate(-324 -805) translate(324 805)"></path>
<path fill="#434343" d="M5 0c.552 0 1 .448 1 1v1h5.5c.276 0 .5.224.5.5v8c0 .276-.224.5-.5.5H.5c-.276 0-.5-.224-.5-.5V1c0-.552.448-1 1-1h4zm0 1H1v9h10V3H5V1z" transform="translate(-324 -805) translate(324 805)"></path>
<path fill="#434343" d="M1 2L5 2 5 3 1 3z" transform="translate(-324 -805) translate(324 805)"></path>
</g>
</symbol>
<symbol id="ic-history-delete" viewBox="0 0 24 24">
<g fill="none" stroke="none" fill-rule="evenodd">
<g fill="#434343">
<path d="M2 9h8V1h1v8.5c0 .276-.224.5-.5.5h-9c-.276 0-.5-.224-.5-.5V1h1v8zM0 0H12V1H0z" transform="translate(-300 -804) translate(300 804) translate(0 2)"></path>
<path d="M4 3H5V7H4zM7 3H8V7H7z" transform="translate(-300 -804) translate(300 804) translate(0 2)"></path>
<path d="M4 1h4V0h1v1.5c0 .276-.224.5-.5.5h-5c-.276 0-.5-.224-.5-.5V0h1v1z" transform="translate(-300 -804) translate(300 804) matrix(1 0 0 -1 0 2)"></path>
</g>
</g>
</symbol>
<symbol id="ic-history-group" viewBox="0 0 24 24">
<g fill="none" stroke="none" fill-rule="evenodd">
<g transform="translate(-348 -804) translate(348 804)">
<path d="M0 0H12V12H0z"></path>
<path fill="#434343" d="M1 9v2h1v1H.5c-.276 0-.5-.224-.5-.5V9h1zm11 1v1.5c0 .276-.224.5-.5.5H9v-1h2v-1h1zm-4 1v1H6v-1h2zm-3 0v1H3v-1h2zm7-4v2h-1V7h1zM1 6v2H0V6h1zm11-2v2h-1V4h1zM1 3v2H0V3h1zm10.5-3c.276 0 .5.224.5.5V3h-1V1h-1V0h1.5zM6 0v1H4V0h2zm3 0v1H7V0h2zM0 .5C0 .224.224 0 .5 0H3v1H1v1H0V.5zM9.5 4c.276 0 .5.224.5.5v5c0 .276-.224.5-.5.5h-5c-.276 0-.5-.224-.5-.5V8.355c.317.094.652.145 1 .145V9h4V5h-.5c0-.348-.05-.683-.145-1H9.5z"></path>
<circle cx="5" cy="5" r="2.5" stroke="#434343"></circle>
</g>
</g>
</symbol>
<symbol id="ic-icon-arrow-2" viewBox="0 0 32 32">
<path fill="none" stroke="inherit" stroke-linecap="round" stroke-linejoin="round" d="M21.793 18.5H2.5v-5h18.935l-7.6-8h5.872l10.5 10.5-10.5 10.5h-5.914l8-8z"></path>
</symbol>
<symbol id="ic-icon-arrow-3" viewBox="0 0 32 32">
<path fill="none" stroke="inherit" stroke-linecap="round" stroke-linejoin="round" d="M25.288 16.42L14.208 27.5H6.792l11.291-11.291L6.826 4.5h7.381l11.661 11.661-.58.258z"></path>
</symbol>
<symbol id="ic-icon-arrow" viewBox="0 0 32 32">
<path fill="none" stroke="inherit" d="M2.5 11.5v9h18v5.293L30.293 16 20.5 6.207V11.5h-18z"></path>
</symbol>
<symbol id="ic-icon-bubble" viewBox="0 0 32 32">
<path fill="none" stroke="inherit" stroke-linecap="round" stroke-linejoin="round" d="M22.207 24.5L16.5 30.207V24.5H8A6.5 6.5 0 0 1 1.5 18V9A6.5 6.5 0 0 1 8 2.5h16A6.5 6.5 0 0 1 30.5 9v9a6.5 6.5 0 0 1-6.5 6.5h-1.793z"></path>
</symbol>
<symbol id="ic-icon-heart" viewBox="0 0 32 32">
<path fill-rule="nonzero" fill="none" stroke="inherit" d="M15.996 30.675l1.981-1.79c7.898-7.177 10.365-9.718 12.135-13.012.922-1.716 1.377-3.37 1.377-5.076 0-4.65-3.647-8.297-8.297-8.297-2.33 0-4.86 1.527-6.817 3.824l-.38.447-.381-.447C13.658 4.027 11.126 2.5 8.797 2.5 4.147 2.5.5 6.147.5 10.797c0 1.714.46 3.375 1.389 5.098 1.775 3.288 4.26 5.843 12.123 12.974l1.984 1.806z"></path>
</symbol>
<symbol id="ic-icon-load" viewBox="0 0 32 32">
<path fill="none" stroke="inherit" stroke-linecap="round" stroke-linejoin="round" d="M17.314 18.867l1.951-2.53 4 5.184h-17l6.5-8.84 4.549 6.186z"></path>
<path stroke="none" fill="inherit" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01z"></path>
<path stroke="none" fill="inherit" d="M25 3h1v9h-1z"></path>
<path fill="none" stroke="inherit" d="M22 6l3.5-3.5L29 6"></path>
</symbol>
<symbol id="ic-icon-location" viewBox="0 0 32 32">
<path fill="none" stroke="inherit" d="M16 31.28C23.675 23.302 27.5 17.181 27.5 13c0-6.351-5.149-11.5-11.5-11.5S4.5 6.649 4.5 13c0 4.181 3.825 10.302 11.5 18.28z"></path>
<circle fill="none" stroke="inherit" cx="16" cy="13" r="4.5"></circle>
</symbol>
<symbol id="ic-icon-polygon" viewBox="0 0 32 32">
<path fill="none" stroke="inherit" d="M.576 16L8.29 29.5h15.42L31.424 16 23.71 2.5H8.29L.576 16z"></path>
</symbol>
<symbol id="ic-icon-star-2" viewBox="0 0 32 32">
<path fill="none" stroke="inherit" d="M19.446 31.592l2.265-3.272 3.946.25.636-3.94 3.665-1.505-1.12-3.832 2.655-2.962-2.656-2.962 1.12-3.832-3.664-1.505-.636-3.941-3.946.25-2.265-3.271L16 3.024 12.554 1.07 10.289 4.34l-3.946-.25-.636 3.941-3.665 1.505 1.12 3.832L.508 16.33l2.656 2.962-1.12 3.832 3.664 1.504.636 3.942 3.946-.25 2.265 3.27L16 29.638l3.446 1.955z"></path>
</symbol>
<symbol id="ic-icon-star" viewBox="0 0 32 32">
<path fill="none" stroke="inherit" d="M25.292 29.878l-1.775-10.346 7.517-7.327-10.388-1.51L16 1.282l-4.646 9.413-10.388 1.51 7.517 7.327-1.775 10.346L16 24.993l9.292 4.885z"></path>
</symbol>
<symbol id="ic-icon" viewBox="0 0 24 24">
<path fill="none" stroke="inherit" stroke-linecap="round" stroke-linejoin="round" d="M11.923 19.136L5.424 22l.715-7.065-4.731-5.296 6.94-1.503L11.923 2l3.574 6.136 6.94 1.503-4.731 5.296L18.42 22z"></path>
</symbol>
<symbol id="ic-mask-load" viewBox="0 0 32 32">
<path stroke="none" fill="none" d="M0 0h32v32H0z"></path>
<path stroke="none" fill="inherit" d="M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01zM15 23a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-1a5 5 0 1 0 0-10 5 5 0 0 0 0 10z"></path>
<path stroke="none" fill="inherit" d="M25 3h1v9h-1z"></path>
<path fill="none" stroke="inherit" d="M22 6l3.5-3.5L29 6"></path>
</symbol>
<symbol id="ic-mask" viewBox="0 0 24 24">
<circle cx="12" cy="12" r="4.5" stroke="inherit" fill="none"></circle>
<path stroke="none" fill="inherit" d="M2 1h20a1 1 0 0 1 1 1v20a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zm0 1v20h20V2H2z"></path>
</symbol>
<symbol id="ic-redo" viewBox="0 0 24 24">
<path d="M0 0h24v24H0z" opacity=".5" fill="none" stroke="none"></path>
<path stroke="none" fill="inherit" d="M21 6H9a6 6 0 1 0 0 12h12v1H9A7 7 0 0 1 9 5h12v1z"></path>
<path fill="none" stroke="inherit" stroke-linecap="square" d="M19 3l2.5 2.5L19 8"></path>
</symbol>
<symbol id="ic-reset" viewBox="0 0 24 24">
<path d="M0 0h24v24H0z" opacity=".5" stroke="none" fill="none"></path>
<path stroke="none" fill="inherit" d="M2 13v-1a7 7 0 0 1 7-7h13v1h-1v5h1v1a7 7 0 0 1-7 7H2v-1h1v-5H2zm7-7a6 6 0 0 0-6 6v6h12a6 6 0 0 0 6-6V6H9z"></path>
<path fill="none" stroke="inherit" stroke-linecap="square" d="M19 3l2.5 2.5L19 8M5 16l-2.5 2.5L5 21"></path>
</symbol>
<symbol id="ic-rotate-clockwise" viewBox="0 0 32 32">
<path stroke="none" fill="inherit" d="M29 17h-.924c0 6.627-5.373 12-12 12-6.628 0-12-5.373-12-12C4.076 10.398 9.407 5.041 16 5V4C8.82 4 3 9.82 3 17s5.82 13 13 13 13-5.82 13-13z"></path>
<path fill="none" stroke="inherit" stroke-linecap="square" d="M16 1.5l4 3-4 3"></path>
<path stroke="none" fill="inherit" fill-rule="nonzero" d="M16 4h4v1h-4z"></path>
</symbol>
<symbol id="ic-rotate-counterclockwise" viewBox="0 0 32 32">
<path stroke="none" d="M3 17h.924c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.602-5.331-11.96-11.924-12V4c7.18 0 13 5.82 13 13s-5.82 13-13 13S3 24.18 3 17z"></path>
<path stroke="none" fill="inherit" fill-rule="nonzero" d="M12 4h4v1h-4z"></path>
<path fill="none" stroke="inherit" stroke-linecap="square" d="M16 1.5l-4 3 4 3"></path>
</symbol>
<symbol id="ic-rotate" viewBox="0 0 24 24">
<path d="M0 0h24v24H0z" fill="none" stroke="none"></path>
<path fill="inherit" stroke="none" d="M8.349 22.254a10.002 10.002 0 0 1-2.778-1.719l.65-.76a9.002 9.002 0 0 0 2.495 1.548l-.367.931zm2.873.704l.078-.997a9 9 0 1 0-.557-17.852l-.14-.99A10.076 10.076 0 0 1 12.145 3c5.523 0 10 4.477 10 10s-4.477 10-10 10c-.312 0-.62-.014-.924-.042zm-7.556-4.655a9.942 9.942 0 0 1-1.253-2.996l.973-.234a8.948 8.948 0 0 0 1.124 2.693l-.844.537zm-1.502-5.91A9.949 9.949 0 0 1 2.88 9.23l.925.382a8.954 8.954 0 0 0-.644 2.844l-.998-.062zm2.21-5.686c.687-.848 1.51-1.58 2.436-2.166l.523.852a9.048 9.048 0 0 0-2.188 1.95l-.771-.636z"></path>
<path stroke="inherit" fill="none" stroke-linecap="square" d="M13 1l-2.5 2.5L13 6"></path>
</symbol>
<symbol id="ic-shape-circle" viewBox="0 0 32 32">
<circle cx="16" cy="16" r="14.5" fill="none" stroke="inherit"></circle>
</symbol>
<symbol id="ic-shape-rectangle" viewBox="0 0 32 32">
<rect width="27" height="27" x="2.5" y="2.5" fill="none" stroke="inherit" rx="1"></rect>
</symbol>
<symbol id="ic-shape-triangle" viewBox="0 0 32 32">
<path fill="none" stroke-linecap="round" stroke-linejoin="round" d="M16 2.5l15.5 27H.5z"></path>
</symbol>
<symbol id="ic-shape" viewBox="0 0 24 24">
<path stroke="none" fill="inherit" d="M14.706 8H21a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-4h1v4h12V9h-5.706l-.588-1z"></path>
<path fill="none" stroke="inherit" stroke-linecap="round" stroke-linejoin="round" d="M8.5 1.5l7.5 13H1z"></path>
</symbol>
<symbol id="ic-text-align-center" viewBox="0 0 32 32">
<path stroke="none" fill="none" d="M0 0h32v32H0z"></path>
<path stroke="none" fill="inherit" d="M2 5h28v1H2zM8 12h16v1H8zM2 19h28v1H2zM8 26h16v1H8z"></path>
</symbol>
<symbol id="ic-text-align-left" viewBox="0 0 32 32">
<path stroke="none" fill="none" d="M0 0h32v32H0z"></path>
<path stroke="none" fill="inherit" d="M2 5h28v1H2zM2 12h16v1H2zM2 19h28v1H2zM2 26h16v1H2z"></path>
</symbol>
<symbol id="ic-text-align-right" viewBox="0 0 32 32">
<path stroke="none" fill="none" d="M0 0h32v32H0z"></path>
<path stroke="none" fill="inherit" d="M2 5h28v1H2zM14 12h16v1H14zM2 19h28v1H2zM14 26h16v1H14z"></path>
</symbol>
<symbol id="ic-text-bold" viewBox="0 0 32 32">
<path fill="none" stroke="none" d="M0 0h32v32H0z"></path>
<path stroke="none" fill="inherit" d="M7 2h2v2H7zM7 28h2v2H7z"></path>
<path fill="none" stroke="inherit" stroke-width="2" d="M9 3v12h9a6 6 0 1 0 0-12H9zM9 15v14h10a7 7 0 0 0 0-14H9z"></path>
</symbol>
<symbol id="ic-text-italic" viewBox="0 0 32 32">
<path fill="none" stroke="none" d="M0 0h32v32H0z"></path>
<path stroke="none" fill="inherit" d="M15 2h5v1h-5zM11 29h5v1h-5zM17 3h1l-4 26h-1z"></path>
</symbol>
<symbol id="ic-text-underline" viewBox="0 0 32 32">
<path stroke="none" fill="none" d="M0 0h32v32H0z"></path>
<path stroke="none" fill="inherit" d="M8 2v14a8 8 0 1 0 16 0V2h1v14a9 9 0 0 1-18 0V2h1zM3 29h26v1H3z"></path>
<path stroke="none" fill="inherit" d="M5 2h5v1H5zM22 2h5v1h-5z"></path>
</symbol>
<symbol id="ic-text" viewBox="0 0 24 24">
<path stroke="none" fill="inherit" d="M4 3h15a1 1 0 0 1 1 1H3a1 1 0 0 1 1-1zM3 4h1v1H3zM19 4h1v1h-1z"></path>
<path stroke="none" fill="inherit" d="M11 3h1v18h-1z"></path>
<path stroke="none" fill="inherit" d="M10 20h3v1h-3z"></path>
</symbol>
<symbol id="ic-undo" viewBox="0 0 24 24">
<path d="M24 0H0v24h24z" opacity=".5" fill="none" stroke="none"></path>
<path stroke="none" fill="inherit" d="M3 6h12a6 6 0 1 1 0 12H3v1h12a7 7 0 0 0 0-14H3v1z"></path>
<path fill="none" stroke="inherit" stroke-linecap="square" d="M5 3L2.5 5.5 5 8"></path>
</symbol>
<symbol id="ic-zoom-in" viewBox="0 0 24 24">
<g transform="translate(-229 -290) translate(229 290)">
<circle cx="10.5" cy="10.5" r="9" stroke="inherit" fill="none"></circle>
<path fill="inherit" d="M18.828 15.828H19.828V22.828H18.828z" transform="rotate(-45 19.328 19.328)"></path>
<path fill="inherit" d="M7 10H14V11H7z"></path>
<path fill="inherit" d="M10 7H11V14H10z"></path>
</g>
</symbol>
<symbol id="ic-zoom-out" viewBox="0 0 24 24">
<g transform="translate(-263 -290) translate(263 290)">
<circle cx="10.5" cy="10.5" r="9" stroke="inherit" fill="none"></circle>
<path fill="inherit" d="M18.828 15.828H19.828V22.828H18.828z" transform="rotate(-45 19.328 19.328)"></path>
<path fill="inherit" d="M7 10H14V11H7z"></path>
</g>
</symbol>
<symbol id="ic-hand" viewBox="0 0 24 24">
<g fill="none" fill-rule="evenodd" stroke-linejoin="round">
<path fill="inherit" fill-rule="nonzero" d="M8.672 3.36c1.328 0 2.114.78 2.29 1.869l.014.101.023.006v1.042l-.638-.185c-.187-.055-.323-.211-.354-.399L10 5.713c0-.825-.42-1.353-1.328-1.353C7.695 4.36 7 5.041 7 5.713v7.941c0 .439-.524.665-.843.364l-1.868-1.761c-.595-.528-1.316-.617-1.918-.216-.522.348-.562 1.203-.18 1.8L7.738 22h11.013l.285-.518c1.247-2.326 1.897-4.259 1.96-5.785l.004-.239V8.035c0-.656-.5-1.17-1-1.17-.503 0-1 .456-1 1.17 0 .333-.32.573-.64.48L18 8.41V7.368l.086.026.042-.136c.279-.805.978-1.332 1.738-1.388L20 5.865c1.057 0 2 .967 2 2.17v7.423c0 1.929-.845 4.352-2.521 7.29-.09.156-.255.252-.435.252H7.474c-.166 0-.321-.082-.414-.219l-5.704-8.39c-.653-1.019-.584-2.486.46-3.182 1-.666 2.216-.516 3.148.31L6 12.495V5.713c0-1.18 1.058-2.263 2.49-2.348z" transform="translate(-297 -290) translate(297 290)"></path>
<path fill="inherit" fill-rule="nonzero" d="M12.5 1.5c1.325 0 2.41 1.032 2.495 2.336L15 4v7.22h-1V4c0-.828-.672-1.5-1.5-1.5-.78 0-1.42.595-1.493 1.356L11 4v7.22h-1V4c0-1.38 1.12-2.5 2.5-2.5z" transform="translate(-297 -290) translate(297 290)"></path>
<path fill="inherit" fill-rule="nonzero" d="M16.5 3.5c1.325 0 2.41 1.032 2.495 2.336L19 6v6.3h-1V6c0-.828-.672-1.5-1.5-1.5-.78 0-1.42.595-1.493 1.356L15 6v2.44h-1V6c0-1.38 1.12-2.5 2.5-2.5z" transform="translate(-297 -290) translate(297 290)"></path>
</g>
</symbol>
</defs>
</svg>`;
return;
let i = ["a", "b", "c", "d"];
for (let icon of i) {
let s = await fetch(
`https://unpkg.com/tui-image-editor@3.15.3/dist/svg/icon-${icon}.svg`
).then((r) => r.text());
s = s.replaceAll(/id="icon-[a-z]-/g, `id="`);
document.head.appendChild(
new DOMParser().parseFromString(s, "text/html").querySelector("svg")
);
}
}
})();
Beautify the code in the active editor on svelte.dev/repl. Also logs code before formatting to console in case anything goes wrong.
(async () => {
await fetch(
"https://cdnjs.cloudflare.com/ajax/libs/prettier/2.7.1/standalone.js"
)
.then((r) => r.text())
.then(eval);
await fetch(
"https://cdnjs.cloudflare.com/ajax/libs/prettier/2.7.1/parser-babel.min.js"
)
.then((r) => r.text())
.then(eval);
const { default: plugin } = await import(
"https://cdn.skypack.dev/prettier-plugin-svelte@2.7.0/plugin.js"
);
let el = document.querySelector(".CodeMirror").CodeMirror;
console.log("BACKUP CODE:");
console.log(el.getValue());
el.setValue(
prettier.format(`${el.getValue()}`, {
plugins: { ...prettierPlugins, svelte: plugin },
parser: "svelte",
})
);
})();
Make all console.logs, console.warnings, console.errors, etc show up as toasts on the page as well as logging to the actual console.
let toasts = [];
let hub = () => ({
hub: Object.create(null),
emit(event, data) {
(this.hub[event] || []).forEach((handler) => handler(data));
},
on(event, handler) {
if (!this.hub[event]) this.hub[event] = [];
this.hub[event].push(handler);
},
off(event, handler) {
const i = (this.hub[event] || []).findIndex((h) => h === handler);
if (i > -1) this.hub[event].splice(i, 1);
if (this.hub[event].length === 0) delete this.hub[event];
},
});
const events = hub();
function toast(method, ...data) {
const SCALE = 40;
const id = Math.random().toString(36).slice(2);
toasts = [id, ...toasts];
const colors = {
log: "232, 245, 255",
warn: "255, 228, 158",
error: "255, 92, 92",
debug: "177, 218, 250",
info: "177, 218, 250",
};
let el = document.createElement("div");
el.setAttribute(
"style",
`
border-radius: .3rem;
padding: .5rem 1rem;
width: fit-content;
max-width: min(400px, 30vw);
min-width: 150px;
color: rgb(${darken(colors[method], 130)});
background: rgba(${darken(colors[method], -100)});
border: 2px solid rgba(${darken(colors[method], 20)});
position: fixed;
bottom: -100px;
right: 0px;
margin: 10px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
transition: bottom .4s ease-out, right .4s ease-in;
font-family: monospace;
`
);
el.innerHTML = stringify(data);
document.body.appendChild(el);
events.emit("update");
events.on("update", update);
function update() {
el.style.bottom = `${getIndex() * SCALE}px`;
}
setTimeout(update);
setTimeout(() => (el.style.right = "-400px"), 2000);
setTimeout(() => {
el.remove();
events.off("update", update);
toasts = toasts.filter((i) => i !== id);
events.emit("update", id);
}, 2500);
function getIndex() {
return toasts.indexOf(id);
}
function stringify(log) {
log = log.map((i) => ({ data: i, use: true }));
let styleopen = false;
log = log.map((item, idx) => {
let i = str(item.data);
let index = idx;
i = i.replace(/(?:%(?<letter>c|o))/g, (_, a) => {
index++;
if (a === "o") {
log[index].use = false;
return str(log[index].data);
}
if (a === "c") {
if (!log[index]) {
log[index] = { data: "" };
}
log[index].use = false;
let out = `${styleopen && "</span>"}<span style=${JSON.stringify(
log[index].data?.trim()
)}>`;
styleopen = true;
return out;
}
return "test";
});
log[idx].data = i;
return log[idx];
});
function str(data) {
let str = data;
if (Array.isArray(str) || type(str) === "Object") {
str = JSON.stringify(str);
}
str = str
.toString()
.replaceAll("&", "&")
.replaceAll("<", "<")
.replaceAll(">", ">")
.replaceAll('"', """)
.replaceAll("'", "'");
return str;
}
function type(thing) {
return Object.prototype.toString
.call(thing)
.split(" ")[1]
.replace(/]$/, "");
}
let mapped = log
.filter((i) => i.use || i.before || i.after)
.map((i) => `${i.before || ""}${i.data}${i.after || ""}`);
//The .replace fixes a bug that I can't debug lol
return `${method}: ${mapped.join(", ").replace(/^false<span/, "<span")}${
styleopen ? "</span>" : ""
}`;
}
function type(thing) {
return Object.prototype.toString
.call(thing)
.split(" ")[1]
.replace(/]$/, "")
.toLowerCase();
}
function darken(color, amt) {
return color
.split(",")
.map((i) => i.trim())
.map((i) => +i - amt)
.join(", ");
}
}
const methods = ["log", "warn", "error", "debug", "info"];
for (let method of methods) {
let orig = console[method];
console[method] = (...a) => (toast(method, ...a), orig(...a));
}
Make text sarcastic without breaking your shift key
prompt("hErE yOu gO", prompt("What to make sarcastic").split("").map((i, idx) => idx % 2 === 1 ? i.toUpperCase() : i).join(""))
Send a bunch of dudes with pitchforks across the screen
javascript: {
(async () => {
for (let i = 0; i < 35; i++) {
pitchforkdude();
await new Promise((r) => setTimeout(r, Math.random() * 20 + 20));
}
})();
function pitchforkdude() {
if (!document.getElementById("forkstyle")) {
let el = document.createElement("style");
el.innerText = `#pitchfork{animation:whee var(--speed) linear}@keyframes whee{0%{right:-100px}100%{right:calc(100vw + 100px)}}`;
el.id = "forkstyle";
(document.head || document.body || document.documentElement).appendChild(
el
);
}
let img = new Image();
img.src = pitchfork();
document.body.appendChild(img);
img.id = "pitchfork";
img.setAttribute(
"style",
`
position: fixed;
bottom: ${Math.random() * 5}px;
`
);
let speed = 5;
img.style.setProperty("--speed", `${speed}s`);
let jumping = true;
let currentlyJumping = false;
setTimeout(() => {
jumping = false;
img.remove();
}, speed * 1000);
const jump = () => {
if (currentlyJumping) {
return;
}
currentlyJumping = true;
let height = Math.random() * 30 + 10;
let time = height * 5;
img.style.transition = `bottom ${time}ms ease-out`;
img.style.bottom = `${height}px`;
setTimeout(() => {
img.style.transition = `bottom ${time}ms ease-in`;
img.style.bottom = Math.random() * 5 + "px";
setTimeout(() => (currentlyJumping = false), time);
}, time);
};
setTimeout(jump, 2000 + Math.random() * 300);
}
function pitchfork() {
const forks = [
"jlpfp",
"tjpfp",
"dlpfp",
"tlpft",
"lwpft",
"dlpfp",
"ibpft",
"dlpfp",
"lwpft",
"rrpfp",
"nipft",
"cspfp",
"nipfp",
"nkpft",
"tjpft",
"nipft",
"tlpfp",
"tlpft",
"nipft",
"ibpft",
"ibpfp",
"cspfp",
];
return `https://ssl.gstatic.com/chat/babble/ee/pf/${
forks[Math.floor(Math.random() * forks.length)]
}.gif`;
}
}
Copy a paragraph of bacon ipsum
javascript:fetch("https://baconipsum.com/api/?type=meat-and-filler¶s=1&format=text").then(r => r.text()).then((t) => navigator.clipboard.writeText(t))
Add a pony to the current page. Click multiple times to add multiple ponies.
javascript: {
addPony();
function addPony() {
if (!document.getElementById("ponystyle")) {
let el = document.createElement("style");
el.innerText = `#pony.reverse{transform:scaleX(-1);animation:ponyreverse var(--speed) linear}#pony:not(.reverse){animation:pony var(--speed) linear}@keyframes pony{0%{right:-100px}100%{right:calc(100vw + 100px)}}@keyframes ponyreverse{0%{right:calc(100vw + 100px)}100%{right:-100px}}`;
el.id = "ponystyle";
(document.head || document.body || document.documentElement).appendChild(
el
);
}
let img = new Image();
img.src = pony();
document.body.appendChild(img);
img.id = "pony";
img.setAttribute(
"style",
`
position: fixed;
bottom: 0;
`
);
if (Math.random() < 0.5) {
img.classList.add("reverse");
}
let speed = Math.random() * 5 + 10;
img.style.setProperty("--speed", `${speed}s`);
let jumping = true;
let currentlyJumping = false;
setTimeout(() => {
jumping = false;
img.remove();
}, speed * 1000);
const jump = () => {
if (currentlyJumping) {
return;
}
currentlyJumping = true;
let height = Math.random() * 100 + 100;
let time = height * 3;
img.style.transition = `bottom ${time}ms ease-out`;
img.style.bottom = `${height}px`;
setTimeout(() => {
img.style.transition = `bottom ${time}ms ease-in`;
img.style.bottom = "0px";
setTimeout(() => (currentlyJumping = false), time);
}, time);
};
(async () => {
while (jumping) {
await new Promise((r) => setTimeout(r, Math.random() * 5000));
jump();
}
})();
}
function pony() {
const ponies = [
"dl",
"lw",
"tj",
"dg",
"rs",
"ni",
"bm",
"af",
"cc",
"ib",
"km",
"jl",
"mk",
"mt",
"rr",
"cs",
"tl",
"kr",
"mu",
"zf",
"nk",
];
return `https://ssl.gstatic.com/chat/babble/ee/${
ponies[Math.floor(Math.random() * ponies.length)]
}.gif`;
}
}
Encode a string to base 64, I use this a lot right now for "Basic b64(username:password)" type auth
prompt("Encoded: ", btoa(prompt("What to encode?", "")))
Search GIPHY for a certain gif then get the markdown for the first search result
javascript: {
getGif(prompt("What do you want to search?"));
async function getGif(searchTerm) {
let {
data: [
{
images: {
original: { url },
},
},
],
} = await fetch(
`https://api.giphy.com/v1/gifs/search?api_key=AsBX5vN8qBYmZPGvyyT5TOER8gC0VR8F&q=${encodeURIComponent(
searchTerm
)}`
).then((r) => r.json());
prompt("GIF: ", `![Cool gif](${url})`);
}
}
Search all the bookmarklets here and run them, for example you could search for "𝘏𝘦𝘢𝘥𝘦𝘳𝘴" or "𝘢𝘯𝘴𝘸𝘦𝘳". There is a prompt before running the code that shows the code and name.
fetch(
"https://gist.githubusercontent.com/Explosion-Scratch/c853c40e4c4c0b7ad74f7d8644c238ba/raw"
)
.then((r) => r.text())
.then((text) => {
return text
.split("#" + "##")
.slice(1)
.map((body) => {
let out = {};
out.title = body.split("\n")[0];
out.description = body
.split("\n")
?.slice(1)
?.join("\n")
// Prevent the automated parsing of MD from going wrong
?.split("`" + "``")?.[0];
out.code = body.split("``" + "`")[1]?.split("``" + "`")[0];
out.code = out.code.replace("js\n", "");
out.color = ~~(Math.random() * 360);
out = Object.fromEntries(
Object.entries(out).map(([k, v]) => [k, v.trim?.() || v])
);
return out;
});
})
.then((bookmarklets) => {
let search = prompt(
"What bookmarklet are you looking for? (search)",
bookmarklets[Math.floor(Math.random() * bookmarklets.length)].title
);
if (!search) {
return alert("No search");
}
search = search.toLowerCase().trim();
let result = bookmarklets.find(
(i) =>
i.title?.toLowerCase().trim().includes(search)
) || bookmarklets.find(i => i.description?.toLowerCase().trim().includes(search));
if (!result) {
return alert("No search results");
}
let confirm = prompt(
`Run "${result.title}" (${result.description})`,
result.code
);
if (!confirm) {
return alert("Cancelled");
}
eval(result.code);
});
Makes the beggining half of every word on the page bold. This idea comes from the Jiffy Reader extension (https://chrome.google.com/webstore/detail/jiffy-reader/lljedihjnnjjefafchaljkhbpfhfkdic/)
function highlightText(sentenceText) {
return sentenceText
.split(" ")
.map((word) => {
// special case - hyphenated compound word, e.g. video-game
if (word.includes("-")) {
return word
.split("-")
.map((component) => highlightText(component))
.join("-");
}
const hasNumber = /\d/;
if (hasNumber.test(word)) {
return word;
}
const { length } = word;
let midPoint = 1;
if (length > 3) midPoint = Math.round(length / 2);
const firstHalf = word.slice(0, midPoint);
const secondHalf = word.slice(midPoint);
const htmlWord = `<br-bold>${firstHalf}</br-bold>${secondHalf}`;
return htmlWord;
})
.join(" ");
}
function main() {
// check if we have already highlighted the text
const boldedElements = document.getElementsByTagName("br-bold");
// only add br bold to body element
document.body.classList.toggle("br-bold");
if (boldedElements.length) {
// end if no br-bold elements found on the page
return;
}
// setting global styles
const style = document.createElement("style");
style.textContent =
".br-bold br-bold { font-weight: bold !important; display: inline; line-height: var(--br-line-height,initial); }";
document.head.appendChild(style);
const tags = ["p", "font", "span", "li"];
const parser = new DOMParser();
tags.forEach((tag) => {
for (const element of document.getElementsByTagName(tag)) {
const n = parser.parseFromString(element.innerHTML, "text/html");
const textArrTransformed = Array.from(n.body.childNodes).map((node) => {
if (node.nodeType === Node.TEXT_NODE) {
return highlightText(node.nodeValue);
}
return node.outerHTML;
});
element.innerHTML = textArrTransformed.join(" ");
}
});
}
main();
Enable video.js + hotkeys plugin on all videos on the page, this may break webpages with preexisting video players, and also mess up layout. It also loads several external scripts =|
fetch("https://vjs.zencdn.net/7.19.2/video-js.min.css")
.then((r) => r.text())
.then(
(a) =>
(document.head.appendChild(document.createElement("style")).innerHTML = a)
);
fetch("https://vjs.zencdn.net/7.19.2/video.min.js")
.then((r) => r.text())
.then(eval)
.then(async (a) => {
await fetch("https://cdn.sc.gl/videojs-hotkeys/0.2/videojs.hotkeys.min.js")
.then((r) => r.text())
.then(eval);
Object.values(videojs.players).forEach((p) =>
p.ready(function () {
this.hotkeys({
volumeStep: 0.1,
seekStep: 5,
enableModifiersForNumbers: false,
});
})
);
});
[...document.querySelectorAll("video")].forEach(
(i) => (i.classList.add("video-js"), i.setAttribute("data-setup", "{}"))
);
Play piano in your browser! Credit to @Krazete on GitHub for this (https://github.com/Krazete/bookmarklets/blob/9944bda76495ad24b5008263dfd55e592c4d738e/piano.js)
!function(){var e={css:document.createElement("style"),ui:document.createElement("div"),menuleft:document.createElement("div"),wave:document.createElement("select"),pitch:document.createElement("input"),tilt:document.createElement("input"),keyboard:document.createElement("div"),menuright:document.createElement("div"),audio:new AudioContext,keymap:[{key:"`",caps_key:"~",dom:document.createElement("div"),hz:0,pressed:0},{key:"Tab",caps_key:"Tab",dom:document.createElement("div"),hz:0,pressed:0},{key:"1",caps_key:"!",dom:document.createElement("div"),hz:0,pressed:0},{key:"q",caps_key:"Q",dom:document.createElement("div"),hz:0,pressed:0},{key:"2",caps_key:"@",dom:document.createElement("div"),hz:0,pressed:0},{key:"w",caps_key:"W",dom:document.createElement("div"),hz:0,pressed:0},{key:"3",caps_key:"#",dom:document.createElement("div"),hz:0,pressed:0},{key:"e",caps_key:"E",dom:document.createElement("div"),hz:0,pressed:0},{key:"r",caps_key:"R",dom:document.createElement("div"),hz:0,pressed:0},{key:"5",caps_key:"%",dom:document.createElement("div"),hz:0,pressed:0},{key:"t",caps_key:"T",dom:document.createElement("div"),hz:0,pressed:0},{key:"6",caps_key:"^",dom:document.createElement("div"),hz:0,pressed:0},{key:"y",caps_key:"Y",dom:document.createElement("div"),hz:0,pressed:0},{key:"u",caps_key:"U",dom:document.createElement("div"),hz:0,pressed:0},{key:"8",caps_key:"*",dom:document.createElement("div"),hz:0,pressed:0},{key:"i",caps_key:"I",dom:document.createElement("div"),hz:0,pressed:0},{key:"9",caps_key:"(",dom:document.createElement("div"),hz:0,pressed:0},{key:"o",caps_key:"O",dom:document.createElement("div"),hz:0,pressed:0},{key:"0",caps_key:")",dom:document.createElement("div"),hz:0,pressed:0},{key:"p",caps_key:"P",dom:document.createElement("div"),hz:0,pressed:0},{key:"[",caps_key:"{",dom:document.createElement("div"),hz:0,pressed:0},{key:"=",caps_key:"+",dom:document.createElement("div"),hz:0,pressed:0},{key:"]",caps_key:"}",dom:document.createElement("div"),hz:0,pressed:0},{key:"Backspace",caps_key:"Backspace",dom:document.createElement("div"),hz:0,pressed:0},{key:"\\",caps_key:"|",dom:document.createElement("div"),hz:0,pressed:0},{key:"ShiftLeft",caps_key:"ShiftLeft",dom:document.createElement("div"),hz:0,pressed:0},{key:"a",caps_key:"A",dom:document.createElement("div"),hz:0,pressed:0},{key:"z",caps_key:"Z",dom:document.createElement("div"),hz:0,pressed:0},{key:"s",caps_key:"S",dom:document.createElement("div"),hz:0,pressed:0},{key:"x",caps_key:"X",dom:document.createElement("div"),hz:0,pressed:0},{key:"d",caps_key:"D",dom:document.createElement("div"),hz:0,pressed:0},{key:"c",caps_key:"C",dom:document.createElement("div"),hz:0,pressed:0},{key:"v",caps_key:"V",dom:document.createElement("div"),hz:0,pressed:0},{key:"g",caps_key:"G",dom:document.createElement("div"),hz:0,pressed:0},{key:"b",caps_key:"B",dom:document.createElement("div"),hz:0,pressed:0},{key:"h",caps_key:"H",dom:document.createElement("div"),hz:0,pressed:0},{key:"n",caps_key:"N",dom:document.createElement("div"),hz:0,pressed:0},{key:"m",caps_key:"M",dom:document.createElement("div"),hz:0,pressed:0},{key:"k",caps_key:"K",dom:document.createElement("div"),hz:0,pressed:0},{key:",",caps_key:"<",dom:document.createElement("div"),hz:0,pressed:0},{key:"l",caps_key:"L",dom:document.createElement("div"),hz:0,pressed:0},{key:".",caps_key:">",dom:document.createElement("div"),hz:0,pressed:0},{key:";",caps_key:":",dom:document.createElement("div"),hz:0,pressed:0},{key:"/",caps_key:"?",dom:document.createElement("div"),hz:0,pressed:0},{key:"ShiftRight",caps_key:"ShiftRight",dom:document.createElement("div"),hz:0,pressed:0},{key:"Enter",caps_key:"Enter",dom:document.createElement("div"),hz:0,pressed:0}],disc:[[],[{keyi:53,wave:"triangle",time:0,timeout:null},{keyi:55,wave:"triangle",time:.1973696145124677,timeout:null},{keyi:62,wave:"triangle",time:.4063492063492049,timeout:null},{keyi:55,wave:"triangle",time:.6153287981859421,timeout:null},{keyi:62,wave:"triangle",time:.8533333333333246,timeout:null},{keyi:62,wave:"triangle",time:2.02594104308389,timeout:null},{keyi:60,wave:"triangle",time:2.5135600907029527,timeout:null},{keyi:55,wave:"triangle",time:3.4017233560090574,timeout:null},{keyi:62,wave:"triangle",time:3.60489795918366,timeout:null},{keyi:55,wave:"triangle",time:3.8254875283446665,timeout:null},{keyi:62,wave:"triangle",time:4.028662131519269,timeout:null},{keyi:60,wave:"triangle",time:4.260861678004517,timeout:null},{keyi:58,wave:"triangle",time:4.696235827664395,timeout:null},{keyi:58,wave:"triangle",time:4.905215419501133,timeout:null},{keyi:57,wave:"triangle",time:5.1200000000000045,timeout:null},{keyi:58,wave:"triangle",time:5.340589569160983,timeout:null},{keyi:58,wave:"triangle",time:5.572789115646259,timeout:null},{keyi:51,wave:"triangle",time:6.669931972789101,timeout:null},{keyi:53,wave:"triangle",time:6.873106575963703,timeout:null},{keyi:54,wave:"triangle",time:7.1053061224489795,timeout:null},{keyi:56,wave:"triangle",time:7.3200907029478515,timeout:null},{keyi:58,wave:"triangle",time:7.52907029478456,timeout:null},{keyi:60,wave:"triangle",time:7.73514739229023,timeout:null},{keyi:61,wave:"triangle",time:7.935419501133794,timeout:null},{keyi:63,wave:"triangle",time:8.161814058956907,timeout:null},{keyi:65,wave:"triangle",time:8.399818594104289,timeout:null},{keyi:65,wave:"triangle",time:11.157188208616788,timeout:null},{keyi:65,wave:"triangle",time:11.412607709750574,timeout:null},{keyi:62,wave:"triangle",time:11.839274376417222,timeout:null},{keyi:62,wave:"triangle",time:12.103401360544211,timeout:null},{keyi:58,wave:"triangle",time:12.550385487528331,timeout:null},{keyi:58,wave:"triangle",time:12.817414965986387,timeout:null},{keyi:55,wave:"triangle",time:13.223764172335592,timeout:null},{keyi:58,wave:"triangle",time:13.479183673469379,timeout:null},{keyi:55,wave:"triangle",time:13.862312925170073,timeout:null},{keyi:58,wave:"triangle",time:14.071292517006782,timeout:null},{keyi:60,wave:"triangle",time:14.303492063492058,timeout:null},{keyi:58,wave:"triangle",time:14.5298866213152,timeout:null},{keyi:60,wave:"triangle",time:14.727256235827667,timeout:null},{keyi:62,wave:"triangle",time:14.988480725623589,timeout:null},{keyi:58,wave:"triangle",time:15.23809523809524,timeout:null},{keyi:58,wave:"triangle",time:15.493514739229028,timeout:null},{keyi:53,wave:"triangle",time:15.981133786848062,timeout:null},{keyi:58,wave:"triangle",time:17.055056689342393,timeout:null},{keyi:56,wave:"triangle",time:17.293061224489776,timeout:null},{keyi:58,wave:"triangle",time:17.502040816326513,timeout:null},{keyi:61,wave:"triangle",time:17.7574603174603,timeout:null},{keyi:60,wave:"triangle",time:18.245079365079363,timeout:null},{keyi:58,wave:"triangle",time:18.721088435374156,timeout:null},{keyi:60,wave:"triangle",time:18.918458049886624,timeout:null},{keyi:56,wave:"triangle",time:19.191292517006787,timeout:null},{keyi:68,wave:"triangle",time:21.809342403628108,timeout:null},{keyi:67,wave:"triangle",time:22.064761904761895,timeout:null},{keyi:61,wave:"triangle",time:24.009433106575955,timeout:null},{keyi:60,wave:"triangle",time:24.247437641723337,timeout:null},{keyi:58,wave:"triangle",time:24.479637188208613,timeout:null},{keyi:60,wave:"triangle",time:24.67700680272108,timeout:null},{keyi:58,wave:"triangle",time:24.944036281179137,timeout:null},{keyi:56,wave:"triangle",time:25.45487528344671,timeout:null},{keyi:55,wave:"triangle",time:25.92507936507937,timeout:null},{keyi:56,wave:"triangle",time:26.151473922902483,timeout:null},{keyi:60,wave:"triangle",time:26.412698412698404,timeout:null},{keyi:58,wave:"triangle",time:26.929342403628112,timeout:null},{keyi:53,wave:"triangle",time:28.64761904761903,timeout:null},{keyi:55,wave:"triangle",time:28.879818594104307,timeout:null},{keyi:56,wave:"triangle",time:29.112018140589555,timeout:null},{keyi:55,wave:"triangle",time:29.384852607709746,timeout:null},{keyi:60,wave:"triangle",time:30.27301587301588,timeout:null},{keyi:53,wave:"triangle",time:31.103129251700665,timeout:null},{keyi:55,wave:"triangle",time:34.41777777777776,timeout:null},{keyi:62,wave:"triangle",time:34.649977324263034,timeout:null},{keyi:65,wave:"triangle",time:34.980861678004516,timeout:null},{keyi:62,wave:"triangle",time:35.25369614512471,timeout:null},{keyi:58,wave:"triangle",time:35.497505668934224,timeout:null},{keyi:55,wave:"triangle",time:35.735510204081635,timeout:null},{keyi:58,wave:"triangle",time:35.996734693877556,timeout:null},{keyi:53,wave:"triangle",time:37.0938775510204,timeout:null},{keyi:55,wave:"triangle",time:37.54086167800452,timeout:null},{keyi:62,wave:"triangle",time:37.80208616780044,timeout:null},{keyi:60,wave:"triangle",time:38.04589569160996,timeout:null},{keyi:58,wave:"triangle",time:38.2897052154195,timeout:null},{keyi:60,wave:"triangle",time:38.54512471655329,timeout:null},{keyi:62,wave:"triangle",time:39.07918367346937,timeout:null},{keyi:58,wave:"triangle",time:39.648072562358266,timeout:null},{keyi:65,wave:"triangle",time:40.245986394557804,timeout:null},{keyi:54,wave:"triangle",time:41.63337868480724,timeout:null},{keyi:65,wave:"triangle",time:41.89460317460316,timeout:null},{keyi:54,wave:"triangle",time:42.16743764172335,timeout:null},{keyi:65,wave:"triangle",time:42.393832199546466,timeout:null},{keyi:63,wave:"triangle",time:42.66086167800452,timeout:null},{keyi:61,wave:"triangle",time:42.90467120181404,timeout:null},{keyi:63,wave:"triangle",time:43.14267573696145,timeout:null},{keyi:65,wave:"triangle",time:43.40970521541951,timeout:null},{keyi:60,wave:"triangle",time:43.665124716553294,timeout:null},{keyi:61,wave:"triangle",time:43.937959183673456,timeout:null},{keyi:56,wave:"triangle",time:44.22240362811792,timeout:null},{keyi:53,wave:"triangle",time:44.756462585034,timeout:null},{keyi:56,wave:"triangle",time:45.046712018140596,timeout:null},{keyi:58,wave:"triangle",time:46.71274376417233,timeout:null},{keyi:60,wave:"triangle",time:46.96816326530612,timeout:null},{keyi:61,wave:"triangle",time:47.22938775510204,timeout:null},{keyi:60,wave:"triangle",time:47.76925170068026,timeout:null},{keyi:61,wave:"triangle",time:48.0130612244898,timeout:null},{keyi:60,wave:"triangle",time:48.32653061224488,timeout:null},{keyi:55,wave:"triangle",time:49.27854875283447,timeout:null},{keyi:56,wave:"triangle",time:49.51655328798185,timeout:null},{keyi:58,wave:"triangle",time:49.77777777777777,timeout:null},{keyi:58,wave:"triangle",time:50.02158730158729,timeout:null},{keyi:56,wave:"triangle",time:50.265396825396806,timeout:null},{keyi:55,wave:"triangle",time:50.54403628117913,timeout:null},{keyi:56,wave:"triangle",time:50.793650793650784,timeout:null},{keyi:58,wave:"triangle",time:51.06068027210884,timeout:null},{keyi:60,wave:"triangle",time:51.36834467120181,timeout:null},{keyi:65,wave:"triangle",time:51.7166439909297,timeout:null},{keyi:67,wave:"triangle",time:52.34938775510204,timeout:null},{keyi:68,wave:"triangle",time:52.999546485260765,timeout:null},{keyi:68,wave:"triangle",time:53.5974603174603,timeout:null},{keyi:65,wave:"triangle",time:55.333151927437626,timeout:null},{keyi:65,wave:"triangle",time:55.64662131519273,timeout:null},{keyi:68,wave:"triangle",time:57.301043083900225,timeout:null},{keyi:67,wave:"triangle",time:57.620317460317466,timeout:null}],[{keyi:52,wave:"sine",time:0,timeout:null},{keyi:67,wave:"sine",time:.01160997732421265,timeout:null},{keyi:55,wave:"sine",time:.4353741496598218,timeout:null},{keyi:66,wave:"sine",time:.6501587301586937,timeout:null},{keyi:60,wave:"sine",time:.9055782312925089,timeout:null},{keyi:67,wave:"sine",time:.9113832199546437,timeout:null},{keyi:53,wave:"sine",time:1.3873922902494087,timeout:null},{keyi:65,wave:"sine",time:1.3873922902494087,timeout:null},{keyi:56,wave:"sine",time:1.8111564625850178,timeout:null},{keyi:60,wave:"sine",time:2.226213151927425,timeout:null},{keyi:68,wave:"sine",time:2.2407256235827617,timeout:null},{keyi:48,wave:"sine",time:2.7399546485260657,timeout:null},{keyi:67,wave:"sine",time:2.7399546485260657,timeout:null},{keyi:55,wave:"sine",time:3.2043537414965613,timeout:null},{keyi:60,wave:"sine",time:3.633922902494305,timeout:null},{keyi:64,wave:"sine",time:4.115736961451205,timeout:null},{keyi:55,wave:"sine",time:4.585941043083892,timeout:null},{keyi:64,wave:"sine",time:5.044535147392253,timeout:null},{keyi:52,wave:"sine",time:5.491519274376401,timeout:null},{keyi:67,wave:"sine",time:5.491519274376401,timeout:null},{keyi:55,wave:"sine",time:5.98494331065757,timeout:null},{keyi:64,wave:"sine",time:6.420317460317449,timeout:null},{keyi:68,wave:"sine",time:6.896326530612214,timeout:null},{keyi:47,wave:"sine",time:6.896326530612214,timeout:null},{keyi:53,wave:"sine",time:7.343310657596362,timeout:null},{keyi:67,wave:"sine",time:7.604535147392255,timeout:null},{keyi:56,wave:"sine",time:7.819319727891127,timeout:null},{keyi:65,wave:"sine",time:7.836734693877531,timeout:null},{keyi:67,wave:"sine",time:8.3301587301587,timeout:null},{keyi:48,wave:"sine",time:8.335963718820835,timeout:null},{keyi:52,wave:"sine",time:8.794557823129253,timeout:null},{keyi:55,wave:"sine",time:9.264761904761883,timeout:null},{keyi:58,wave:"sine",time:9.746575963718783,timeout:null}],[{keyi:27,wave:"sawtooth",time:0,timeout:null},{keyi:27,wave:"sawtooth",time:.31927437641723344,timeout:null},{keyi:29,wave:"sawtooth",time:.49342403628117637,timeout:null},{keyi:27,wave:"sawtooth",time:.9810430839002251,timeout:null},{keyi:32,wave:"sawtooth",time:1.4744671201814086,timeout:null},{keyi:31,wave:"sawtooth",time:1.9736961451247126,timeout:null},{keyi:27,wave:"sawtooth",time:2.9663492063492,timeout:null},{keyi:27,wave:"sawtooth",time:3.297233560090696,timeout:null},{keyi:29,wave:"sawtooth",time:3.430748299319724,timeout:null},{keyi:27,wave:"sawtooth",time:3.895147392290248,timeout:null},{keyi:34,wave:"sawtooth",time:4.400181405895687,timeout:null},{keyi:32,wave:"sawtooth",time:4.870385487528345,timeout:null},{keyi:27,wave:"sawtooth",time:5.886258503401358,timeout:null},{keyi:27,wave:"sawtooth",time:6.1997278911564635,timeout:null},{keyi:39,wave:"sawtooth",time:6.368072562358272,timeout:null},{keyi:36,wave:"sawtooth",time:6.861496598639455,timeout:null},{keyi:32,wave:"sawtooth",time:7.337505668934234,timeout:null},{keyi:31,wave:"sawtooth",time:7.865759637188212,timeout:null},{keyi:29,wave:"sawtooth",time:8.405623582766431,timeout:null},{keyi:37,wave:"sawtooth",time:9.589841269841266,timeout:null},{keyi:37,wave:"sawtooth",time:9.891700680272102,timeout:null},{keyi:36,wave:"sawtooth",time:10.11809523809523,timeout:null},{keyi:32,wave:"sawtooth",time:10.628934240362803,timeout:null},{keyi:34,wave:"sawtooth",time:11.206530612244897,timeout:null},{keyi:32,wave:"sawtooth",time:11.789931972789113,timeout:null}],[{keyi:27,wave:"triangle",time:0,timeout:null},{keyi:30,wave:"triangle",time:1.021333333333331,timeout:null},{keyi:25,wave:"triangle",time:2.4799999999999898,timeout:null},{keyi:32,wave:"triangle",time:3.6213333333333253,timeout:null},{keyi:27,wave:"triangle",time:4.661333333333346,timeout:null},{keyi:27,wave:"triangle",time:5.669333333333327,timeout:null},{keyi:30,wave:"triangle",time:6.629333333333335,timeout:null},{keyi:25,wave:"triangle",time:7.501333333333321,timeout:null},{keyi:32,wave:"triangle",time:8.22933333333333,timeout:null},{keyi:51,wave:"triangle",time:11.360000000000014,timeout:null},{keyi:58,wave:"triangle",time:11.981333333333339,timeout:null},{keyi:51,wave:"triangle",time:13.400000000000006,timeout:null},{keyi:51,wave:"triangle",time:14.781333333333322,timeout:null},{keyi:58,wave:"triangle",time:15.181333333333328,timeout:null},{keyi:51,wave:"triangle",time:15.52000000000001,timeout:null},{keyi:58,wave:"triangle",time:15.869333333333344,timeout:null},{keyi:59,wave:"triangle",time:16.189333333333337,timeout:null},{keyi:58,wave:"triangle",time:16.549333333333323,timeout:null},{keyi:51,wave:"triangle",time:16.840000000000003,timeout:null},{keyi:58,wave:"triangle",time:17.149333333333345,timeout:null},{keyi:51,wave:"triangle",time:17.46933333333334,timeout:null},{keyi:58,wave:"triangle",time:17.810666666666663,timeout:null},{keyi:51,wave:"triangle",time:18.141333333333336,timeout:null},{keyi:58,wave:"triangle",time:18.429333333333346,timeout:null},{keyi:59,wave:"triangle",time:18.781333333333322,timeout:null},{keyi:58,wave:"triangle",time:19.090666666666664,timeout:null},{keyi:51,wave:"triangle",time:19.410666666666657,timeout:null},{keyi:58,wave:"triangle",time:19.74133333333333,timeout:null},{keyi:51,wave:"triangle",time:20.101333333333343,timeout:null},{keyi:27,wave:"triangle",time:20.109333333333325,timeout:null},{keyi:58,wave:"triangle",time:20.439999999999998,timeout:null},{keyi:51,wave:"triangle",time:20.75999999999999,timeout:null},{keyi:58,wave:"triangle",time:21.069333333333333,timeout:null},{keyi:59,wave:"triangle",time:21.400000000000006,timeout:null},{keyi:58,wave:"triangle",time:21.661333333333346,timeout:null},{keyi:51,wave:"triangle",time:21.98133333333334,timeout:null},{keyi:58,wave:"triangle",time:22.26933333333332,timeout:null},{keyi:51,wave:"triangle",time:22.581333333333333,timeout:null},{keyi:30,wave:"triangle",time:22.610666666666674,timeout:null},{keyi:58,wave:"triangle",time:22.919999999999987,timeout:null},{keyi:51,wave:"triangle",time:23.330666666666644,timeout:null},{keyi:58,wave:"triangle",time:23.650666666666694,timeout:null},{keyi:59,wave:"triangle",time:23.98933333333335,timeout:null},{keyi:58,wave:"triangle",time:24.309333333333342,timeout:null},{keyi:51,wave:"triangle",time:24.610666666666674,timeout:null},{keyi:58,wave:"triangle",time:24.930666666666667,timeout:null},{keyi:51,wave:"triangle",time:25.25066666666666,timeout:null},{keyi:25,wave:"triangle",time:25.28,timeout:null},{keyi:58,wave:"triangle",time:25.610666666666674,timeout:null},{keyi:51,wave:"triangle",time:25.930666666666667,timeout:null},{keyi:58,wave:"triangle",time:26.26133333333334,timeout:null},{keyi:59,wave:"triangle",time:26.621333333333354,timeout:null},{keyi:58,wave:"triangle",time:26.960000000000008,timeout:null},{keyi:51,wave:"triangle",time:27.28,timeout:null},{keyi:58,wave:"triangle",time:27.54933333333335,timeout:null},{keyi:51,wave:"triangle",time:27.880000000000024,timeout:null},{keyi:32,wave:"triangle",time:27.890666666666647,timeout:null},{keyi:58,wave:"triangle",time:28.159999999999997,timeout:null},{keyi:51,wave:"triangle",time:28.50933333333333,timeout:null},{keyi:58,wave:"triangle",time:28.869333333333344,timeout:null},{keyi:59,wave:"triangle",time:29.22133333333332,timeout:null},{keyi:58,wave:"triangle",time:29.53066666666669,timeout:null},{keyi:51,wave:"triangle",time:29.840000000000003,timeout:null},{keyi:58,wave:"triangle",time:30.181333333333356,timeout:null},{keyi:27,wave:"triangle",time:30.50933333333333,timeout:null},{keyi:51,wave:"triangle",time:30.52000000000001,timeout:null},{keyi:27,wave:"triangle",time:30.78933333333336,timeout:null},{keyi:58,wave:"triangle",time:30.829333333333324,timeout:null},{keyi:27,wave:"triangle",time:31.141333333333336,timeout:null},{keyi:51,wave:"triangle",time:31.189333333333337,timeout:null},{keyi:27,wave:"triangle",time:31.46933333333331,timeout:null},{keyi:58,wave:"triangle",time:31.50933333333333,timeout:null},{keyi:27,wave:"triangle",time:31.821333333333342,timeout:null},{keyi:59,wave:"triangle",time:31.840000000000003,timeout:null},{keyi:27,wave:"triangle",time:32.14933333333332,timeout:null},{keyi:58,wave:"triangle",time:32.20000000000002,timeout:null},{keyi:51,wave:"triangle",time:32.50933333333333,timeout:null},{keyi:27,wave:"triangle",time:32.52000000000001,timeout:null},{keyi:58,wave:"triangle",time:32.82133333333334,timeout:null},{keyi:27,wave:"triangle",time:32.861333333333306,timeout:null},{keyi:51,wave:"triangle",time:33.170666666666676,timeout:null},{keyi:30,wave:"triangle",time:33.181333333333356,timeout:null},{keyi:58,wave:"triangle",time:33.47733333333335,timeout:null},{keyi:30,wave:"triangle",time:33.50133333333335,timeout:null},{keyi:51,wave:"triangle",time:33.82133333333334,timeout:null},{keyi:30,wave:"triangle",time:33.84,timeout:null},{keyi:58,wave:"triangle",time:34.10933333333335,timeout:null},{keyi:30,wave:"triangle",time:34.16,timeout:null},{keyi:59,wave:"triangle",time:34.42666666666665,timeout:null},{keyi:30,wave:"triangle",time:34.50133333333335,timeout:null},{keyi:58,wave:"triangle",time:34.73066666666668,timeout:null},{keyi:30,wave:"triangle",time:34.81066666666666,timeout:null},{keyi:51,wave:"triangle",time:35.08000000000001,timeout:null},{keyi:30,wave:"triangle",time:35.135999999999996,timeout:null},{keyi:58,wave:"triangle",time:35.400000000000006,timeout:null},{keyi:30,wave:"triangle",time:35.45066666666665,timeout:null},{keyi:51,wave:"triangle",time:35.74133333333336,timeout:null},{keyi:25,wave:"triangle",time:35.78133333333332,timeout:null},{keyi:58,wave:"triangle",time:36.05066666666667,timeout:null},{keyi:25,wave:"triangle",time:36.09066666666669,timeout:null},{keyi:51,wave:"triangle",time:36.42133333333331,timeout:null},{keyi:25,wave:"triangle",time:36.440000000000026,timeout:null},{keyi:58,wave:"triangle",time:36.72,timeout:null},{keyi:25,wave:"triangle",time:36.78133333333332,timeout:null},{keyi:59,wave:"triangle",time:37.101333333333315,timeout:null},{keyi:25,wave:"triangle",time:37.119999999999976,timeout:null},{keyi:58,wave:"triangle",time:37.46133333333333,timeout:null},{keyi:25,wave:"triangle",time:37.47200000000001,timeout:null},{keyi:51,wave:"triangle",time:37.79999999999998,timeout:null},{keyi:25,wave:"triangle",time:37.84,timeout:null},{keyi:58,wave:"triangle",time:38.141333333333336,timeout:null},{keyi:25,wave:"triangle",time:38.20000000000002,timeout:null},{keyi:51,wave:"triangle",time:38.429333333333346,timeout:null},{keyi:32,wave:"triangle",time:38.54933333333335,timeout:null},{keyi:58,wave:"triangle",time:38.76000000000002,timeout:null},{keyi:32,wave:"triangle",time:38.861333333333306,timeout:null},{keyi:51,wave:"triangle",time:39.06933333333333,timeout:null},{keyi:32,wave:"triangle",time:39.14933333333332,timeout:null},{keyi:58,wave:"triangle",time:39.400000000000006,timeout:null},{keyi:32,wave:"triangle",time:39.49066666666667,timeout:null},{keyi:59,wave:"triangle",time:39.67999999999998,timeout:null},{keyi:32,wave:"triangle",time:39.81066666666666,timeout:null},{keyi:58,wave:"triangle",time:39.96000000000001,timeout:null},{keyi:32,wave:"triangle",time:40.119999999999976,timeout:null},{keyi:51,wave:"triangle",time:40.30933333333334,timeout:null},{keyi:32,wave:"triangle",time:40.381333333333345,timeout:null},{keyi:58,wave:"triangle",time:40.69066666666666,timeout:null},{keyi:32,wave:"triangle",time:40.70933333333332,timeout:null},{keyi:51,wave:"triangle",time:41.141333333333336,timeout:null}],[{keyi:48,wave:"triangle",time:0,timeout:null},{keyi:48,wave:"triangle",time:.7546485260770979,timeout:null},{keyi:48,wave:"triangle",time:1.5092970521541957,timeout:null},{keyi:44,wave:"triangle",time:2.2871655328798184,timeout:null},{keyi:51,wave:"triangle",time:2.9721541950113384,timeout:null},{keyi:48,wave:"triangle",time:3.262403628117916,timeout:null},{keyi:44,wave:"triangle",time:4.028662131519276,timeout:null},{keyi:51,wave:"triangle",time:4.643990929705215,timeout:null},{keyi:48,wave:"triangle",time:4.934240362811789,timeout:null},{keyi:55,wave:"triangle",time:6.443537414965984,timeout:null},{keyi:55,wave:"triangle",time:7.209795918367345,timeout:null},{keyi:55,wave:"triangle",time:7.941224489795918,timeout:null},{keyi:56,wave:"triangle",time:8.661043083900228,timeout:null},{keyi:51,wave:"triangle",time:9.206712018140589,timeout:null},{keyi:47,wave:"triangle",time:9.508571428571425,timeout:null},{keyi:44,wave:"triangle",time:10.30965986394558,timeout:null},{keyi:51,wave:"triangle",time:10.948208616780047,timeout:null},{keyi:48,wave:"triangle",time:11.226848072562358,timeout:null}],[{keyi:39,wave:"triangle",time:0,timeout:null},{keyi:37,wave:"triangle",time:0,timeout:null},{keyi:39,wave:"triangle",time:.39200000000005275,timeout:null},{keyi:37,wave:"triangle",time:.39200000000005275,timeout:null},{keyi:39,wave:"triangle",time:.7706666666666706,timeout:null},{keyi:37,wave:"triangle",time:.7706666666666706,timeout:null},{keyi:37,wave:"triangle",time:1.1520000000000437,timeout:null},{keyi:39,wave:"triangle",time:1.1706666666667047,timeout:null},{keyi:39,wave:"triangle",time:1.570666666666682,timeout:null},{keyi:37,wave:"triangle",time:1.570666666666682,timeout:null},{keyi:39,wave:"triangle",time:1.970666666666716,timeout:null},{keyi:37,wave:"triangle",time:1.9733333333333576,timeout:null},{keyi:36,wave:"triangle",time:2.3520000000000323,timeout:null},{keyi:39,wave:"triangle",time:2.3706666666666933,timeout:null},{keyi:39,wave:"triangle",time:2.810666666666691,timeout:null},{keyi:36,wave:"triangle",time:2.810666666666691,timeout:null},{keyi:39,wave:"triangle",time:3.2106666666666683,timeout:null},{keyi:36,wave:"triangle",time:3.2106666666666683,timeout:null},{keyi:39,wave:"triangle",time:3.6106666666667024,timeout:null},{keyi:36,wave:"triangle",time:3.6106666666667024,timeout:null},{keyi:39,wave:"triangle",time:4.0400000000000205,timeout:null},{keyi:36,wave:"triangle",time:4.0400000000000205,timeout:null},{keyi:39,wave:"triangle",time:4.432000000000016,timeout:null},{keyi:36,wave:"triangle",time:4.432000000000016,timeout:null},{keyi:43,wave:"triangle",time:4.840000000000032,timeout:null},{keyi:34,wave:"triangle",time:4.840000000000032,timeout:null},{keyi:43,wave:"triangle",time:5.2613333333333685,timeout:null},{keyi:34,wave:"triangle",time:5.2613333333333685,timeout:null},{keyi:34,wave:"triangle",time:5.621333333333382,timeout:null},{keyi:43,wave:"triangle",time:5.661333333333346,timeout:null},{keyi:34,wave:"triangle",time:6.0400000000000205,timeout:null},{keyi:43,wave:"triangle",time:6.06133333333338,timeout:null},{keyi:43,wave:"triangle",time:6.450666666666677,timeout:null},{keyi:34,wave:"triangle",time:6.450666666666677,timeout:null},{keyi:34,wave:"triangle",time:6.810666666666691,timeout:null},{keyi:43,wave:"triangle",time:6.8320000000000505,timeout:null},{keyi:44,wave:"triangle",time:7.28000000000003,timeout:null},{keyi:32,wave:"triangle",time:7.28000000000003,timeout:null},{keyi:44,wave:"triangle",time:8.06133333333338,timeout:null},{keyi:32,wave:"triangle",time:8.06133333333338,timeout:null},{keyi:44,wave:"triangle",time:8.472000000000037,timeout:null},{keyi:32,wave:"triangle",time:8.472000000000037,timeout:null},{keyi:43,wave:"triangle",time:8.877333333333354,timeout:null},{keyi:34,wave:"triangle",time:8.880000000000052,timeout:null},{keyi:36,wave:"triangle",time:9.261333333333369,timeout:null},{keyi:41,wave:"triangle",time:9.28000000000003,timeout:null},{keyi:39,wave:"triangle",time:9.690666666666687,timeout:null},{keyi:37,wave:"triangle",time:9.690666666666687,timeout:null},{keyi:39,wave:"triangle",time:10.120000000000005,timeout:null},{keyi:37,wave:"triangle",time:10.120000000000005,timeout:null},{keyi:39,wave:"triangle",time:10.520000000000039,timeout:null},{keyi:37,wave:"triangle",time:10.520000000000039,timeout:null},{keyi:39,wave:"triangle",time:10.941333333333375,timeout:null},{keyi:37,wave:"triangle",time:10.941333333333375,timeout:null},{keyi:37,wave:"triangle",time:11.330666666666673,timeout:null},{keyi:39,wave:"triangle",time:11.352000000000032,timeout:null},{keyi:39,wave:"triangle",time:11.77066666666667,timeout:null},{keyi:37,wave:"triangle",time:11.77066666666667,timeout:null},{keyi:36,wave:"triangle",time:12.160000000000025,timeout:null},{keyi:39,wave:"triangle",time:12.181333333333384,timeout:null},{keyi:39,wave:"triangle",time:12.592000000000041,timeout:null},{keyi:36,wave:"triangle",time:12.592000000000041,timeout:null},{keyi:39,wave:"triangle",time:13.02133333333336,timeout:null},{keyi:36,wave:"triangle",time:13.02133333333336,timeout:null},{keyi:39,wave:"triangle",time:13.439999999999998,timeout:null},{keyi:36,wave:"triangle",time:13.439999999999998,timeout:null},{keyi:36,wave:"triangle",time:13.850666666666712,timeout:null},{keyi:39,wave:"triangle",time:13.861333333333334,timeout:null},{keyi:39,wave:"triangle",time:14.240000000000009,timeout:null},{keyi:36,wave:"triangle",time:14.240000000000009,timeout:null},{keyi:43,wave:"triangle",time:14.680000000000007,timeout:null},{keyi:34,wave:"triangle",time:14.682666666666705,timeout:null},{keyi:43,wave:"triangle",time:15.090666666666664,timeout:null},{keyi:34,wave:"triangle",time:15.093333333333362,timeout:null},{keyi:43,wave:"triangle",time:15.512,timeout:null},{keyi:34,wave:"triangle",time:15.512,timeout:null},{keyi:34,wave:"triangle",time:15.901333333333355,timeout:null},{keyi:43,wave:"triangle",time:15.912000000000035,timeout:null},{keyi:43,wave:"triangle",time:16.352000000000032,timeout:null},{keyi:34,wave:"triangle",time:16.352000000000032,timeout:null},{keyi:43,wave:"triangle",time:16.760000000000048,timeout:null},{keyi:34,wave:"triangle",time:16.760000000000048,timeout:null},{keyi:44,wave:"triangle",time:17.170666666666705,timeout:null},{keyi:32,wave:"triangle",time:17.170666666666705,timeout:null},{keyi:39,wave:"triangle",time:17.951999999999998,timeout:null},{keyi:37,wave:"triangle",time:17.951999999999998,timeout:null},{keyi:44,wave:"triangle",time:18.432000000000016,timeout:null},{keyi:32,wave:"triangle",time:18.432000000000016,timeout:null}],[{keyi:43,wave:"triangle",time:0,timeout:null},{keyi:43,wave:"triangle",time:.1999999999999993,timeout:null},{keyi:43,wave:"triangle",time:.879999999999999,timeout:null},{keyi:43,wave:"triangle",time:1.5386666666666642,timeout:null},{keyi:44,wave:"triangle",time:1.7680000000000007,timeout:null},{keyi:44,wave:"triangle",time:2.2586666666666666,timeout:null},{keyi:39,wave:"triangle",time:2.84,timeout:null},{keyi:41,wave:"triangle",time:3.3599999999999994,timeout:null},{keyi:41,wave:"triangle",time:4.069333333333333,timeout:null},{keyi:41,wave:"triangle",time:4.407999999999998,timeout:null},{keyi:43,wave:"triangle",time:4.959999999999997,timeout:null},{keyi:43,wave:"triangle",time:5.32,timeout:null},{keyi:43,wave:"triangle",time:6.007999999999999,timeout:null},{keyi:43,wave:"triangle",time:6.279999999999998,timeout:null},{keyi:43,wave:"triangle",time:7.338666666666665,timeout:null},{keyi:43,wave:"triangle",time:7.648,timeout:null},{keyi:43,wave:"triangle",time:8.058666666666667,timeout:null},{keyi:43,wave:"triangle",time:8.559999999999999,timeout:null},{keyi:41,wave:"triangle",time:9,timeout:null},{keyi:41,wave:"triangle",time:9.36,timeout:null},{keyi:39,wave:"triangle",time:9.719999999999999,timeout:null},{keyi:41,wave:"triangle",time:10.168,timeout:null},{keyi:41,wave:"triangle",time:10.527999999999999,timeout:null},{keyi:36,wave:"triangle",time:13.218666666666664,timeout:null},{keyi:41,wave:"triangle",time:13.648,timeout:null},{keyi:41,wave:"triangle",time:14.280000000000001,timeout:null},{keyi:41,wave:"triangle",time:14.629333333333335,timeout:null},{keyi:43,wave:"triangle",time:15.207999999999998,timeout:null},{keyi:43,wave:"triangle",time:15.469333333333331,timeout:null},{keyi:43,wave:"triangle",time:15.839999999999996,timeout:null},{keyi:44,wave:"triangle",time:16.029333333333334,timeout:null},{keyi:44,wave:"triangle",time:16.378666666666668,timeout:null},{keyi:46,wave:"triangle",time:16.858666666666664,timeout:null},{keyi:46,wave:"triangle",time:17.14933333333333,timeout:null},{keyi:46,wave:"triangle",time:17.759999999999998,timeout:null},{keyi:46,wave:"triangle",time:18.349333333333334,timeout:null},{keyi:46,wave:"triangle",time:18.567999999999998,timeout:null},{keyi:46,wave:"triangle",time:18.799999999999997,timeout:null},{keyi:48,wave:"triangle",time:19.08,timeout:null},{keyi:48,wave:"triangle",time:19.65866666666667,timeout:null},{keyi:48,wave:"triangle",time:19.967999999999996,timeout:null},{keyi:48,wave:"triangle",time:20.498666666666665,timeout:null},{keyi:48,wave:"triangle",time:20.858666666666664,timeout:null},{keyi:48,wave:"triangle",time:21.138666666666666,timeout:null},{keyi:48,wave:"triangle",time:21.408,timeout:null},{keyi:48,wave:"triangle",time:21.78933333333333,timeout:null},{keyi:48,wave:"triangle",time:22.119999999999997,timeout:null},{keyi:44,wave:"triangle",time:22.560000000000002,timeout:null},{keyi:43,wave:"triangle",time:23.538666666666664,timeout:null},{keyi:43,wave:"triangle",time:23.82933333333333,timeout:null},{keyi:41,wave:"triangle",time:24.528,timeout:null},{keyi:36,wave:"triangle",time:26.218666666666664,timeout:null},{keyi:37,wave:"triangle",time:26.54933333333333,timeout:null},{keyi:41,wave:"triangle",time:27.28,timeout:null},{keyi:41,wave:"triangle",time:28.069333333333333,timeout:null},{keyi:41,wave:"triangle",time:29.578666666666663,timeout:null},{keyi:37,wave:"triangle",time:30.309333333333335,timeout:null},{keyi:36,wave:"triangle",time:30.629333333333335,timeout:null},{keyi:36,wave:"triangle",time:31.439999999999998,timeout:null},{keyi:36,wave:"triangle",time:33.04,timeout:null},{keyi:41,wave:"triangle",time:33.57866666666666,timeout:null},{keyi:43,wave:"triangle",time:33.86933333333333,timeout:null},{keyi:43,wave:"triangle",time:34.6,timeout:null},{keyi:43,wave:"triangle",time:36.33866666666667,timeout:null},{keyi:41,wave:"triangle",time:37.007999999999996,timeout:null},{keyi:36,wave:"triangle",time:37.32,timeout:null},{keyi:41,wave:"triangle",time:38.33866666666667,timeout:null},{keyi:36,wave:"triangle",time:38.669333333333334,timeout:null},{keyi:34,wave:"triangle",time:39.007999999999996,timeout:null},{keyi:32,wave:"triangle",time:40.10933333333333,timeout:null},{keyi:32,wave:"triangle",time:40.93866666666666,timeout:null},{keyi:36,wave:"triangle",time:43.688,timeout:null},{keyi:41,wave:"triangle",time:44.138666666666666,timeout:null},{keyi:41,wave:"triangle",time:44.888,timeout:null},{keyi:41,wave:"triangle",time:45.14933333333333,timeout:null},{keyi:41,wave:"triangle",time:45.629333333333335,timeout:null},{keyi:43,wave:"triangle",time:45.808,timeout:null},{keyi:43,wave:"triangle",time:46.31999999999999,timeout:null},{keyi:43,wave:"triangle",time:46.58933333333333,timeout:null},{keyi:37,wave:"triangle",time:47.208,timeout:null},{keyi:37,wave:"triangle",time:47.528000000000006,timeout:null},{keyi:39,wave:"triangle",time:48.128,timeout:null},{keyi:39,wave:"triangle",time:48.498666666666665,timeout:null},{keyi:41,wave:"triangle",time:49.007999999999996,timeout:null},{keyi:41,wave:"triangle",time:49.37866666666666,timeout:null},{keyi:41,wave:"triangle",time:49.89866666666667,timeout:null},{keyi:41,wave:"triangle",time:50.239999999999995,timeout:null},{keyi:41,wave:"triangle",time:50.848,timeout:null},{keyi:41,wave:"triangle",time:51.16,timeout:null},{keyi:41,wave:"triangle",time:51.760000000000005,timeout:null},{keyi:41,wave:"triangle",time:52.048,timeout:null},{keyi:41,wave:"triangle",time:52.58933333333333,timeout:null},{keyi:39,wave:"triangle",time:52.848,timeout:null},{keyi:39,wave:"triangle",time:53.37866666666666,timeout:null},{keyi:37,wave:"triangle",time:53.72,timeout:null},{keyi:39,wave:"triangle",time:54.25866666666667,timeout:null},{keyi:39,wave:"triangle",time:54.46933333333334,timeout:null},{keyi:36,wave:"triangle",time:57.09866666666666,timeout:null},{keyi:36,wave:"triangle",time:57.33866666666667,timeout:null},{keyi:37,wave:"triangle",time:57.608000000000004,timeout:null},{keyi:37,wave:"triangle",time:58.208,timeout:null},{keyi:37,wave:"triangle",time:58.50933333333333,timeout:null},{keyi:37,wave:"triangle",time:59.087999999999994,timeout:null},{keyi:39,wave:"triangle",time:59.29866666666666,timeout:null},{keyi:39,wave:"triangle",time:59.61866666666667,timeout:null},{keyi:39,wave:"triangle",time:60.01866666666666,timeout:null},{keyi:41,wave:"triangle",time:60.120000000000005,timeout:null},{keyi:37,wave:"triangle",time:60.688,timeout:null},{keyi:41,wave:"triangle",time:61.10933333333334,timeout:null},{keyi:41,wave:"triangle",time:61.72,timeout:null},{keyi:41,wave:"triangle",time:62.05866666666667,timeout:null},{keyi:41,wave:"triangle",time:62.727999999999994,timeout:null},{keyi:43,wave:"triangle",time:63.03999999999999,timeout:null},{keyi:43,wave:"triangle",time:63.367999999999995,timeout:null},{keyi:43,wave:"triangle",time:63.778666666666666,timeout:null},{keyi:43,wave:"triangle",time:64.14933333333333,timeout:null},{keyi:43,wave:"triangle",time:64.928,timeout:null},{keyi:43,wave:"triangle",time:65.30933333333333,timeout:null},{keyi:43,wave:"triangle",time:65.94933333333333,timeout:null},{keyi:44,wave:"triangle",time:66.208,timeout:null},{keyi:44,wave:"triangle",time:66.81866666666667,timeout:null},{keyi:44,wave:"triangle",time:67.16,timeout:null},{keyi:43,wave:"triangle",time:67.54933333333334,timeout:null},{keyi:43,wave:"triangle",time:68.2,timeout:null},{keyi:39,wave:"triangle",time:68.44,timeout:null},{keyi:39,wave:"triangle",time:69.22933333333333,timeout:null},{keyi:32,wave:"triangle",time:69.98933333333333,timeout:null},{keyi:37,wave:"triangle",time:70.96,timeout:null},{keyi:39,wave:"triangle",time:71.30933333333333,timeout:null},{keyi:39,wave:"triangle",time:72.18933333333334,timeout:null},{keyi:39,wave:"triangle",time:73.888,timeout:null},{keyi:37,wave:"triangle",time:74.45866666666666,timeout:null},{keyi:36,wave:"triangle",time:74.62933333333334,timeout:null},{keyi:36,wave:"triangle",time:75.54933333333334,timeout:null},{keyi:36,wave:"triangle",time:77.14933333333333,timeout:null},{keyi:41,wave:"triangle",time:77.72,timeout:null},{keyi:43,wave:"triangle",time:78.09866666666666,timeout:null},{keyi:43,wave:"triangle",time:79.008,timeout:null},{keyi:43,wave:"triangle",time:80.58933333333333,timeout:null},{keyi:39,wave:"triangle",time:81.18933333333334,timeout:null},{keyi:37,wave:"triangle",time:81.42933333333333,timeout:null},{keyi:39,wave:"triangle",time:82.49866666666667,timeout:null},{keyi:37,wave:"triangle",time:82.78933333333333,timeout:null},{keyi:36,wave:"triangle",time:83.08,timeout:null},{keyi:34,wave:"triangle",time:84.328,timeout:null},{keyi:34,wave:"triangle",time:85.13866666666667,timeout:null}],[{keyi:56,wave:"triangle",time:0,timeout:null},{keyi:60,wave:"triangle",time:.21066666666672518,timeout:null},{keyi:63,wave:"triangle",time:.42933333333337487,timeout:null},{keyi:56,wave:"triangle",time:.6186666666667406,timeout:null},{keyi:60,wave:"triangle",time:.8506666666667115,timeout:null},{keyi:63,wave:"triangle",time:1.0293333333333976,timeout:null},{keyi:56,wave:"triangle",time:1.240000000000009,timeout:null},{keyi:60,wave:"triangle",time:1.4293333333333749,timeout:null},{keyi:56,wave:"triangle",time:1.650666666666666,timeout:null},{keyi:60,wave:"triangle",time:1.8586666666667497,timeout:null},{keyi:63,wave:"triangle",time:2.080000000000041,timeout:null},{keyi:68,wave:"triangle",time:2.2693333333334067,timeout:null},{keyi:63,wave:"triangle",time:2.458666666666659,timeout:null},{keyi:60,wave:"triangle",time:2.6586666666667043,timeout:null},{keyi:56,wave:"triangle",time:2.8693333333334294,timeout:null},{keyi:60,wave:"triangle",time:3.0400000000000773,timeout:null},{keyi:53,wave:"triangle",time:3.3093333333333703,timeout:null},{keyi:56,wave:"triangle",time:3.509333333333416,timeout:null},{keyi:60,wave:"triangle",time:3.6906666666667434,timeout:null},{keyi:56,wave:"triangle",time:3.8986666666667134,timeout:null},{keyi:53,wave:"triangle",time:4.082666666666682,timeout:null},{keyi:56,wave:"triangle",time:4.290666666666766,timeout:null},{keyi:53,wave:"triangle",time:4.490666666666698,timeout:null},{keyi:68,wave:"triangle",time:4.698666666666668,timeout:null},{keyi:56,wave:"triangle",time:4.978666666666754,timeout:null},{keyi:53,wave:"triangle",time:5.229333333333329,timeout:null},{keyi:56,wave:"triangle",time:5.4693333333333385,timeout:null},{keyi:53,wave:"triangle",time:5.680000000000064,timeout:null},{keyi:60,wave:"triangle",time:5.909333333333393,timeout:null},{keyi:56,wave:"triangle",time:6.130666666666684,timeout:null},{keyi:53,wave:"triangle",time:6.349333333333334,timeout:null},{keyi:56,wave:"triangle",time:6.509333333333416,timeout:null},{keyi:51,wave:"triangle",time:6.738666666666745,timeout:null},{keyi:55,wave:"triangle",time:6.949333333333357,timeout:null},{keyi:58,wave:"triangle",time:7.1200000000000045,timeout:null},{keyi:51,wave:"triangle",time:7.370666666666693,timeout:null},{keyi:55,wave:"triangle",time:7.560000000000059,timeout:null},{keyi:58,wave:"triangle",time:7.778666666666709,timeout:null},{keyi:51,wave:"triangle",time:8,timeout:null},{keyi:55,wave:"triangle",time:8.200000000000045,timeout:null},{keyi:68,wave:"triangle",time:8.469333333333338,timeout:null},{keyi:55,wave:"triangle",time:8.850666666666712,timeout:null},{keyi:51,wave:"triangle",time:9.069333333333361,timeout:null},{keyi:58,wave:"triangle",time:9.490666666666698,timeout:null},{keyi:55,wave:"triangle",time:9.690666666666743,timeout:null},{keyi:51,wave:"triangle",time:9.890666666666675,timeout:null},{keyi:49,wave:"triangle",time:10.160000000000082,timeout:null},{keyi:53,wave:"triangle",time:10.389333333333411,timeout:null},{keyi:56,wave:"triangle",time:10.589333333333343,timeout:null},{keyi:49,wave:"triangle",time:10.789333333333389,timeout:null},{keyi:53,wave:"triangle",time:10.960000000000036,timeout:null},{keyi:56,wave:"triangle",time:11.189333333333366,timeout:null},{keyi:49,wave:"triangle",time:11.410666666666657,timeout:null},{keyi:53,wave:"triangle",time:11.600000000000023,timeout:null},{keyi:56,wave:"triangle",time:11.778666666666709,timeout:null},{keyi:49,wave:"triangle",time:12.029333333333398,timeout:null},{keyi:53,wave:"triangle",time:12.200000000000045,timeout:null},{keyi:56,wave:"triangle",time:12.389333333333411,timeout:null},{keyi:49,wave:"triangle",time:12.62933333333342,timeout:null},{keyi:44,wave:"triangle",time:13.109333333333325,timeout:null},{keyi:56,wave:"triangle",time:13.738666666666745,timeout:null},{keyi:60,wave:"triangle",time:14.210666666666725,timeout:null},{keyi:56,wave:"triangle",time:14.450666666666734,timeout:null},{keyi:58,wave:"triangle",time:14.509333333333416,timeout:null},{keyi:56,wave:"triangle",time:14.909333333333393,timeout:null},{keyi:44,wave:"triangle",time:15.62933333333342,timeout:null},{keyi:60,wave:"triangle",time:16.160000000000082,timeout:null},{keyi:58,wave:"triangle",time:16.33066666666673,timeout:null},{keyi:56,wave:"triangle",time:16.568000000000097,timeout:null},{keyi:44,wave:"triangle",time:16.840000000000032,timeout:null},{keyi:60,wave:"triangle",time:17.418666666666695,timeout:null},{keyi:58,wave:"triangle",time:17.879999999999995,timeout:null},{keyi:56,wave:"triangle",time:18.109333333333325,timeout:null},{keyi:44,wave:"triangle",time:18.54933333333338,timeout:null},{keyi:60,wave:"triangle",time:19.200000000000045,timeout:null},{keyi:58,wave:"triangle",time:19.650666666666666,timeout:null},{keyi:56,wave:"triangle",time:19.879999999999995,timeout:null},{keyi:44,wave:"triangle",time:20.09866666666676,timeout:null},{keyi:53,wave:"triangle",time:20.32000000000005,timeout:null},{keyi:53,wave:"triangle",time:20.749333333333425,timeout:null},{keyi:56,wave:"triangle",time:21.029333333333398,timeout:null},{keyi:55,wave:"triangle",time:21.480000000000018,timeout:null},{keyi:53,wave:"triangle",time:21.669333333333384,timeout:null},{keyi:56,wave:"triangle",time:21.898666666666713,timeout:null},{keyi:60,wave:"triangle",time:22.130666666666684,timeout:null},{keyi:56,wave:"triangle",time:22.54933333333338,timeout:null},{keyi:53,wave:"triangle",time:22.78933333333339,timeout:null},{keyi:56,wave:"triangle",time:23.189333333333366,timeout:null},{keyi:53,wave:"triangle",time:23.410666666666657,timeout:null},{keyi:56,wave:"triangle",time:23.600000000000023,timeout:null},{keyi:51,wave:"triangle",time:23.829333333333352,timeout:null},{keyi:55,wave:"triangle",time:24.06933333333336,timeout:null},{keyi:58,wave:"triangle",time:24.25066666666669,timeout:null},{keyi:51,wave:"triangle",time:24.498666666666736,timeout:null},{keyi:53,wave:"triangle",time:25.130666666666684,timeout:null},{keyi:58,wave:"triangle",time:25.610666666666702,timeout:null},{keyi:53,wave:"triangle",time:25.898666666666713,timeout:null},{keyi:51,wave:"triangle",time:26.25066666666669,timeout:null},{keyi:53,wave:"triangle",time:26.639999999999986,timeout:null},{keyi:51,wave:"triangle",time:26.879999999999995,timeout:null},{keyi:58,wave:"triangle",time:27.109333333333325,timeout:null},{keyi:49,wave:"triangle",time:27.33066666666673,timeout:null},{keyi:53,wave:"triangle",time:27.77866666666671,timeout:null},{keyi:56,wave:"triangle",time:28.09066666666672,timeout:null},{keyi:49,wave:"triangle",time:28.520000000000095,timeout:null},{keyi:53,wave:"triangle",time:28.749333333333425,timeout:null},{keyi:56,wave:"triangle",time:28.909333333333393,timeout:null},{keyi:49,wave:"triangle",time:29.138666666666722,timeout:null},{keyi:53,wave:"triangle",time:29.33066666666673,timeout:null},{keyi:56,wave:"triangle",time:29.57066666666674,timeout:null},{keyi:49,wave:"triangle",time:29.78933333333339,timeout:null},{keyi:53,wave:"triangle",time:30.01066666666668,timeout:null},{keyi:56,wave:"triangle",time:30.200000000000045,timeout:null},{keyi:49,wave:"triangle",time:30.418666666666695,timeout:null},{keyi:44,wave:"triangle",time:30.810666666666748,timeout:null},{keyi:56,wave:"triangle",time:31.33066666666673,timeout:null},{keyi:60,wave:"triangle",time:31.800000000000068,timeout:null},{keyi:60,wave:"triangle",time:32.04000000000008,timeout:null},{keyi:68,wave:"triangle",time:32.33066666666673,timeout:null},{keyi:60,wave:"triangle",time:32.92000000000007,timeout:null},{keyi:56,wave:"triangle",time:33.53066666666666,timeout:null},{keyi:44,wave:"triangle",time:33.970666666666716,timeout:null},{keyi:56,wave:"triangle",time:34.57066666666674,timeout:null},{keyi:60,wave:"triangle",time:35.200000000000045,timeout:null},{keyi:68,wave:"triangle",time:35.61866666666674,timeout:null},{keyi:60,wave:"triangle",time:36,timeout:null},{keyi:56,wave:"triangle",time:36.25066666666669,timeout:null},{keyi:68,wave:"triangle",time:36.639999999999986,timeout:null},{keyi:60,wave:"triangle",time:36.85066666666671,timeout:null},{keyi:56,wave:"triangle",time:37.09066666666672,timeout:null},{keyi:68,wave:"triangle",time:37.32000000000005,timeout:null},{keyi:53,wave:"triangle",time:37.54933333333338,timeout:null},{keyi:58,wave:"triangle",time:37.77066666666667,timeout:null},{keyi:53,wave:"triangle",time:38,timeout:null},{keyi:58,wave:"triangle",time:38.109333333333325,timeout:null},{keyi:68,wave:"triangle",time:38.21866666666676,timeout:null},{keyi:56,wave:"triangle",time:38.45866666666666,timeout:null},{keyi:68,wave:"triangle",time:38.669333333333384,timeout:null},{keyi:53,wave:"triangle",time:38.90933333333339,timeout:null},{keyi:58,wave:"triangle",time:39.09866666666676,timeout:null},{keyi:53,wave:"triangle",time:39.32000000000005,timeout:null},{keyi:68,wave:"triangle",time:39.520000000000095,timeout:null},{keyi:56,wave:"triangle",time:39.680000000000064,timeout:null},{keyi:53,wave:"triangle",time:40.189333333333366,timeout:null},{keyi:58,wave:"triangle",time:40.41066666666666,timeout:null},{keyi:68,wave:"triangle",time:40.62933333333342,timeout:null},{keyi:51,wave:"triangle",time:40.85866666666675,timeout:null},{keyi:55,wave:"triangle",time:41.09066666666672,timeout:null},{keyi:58,wave:"triangle",time:41.25066666666669,timeout:null},{keyi:51,wave:"triangle",time:41.509333333333416,timeout:null},{keyi:53,wave:"triangle",time:41.69066666666674,timeout:null},{keyi:58,wave:"triangle",time:41.93066666666675,timeout:null},{keyi:53,wave:"triangle",time:42.16000000000008,timeout:null},{keyi:51,wave:"triangle",time:42.37866666666673,timeout:null},{keyi:51,wave:"triangle",time:42.749333333333425,timeout:null},{keyi:55,wave:"triangle",time:42.978666666666754,timeout:null},{keyi:58,wave:"triangle",time:43.38933333333341,timeout:null},{keyi:51,wave:"triangle",time:43.61866666666674,timeout:null},{keyi:55,wave:"triangle",time:43.81866666666667,timeout:null},{keyi:49,wave:"triangle",time:44.09066666666672,timeout:null},{keyi:53,wave:"triangle",time:44.29866666666669,timeout:null},{keyi:56,wave:"triangle",time:44.520000000000095,timeout:null},{keyi:49,wave:"triangle",time:44.69866666666667,timeout:null},{keyi:51,wave:"triangle",time:44.92000000000007,timeout:null},{keyi:56,wave:"triangle",time:45.1493333333334,timeout:null},{keyi:49,wave:"triangle",time:45.440000000000055,timeout:null},{keyi:51,wave:"triangle",time:45.650666666666666,timeout:null},{keyi:56,wave:"triangle",time:45.86933333333343,timeout:null},{keyi:49,wave:"triangle",time:46.09866666666676,timeout:null},{keyi:51,wave:"triangle",time:46.29866666666669,timeout:null},{keyi:56,wave:"triangle",time:46.54933333333338,timeout:null},{keyi:49,wave:"triangle",time:46.81066666666675,timeout:null},{keyi:51,wave:"triangle",time:47.01866666666672,timeout:null},{keyi:56,wave:"triangle",time:47.25066666666669,timeout:null},{keyi:49,wave:"triangle",time:47.5680000000001,timeout:null},{keyi:51,wave:"triangle",time:47.94933333333336,timeout:null},{keyi:56,wave:"triangle",time:48.429333333333375,timeout:null},{keyi:44,wave:"triangle",time:49.09866666666676,timeout:null},{keyi:56,wave:"triangle",time:49.62933333333342,timeout:null},{keyi:60,wave:"triangle",time:50.26933333333341,timeout:null},{keyi:63,wave:"triangle",time:50.978666666666754,timeout:null},{keyi:68,wave:"triangle",time:51.89866666666671,timeout:null},{keyi:44,wave:"triangle",time:53.73066666666671,timeout:null}],[{keyi:43,wave:"triangle",time:0,timeout:null},{keyi:43,wave:"triangle",time:.1999999999999993,timeout:null},{keyi:43,wave:"triangle",time:.879999999999999,timeout:null},{keyi:43,wave:"triangle",time:1.5386666666666642,timeout:null},{keyi:44,wave:"triangle",time:1.7680000000000007,timeout:null},{keyi:44,wave:"triangle",time:2.2586666666666666,timeout:null},{keyi:39,wave:"triangle",time:2.84,timeout:null},{keyi:41,wave:"triangle",time:3.3599999999999994,timeout:null},{keyi:41,wave:"triangle",time:4.069333333333333,timeout:null},{keyi:41,wave:"triangle",time:4.407999999999998,timeout:null},{keyi:43,wave:"triangle",time:4.959999999999997,timeout:null},{keyi:43,wave:"triangle",time:5.32,timeout:null},{keyi:43,wave:"triangle",time:6.007999999999999,timeout:null},{keyi:43,wave:"triangle",time:6.279999999999998,timeout:null},{keyi:43,wave:"triangle",time:7.338666666666665,timeout:null},{keyi:43,wave:"triangle",time:7.648,timeout:null},{keyi:43,wave:"triangle",time:8.058666666666667,timeout:null},{keyi:43,wave:"triangle",time:8.559999999999999,timeout:null},{keyi:41,wave:"triangle",time:9,timeout:null},{keyi:41,wave:"triangle",time:9.36,timeout:null},{keyi:39,wave:"triangle",time:9.719999999999999,timeout:null},{keyi:41,wave:"triangle",time:10.168,timeout:null},{keyi:41,wave:"triangle",time:10.527999999999999,timeout:null},{keyi:36,wave:"triangle",time:13.218666666666664,timeout:null},{keyi:41,wave:"triangle",time:13.648,timeout:null},{keyi:41,wave:"triangle",time:14.280000000000001,timeout:null},{keyi:41,wave:"triangle",time:14.629333333333335,timeout:null},{keyi:43,wave:"triangle",time:15.207999999999998,timeout:null},{keyi:43,wave:"triangle",time:15.469333333333331,timeout:null},{keyi:43,wave:"triangle",time:15.839999999999996,timeout:null},{keyi:44,wave:"triangle",time:16.029333333333334,timeout:null},{keyi:44,wave:"triangle",time:16.378666666666668,timeout:null},{keyi:46,wave:"triangle",time:16.858666666666664,timeout:null},{keyi:46,wave:"triangle",time:17.14933333333333,timeout:null},{keyi:46,wave:"triangle",time:17.759999999999998,timeout:null},{keyi:46,wave:"triangle",time:18.349333333333334,timeout:null},{keyi:46,wave:"triangle",time:18.567999999999998,timeout:null},{keyi:46,wave:"triangle",time:18.799999999999997,timeout:null},{keyi:48,wave:"triangle",time:19.08,timeout:null},{keyi:48,wave:"triangle",time:19.65866666666667,timeout:null},{keyi:48,wave:"triangle",time:19.967999999999996,timeout:null},{keyi:48,wave:"triangle",time:20.498666666666665,timeout:null},{keyi:48,wave:"triangle",time:20.858666666666664,timeout:null},{keyi:48,wave:"triangle",time:21.138666666666666,timeout:null},{keyi:48,wave:"triangle",time:21.408,timeout:null},{keyi:48,wave:"triangle",time:21.78933333333333,timeout:null},{keyi:48,wave:"triangle",time:22.119999999999997,timeout:null},{keyi:44,wave:"triangle",time:22.560000000000002,timeout:null},{keyi:43,wave:"triangle",time:23.538666666666664,timeout:null},{keyi:43,wave:"triangle",time:23.82933333333333,timeout:null},{keyi:41,wave:"triangle",time:24.528,timeout:null},{keyi:36,wave:"triangle",time:26.218666666666664,timeout:null},{keyi:37,wave:"triangle",time:26.54933333333333,timeout:null},{keyi:41,wave:"triangle",time:27.28,timeout:null},{keyi:41,wave:"triangle",time:28.069333333333333,timeout:null},{keyi:41,wave:"triangle",time:29.578666666666663,timeout:null},{keyi:37,wave:"triangle",time:30.309333333333335,timeout:null},{keyi:36,wave:"triangle",time:30.629333333333335,timeout:null},{keyi:36,wave:"triangle",time:31.439999999999998,timeout:null},{keyi:36,wave:"triangle",time:33.04,timeout:null},{keyi:41,wave:"triangle",time:33.57866666666666,timeout:null},{keyi:43,wave:"triangle",time:33.86933333333333,timeout:null},{keyi:43,wave:"triangle",time:34.6,timeout:null},{keyi:43,wave:"triangle",time:36.33866666666667,timeout:null},{keyi:41,wave:"triangle",time:37.007999999999996,timeout:null},{keyi:36,wave:"triangle",time:37.32,timeout:null},{keyi:41,wave:"triangle",time:38.33866666666667,timeout:null},{keyi:36,wave:"triangle",time:38.669333333333334,timeout:null},{keyi:34,wave:"triangle",time:39.007999999999996,timeout:null},{keyi:32,wave:"triangle",time:40.10933333333333,timeout:null},{keyi:32,wave:"triangle",time:40.93866666666666,timeout:null},{keyi:36,wave:"triangle",time:43.688,timeout:null},{keyi:41,wave:"triangle",time:44.138666666666666,timeout:null},{keyi:41,wave:"triangle",time:44.888,timeout:null},{keyi:41,wave:"triangle",time:45.14933333333333,timeout:null},{keyi:41,wave:"triangle",time:45.629333333333335,timeout:null},{keyi:43,wave:"triangle",time:45.808,timeout:null},{keyi:43,wave:"triangle",time:46.31999999999999,timeout:null},{keyi:43,wave:"triangle",time:46.58933333333333,timeout:null},{keyi:37,wave:"triangle",time:47.208,timeout:null},{keyi:37,wave:"triangle",time:47.528000000000006,timeout:null},{keyi:39,wave:"triangle",time:48.128,timeout:null},{keyi:39,wave:"triangle",time:48.498666666666665,timeout:null},{keyi:41,wave:"triangle",time:49.007999999999996,timeout:null},{keyi:41,wave:"triangle",time:49.37866666666666,timeout:null},{keyi:41,wave:"triangle",time:49.89866666666667,timeout:null},{keyi:41,wave:"triangle",time:50.239999999999995,timeout:null},{keyi:41,wave:"triangle",time:50.848,timeout:null},{keyi:41,wave:"triangle",time:51.16,timeout:null},{keyi:41,wave:"triangle",time:51.760000000000005,timeout:null},{keyi:41,wave:"triangle",time:52.048,timeout:null},{keyi:41,wave:"triangle",time:52.58933333333333,timeout:null},{keyi:39,wave:"triangle",time:52.848,timeout:null},{keyi:39,wave:"triangle",time:53.37866666666666,timeout:null},{keyi:37,wave:"triangle",time:53.72,timeout:null},{keyi:39,wave:"triangle",time:54.25866666666667,timeout:null},{keyi:39,wave:"triangle",time:54.46933333333334,timeout:null},{keyi:36,wave:"triangle",time:57.09866666666666,timeout:null},{keyi:36,wave:"triangle",time:57.33866666666667,timeout:null},{keyi:37,wave:"triangle",time:57.608000000000004,timeout:null},{keyi:37,wave:"triangle",time:58.208,timeout:null},{keyi:37,wave:"triangle",time:58.50933333333333,timeout:null},{keyi:37,wave:"triangle",time:59.087999999999994,timeout:null},{keyi:39,wave:"triangle",time:59.29866666666666,timeout:null},{keyi:39,wave:"triangle",time:59.61866666666667,timeout:null},{keyi:39,wave:"triangle",time:60.01866666666666,timeout:null},{keyi:41,wave:"triangle",time:60.120000000000005,timeout:null},{keyi:37,wave:"triangle",time:60.688,timeout:null},{keyi:41,wave:"triangle",time:61.10933333333334,timeout:null},{keyi:41,wave:"triangle",time:61.72,timeout:null},{keyi:41,wave:"triangle",time:62.05866666666667,timeout:null},{keyi:41,wave:"triangle",time:62.727999999999994,timeout:null},{keyi:43,wave:"triangle",time:63.03999999999999,timeout:null},{keyi:43,wave:"triangle",time:63.367999999999995,timeout:null},{keyi:43,wave:"triangle",time:63.778666666666666,timeout:null},{keyi:43,wave:"triangle",time:64.14933333333333,timeout:null},{keyi:43,wave:"triangle",time:64.928,timeout:null},{keyi:43,wave:"triangle",time:65.30933333333333,timeout:null},{keyi:43,wave:"triangle",time:65.94933333333333,timeout:null},{keyi:44,wave:"triangle",time:66.208,timeout:null},{keyi:44,wave:"triangle",time:66.81866666666667,timeout:null},{keyi:44,wave:"triangle",time:67.16,timeout:null},{keyi:43,wave:"triangle",time:67.54933333333334,timeout:null},{keyi:43,wave:"triangle",time:68.2,timeout:null},{keyi:39,wave:"triangle",time:68.44,timeout:null},{keyi:39,wave:"triangle",time:69.22933333333333,timeout:null},{keyi:32,wave:"triangle",time:69.98933333333333,timeout:null},{keyi:37,wave:"triangle",time:70.96,timeout:null},{keyi:39,wave:"triangle",time:71.30933333333333,timeout:null},{keyi:39,wave:"triangle",time:72.18933333333334,timeout:null},{keyi:39,wave:"triangle",time:73.888,timeout:null},{keyi:37,wave:"triangle",time:74.45866666666666,timeout:null},{keyi:36,wave:"triangle",time:74.62933333333334,timeout:null},{keyi:36,wave:"triangle",time:75.54933333333334,timeout:null},{keyi:36,wave:"triangle",time:77.14933333333333,timeout:null},{keyi:41,wave:"triangle",time:77.72,timeout:null},{keyi:43,wave:"triangle",time:78.09866666666666,timeout:null},{keyi:43,wave:"triangle",time:79.008,timeout:null},{keyi:43,wave:"triangle",time:80.58933333333333,timeout:null},{keyi:39,wave:"triangle",time:81.18933333333334,timeout:null},{keyi:37,wave:"triangle",time:81.42933333333333,timeout:null},{keyi:39,wave:"triangle",time:82.49866666666667,timeout:null},{keyi:37,wave:"triangle",time:82.78933333333333,timeout:null},{keyi:36,wave:"triangle",time:83.08,timeout:null},{keyi:34,wave:"triangle",time:84.328,timeout:null},{keyi:34,wave:"triangle",time:85.13866666666667,timeout:null}],[{keyi:36,wave:"triangle",time:0,timeout:null},{keyi:36,wave:"triangle",time:.3813333333333446,timeout:null},{keyi:37,wave:"triangle",time:.7706666666666706,timeout:null},{keyi:39,wave:"triangle",time:1.1706666666666763,timeout:null},{keyi:39,wave:"triangle",time:1.5413333333333412,timeout:null},{keyi:37,wave:"triangle",time:1.941333333333347,timeout:null},{keyi:36,wave:"triangle",time:2.301333333333332,timeout:null},{keyi:34,wave:"triangle",time:2.650666666666666,timeout:null},{keyi:32,wave:"triangle",time:3.069333333333333,timeout:null},{keyi:32,wave:"triangle",time:3.4693333333333385,timeout:null},{keyi:34,wave:"triangle",time:3.9013333333333264,timeout:null},{keyi:36,wave:"triangle",time:4.25066666666666,timeout:null},{keyi:36,wave:"triangle",time:4.650666666666666,timeout:null},{keyi:34,wave:"triangle",time:5.319999999999993,timeout:null},{keyi:34,wave:"triangle",time:5.52000000000001,timeout:null},{keyi:36,wave:"triangle",time:6.290666666666681,timeout:null},{keyi:36,wave:"triangle",time:6.650666666666666,timeout:null},{keyi:37,wave:"triangle",time:7.039999999999992,timeout:null},{keyi:39,wave:"triangle",time:7.410666666666657,timeout:null},{keyi:39,wave:"triangle",time:7.800000000000011,timeout:null},{keyi:37,wave:"triangle",time:8.181333333333328,timeout:null},{keyi:36,wave:"triangle",time:8.560000000000002,timeout:null},{keyi:34,wave:"triangle",time:8.909333333333336,timeout:null},{keyi:32,wave:"triangle",time:9.309333333333342,timeout:null},{keyi:32,wave:"triangle",time:9.680000000000007,timeout:null},{keyi:34,wave:"triangle",time:10.050666666666672,timeout:null},{keyi:36,wave:"triangle",time:10.421333333333337,timeout:null},{keyi:34,wave:"triangle",time:10.850666666666655,timeout:null},{keyi:32,wave:"triangle",time:11.389333333333326,timeout:null},{keyi:32,wave:"triangle",time:11.581333333333333,timeout:null},{keyi:34,wave:"triangle",time:12.319999999999993,timeout:null},{keyi:34,wave:"triangle",time:12.701333333333338,timeout:null},{keyi:36,wave:"triangle",time:13.109333333333325,timeout:null},{keyi:32,wave:"triangle",time:13.469333333333338,timeout:null},{keyi:34,wave:"triangle",time:13.840000000000003,timeout:null},{keyi:36,wave:"triangle",time:14.199999999999989,timeout:null},{keyi:37,wave:"triangle",time:14.389333333333326,timeout:null},{keyi:36,wave:"triangle",time:14.570666666666654,timeout:null},{keyi:32,wave:"triangle",time:15,timeout:null},{keyi:34,wave:"triangle",time:15.389333333333326,timeout:null},{keyi:36,wave:"triangle",time:15.759999999999991,timeout:null},{keyi:37,wave:"triangle",time:15.981333333333339,timeout:null},{keyi:36,wave:"triangle",time:16.141333333333336,timeout:null},{keyi:34,wave:"triangle",time:16.50933333333333,timeout:null},{keyi:32,wave:"triangle",time:16.869333333333344,timeout:null},{keyi:34,wave:"triangle",time:17.25066666666666,timeout:null},{keyi:27,wave:"triangle",time:17.640000000000015,timeout:null},{keyi:36,wave:"triangle",time:18.439999999999998,timeout:null},{keyi:36,wave:"triangle",time:18.829333333333324,timeout:null},{keyi:37,wave:"triangle",time:19.21066666666667,timeout:null},{keyi:39,wave:"triangle",time:19.629333333333335,timeout:null},{keyi:39,wave:"triangle",time:20,timeout:null},{keyi:37,wave:"triangle",time:20.370666666666665,timeout:null},{keyi:36,wave:"triangle",time:20.72,timeout:null},{keyi:34,wave:"triangle",time:21.090666666666664,timeout:null},{keyi:32,wave:"triangle",time:21.48533333333333,timeout:null},{keyi:32,wave:"triangle",time:21.861333333333334,timeout:null},{keyi:34,wave:"triangle",time:22.221333333333348,timeout:null},{keyi:36,wave:"triangle",time:22.610666666666674,timeout:null},{keyi:34,wave:"triangle",time:23.02133333333333,timeout:null},{keyi:32,wave:"triangle",time:23.581333333333333,timeout:null},{keyi:32,wave:"triangle",time:23.80000000000001,timeout:null}]],initialTime:0,newcss:function(){e.css.innerHTML=`\n #piano-ui {\n background: linear-gradient(transparent, rgba(64, 64, 64, 0.5));\n color: black;\n font-family: Avenir, Klee, Helvetica, Arial, sans-serif;\n font-size: 14px;\n position: fixed;\n height: 75px;\n width: 100%;\n left: 0;\n bottom: 0;\n perspective: 1024px;\n z-index: 9999;\n }\n #piano-quit {\n background: rgba(255, 255, 255, 0.5);\n position: absolute;\n width: 30px;\n top: 0;\n right: 0;\n transform: translateY(-100%);\n border-top: 1px solid rgba(64, 64, 64, 0.5);\n border-radius: 10px 10px 0 0;\n text-align: center;\n cursor: pointer;\n }\n\n .piano-menu {\n height: 100%;\n width: 15%;\n vertical-align: top;\n display: inline-block;\n }\n .piano-menu > label, .piano-menu > input, .piano-menu > select {\n font-size: 14px;\n max-width: 50%;\n float: none;\n }\n #piano-left {\n background: linear-gradient(to right, rgba(255, 255, 255, 0.5), transparent);\n text-align: left;\n }\n #piano-right {\n background: linear-gradient(to right, transparent, rgba(255, 255, 255, 0.5));\n text-align: right;\n }\n #piano-middle {\n height: 100%;\n width: 70%;\n bottom: 0;\n transform: translateZ(${e.tilt.value}px) rotateX(${e.tilt.value}deg);\n transform-style: preserve-3d;\n display: inline-block;\n }\n\n .piano-key {\n text-align: center;\n position: relative;\n bottom: 0;\n transform-style: preserve-3d;\n border-radius: 0 0 5px 5px;\n display: inline-block;\n }\n .piano-key:before {\n content: "";\n background: #808080;\n position: absolute;\n height: 100%;\n width: 100%;\n top: 0;\n left: 0;\n transform: translateZ(-6px);\n border-radius: 0 0 5px 5px;\n }\n .piano-white {\n background: white;\n color: black;\n height: 100%;\n width: 3.5%;\n transform: translateZ(7px);\n margin-left: 0.2%;\n }\n .piano-white.piano-hit {\n background: #c0c0c0;\n transform: translateZ(1px);\n }\n .piano-black {\n background: black;\n color: white;\n vertical-align: top;\n height: 70%;\n width: 2%;\n transform: translateX(-55%) translateZ(14px);\n margin-right: -2%;\n }\n .piano-black.piano-hit {\n background: #404040;\n transform: translateX(-55%) translateZ(8px);\n }\n\n .piano-keyval {\n position: absolute;\n bottom: 0;\n transform: translateX(-50%);\n }\n `},newselect:function(e,t,i,l,n,a){l.forEach((function(e){t.appendChild(document.createElement("option")).innerHTML=e})),t.value=l[n],null!=a&&t.addEventListener("input",a),e.appendChild(document.createElement("label")).innerHTML=i,e.appendChild(t)},newrange:function(e,t,i,l,n,a,m,u){t.type="range",t.min=l,t.step=n,t.max=a,t.value=m,t.min=l,t.addEventListener("input",u),e.appendChild(document.createElement("label")).innerHTML=i,e.appendChild(t)},newbutton:function(e,t,i){var l=document.createElement("input");return l.type="button",l.addEventListener("click",i),l.value=t,e.appendChild(l),l},newbr:function(e){e.appendChild(document.createElement("br"))},keyindex:function(t){var i=1==t.key.length?t.key:t.code;return e.keymap.findIndex((e=>e.key==i||e.caps_key==i))},note:function(t,i){var l=e.audio.createGain();l.connect(e.audio.destination);var n=e.audio.createOscillator();n.frequency.value=440*Math.pow(2,(t-53)/12),n.type=i,n.connect(l),n.start();l.gain.exponentialRampToValueAtTime(1/Number.MAX_SAFE_INTEGER,e.audio.currentTime+10),setTimeout((e=>n.disconnect()),1e4),setTimeout((e=>l.disconnect()),1e4)},playDisc:function(t){e.disc[t].forEach((function(t,i){t.timeout=setTimeout((function(){e.note(t.keyi,t.wave);var i=t.keyi-e.pitch.value;i>=0&&i<46&&(e.keymap[i].dom.classList.add("piano-hit"),setTimeout((t=>e.keymap[i].dom.classList.remove("piano-hit")),100)),t.timeout=null}),1e3*t.time)}))},stopDisc:function(t){e.disc[t].forEach((function(e){clearTimeout(e.timeout),e.timeout=null}))},stopDiscs:function(t){e.disc.forEach((e=>e.forEach((function(e){clearTimeout(e.timeout),e.timeout=null}))))},saveDisc:function(){e.disc.push(e.disc[0]),e.deleteDisc(0)},deleteDisc:function(t){0==t?e.disc[t]=[]:e.disc=e.disc.slice(0,t).concat(e.disc.slice(t+1)),e.playbackmode()},exportDiscs:function(){e.disc.forEach((function(e,t){var i=JSON.stringify(e);console.log("Disc "+t+"\n"+i)})),alert("Check the console.")},keyup:function(t){var i=e.keyindex(t);i>=0&&(e.keymap[i].pressed=0,e.keymap[i].dom.classList.remove("piano-hit"))},keydown:function(t){t.preventDefault();var i=e.keyindex(t);if(i>=0&&0==e.keymap[i].pressed){e.keymap[i].pressed=1;var l=i+Number(e.pitch.value);e.note(l,e.wave.value),e.keymap[i].dom.classList.add("piano-hit"),0==e.disc[0].length&&(e.initialTime=e.audio.currentTime),e.disc[0].push({keyi:l,wave:e.wave.value,time:e.audio.currentTime-e.initialTime,timeout:null}),1==e.disc[0].length&&Array.from(e.menuright.getElementsByTagName("input")).slice(0,3).forEach((e=>e.removeAttribute("disabled")))}else" "==t.key?(e.stopDiscs(),e.deleteDisc(0)):"ArrowLeft"==t.key?e.pitch.value=Number(e.pitch.value)-12:"ArrowRight"==t.key?e.pitch.value=Number(e.pitch.value)+12:"ArrowDown"==t.key?(e.tilt.value=Number(e.tilt.value)-5,e.newcss()):"ArrowUp"==t.key&&(e.tilt.value=Number(e.tilt.value)+5,e.newcss())},playstop:function(t,i){if(e.disc[i].length>0){var l=0==i?"↻":i;if(t.target.value==l+" ▶"){e.playDisc(i),t.target.value=l+" ◼";var n=e.disc[i].length-1;setTimeout((e=>t.target.value=l+" ▶"),1e3*e.disc[i][n].time)}else e.stopDisc(i),t.target.value=l+" ▶"}},playbackmode:function(){e.menuright.innerHTML="";var t=e.newbutton(e.menuright,"↻ ▶",(t=>e.playstop(t,0))),i=e.newbutton(e.menuright,"⬇",e.saveDisc);0==e.disc[0].length&&(t.setAttribute("disabled",1),i.setAttribute("disabled",1));var l=e.newbutton(e.menuright,"✖",e.deletionmode);1==e.disc.length&&0==e.disc[0].length&&l.setAttribute("disabled",1);var n=e.newbutton(e.menuright,"︎⬆︎",e.exportDiscs);1==e.disc.length&&n.setAttribute("disabled",1),e.newbr(e.menuright),e.disc.forEach((function(t,i){0!==i&&(e.disc[i].every((e=>null==e.timeout))?e.newbutton(e.menuright,i+" ▶",(t=>e.playstop(t,i))):e.newbutton(e.menuright,i+" ◼",(t=>e.playstop(t,i))))}))},deletionmode:function(){e.stopDiscs(),e.menuright.innerHTML="";var t=e.newbutton(e.menuright,"↻ ✖",(t=>e.deleteDisc(0)));0==e.disc[0].length&&t.setAttribute("disabled",1),e.newbutton(e.menuright,"⬇",e.saveDisc).setAttribute("disabled",1),e.newbutton(e.menuright,"✖",e.playbackmode),e.newbutton(e.menuright,"︎⬆︎",e.exportDiscs).setAttribute("disabled",1),e.newbr(e.menuright),e.disc.forEach((function(t,i){0!==i&&e.newbutton(e.menuright,i+" ✖",(t=>e.deleteDisc(i)))}))},quit:function(){e.ui.remove(),e.css.remove(),e.stopDiscs(),e.audio.close(),document.removeEventListener("keydown",e.keydown),document.removeEventListener("keyup",e.keyup)},init:function(){document.body.appendChild(e.css),document.body.appendChild(e.ui),e.ui.id="piano-ui";var t=document.createElement("div");t.id="piano-quit",t.innerHTML="✕",t.addEventListener("click",e.quit),e.ui.appendChild(t),e.ui.appendChild(e.menuleft),e.menuleft.className="piano-menu",e.menuleft.id="piano-left",e.newselect(e.menuleft,e.wave,"Wave: ",["sine","triangle","square","sawtooth"],1),e.newbr(e.menuleft),e.newrange(e.menuleft,e.pitch,"Pitch: ",0,12,48,24,null),e.newbr(e.menuleft),e.newrange(e.menuleft,e.tilt,"Tilt: ",0,5,90,45,e.newcss),e.newcss(),e.ui.appendChild(e.keyboard),e.keyboard.id="piano-middle";for(var i=0;i<e.keymap.length;i++){var l=e.keymap[i].key,n=e.keymap[i].dom;[0,2,4,5,7,9,11].some((e=>(i-e-8)%12==0))?n.className="piano-key piano-white":n.className="piano-key piano-black";var a=document.createElement("span");a.className="piano-keyval",1==l.length?a.innerHTML=l:a.innerHTML={Tab:"⇥",Backspace:"⌫",ShiftLeft:"⇧L",ShiftRight:"⇧R",Enter:"↵"}[l],n.appendChild(a),e.keyboard.appendChild(n)}e.ui.appendChild(e.menuright),e.menuright.className="piano-menu",e.menuright.id="piano-right",e.playbackmode(),document.addEventListener("keydown",e.keydown),document.addEventListener("keyup",e.keyup)}};e.init()}();
Shows graphs, waterfalls and whatnot of the initial load performance on the current page. (Uses an external script, credit to https://github.com/micmro/performance-bookmarklet)
javascript:(function(){var el=document.createElement('script');el.type='text/javascript';el.src='https://micmro.github.io/performance-bookmarklet/dist/performanceBookmarklet.min.js';el.onerror=function(){alert("Looks like the Content Security Policy directive is blocking the use of bookmarklets\n\nYou can copy and paste the content of:\n\n\"https://micmro.github.io/performance-bookmarklet/dist/performanceBookmarklet.min.js\"\n\ninto your console instead\n\n(link is in console already)");console.log("https://micmro.github.io/performance-bookmarklet/dist/performanceBookmarklet.min.js");};document.getElementsByTagName('body')[0].appendChild(el);})();
Syntax highlight all code elements
javascript: (function() { var colorScheme = 'stackoverflow-light'; var link = document.createElement('link'); link.setAttribute('rel', 'stylesheet'); link.setAttribute('type', 'text/css'); link.setAttribute('href', 'https://rawcdn.githack.com/highlightjs/highlight.js/0c98957206664d2aacd72bbfab4479c216f6da7e/src/styles/' + colorScheme + '.css'); document.getElementsByTagName('head')[0].appendChild(link); var script = document.createElement('script'); script.setAttribute('type', 'text/javascript'); script.setAttribute('src', 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.1.0/highlight.min.js'); document.getElementsByTagName('head')[0].appendChild(script); script.addEventListener('load', function() { var pres = document.querySelectorAll(prompt("Elements to highlight (querySelector)", "pre")); for (var i = 0; i < pres.length; ++i) { if (!pres[i].querySelector('code')) { window.hljs.highlightBlock(pres[i]); } else { window.hljs.highlightBlock(pres[i].querySelectorAll('code')[0]); } } })})()
Finds a DOI on the page of a scientific article and opens a direct link to a PDF of it
javascript:!function(){let e="https://cors.explosionscratc.repl.co/";n=prompt("DOI (if default it's the one found in this page)?",document.documentElement.innerText.match(/(10[.][0-9]{4,}[^\s"/<>]*\/[^\s"<>]+)/)[1]),n&&Promise.any(["sci-hub.ee","sci-hub.st","sci.hubg.org","sci-hub.se","sci-hubtw.hkvisa.net","sci-hub.hkvisa.net","sci-hub.mksa.top"].map((t=>new Promise(((n,s)=>{fetch(`${e}${t}`).then((e=>200===e.status?n(t):s())).catch(s)}))))).then((t=>async function(t,n){console.log({domain:t,doi:n});let s=await fetch(`${e}${t}/${n}`).then((e=>e.text()));return(new DOMParser).parseFromString(s,"text/html").querySelector("iframe, embed").src}(t,n).then(window.open)))}();
Click this bookmarklet on Discord to get nitro emojis for free! (Inserts them as image URLs)
javascript:(function(){javascript:!function(){function e(e){const t=function(){let e,t="undefined"==typeof unsafeWindow?window:unsafeWindow;if(null!=t.webpackChunkdiscord_app){const n=["__extra_id__"];t.webpackChunkdiscord_app.push([n,{},t=>{e=t,n.length=0}])}else{if(null==t.webpackJsonp)return null;delete(e="function"==typeof t.webpackJsonp?t.webpackJsonp([],{__extra_id__:(e,t,n)=>{t.default=n}},["__extra_id__"]).default:t.webpackJsonp.push([[],{__extra_id__:(e,t,n)=>{e.exports=n}},[["__extra_id__"]]])).m.__extra_id__,delete e.c.__extra_id__}const n=t=>{for(let n in e.c)if(e.c.hasOwnProperty(n)){let i=e.c[n].exports;if(!i)continue;if(i.__esModule&&i.default&&(i=i.default),t(i))return i}return null};return{findModule:n,findModuleByUniqueProperties:e=>n(t=>e.every(e=>void 0!==t[e]))}}();if(null==t&&e)return 0;const{findModule:n,findModuleByUniqueProperties:i}=t;let o=i(["getDisambiguatedEmojiContext","searchWithoutFetchingLatest"]);if(null==o&&e)return 0;let l=i(["parse","parsePreprocessor","unparse"]);if(null==l&&e)return 0;let r=i(["useEmojiSelectHandler"]);if(null==r&&e)return 0;const u=o.searchWithoutFetchingLatest;function a(e,t){e.content=e.content.replace(`<${t.animated?"a":""}:${t.originalName||t.name}:${t.id}>`,t.url.split("?")[0]+"?size=48")}o.searchWithoutFetchingLatest=function(){let e=u.apply(this,arguments);return e.unlocked.push(...e.locked),e.locked=[],e};const s=l.parse;l.parse=function(){let e=s.apply(this,arguments);if(0!==e.invalidEmojis.length){for(let t of e.invalidEmojis)a(e,t);e.invalidEmojis=[]}let t=e.validNonShortcutEmojis;for(let n=0;n<t.length;n++){const i=t[n];i.available||(a(e,i),t.splice(n,1),n--)}return e};const c=r.useEmojiSelectHandler;return r.useEmojiSelectHandler=function(e){const{onSelectEmoji:t,closePopout:n}=e,i=c.apply(this,arguments);return function(e,o){if(o.toggleFavorite)return i.apply(this,arguments);const l=e.emoji;null!=l&&(t(l,o.isFinalSelection),o.isFinalSelection&&n())}},1}var t=0;!function n(){0===e()&&window.setTimeout(600==++t?e:n,100,!0)}()}()})()
Upload an image to imgur and get a direct link.
async function getFile(){return showOpenFilePicker().then((e=>e[0].getFile()))}getFile().then((async e=>{if(!e)return alert("No file given");let n=new FormData;n.append("image",e),n.append("title",e.name),fetch("https://api.imgur.com/3/image",{headers:{authorization:"Client-ID 34b90e75ab1c04b"},body:n,method:"POST"}).then((e=>e.json())).then((e=>{e.data.error?alert(`Error uploading: ${e.data.error.message||e.data.error||"[Unknown]"}`):e.data.link?prompt("Image link",e.data.link):(alert("No link found in response, see console for errors."),console.log("Response from Imgur API:",e))}))}));
Draw rectangles on the screen and view their pixel sizes
javascript:(function(){var Event=function(){'use strict';this.attach=function(evtName,element,listener,capture){var evt='',useCapture=(capture===undefined)?true:capture,handler=null;if(window.addEventListener===undefined){evt='on'+evtName;handler=function(evt,listener){element.attachEvent(evt,listener);return listener;};}else{evt=evtName;handler=function(evt,listener,useCapture){element.addEventListener(evt,listener,useCapture);return listener;};}return handler.apply(element,[evt,function(ev){var e=ev||event,src=e.srcElement||e.target;listener(e,src);},useCapture]);};this.detach=function(evtName,element,listener,capture){var evt='',useCapture=(capture===undefined)?true:capture;if(window.removeEventListener===undefined){evt='on'+evtName;element.detachEvent(evt,listener);}else{evt=evtName;element.removeEventListener(evt,listener,useCapture);}};this.stop=function(evt){evt.cancelBubble=true;if(evt.stopPropagation){evt.stopPropagation();}};this.prevent=function(evt){if(evt.preventDefault){evt.preventDefault();}else{evt.returnValue=false;}};};var Dragdrop=function(evt){'use strict';var elem=null,started=0,self=this,moveHandler=null,gWidth=(document.body.scrollWidth>document.documentElement.clientWidth)?document.body.scrollWidth:document.documentElement.clientWidth,gHeight=(document.body.scrollHeight>document.documentElement.clientHeight)?document.body.scrollHeight:document.documentElement.clientHeight,move=function(e){var xDiff=e.clientX-elem.posX,yDiff=e.clientY-elem.posY,x=xDiff-(xDiff%elem.snap)+'px',y=yDiff-(yDiff%elem.snap)+'px';if(started===1){switch(elem.mode){case 0:elem.style.top=y;elem.style.left=x;break;case 1:elem.style.left=x;break;case 2:elem.style.top=y;break;}if(elem.mode!==2){if(xDiff<=elem.minX){elem.style.left=elem.minX+'px';}if(elem.offsetLeft+elem.offsetWidth>=elem.maxX){elem.style.left=(elem.maxX-elem.offsetWidth)+'px';}}if(elem.mode!==1){if(yDiff<=elem.minY){elem.style.top=elem.minY+'px';}if(elem.offsetTop+elem.offsetHeight>=elem.maxY){elem.style.top=(elem.maxY-elem.offsetHeight)+'px';}}elem.onMove(elem);}},start=function(e,src){if(src.className.indexOf('draggable')!==-1){evt.prevent(e);moveHandler=evt.attach('mousemove',document,move,true);started=1;elem=src;elem.posX=e.clientX-elem.offsetLeft;elem.posY=e.clientY-elem.offsetTop;if(elem.mode===undefined){self.set(elem);}elem.onStart(elem);if(elem.setCapture){elem.setCapture();}}},stop=function(){if(started===1){started=0;elem.onStop(elem);evt.detach('mousemove',document,moveHandler);if(elem.releaseCapture){elem.releaseCapture();}}};evt.attach('mousedown',document,start,false);evt.attach('mouseup',document,stop,false);this.set=function(element,elemOptions){var options=elemOptions||{};elem=(typeof element==='string')?document.getElementById(element):element;elem.mode=options.mode||0;elem.minX=options.minX||0;elem.maxX=options.maxX||gWidth;elem.minY=options.minY||0;elem.maxY=options.maxY||gHeight;elem.snap=options.snap||1;elem.onStart=options.onstart||function(){};elem.onMove=options.onmove||function(){};elem.onStop=options.onstop||function(){};elem.style.left=elem.offsetLeft+'px';elem.style.top=elem.offsetTop+'px';elem.unselectable='on';};};var Measurer=function(evt,dragdrop){'use strict';this.enabled=0;var tools=[],i=0,measurer=null,doc=(document.body&&(document.body.scrollLeft||document.body.scrollTop))?document.body:document.documentElement,Tool=function(e,src){var tool=null,info=null,started=0,startX=0,startY=0,resizeHndl=null,x=0,y=0,w=0,h=0,updateInfo=function(x,y,w,h){info.innerHTML='X: '+x+'<br>Y: '+y+'<br>W: '+(w+2)+'<br>H: '+(h+2);},move=function(elem){var x=parseInt(elem.style.left,10),y=parseInt(elem.style.top,10);updateInfo(x,y,w,h);},resize=function(e){if(started===1){w=e.clientX-startX+doc.scrollLeft;h=e.clientY-startY+doc.scrollTop;if(w<=0){w=-w;x=e.clientX+doc.scrollLeft;tool.style.left=x+'px';}if(h<=0){h=-h;y=e.clientY+doc.scrollTop;tool.style.top=y+'px';}tool.style.width=w+'px';tool.style.height=h+'px';updateInfo(x,y,w,h);}},init=function(){if(src.id==='measurer-area'){x=startX=e.clientX+doc.scrollLeft;y=startY=e.clientY+doc.scrollTop;tool=document.createElement('div');tool.style.cssText='position:absolute;top:'+startY+'px;left:'+startX+'px;cursor:crosshair;z-index:9999;background-color:transparent;border:dotted 1px #000;visibility:visible;width:0;height:0';tool.className='draggable';info=document.createElement('div');info.style.cssText='font:12px Arial;padding:3px;position:absolute;top:100%;left:100%;background-color:#C4ECFF;width:55px;height:auto;border: solid 1px #aaa;cursor:crosshair';info.appendChild(document.createTextNode('\xA0'));tool.appendChild(info);document.body.appendChild(tool);evt.prevent(e);updateInfo(x,y,0,0);started=1;resizeHndl=evt.attach('mousemove',document,resize,true);dragdrop.set(tool,{onmove:move});}},stop=function(){if(started===1){started=0;evt.detach('mousemove',document,resizeHndl,true);tool.style.cursor='move';}};this.destroy=function(){if(tool!==null){document.body.removeChild(tool);tool=null;}};init();evt.attach('mouseup',document,stop,false);},render=function(){measurer=document.createElement('div');measurer.id='measurer-area';measurer.style.cssText='position:absolute;top:0;left:0;cursor:crosshair;z-index:9998;background-color:transparent;opacity:0.1;width:'+doc.scrollWidth+'px;height:'+doc.scrollHeight+'px;display:none';document.body.appendChild(measurer);};render();this.enable=function(){measurer.style.display='block';this.enabled=1;};this.disable=function(){measurer.style.display='none';for(i=0;i<tools.length;i+=1){tools[i].destroy();delete tools[i];}tools=[];this.enabled=0;};evt.attach('mousedown',document,function(e,src){if(src.id==='measurer-area'){if(e.shiftKey===false){for(i=0;i<tools.length;i+=1){tools[i].destroy();delete tools[i];}tools=[];}tools.push(new Tool(e,src));}},false);};var evt=new Event(),dragdrop=new Dragdrop(evt);if(window.measurer===undefined){window.measurer=new Measurer(evt,dragdrop);};if(window.measurer.enabled===0){window.measurer.enable();}else{window.measurer.disable();};evt.attach('keydown',document,function(e){if(e.ctrlKey===true&&e.keyCode===77){if(window.measurer.enabled===0){window.measurer.enable();}else{window.measurer.disable();}}else if(e.keyCode===27){window.measurer.disable();}});})()
Open a prompt to screen share then screenshots the result.
javascript:{let e,t=document.createElement("video");function capt(a){streamToData(e,t,a,t.videoWidth,t.videoHeight)}function streamToData(e,t,a=(e=>{let t=document.createElement("img");t.src=e,document.body.appendChild(t)}),d=1920,o=1080){let n=document.createElement("canvas");n.id="auto_generated_canvas",document.body.appendChild(n);var c=n.getContext("2d");n.width=d,n.height=o,c.drawImage(t,0,0,d,o),a(n.toDataURL("image/png")),n.remove()}function downloadURI(e,t){var a=document.createElement("a");a.download=t,a.href=e,document.body.appendChild(a),a.click(),document.body.removeChild(a),delete a}t.autoplay=!0,navigator.mediaDevices.getDisplayMedia({video:!0}).then(a=>{e=a,t.srcObject=e,t.play(),setTimeout(()=>{capt(e=>{downloadURI(e,"Image capture.png")}),e.getTracks().forEach(function(e){e.stop()})},300)})}
Drag to blur rectangles on the screen
javascript: { var x = null; var y = null; rect = null; document.body.style.userSelect = "none"; document.body.style.pointerEvents = "none"; document.addEventListener("mousedown", (e) => { document.addEventListener("mousemove", (e) => { rect.remove(); rect.style.width = `${e.clientX - x}px`; rect.style.height = `${e.clientY - y}px`; document.body.appendChild(rect); }); x = e.clientX; y = e.clientY; rect = document.createElement("DIV"); rect.style.position = "absolute"; rect.style.top = `${e.clientY}px`; rect.style.left = `${e.clientX}px`; rect.style.backdropFilter = "blur(5px)"; rect.style.width = "20px"; rect.style.height = "20px"; rect.style.zIndex = "1000000000"; }); document.addEventListener("mouseup", (e) => { rect.style.width = `${e.clientX - x}px`; rect.style.height = `${e.clientY - y}px`; document.body.appendChild(rect); rect = null; try { document.removeEventListener("mousemove"); } catch (err) {} });}
Click an element to blur it
javascript: { var style = document.createElement("STYLE"); style.innerHTML = `.blur {filter: blur(4px) !important;}`; document.body.appendChild(style); document.addEventListener("click", (e) => { e.preventDefault(); e.stopPropagation(); e.target.classList.toggle("blur"); }); document.addEventListener("mousedown", (e) => { e.preventDefault(); e.stopImmediatePropagation(); }); }
AES encrypt and decrypt a string (loads CryptoJS)
javascript: { let script = document.createElement("SCRIPT"); var password = prompt("Password");script.src = "https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js";script.onload = () => { run(); };document.head.appendChild(script); function run() { var mode = prompt("Mode", "encrypt"); if (!mode) return alert("No mode given"); if (mode.toLowerCase().trim() === "encrypt") { alert(encrypt(prompt("What to encrypt?"))); } else if (mode.toLowerCase().trim() === "decrypt") { alert(decrypt(prompt("What to decrypt?"))); } else { alert("Mode incorrect") } } function encrypt(text) { return (CryptoJS.AES.encrypt(text, password)).toString(); } function decrypt(text) { return (CryptoJS.AES.decrypt(text, password)).toString(CryptoJS.enc.Utf8); }}
Click on Duolingo to translate an english question to french and put the result in the input
javascript:fetch(`https://apis.explosionscratc.repl.co/translate?to=fr&q=${document.querySelector("._11rtD").innerText}`).then(res => res.json()).then(json => document.querySelector("textarea").value = json.text)
Click on Duolingo to translate a question in a foreign language to English and put the result in an input
javascript:fetch(`https://apis.explosionscratc.repl.co/translate?q=${document.querySelector("._11rtD").innerText}`).then(res => res.json()).then(json => document.querySelector("textarea").value = json.text)
Generate an essay based on a prompt such as "George Washington"
javascript:{function _(e){e=e.text,console.log(e),navigator.clipboard.writeText(e),window.open(URL.createObjectURL(new Blob([e],{type:"text/plain"})),"_blank")}let e=escape(prompt("Subject?"));e?fetch("https://cors.explosionscratc.repl.co/www.essaytyper.com/lookup",{method:"POST",body:`subject=${e}`,headers:{"User-Agent":"Mozilla/5.0 (X11; CrOS x86_64 13982.7.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.36 Safari/537.36","X-Requested-With":"XMLHttpRequest","Content-Type":"application/x-www-form-urlencoded"}}).then((e=>e.json())).then(_):alert("No subject given")}
Slightly blur a page (just for fun)
javascript: (d => { var css = `*{filter: blur(.7px)}`, style, id = "dark-theme-snippet", ee = d.getElementById(id); if (null != ee) ee.parentNode.removeChild(ee); else { style = d.createElement('style'); style.type = "text/css"; style.id = id; if (style.styleSheet) style.styleSheet.cssText = css; else style.appendChild(d.createTextNode(css)); (d.head || d.querySelector('head')).appendChild(style); }})(document)
Make the page editable
javascript: document.body.contentEditable = 'true';document.designMode = 'on';void 0
Stop editing the page
javascript: document.body.contentEditable = 'false';document.designMode = 'off';void 0
Replace most words with typo'd versions of them "George Washington was an American military officer, politician, statesman, and Founding Father who served as the first president of the United States from 1789 to 1797." -> "george washaington was a american military offficer, politician, st8sman, adn foundign fatehr who served as teh first president of teh united st8s from 1789 too 1797"
javascript:{var map={merican: "murican",ition:"ishin","they're":"their",their:"they're"," to ":" too ",too:"to",you:"u",the:"teh",its:"it's","it's":"its"," i ":" me ","i'm":"me is",and:"adn",hi:"hai",ff:"fff",this:"tsih",flow:"flwo",ight:"ite",eight:"ate",ate:"8",ing:"ign"," a ":" an "," an ":" a ",were:"we're","we're":"were","'s ":"s ","you're":"your",there:"their",affect:"effect",effect:"affect","could've":"couldve"," dosn't ":" dosen't "," alot ":" a lot "," a lot ":" alot "," loose ":" lose "," lose ":" loose ",tian:"tin",mm:"m",see:"se",ish:"ihs",age:"aeg"};function replace(){for(var e,t=function(){for(var e,t=document.querySelectorAll("body, body *"