-
Notifications
You must be signed in to change notification settings - Fork 20
/
penguinmod-packager-settings.json
1 lines (1 loc) · 342 KB
/
penguinmod-packager-settings.json
1
{"framerate":0,"highQualityPen":true,"maxClones":9999999999,"fencing":false,"miscLimits":false,"stageWidth":640,"autoplay":true,"projectId":"[email protected]","appearance":{"accent":"#ff4c4c","background":"#000000","foreground":"#ffffff"},"loadingScreen":{"progressBar":false,"text":"","imageMode":"normal","image":null},"monitors":{"editableLists":true,"variableColor":"#ff8c1a","listColor":"#fc662c"},"penguinmod":{"permissionManager":{"unsandboxedJavascript":true,"enabled":false}},"packagedRuntime":false,"target":"zip","app":{"packageName":"penguinfunk","windowTitle":"Co-Funk","version":"2.5.0","icon":{"__isBlob":true,"type":"image/png","name":"favicon.png","data":"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"},"windowMode":"window"},"cursor":{"type":"none","custom":null,"center":{"x":0,"y":0}},"maxTextureDimension":4096,"turbo":false,"interpolation":false,"dangerousOptimizations":false,"stageHeight":360,"resizeMode":"preserve-ratio","username":"player####","closeWhenStopped":false,"custom":{"css":"","js":""},"controls":{"greenFlag":{"enabled":false},"stopAll":{"enabled":false},"fullscreen":{"enabled":false},"pause":{"enabled":false}},"compiler":{"enabled":true,"warpTimer":false},"chunks":{"gamepad":false,"pointerlock":false},"cloudVariables":{"mode":"ws","cloudHost":"wss://clouddata.turbowarp.org","custom":{},"specialCloudBehaviors":false,"unsafeCloudBehaviors":false},"extensions":["https://extensions.turbowarp.org/Lily/MoreTimers.js","https://extensions.turbowarp.org/local-storage.js","https://extensions.turbowarp.org/obviousAlexC/SensingPlus.js","https://extensions.turbowarp.org/Skyhigh173/json.js","https://extensions.turbowarp.org/sound.js","https://extensions.turbowarp.org/cursor.js","https://extensions.turbowarp.org/Lily/Video.js","https://extensions.turbowarp.org/Lily/ClonesPlus.js","https://extensions.turbowarp.org/-SIPC-/consoles.js","https://extensions.turbowarp.org/-SIPC-/time.js","https://extensions.turbowarp.org/Lily/Skins.js","https://extensions.turbowarp.org/encoding.js","https://extensions.turbowarp.org/NOname-awa/global-coordinate.js","data:application/javascript,var%20count%20%3D%200%0Avar%20isMeasure%20%3D%20false%0Avar%20time%20%3D%200%0A%0Aclass%20RixxyX%20%7B%0A%20%20getInfo()%20%7B%0A%20%20%20%20return%20%7B%0A%20%20%20%20%20%20color1%3A%20%22%23773c00%22%2C%0A%20%20%20%20%20%20color2%3A%20%22%235f3000%22%2C%0A%20%20%20%20%20%20id%3A%20%22RixxyX%22%2C%0A%20%20%20%20%20%20name%3A%20%22RixxyX%22%2C%0A%20%20%20%20%20%20description%3A%20'%5Bdeleted%5D'%2C%0A%20%20%20%20%20%20blocks%3A%20%5B%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20opcode%3A%20'notEquals'%2C%0A%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20text%3A%20'%5BTEXT_1%5D%20!%3D%20%5BTEXT_2%5D'%2C%0A%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20TEXT_1%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'RixxyX'%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20TEXT_2%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'TyruntX'%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20opcode%3A%20'color'%2C%0A%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20text%3A%20'color%20%5BCOLOR%5D%20in%20hex'%2C%0A%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20COLOR%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.COLOR%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%23ff0000'%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20opcode%3A%20'returnTrue'%2C%0A%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20text%3A%20'true'%2C%0A%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20opcode%3A%20'returnFalse'%2C%0A%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20text%3A%20'false'%2C%0A%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20opcode%3A%20'ifElseString'%2C%0A%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20text%3A%20'if%20%5BBOOL%5D%20then%20%5BTEXT_1%5D%20else%20%5BTEXT_2%5D'%2C%0A%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20BOOL%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20''%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20TEXT_1%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'RixxyX'%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20TEXT_2%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'TyruntX'%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20opcode%3A%20'ifString'%2C%0A%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20text%3A%20'if%20%5BBOOL%5D%20then%20%5BTEXT%5D'%2C%0A%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20BOOL%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20''%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20TEXT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'RixxyX'%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20opcode%3A%20'extractTextBetweenToCharacters'%2C%0A%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20text%3A%20'extract%20text%20%5BTEXT%5D%20between%20%5BNUM_1%5D%20to%20%5BNUM_2%5D%20characters'%2C%0A%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20TEXT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'RixxyX%20is%20cool%2C%20right%3F'%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20NUM_1%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%201%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20NUM_2%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%206%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20opcode%3A%20'returnString'%2C%0A%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20text%3A%20'%5BTEXT%5D%20as%20text'%2C%0A%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20TEXT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'RixxyX%20is%20cool%2C%20right%3F'%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20opcode%3A%20'returnObject'%2C%0A%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20text%3A%20'JavaScript%20object%20%5BOBJ_NAME%5D%20with%20value%20%5BOBJ_VAL%5D'%2C%0A%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20OBJ_NAME%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'String'%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20OBJ_VAL%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'RixxyX%20is%20cool%2C%20right%3F'%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20opcode%3A%20'isTheSameTypeAs'%2C%0A%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20text%3A%20'%5BTEXT_1%5D%20is%20the%20same%20type%20as%20%5BTEXT_2%5D%3F'%2C%0A%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20TEXT_1%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'RixxyX%20is%20cool%2C%20right%3F'%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20TEXT_2%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'RixxyX%20is%20cool%2C%20right%3F'%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20opcode%3A%20'reverseTxt'%2C%0A%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20text%3A%20'reverse%20text%20%5BTEXT%5D'%2C%0A%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20TEXT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'XyxxiR'%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20opcode%3A%20'returnCount'%2C%0A%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20text%3A%20'counter'%2C%0A%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20opcode%3A%20'incrementCountByNum'%2C%0A%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20text%3A%20'increment%20counter%20by%20%5BNUM%5D'%2C%0A%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20NUM%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%201%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20opcode%3A%20'decrementCountByNum'%2C%0A%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20text%3A%20'decrement%20counter%20by%20%5BNUM%5D'%2C%0A%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20NUM%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%201%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20opcode%3A%20'setCount'%2C%0A%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20text%3A%20'set%20counter%20to%20%5BNUM%5D'%2C%0A%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20NUM%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20opcode%3A%20'toUppercase'%2C%0A%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20text%3A%20'%5BTEXT%5D%20to%20uppercase'%2C%0A%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20TEXT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'rixxyx'%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20opcode%3A%20'toLowercase'%2C%0A%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20text%3A%20'%5BTEXT%5D%20to%20lowercase'%2C%0A%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20TEXT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'RIXXYX'%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20opcode%3A%20'toCapitalize'%2C%0A%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20text%3A%20'capitalize%20%5BTEXT%5D'%2C%0A%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20TEXT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'rixxyX%20is%20cool%2C%20right%3F'%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20opcode%3A%20'isJsNan'%2C%0A%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20text%3A%20'is%20JavaScript%20NaN%20%5BOBJ%5D'%2C%0A%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20OBJ%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20NaN%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20opcode%3A%20'returnNum'%2C%0A%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20text%3A%20'%5BNUM%5D%20as%20number'%2C%0A%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20NUM%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%201%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20opcode%3A%20'returnBool'%2C%0A%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20text%3A%20'%5BBOOL%5D%20as%20boolean'%2C%0A%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20BOOL%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'true'%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20opcode%3A%20'binToTxt'%2C%0A%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20text%3A%20'binary%20%5BBIN%5D%20to%20text'%2C%0A%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20BIN%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'01010010%2001101001%2001111000%2001111000%2001111001%2001011000'%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20opcode%3A%20'txtToBin'%2C%0A%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20text%3A%20'text%20%5BTEXT%5D%20to%20binary'%2C%0A%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20TEXT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'RixxyX'%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20opcode%3A%20'repeatTxtTimes'%2C%0A%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20text%3A%20'repeat%20text%20%5BTEXT%5D%20%5BNUM%5D%20times'%2C%0A%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20TEXT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'x'%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20NUM%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%202%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20opcode%3A%20'returnJsCode'%2C%0A%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20text%3A%20'execute%20JavaScript%20code%20%5BJS_CODE%5D'%2C%0A%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20JS_CODE%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%5C%22Ri%5C%22%20%2B%20%5C%22xx%5C%22%20%2B%20%5C%22yX%5C%22'%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20opcode%3A%20'jsonParse'%2C%0A%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20text%3A%20'JSON.parse(%5BTEXT%5D)'%2C%0A%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20TEXT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%5C%22RixxyX%5C%22'%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20opcode%3A%20'execJsCode'%2C%0A%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20text%3A%20'execute%20JavaScript%20code%20%5BJS_CODE%5D'%2C%0A%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20JS_CODE%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20'%5C%22Ri%5C%22%20%2B%20%5C%22xx%5C%22%20%2B%20%5C%22yX%5C%22'%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20opcode%3A%20'returnENum'%2C%0A%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20text%3A%20'e'%2C%20%2F%2F%20e%0A%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%09%09%09%09%7B%0A%09%09%09%09%09opcode%3A%20'startTime'%2C%0A%09%09%09%09%09blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%09%09%09%09%09text%3A%20'start%20measuring%20time'%2C%0A%09%09%09%09%09arguments%3A%20%7B%7D%0A%09%09%09%09%7D%2C%0A%09%09%09%09%7B%0A%09%09%09%09%09opcode%3A%20'endTime'%2C%0A%09%09%09%09%09blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%09%09%09%09%09text%3A%20'end%20measuring%20time'%2C%0A%09%09%09%09%09arguments%3A%20%7B%7D%0A%09%09%09%09%7D%2C%0A%09%09%09%09%7B%0A%09%09%09%09%09opcode%3A%20'returnTime'%2C%0A%09%09%09%09%09blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%09%09%09%09%09text%3A%20'time'%2C%0A%09%09%09%09%09arguments%3A%20%7B%7D%0A%09%09%09%09%7D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20notEquals(args)%20%7B%0A%20%20%20%20var%20isEquals%20%3D%20args.TEXT_1%20!%3D%20args.TEXT_2%3B%0A%20%20%20%20return%20isEquals%3B%0A%20%20%7D%0A%20%20color(args)%20%7B%0A%20%20%20%20return%20args.COLOR%3B%0A%20%20%7D%0A%20%20returnTrue(args)%20%7B%0A%20%20%20%20return%20true%3B%0A%20%20%7D%0A%20%20returnFalse(args)%20%7B%0A%20%20%20%20return%20false%3B%0A%20%20%7D%0A%20%20ifElseString(args)%20%7B%0A%20%20%20%20if%20(args.BOOL)%20%7B%0A%20%20%20%20%20%20return%20args.TEXT_1%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20return%20args.TEXT_2%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20ifString(args)%20%7B%0A%20%20%20%20if%20(args.BOOL)%20%7B%0A%20%20%20%20%20%20return%20args.TEXT%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20extractTextBetweenToCharacters(args)%20%7B%0A%20%20%20%20var%20txt%20%3D%20args.TEXT.toString()%3B%0A%20%20%20%20var%20char1%20%3D%20args.NUM_1%20-%201%3B%0A%20%20%20%20var%20char2%20%3D%20args.NUM_2%3B%0A%20%20%20%20return%20txt.slice(char1%2C%20char2)%3B%0A%20%20%7D%0A%20%20returnString(args)%20%7B%0A%20%20%20%20return%20args.TEXT.toString()%3B%0A%20%20%7D%0A%20%20returnObject(args)%20%7B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20return%20eval(%22new%20%22%20%2B%20args.OBJ_NAME%20%2B%20%22(%5C%22%22%20%2B%20args.OBJ_VAL%20%2B%20%22%5C%22)%3B%22)%3B%0A%20%20%20%20%7D%20catch(err)%20%7B%0A%20%20%20%20%20%20return%20err%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20isTheSameTypeAs(args)%20%7B%0A%20%20%20%20return%20(typeof%20args.TEXT_1%20%3D%3D%20typeof%20args.TEXT_2)%3B%0A%20%20%7D%0A%20%20reverseTxt(args)%20%7B%0A%20%20%20%20var%20emptyStr%20%3D%20%22%22%3B%0A%20%20%20%20var%20txt%20%3D%20args.TEXT.toString()%3B%0A%20%20%20%20var%20localCount%20%3D%20args.TEXT.length%20-%201%3B%0A%20%20%20%20while%20(localCount%20!%3D%20-1)%20%7B%0A%20%20%20%20%20%20emptyStr%20%3D%20emptyStr%20%2B%20txt.charAt(localCount)%3B%0A%20%20%20%20%20%20localCount%20-%3D%201%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20emptyStr%3B%0A%20%20%7D%0A%20%20returnCount(args)%20%7B%0A%20%20%20%20return%20count%3B%0A%20%20%7D%0A%20%20incrementCountByNum(args)%20%7B%0A%20%20%20%20if%20((count.toString().indexOf(%22-%22)%20%3D%3D%20-1)%20%7C%7C%20(args.NUM.toString().indexOf(%22-%22)%20%3D%3D%20-1))%20%7B%0A%20%20%20%20%20%20count%20%2B%3D%20Math.floor(args.NUM)%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20count%20%3D%200%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20decrementCountByNum(args)%20%7B%0A%20%20%20%20if%20((count%20-%20Math.floor(args.NUM)).toString().indexOf(%22-%22)%20%3D%3D%20-1)%20%7B%0A%20%20%20%20%20%20count%20-%3D%20Math.floor(args.NUM)%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20count%20%3D%200%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20setCount(args)%20%7B%0A%20%20%20%20if%20((count.toString().indexOf(%22-%22)%20%3D%3D%20-1)%20%26%26%20(args.NUM.toString().indexOf(%22-%22)%20%3D%3D%20-1))%20%7B%0A%20%20%20%20%20%20count%20%3D%20Math.floor(args.NUM)%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20count%20%3D%200%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20toUppercase(args)%20%7B%0A%20%20%20%20return%20args.TEXT.toUpperCase()%3B%0A%20%20%7D%0A%20%20toLowercase(args)%20%7B%0A%20%20%20%20return%20args.TEXT.toLowerCase()%3B%0A%20%20%7D%0A%20%20toCapitalize(args)%20%7B%0A%20%20%20%20return%20args.TEXT.charAt(0).toUpperCase()%20%2B%20args.TEXT.slice(1)%3B%0A%20%20%7D%0A%20%20isJsNan(args)%20%7B%0A%20%20%20%20return%20isNaN(args.OBJ)%3B%0A%20%20%7D%0A%20%20returnNum(args)%20%7B%0A%20%20%20%20return%20Math.floor(args.NUM)%3B%0A%20%20%7D%0A%20%20returnBool(args)%20%7B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20if%20((JSON.parse(args.BOOL).toString()%20%3D%3D%20%22true%22)%20%7C%7C%20(JSON.parse(args.BOOL).toString()%20%3D%3D%20%22false%22))%20%7B%0A%20%20%20%20%20%20%20%20return%20JSON.parse(args.BOOL)%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(JSON.parse(args.BOOL).toString()%20%3D%3D%20%221%22)%20%7B%0A%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(JSON.parse(args.BOOL).toString()%20%3D%3D%20%220%22)%20%7B%0A%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20catch%20(err)%20%7B%0A%20%20%20%20%20%20return%20err%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20binToTxt(args)%20%7B%0A%20%20%20%20var%20binary%20%3D%20args.BIN.toString()%3B%0A%20%20%20%20return%20binary.split(%22%20%22).map((x)%20%3D%3E%20x%20%3D%20String.fromCharCode(parseInt(x%2C%202))).join(%22%22)%3B%0A%20%20%7D%0A%20%20txtToBin(args)%20%7B%0A%20%20%20%20var%20text%20%3D%20args.TEXT.toString()%3B%0A%20%20%20%20return%20Array.from(text).map((each)%3D%3Eeach.charCodeAt(0).toString(2)).join(%22%20%22)%3B%0A%20%20%7D%0A%20%20repeatTxtTimes(args)%20%7B%0A%20%20%20%20return%20args.TEXT.repeat(Math.floor(args.NUM))%3B%0A%20%20%7D%0A%20%20returnJsCode(args)%20%7B%0A%20%20%20%20var%20func%20%3D%20eval(args.JS_CODE)%3B%0A%20%20%20%20return%20func%3B%0A%20%20%7D%0A%20%20jsonParse(args)%20%7B%0A%20%20%20%20return%20JSON.parse(args.TEXT.toString())%3B%0A%20%20%7D%0A%20%20execJsCode(args)%20%7B%0A%20%20%20%20var%20func%20%3D%20new%20Function(args.JS_CODE)%3B%0A%20%20%7D%0A%20%20returnENum(args)%20%7B%0A%20%20%20%20return%20Math.E%0A%20%20%7D%0A%09startTime(args)%20%7B%0A%09%09time%20%3D%200%0A%09%09isMeasure%20%3D%20true%0A%09%7D%0A%09endTime(args)%20%7B%0A%09%09isMeasure%20%3D%20false%0A%09%7D%0A%09returnTime(args)%20%7B%0A%09%09if%20(isMeasure%20%3D%3D%20true)%20%7B%0A%09%09%09time%20%2B%3D%201%0A%09%09%7D%0A%09%09return%20time%0A%09%7D%0A%7D%0AScratch.extensions.register(new%20RixxyX())%3B","data:application/javascript,%2F%2F%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%23%23((%23%23%0A%2F%2F%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23(((%0A%2F%2F%20%20%20%20%20%20%20%20%20%20%20%23%23%23%23%23%23%23%23%26%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%26%26%26%25%23%23%23%23%23(((%0A%2F%2F%20%20%20%20%20%20%20%23%23%23%23%23%23%25%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%26%26%26%25%23%23((((%0A%2F%2F%20%20%20%20%20%23%23%23%23%23%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%26%26%26%26%23((((%0A%2F%2F%20%20%20%20%23%23%23%23%40%40%40%40%40%40%40%40%40%40%25%25%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%26%26%26%23(((%0A%2F%2F%20%20%20%23%23%23%23%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%26%26%26((((%0A%2F%2F%20%20%20%23%23%23%26%40%40%40%40%40%40%40%40%25%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%25%25%40%40%40%40%40%26%26%26%23(((%0A%2F%2F%20%20%20%23%23%23%23%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%26%26%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%26%26%26%26(((%2F%0A%2F%2F%20%20%20%20%23%23%23%23%23%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%26%26%26((((.%0A%2F%2F%20%20%20%20%20%20%23%23%23%23%23%26%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%26%26%26%25(((((%0A%2F%2F%20%20%20%20%20%20%20%20%20%23%23%23%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%25%25%40%40%40%40%40%25%25%40%40%40%40%26%25%26%40%40%26%26%26%26(((%0A%2F%2F%20%20%20%20%20%20%20%20%20%23%23%23%40%40%40%40%40%40%40%40%40%40%40%40%26%25%26%40%40%40%40%25%26%25%40%40%40%26%26%25%40%40%40%40%40%26%26%26%26(((%0A%2F%2F%20%20%20%20%20%20%20%20%20%23%23%23%40%40%40%40%40%40%40%40%40%40%25%25%26%40%40%40%40%25%25%40%40%40%40%25%25%26%40%40%40%26%26%40%40%26%26%26%26(((%0A%2F%2F%20%20%20%20%20%20%20%20%20%23%23%23%40%40%40%40%40%40%40%26%26%25%40%40%40%40%25%25%26%40%40%40%26%25%25%40%40%40%40%25%26%26%40%40%40%26%26%26%26(((%0A%2F%2F%20%20%20%20%20%20%20%20%20%23%23%23%40%40%40%40%40%40%40%40%40%40%40%40%26%25%40%40%40%40%25%25%26%40%40%40%26%25%25%40%40%40%40%40%40%26%26%26%26(((%0A%2F%2F%20%20%20%20%20%20%20%20%20%23%23%23%40%40%40%40%40%40%40%40%40%26%26%26%40%40%40%26%26%26%40%40%40%40%26%26%40%40%40%40%26%26%40%40%40%26%26%26%26(((%0A%2F%2F%20%20%20%20%20%20%20%20%20%23%23%23%40%40%40%40%40%40%40%25%25%40%40%40%40%25%25%26%40%40%40%26%26%25%40%40%40%40%25%25%26%40%40%40%40%26%26%26%26(((%0A%2F%2F%20%20%20%20%20%20%20%20%20%23%23%23%40%40%40%40%40%40%40%40%40%40%26%25%26%40%40%40%40%25%25%26%40%40%40%26%26%25%40%40%40%40%40%40%40%26%26%26%26(((%0A%2F%2F%20%20%20%20%20%20%20%20%20%23%23%23%40%40%40%40%40%40%40%40%25%25%26%40%40%40%26%25%25%40%40%40%40%25%25%26%40%40%40%40%40%40%40%40%40%26%26%26%26(((%0A%2F%2F%20%20%20%20%20%20%20%20%20%23%23%23%40%40%40%40%40%40%26%25%40%40%40%40%26%25%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%26%26%26%26(((%0A%2F%2F%20%20%20%20%20%20%20%20%20%23%23%23%26%26%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%40%26%26%26%26%26%26(((%0A%2F%2F%20%20%20%20%20%20%20%20%20((%23%23%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26%26((((%0A%2F%2F%20%20%20%20%20%20%20%20%20%20(((((((((((((((((((((((((((((((((((((((((%0A%2F%2F%0A%2F%2F%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20-%3D%20Toast%20Notifs%20%3D-%0A%2F%2F%20%20Did%20you%20want%20alerts%3F%20Notificationss%20that%20are%20easily%20customizable%3F%0A%2F%2F%20%20%20%20%20%20%20%20This%20is%20the%20only%20and%20best%20notification%20extension!%0A%2F%2F%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Created%20by%20MubiLop%20%2B%20themeatly2%0A%0A(function%20(Scratch)%20%7B%0A%20%20%22use%20strict%22%3B%0A%20%20const%20ico%20%3D%20%22data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4IiBzdHlsZT0ic2hhcGUtcmVuZGVyaW5nOmdlb21ldHJpY1ByZWNpc2lvbjsgdGV4dC1yZW5kZXJpbmc6Z2VvbWV0cmljUHJlY2lzaW9uOyBpbWFnZS1yZW5kZXJpbmc6b3B0aW1pemVRdWFsaXR5OyBmaWxsLXJ1bGU6ZXZlbm9kZDsgY2xpcC1ydWxlOmV2ZW5vZGQiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KPGc%2BPHBhdGggc3R5bGU9Im9wYWNpdHk6MC45ODciIGZpbGw9IiNmNzllNjAiIGQ9Ik0gMjI4LjUsLTAuNSBDIDIzMy4xNjcsLTAuNSAyMzcuODMzLC0wLjUgMjQyLjUsLTAuNUMgMjkyLjgzNSwxLjgzNjM4IDM0MC41MDEsMTQuNjY5NyAzODUuNSwzOEMgNDEzLjYxNSw1My4xMTUyIDQzNS40NDksNzQuNjE1MiA0NTEsMTAyLjVDIDQ1NC45NTMsMTEwLjA2NiA0NTcuNDUzLDExOC4wNjYgNDU4LjUsMTI2LjVDIDQ0OC4zOCwxMDEuMTU0IDQzMS4zOCw4MS42NTQxIDQwNy41LDY4QyAzNjcuNTYsNDUuMjYxMyAzMjQuNTYsMzIuNTk0NyAyNzguNSwzMEMgMjYzLjY2MSwyOS4xNzI0IDI0OC45OTQsMjkuMzM5MSAyMzQuNSwzMC41QyAxOTEuNDMsMzIuMjQ0NyAxNTAuNzYzLDQzLjA3OCAxMTIuNSw2M0MgOTQuMjgyLDczLjIxMDkgNzguNDQ4Niw4Ni4zNzc1IDY1LDEwMi41QyA0NS4yNDkyLDEzMS41OTUgNDUuOTE1OCwxNjAuMjYyIDY3LDE4OC41QyA3NS44MTM4LDE5OC43MzYgODUuNDgwNSwyMDguMDY5IDk2LDIxNi41QyA5Ny44NjA1LDIxOC44ODggOTkuMTkzOSwyMjEuNTU0IDEwMCwyMjQuNUMgMTAwLjUsMjkzLjQ5OSAxMDAuNjY3LDM2Mi40OTkgMTAwLjUsNDMxLjVDIDEwMC4wNjksNDQyLjU3OCAxMDAuNTY5LDQ1My41NzggMTAyLDQ2NC41QyAxMDUuMzU1LDQ3MS42ODcgMTEwLjUyMiw0NzcuMDIxIDExNy41LDQ4MC41QyA4OC42OTY0LDQ3My4zNjIgNzIuNjk2NCw0NTUuMDI5IDY5LjUsNDI1LjVDIDY5LjY2NjcsMzYxLjQ5OSA2OS41LDI5Ny40OTkgNjksMjMzLjVDIDQ5LjIyMDIsMjE3LjU5IDM0LjU1MzUsMTk3LjkyMyAyNSwxNzQuNUMgMTQuNDAzNywxMzYuODkgMjIuMDcwNCwxMDMuNTU3IDQ4LDc0LjVDIDc4Ljc4OTcsNDQuMDExNSAxMTUuMjksMjMuMTc4MSAxNTcuNSwxMkMgMTgwLjk3LDUuODY3NDggMjA0LjYzNiwxLjcwMDgyIDIyOC41LC0wLjUgWiIvPjwvZz4KPGc%2BPHBhdGggc3R5bGU9Im9wYWNpdHk6MSIgZmlsbD0iI2Q3N2Q0MSIgZD0iTSAyNDIuNSwtMC41IEMgMjU1LjgzMywtMC41IDI2OS4xNjcsLTAuNSAyODIuNSwtMC41QyAzMzMuOTk4LDIuOTQzMTQgMzgxLjk5OCwxNy43NzY1IDQyNi41LDQ0QyA0NTEuMjU2LDU5LjA4ODMgNDcwLjA5LDc5LjU4ODMgNDgzLDEwNS41QyA0OTcuNjY2LDE0NS41MDEgNDkwLjk5OSwxODEuNTAxIDQ2MywyMTMuNUMgNDU2LjMwMywyMjAuNTMyIDQ0OS4zMDMsMjI3LjE5OCA0NDIsMjMzLjVDIDQ0MS45NzksMzExLjE5MyA0NDEuMzEzLDM4OC44NiA0NDAsNDY2LjVDIDQzMy41NDMsNDkwLjQ1OCA0MTguMzc2LDUwNS40NTggMzk0LjUsNTExLjVDIDMwMS44MzMsNTExLjUgMjA5LjE2Nyw1MTEuNSAxMTYuNSw1MTEuNUMgOTIuNjIzOSw1MDUuNDU4IDc3LjQ1NzIsNDkwLjQ1OCA3MSw0NjYuNUMgNjkuNjM4NCw0NTIuODc0IDY5LjEzODQsNDM5LjIwOCA2OS41LDQyNS41QyA3Mi42OTY0LDQ1NS4wMjkgODguNjk2NCw0NzMuMzYyIDExNy41LDQ4MC41QyAyMDguMTM5LDQ4MS42NTkgMjk4LjgwNSw0ODEuODI2IDM4OS41LDQ4MUMgNDAxLjUxMiw0NzcuNjUyIDQwOC42NzksNDY5LjgxOSA0MTEsNDU3LjVDIDQxMS4zMzMsMzc5LjUgNDExLjY2NywzMDEuNSA0MTIsMjIzLjVDIDQxMi43MjUsMjIxLjA1MSA0MTMuNzI1LDIxOC43MTcgNDE1LDIxNi41QyA0MjQuMjY3LDIwOS4yMzYgNDMyLjkzNCwyMDEuMjM2IDQ0MSwxOTIuNUMgNDU3Ljc3MSwxNzMuNDE2IDQ2My42MDUsMTUxLjQxNiA0NTguNSwxMjYuNUMgNDU3LjQ1MywxMTguMDY2IDQ1NC45NTMsMTEwLjA2NiA0NTEsMTAyLjVDIDQzNS40NDksNzQuNjE1MiA0MTMuNjE1LDUzLjExNTIgMzg1LjUsMzhDIDM0MC41MDEsMTQuNjY5NyAyOTIuODM1LDEuODM2MzggMjQyLjUsLTAuNSBaIi8%2BPC9nPgo8Zz48cGF0aCBzdHlsZT0ib3BhY2l0eToxIiBmaWxsPSIjZmNkOGIzIiBkPSJNIDIzNC41LDMwLjUgQyAyNDguOTk0LDI5LjMzOTEgMjYzLjY2MSwyOS4xNzI0IDI3OC41LDMwQyAzMjQuNTYsMzIuNTk0NyAzNjcuNTYsNDUuMjYxMyA0MDcuNSw2OEMgNDMxLjM4LDgxLjY1NDEgNDQ4LjM4LDEwMS4xNTQgNDU4LjUsMTI2LjVDIDQ2My42MDUsMTUxLjQxNiA0NTcuNzcxLDE3My40MTYgNDQxLDE5Mi41QyA0MzIuOTM0LDIwMS4yMzYgNDI0LjI2NywyMDkuMjM2IDQxNSwyMTYuNUMgNDEzLjcyNSwyMTguNzE3IDQxMi43MjUsMjIxLjA1MSA0MTIsMjIzLjVDIDQxMS42NjcsMzAxLjUgNDExLjMzMywzNzkuNSA0MTEsNDU3LjVDIDQwOC42NzksNDY5LjgxOSA0MDEuNTEyLDQ3Ny42NTIgMzg5LjUsNDgxQyAyOTguODA1LDQ4MS44MjYgMjA4LjEzOSw0ODEuNjU5IDExNy41LDQ4MC41QyAxMTAuNTIyLDQ3Ny4wMjEgMTA1LjM1NSw0NzEuNjg3IDEwMiw0NjQuNUMgMTAwLjU2OSw0NTMuNTc4IDEwMC4wNjksNDQyLjU3OCAxMDAuNSw0MzEuNUMgMTA0LjA4LDQ0MS41NzcgMTExLjA4LDQ0OC4wNzcgMTIxLjUsNDUxQyAyMDAuODMzLDQ1MS42NjcgMjgwLjE2Nyw0NTEuNjY3IDM1OS41LDQ1MUMgMzcwLjM2LDQ0OC4xNCAzNzcuMTkzLDQ0MS4zMDcgMzgwLDQzMC41QyAzODAuMzMzLDM2MS44MzMgMzgwLjY2NywyOTMuMTY3IDM4MSwyMjQuNUMgMzg1LjAzNSwyMTUuNzk2IDM5MS4yMDEsMjA4Ljk2MyAzOTkuNSwyMDRDIDQ0MS43MjksMTYyLjMxMyA0NDAuNzI5LDEyMS42NDYgMzk2LjUsODJDIDM2Ni43MzcsNTkuNDU4NyAzMzMuNDAzLDQ0LjQ1ODcgMjk2LjUsMzdDIDI3Ni4wNjEsMzIuNTMyIDI1NS4zOTQsMzAuMzY1NCAyMzQuNSwzMC41IFoiLz48L2c%2BCjxnPjxwYXRoIHN0eWxlPSJvcGFjaXR5OjEiIGZpbGw9IiNmZWU3YzciIGQ9Ik0gMjM0LjUsMzAuNSBDIDI1NS4zOTQsMzAuMzY1NCAyNzYuMDYxLDMyLjUzMiAyOTYuNSwzN0MgMzMzLjQwMyw0NC40NTg3IDM2Ni43MzcsNTkuNDU4NyAzOTYuNSw4MkMgNDQwLjcyOSwxMjEuNjQ2IDQ0MS43MjksMTYyLjMxMyAzOTkuNSwyMDRDIDM5MS4yMDEsMjA4Ljk2MyAzODUuMDM1LDIxNS43OTYgMzgxLDIyNC41QyAzODAuNjY3LDI5My4xNjcgMzgwLjMzMywzNjEuODMzIDM4MCw0MzAuNUMgMzc3LjE5Myw0NDEuMzA3IDM3MC4zNiw0NDguMTQgMzU5LjUsNDUxQyAyODAuMTY3LDQ1MS42NjcgMjAwLjgzMyw0NTEuNjY3IDEyMS41LDQ1MUMgMTExLjA4LDQ0OC4wNzcgMTA0LjA4LDQ0MS41NzcgMTAwLjUsNDMxLjVDIDEwMC42NjcsMzYyLjQ5OSAxMDAuNSwyOTMuNDk5IDEwMCwyMjQuNUMgOTkuMTkzOSwyMjEuNTU0IDk3Ljg2MDUsMjE4Ljg4OCA5NiwyMTYuNUMgODUuNDgwNSwyMDguMDY5IDc1LjgxMzgsMTk4LjczNiA2NywxODguNUMgNDUuOTE1OCwxNjAuMjYyIDQ1LjI0OTIsMTMxLjU5NSA2NSwxMDIuNUMgNzguNDQ4Niw4Ni4zNzc1IDk0LjI4Miw3My4yMTA5IDExMi41LDYzQyAxNTAuNzYzLDQzLjA3OCAxOTEuNDMsMzIuMjQ0NyAyMzQuNSwzMC41IFoiLz48L2c%2BCjxnPjxwYXRoIHN0eWxlPSJvcGFjaXR5OjEiIGZpbGw9IiNmMmMzOTgiIGQ9Ik0gMTUzLjUsOTguNSBDIDE1OS41MjMsOTcuMTk2NiAxNjMuMTg5LDk5LjUzIDE2NC41LDEwNS41QyAxNjIuMDkxLDExMi43MDIgMTU3LjU5MSwxMTQuMzY5IDE1MSwxMTAuNUMgMTQ4LjUyMywxMDUuNjY5IDE0OS4zNTYsMTAxLjY2OSAxNTMuNSw5OC41IFoiLz48L2c%2BCjxnPjxwYXRoIHN0eWxlPSJvcGFjaXR5OjEiIGZpbGw9IiNmMmM0OTgiIGQ9Ik0gMzMwLjUsMTEyLjUgQyAzMzguMjAxLDExMi4zNjIgMzQxLjM2NywxMTYuMDI5IDM0MCwxMjMuNUMgMzM0LjgzNywxMjkuMDYyIDMzMC4xNzEsMTI4LjcyOSAzMjYsMTIyLjVDIDMyNS40MzgsMTE4LjIzMiAzMjYuOTM4LDExNC44OTggMzMwLjUsMTEyLjUgWiIvPjwvZz4KPGc%2BPHBhdGggc3R5bGU9Im9wYWNpdHk6MSIgZmlsbD0iI2YyYzM5OCIgZD0iTSAxMjQuNSwxNDAuNSBDIDEzMC41MjMsMTM5LjE5NyAxMzQuMTg5LDE0MS41MyAxMzUuNSwxNDcuNUMgMTMzLjA5MSwxNTQuNzAyIDEyOC41OTEsMTU2LjM2OSAxMjIsMTUyLjVDIDExOS41MjMsMTQ3LjY2OSAxMjAuMzU2LDE0My42NjkgMTI0LjUsMTQwLjUgWiIvPjwvZz4KPGc%2BPHBhdGggc3R5bGU9Im9wYWNpdHk6MSIgZmlsbD0iI2YyYzQ5OSIgZD0iTSAzNzQuNSwxNDIuNSBDIDM4NC4xMSwxNDIuOTM2IDM4Ni43NzYsMTQ3LjQzNiAzODIuNSwxNTZDIDM3NC40NjMsMTU5LjYwMSAzNzAuMjk2LDE1Ny4xMDEgMzcwLDE0OC41QyAzNzEuMzMyLDE0Ni4zNCAzNzIuODMyLDE0NC4zNCAzNzQuNSwxNDIuNSBaIi8%2BPC9nPgo8Zz48cGF0aCBzdHlsZT0ib3BhY2l0eToxIiBmaWxsPSIjZjJjNDk4IiBkPSJNIDIwNy41LDE2MS41IEMgMjE1LjE2MSwxNjAuNjYzIDIxOC42NjEsMTYzLjk5NiAyMTgsMTcxLjVDIDIxNC4yOTUsMTc1Ljk4MiAyMDkuOTYyLDE3Ni42NDkgMjA1LDE3My41QyAyMDIuNTIzLDE2OC42NjkgMjAzLjM1NiwxNjQuNjY5IDIwNy41LDE2MS41IFoiLz48L2c%2BCjxnPjxwYXRoIHN0eWxlPSJvcGFjaXR5OjEiIGZpbGw9IiNmMmMzOTciIGQ9Ik0gMzUyLjUsMjE5LjUgQyAzNjEuNjEsMjE5Ljc3MiAzNjQuNDQzLDIyNC4xMDUgMzYxLDIzMi41QyAyOTQuMTY3LDI5OS4zMzMgMjI3LjMzMywzNjYuMTY3IDE2MC41LDQzM0MgMTUxLjg3Niw0MzUuNzEzIDE0OC4wNDMsNDMyLjU0NiAxNDksNDIzLjVDIDIxNy4wMzUsMzU1LjYzMiAyODQuODY4LDI4Ny42MzIgMzUyLjUsMjE5LjUgWiIvPjwvZz4KPGc%2BPHBhdGggc3R5bGU9Im9wYWNpdHk6MSIgZmlsbD0iI2YyYzQ5OCIgZD0iTSAyOTYuNSwyMjEuNSBDIDMwNi4wOTgsMjIyLjM2MiAzMDguNTk4LDIyNy4wMjkgMzA0LDIzNS41QyAyNTcuMTY3LDI4Mi4zMzMgMjEwLjMzMywzMjkuMTY3IDE2My41LDM3NkMgMTU2Ljg2MSwzODAuMTc3IDE1Mi41MjcsMzc4LjUxMSAxNTAuNSwzNzFDIDE1MC41NDIsMzY5LjAzMyAxNTEuMDQyLDM2Ny4xOTkgMTUyLDM2NS41QyAyMDAuMDYyLDMxNy4yNzIgMjQ4LjIyOCwyNjkuMjcyIDI5Ni41LDIyMS41IFoiLz48L2c%2BCjxnPjxwYXRoIHN0eWxlPSJvcGFjaXR5OjEiIGZpbGw9IiNmMmMzOTciIGQ9Ik0gMjMxLjUsMjI5LjUgQyAyNDEuMjQ1LDIyOC40MDUgMjQ0LjQxMSwyMzIuNDA1IDI0MSwyNDEuNUMgMjE3LjE2NywyNjUuMzMzIDE5My4zMzMsMjg5LjE2NyAxNjkuNSwzMTNDIDE2MC44OTQsMzE1LjczMiAxNTcuMDYxLDMxMi41NjYgMTU4LDMwMy41QyAxODIuNzAyLDI3OC45NjUgMjA3LjIwMiwyNTQuMjk5IDIzMS41LDIyOS41IFoiLz48L2c%2BCjxnPjxwYXRoIHN0eWxlPSJvcGFjaXR5OjEiIGZpbGw9IiNmMmMzOTciIGQ9Ik0gMzQ5LjUsMjc2LjUgQyAzNTkuMTQ4LDI3NS40OCAzNjIuMzE1LDI3OS40OCAzNTksMjg4LjVDIDMxMS41LDMzNiAyNjQsMzgzLjUgMjE2LjUsNDMxQyAyMDcuOTI4LDQzMy43NjkgMjA0LjA5NCw0MzAuNjAyIDIwNSw0MjEuNUMgMjUzLjM2OCwzNzMuMjk5IDMwMS41MzUsMzI0Ljk2NSAzNDkuNSwyNzYuNSBaIi8%2BPC9nPgo8Zz48cGF0aCBzdHlsZT0ib3BhY2l0eToxIiBmaWxsPSIjZjJjNDk4IiBkPSJNIDM0My41LDMzOS41IEMgMzUzLjYxNSwzNDAuMTExIDM1Ni4xMTUsMzQ0Ljc3OCAzNTEsMzUzLjVDIDMyNy44MzMsMzc2LjY2NyAzMDQuNjY3LDM5OS44MzMgMjgxLjUsNDIzQyAyNzYuNzQsNDI2Ljc3NyAyNzIuNTczLDQyNi4yNzcgMjY5LDQyMS41QyAyNjguMjEsNDE4LjM2NiAyNjguNTQzLDQxNS4zNjYgMjcwLDQxMi41QyAyOTQuMzk1LDM4Ny45MzggMzE4Ljg5NSwzNjMuNjA1IDM0My41LDMzOS41IFoiLz48L2c%2BCjwvc3ZnPgo%3D%22%3B%0A%0A%20%20function%20defaultStyles()%20%7B%0A%20%20%20%20return%20%7B%0A%20%20%20%20%20%20toast%3A%20%7B%0A%20%20%20%20%20%20%20%20backgroundColour%3A%20null%2C%0A%20%20%20%20%20%20%20%20fontColour%3A%20null%2C%0A%20%20%20%20%20%20%20%20fontSize%3A%20null%2C%0A%20%20%20%20%20%20%20%20borderRadius%3A%20null%2C%0A%20%20%20%20%20%20%20%20padding%3A%20null%2C%0A%20%20%20%20%20%20%20%20soundLink%3A%20null%2C%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20notification%3A%20%7B%0A%20%20%20%20%20%20%20%20backgroundColour%3A%20null%2C%0A%20%20%20%20%20%20%20%20fontColour%3A%20null%2C%0A%20%20%20%20%20%20%20%20fontSize%3A%20null%2C%0A%20%20%20%20%20%20%20%20borderRadius%3A%20null%2C%0A%20%20%20%20%20%20%20%20padding%3A%20null%2C%0A%20%20%20%20%20%20%20%20soundLink%3A%20null%2C%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20alert%3A%20%7B%0A%20%20%20%20%20%20%20%20backgroundColour%3A%20null%2C%0A%20%20%20%20%20%20%20%20fontColour%3A%20null%2C%0A%20%20%20%20%20%20%20%20fontSize%3A%20null%2C%0A%20%20%20%20%20%20%20%20borderRadius%3A%20null%2C%0A%20%20%20%20%20%20%20%20padding%3A%20null%2C%0A%20%20%20%20%20%20%20%20soundLink%3A%20null%2C%0A%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%7D%3B%0A%20%20%7D%0A%0A%20%20var%20toastConfig%20%3D%20%7B%0A%20%20%20%20soundWhenAlertEnabled%3A%20%22true%22%2C%0A%20%20%7D%3B%0A%0A%20%20const%20stylesToast%20%3D%20defaultStyles()%3B%0A%0A%20%20function%20validColour(colour)%20%7B%0A%20%20%20%20if%20(typeof%20colour%20!%3D%20%22string%22)%20return%20false%3B%0A%0A%20%20%20%20const%20hexRegex%20%3D%20%2F%5E%23%5B0-9A-F%5D%7B6%7D%24%2Fi%3B%0A%0A%20%20%20%20return%20hexRegex.test(colour)%3B%0A%20%20%7D%0A%0A%20%20class%20ToastNotifsExt%20%7B%0A%20%20%20%20getInfo()%20%7B%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20id%3A%20%22toastnotifs%22%2C%0A%20%20%20%20%20%20%20%20name%3A%20%22Toast%20Notifs%22%2C%0A%20%20%20%20%20%20%20%20menuIconURI%3A%20ico%2C%0A%20%20%20%20%20%20%20%20blockIconURI%3A%20ico%2C%0A%20%20%20%20%20%20%20%20color1%3A%20%22%23905c1b%22%2C%0A%20%20%20%20%20%20%20%20blocks%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22showToast%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Show%20Toast%20with%20text%20%5BTEXT%5D%20with%20image%20%5BIMAGE%5D%20image%20rounded%3F%20%5BROUNDED%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20TEXT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Toast!%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20IMAGE%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22https%3A%2F%2Fpenguinmod.com%2Fnavicon.png%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ROUNDED%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22yesorno%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22no%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22showNotificationToast%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Show%20Notification%20Toast%20with%20text%20%5BTEXT%5D%20at%20position%20%5BPOSITION%5D%20custom%20css%3F%20%5BSTYLES%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20TEXT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Hello%2C%20World!%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20POSITION%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22position%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22up%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20TYPE%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22type%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20STYLES%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22showAlert%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Show%20Alert%20with%20text%20%5BTEXT%5D%20with%20duration%20of%20%5BDURATION%5D%20seconds%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20TEXT%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Hello!%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20DURATION%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%225%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22__NOOPCODE%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Customization%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setStyleOfTo%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Set%20%5BSTYLE%5D%20of%20%5BALLTYPES%5D%20to%20%5BVALUE%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20STYLE%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22setStyle%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ALLTYPES%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22setStyleAllTypes%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20VALUE%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22resetStyleOf%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Reset%20style%20of%20%5BALLTYPES%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ALLTYPES%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22setStyleAllTypes%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getHexColour%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Colour%20%5BHEX%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20HEX%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.COLOR%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22__NOOPCODE%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Configuration%20(Can%20be%20experimental)%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setConfig%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Set%20config%20%5BCONFIG%5D%20to%20%5BVALUE%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20CONFIG%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22soundWhenAlertEnabled%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22configs%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20VALUE%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22true%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20menus%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20position%3A%20%5B%22up%22%2C%20%22middle%22%2C%20%22down%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20type%3A%20%5B%22info%22%2C%20%22success%22%2C%20%22warning%22%2C%20%22error%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20yesorno%3A%20%5B%22yes%22%2C%20%22no%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20setStyle%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%22background%20colour%22%2C%20value%3A%20%22backgroundColour%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%22font%20colour%22%2C%20value%3A%20%22fontColour%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%22font%20size%22%2C%20value%3A%20%22fontSize%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%22border%20roundness%22%2C%20value%3A%20%22borderRadius%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%22padding%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%22sound%20url%22%2C%20value%3A%20%22soundLink%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20setStyleAllTypes%3A%20%5B%22toast%22%2C%20%22notification%22%2C%20%22alert%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20configs%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%22play%20sound%20when%20alert%22%2C%20value%3A%20%22soundWhenAlertEnabled%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20showNotificationToast(args)%20%7B%0A%20%20%20%20%20%20var%20text%20%3D%20args.TEXT%3B%0A%20%20%20%20%20%20var%20position%20%3D%20args.POSITION%3B%0A%20%20%20%20%20%20var%20type%20%3D%20args.TYPE%3B%0A%0A%20%20%20%20%20%20var%20size%20%3D%20stylesToast%5B%22notification%22%5D.fontSize%20%3F%3F%2016%3B%0A%20%20%20%20%20%20var%20bgColour%20%3D%0A%20%20%20%20%20%20%20%20stylesToast%5B%22notification%22%5D.backgroundColour%20%3F%3F%20%22rgba(0%2C%200%2C%200%2C%200.8)%22%3B%0A%20%20%20%20%20%20var%20borderRadius%20%3D%20stylesToast%5B%22notification%22%5D.borderRadius%20%3F%3F%205%3B%0A%20%20%20%20%20%20var%20padding%20%3D%20stylesToast%5B%22notification%22%5D.padding%20%3F%3F%2010%3B%0A%20%20%20%20%20%20var%20fontColour%20%3D%20stylesToast%5B%22notification%22%5D.fontColour%20%3F%3F%20%22%23FFFFFF%22%3B%0A%0A%20%20%20%20%20%20var%20styles%20%3D%20args.STYLES%3B%0A%0A%20%20%20%20%20%20var%20existingStyle%20%3D%20document.getElementById(%22notificationToastStyle%22)%3B%0A%20%20%20%20%20%20if%20(existingStyle)%20%7B%0A%20%20%20%20%20%20%20%20existingStyle.remove()%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20var%20notificationToastStyle%20%3D%20document.createElement(%22style%22)%3B%0A%20%20%20%20%20%20notificationToastStyle.id%20%3D%20%22notificationToastStyle%22%3B%0A%20%20%20%20%20%20notificationToastStyle.textContent%20%3D%20%60%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.notification-toast%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20position%3A%20fixed%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20z-index%3A%209999%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20right%3A%2010px%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20padding%3A%20%24%7Bpadding%7Dpx%20%24%7Bpadding%20*%202%7Dpx%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20border-radius%3A%20%24%7BborderRadius%7Dpx%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20font-family%3A%20Arial%2C%20sans-serif%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20font-size%3A%20%24%7Bsize%7Dpx%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20color%3A%20%24%7BfontColour%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20background-color%3A%20%24%7BbgColour%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20animation%3A%20slideIn%200.5s%20ease-in-out%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24%7Bstyles%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.notification-toast.up%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20top%3A%2010px%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.notification-toast.middle%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20top%3A%2050%25%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translateY(-50%25)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.notification-toast.down%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20bottom%3A%2010px%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.notification-toast.info%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20color%3A%20%232196F3%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.notification-toast.success%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20color%3A%20%234CAF50%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.notification-toast.warning%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20color%3A%20%23FFEB3B%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.notification-toast.error%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20color%3A%20%23F44336%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.notification-toast%20.line%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20border-top%3A%203px%20solid%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20margin-bottom%3A%205px%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.notification-toast%20.close-button%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20position%3A%20absolute%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20top%3A%205px%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20right%3A%205px%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cursor%3A%20pointer%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.notification-toast%20.close-button%3Ahover%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20color%3A%20%23fff%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%40keyframes%20slideIn%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20from%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20right%3A%20-300px%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20to%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20right%3A%2010px%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%40keyframes%20fadeOut%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20from%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20opacity%3A%201%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20to%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20opacity%3A%200%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%60%3B%0A%20%20%20%20%20%20document.head.appendChild(notificationToastStyle)%3B%0A%0A%20%20%20%20%20%20var%20notificationToast%20%3D%20document.createElement(%22div%22)%3B%0A%20%20%20%20%20%20notificationToast.className%20%3D%20%60notification-toast%20%24%7Bposition%7D%20%24%7Btype%7D%60%3B%0A%20%20%20%20%20%20notificationToast.innerHTML%20%3D%20%60%3Cspan%20class%3D%22close-button%22%3E%C3%97%3C%2Fspan%3E%3Cdiv%20class%3D%22line%20%24%7Btype%7D%22%3E%3C%2Fdiv%3E%24%7Btext%7D%60%3B%0A%20%20%20%20%20%20document.body.appendChild(notificationToast)%3B%0A%0A%20%20%20%20%20%20if%20(toastConfig%5B%22soundWhenAlertEnabled%22%5D%20%3D%3D%20%22true%22)%20%7B%0A%20%20%20%20%20%20%20%20var%20audioLink%20%3D%0A%20%20%20%20%20%20%20%20%20%20stylesToast%5B%22notification%22%5D.soundLink%20%3F%3F%0A%20%20%20%20%20%20%20%20%20%20%22https%3A%2F%2Fruby-devs.vercel.app%2Fcdn%2Fappear.mp3%22%3B%0A%20%20%20%20%20%20%20%20var%20audio%20%3D%20new%20Audio(audioLink)%3B%0A%20%20%20%20%20%20%20%20audio.play()%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20var%20closeButton%20%3D%20notificationToast.querySelector(%22.close-button%22)%3B%0A%20%20%20%20%20%20closeButton.addEventListener(%22click%22%2C%20function%20()%20%7B%0A%20%20%20%20%20%20%20%20notificationToast.classList.add(%22fade-out%22)%3B%0A%20%20%20%20%20%20%20%20setTimeout(function%20()%20%7B%0A%20%20%20%20%20%20%20%20%20%20notificationToast.remove()%3B%0A%20%20%20%20%20%20%20%20%20%20notificationToastStyle.remove()%3B%0A%20%20%20%20%20%20%20%20%7D%2C%20500)%3B%0A%20%20%20%20%20%20%7D)%3B%0A%0A%20%20%20%20%20%20setTimeout(function%20()%20%7B%0A%20%20%20%20%20%20%20%20notificationToast.classList.add(%22fade-out%22)%3B%0A%0A%20%20%20%20%20%20%20%20setTimeout(function%20()%20%7B%0A%20%20%20%20%20%20%20%20%20%20notificationToast.remove()%3B%0A%20%20%20%20%20%20%20%20%20%20notificationToastStyle.remove()%3B%0A%20%20%20%20%20%20%20%20%7D%2C%20500)%3B%0A%20%20%20%20%20%20%7D%2C%205000)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20showToast(args)%20%7B%0A%20%20%20%20%20%20let%20round%3B%0A%20%20%20%20%20%20var%20text%20%3D%20args.TEXT%3B%0A%20%20%20%20%20%20var%20image%20%3D%20args.IMAGE%3B%0A%20%20%20%20%20%20var%20isRounded%20%3D%20args.ROUNDED%3B%0A%20%20%20%20%20%20var%20existingStyle%20%3D%20document.getElementById(%22toastStyle%22)%3B%0A%0A%20%20%20%20%20%20var%20size%20%3D%20stylesToast%5B%22toast%22%5D.fontSize%20%3F%3F%2018%3B%0A%20%20%20%20%20%20var%20bgColour%20%3D%20stylesToast%5B%22toast%22%5D.backgroundColour%20%3F%3F%20%22%23333%22%3B%0A%20%20%20%20%20%20var%20borderRadius%20%3D%20stylesToast%5B%22toast%22%5D.borderRadius%20%3F%3F%2010%3B%0A%20%20%20%20%20%20var%20padding%20%3D%20stylesToast%5B%22toast%22%5D.padding%20%3F%3F%2020%3B%0A%20%20%20%20%20%20var%20fontColour%20%3D%20stylesToast%5B%22toast%22%5D.fontColour%20%3F%3F%20%22%23FFFFFF%22%3B%0A%0A%20%20%20%20%20%20if%20(existingStyle)%20%7B%0A%20%20%20%20%20%20%20%20existingStyle.remove()%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20if%20(isRounded%20%3D%3D%3D%20%22yes%22)%20%7B%0A%20%20%20%20%20%20%20%20round%20%3D%20%22border-radius%3A%2050%25%3B%22%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20var%20toastStyle%20%3D%20document.createElement(%22style%22)%3B%0A%20%20%20%20%20%20toastStyle.id%20%3D%20%22toastStyle%22%3B%0A%20%20%20%20%20%20toastStyle.textContent%20%3D%20%60%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23toast%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20position%3A%20fixed%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20z-index%3A%209999%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20top%3A%20-100px%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20left%3A%2050%25%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translateX(-50%25)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20background-color%3A%20%24%7BbgColour%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20color%3A%20%24%7BfontColour%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20padding%3A%20%24%7Bpadding%7Dpx%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20border-radius%3A%20%24%7BborderRadius%7Dpx%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20font-family%3A%20Arial%2C%20sans-serif%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20font-size%3A%20%24%7Bsize%7Dpx%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20display%3A%20flex%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20align-items%3A%20center%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20transition%3A%20top%200.5s%20ease%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23toast%20img%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20width%3A%2064px%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20height%3A%2064px%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20margin-right%3A%2010px%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24%7Bround%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23toast%20.points%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20margin-left%3A%2010px%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%60%3B%0A%20%20%20%20%20%20document.head.appendChild(toastStyle)%3B%0A%0A%20%20%20%20%20%20var%20toast%20%3D%20document.createElement(%22div%22)%3B%0A%20%20%20%20%20%20toast.id%20%3D%20%22toast%22%3B%0A%0A%20%20%20%20%20%20if%20(image)%20%7B%0A%20%20%20%20%20%20%20%20var%20img%20%3D%20document.createElement(%22img%22)%3B%0A%20%20%20%20%20%20%20%20img.src%20%3D%20image%3B%0A%20%20%20%20%20%20%20%20img.width%20%3D%2064%3B%0A%20%20%20%20%20%20%20%20img.height%20%3D%2064%3B%0A%20%20%20%20%20%20%20%20toast.appendChild(img)%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20var%20content%20%3D%20document.createElement(%22div%22)%3B%0A%20%20%20%20%20%20content.style.display%20%3D%20%22flex%22%3B%0A%20%20%20%20%20%20content.style.alignItems%20%3D%20%22center%22%3B%0A%20%20%20%20%20%20content.textContent%20%3D%20text%3B%0A%20%20%20%20%20%20toast.appendChild(content)%3B%0A%0A%20%20%20%20%20%20document.body.appendChild(toast)%3B%0A%0A%20%20%20%20%20%20if%20(toastConfig%5B%22soundWhenAlertEnabled%22%5D%20%3D%3D%20%22true%22)%20%7B%0A%20%20%20%20%20%20%20%20var%20audioLink%20%3D%0A%20%20%20%20%20%20%20%20%20%20stylesToast%5B%22toast%22%5D.soundLink%20%3F%3F%0A%20%20%20%20%20%20%20%20%20%20%22https%3A%2F%2Fruby-devs.vercel.app%2Fcdn%2Fappear.mp3%22%3B%0A%20%20%20%20%20%20%20%20var%20audio%20%3D%20new%20Audio(audioLink)%3B%0A%20%20%20%20%20%20%20%20audio.play()%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20setTimeout(function%20()%20%7B%0A%20%20%20%20%20%20%20%20toast.style.top%20%3D%20%220%22%3B%0A%20%20%20%20%20%20%7D%2C%20100)%3B%0A%0A%20%20%20%20%20%20setTimeout(function%20()%20%7B%0A%20%20%20%20%20%20%20%20toast.style.top%20%3D%20%22-100px%22%3B%0A%20%20%20%20%20%20%20%20setTimeout(function%20()%20%7B%0A%20%20%20%20%20%20%20%20%20%20toast.remove()%3B%0A%20%20%20%20%20%20%20%20%20%20toastStyle.remove()%3B%0A%20%20%20%20%20%20%20%20%7D%2C%20500)%3B%0A%20%20%20%20%20%20%7D%2C%202000)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20showAlert(args)%20%7B%0A%20%20%20%20%20%20var%20text%20%3D%20args.TEXT%3B%0A%20%20%20%20%20%20var%20type%20%3D%20args.TYPE%3B%0A%20%20%20%20%20%20var%20duration%20%3D%20args.DURATION%3B%20%2F%2F%20New%20argument%20for%20duration%0A%0A%20%20%20%20%20%20var%20size%20%3D%20stylesToast%5B%22alert%22%5D.fontSize%20%3F%3F%2016%3B%0A%20%20%20%20%20%20var%20bgColour%20%3D%20stylesToast%5B%22alert%22%5D.backgroundColour%20%3F%3F%20%22%232196F3%22%3B%0A%20%20%20%20%20%20var%20borderRadius%20%3D%20stylesToast%5B%22alert%22%5D.borderRadius%20%3F%3F%205%3B%0A%20%20%20%20%20%20var%20padding%20%3D%20stylesToast%5B%22alert%22%5D.padding%20%3F%3F%2020%3B%0A%20%20%20%20%20%20var%20fontColour%20%3D%20stylesToast%5B%22alert%22%5D.fontColour%20%3F%3F%20%22%23FFFFFF%22%3B%0A%0A%20%20%20%20%20%20var%20alertStyle%20%3D%20document.createElement(%22style%22)%3B%0A%20%20%20%20%20%20alertStyle.id%20%3D%20%22alertStyle%22%3B%0A%20%20%20%20%20%20alertStyle.textContent%20%3D%20%60%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.alert%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20position%3A%20fixed%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20top%3A%2050%25%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20left%3A%2050%25%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20transform%3A%20translate(-50%25%2C%20-50%25)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20padding%3A%20%24%7Bpadding%7Dpx%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20border-radius%3A%20%24%7BborderRadius%7Dpx%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20background-color%3A%20%24%7BbgColour%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20color%3A%20%24%7BfontColour%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20font-family%3A%20Arial%2C%20sans-serif%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20font-size%3A%20%24%7Bsize%7Dpx%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20z-index%3A%209999%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20opacity%3A%200%3B%20%2F*%20Initially%20transparent%20*%2F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20animation%3A%20fadeIn%200.5s%20ease-in%20forwards%3B%20%2F*%20Fade%20in%20animation%20*%2F%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%40keyframes%20fadeIn%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20from%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20opacity%3A%200%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20to%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20opacity%3A%201%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%40keyframes%20fadeOut%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20from%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20opacity%3A%201%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20to%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20opacity%3A%200%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%60%3B%0A%20%20%20%20%20%20document.head.appendChild(alertStyle)%3B%0A%0A%20%20%20%20%20%20var%20alert%20%3D%20document.createElement(%22div%22)%3B%0A%20%20%20%20%20%20alert.className%20%3D%20%60alert%20%24%7Btype%7D%60%3B%0A%20%20%20%20%20%20alert.textContent%20%3D%20text%3B%0A%20%20%20%20%20%20document.body.appendChild(alert)%3B%0A%0A%20%20%20%20%20%20if%20(toastConfig%5B%22soundWhenAlertEnabled%22%5D%20%3D%3D%20%22true%22)%20%7B%0A%20%20%20%20%20%20%20%20var%20audioLink%20%3D%0A%20%20%20%20%20%20%20%20%20%20stylesToast%5B%22alert%22%5D.soundLink%20%3F%3F%0A%20%20%20%20%20%20%20%20%20%20%22https%3A%2F%2Fruby-devs.vercel.app%2Fcdn%2Fappear.mp3%22%3B%0A%20%20%20%20%20%20%20%20var%20audio%20%3D%20new%20Audio(audioLink)%3B%0A%0A%20%20%20%20%20%20%20%20audio.play()%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%2F%2F%20Schedule%20removal%20of%20the%20alert%20after%20duration%0A%20%20%20%20%20%20setTimeout(function%20()%20%7B%0A%20%20%20%20%20%20%20%20alert.style.animation%20%3D%20%22fadeOut%200.5s%20ease-out%20forwards%22%3B%20%2F%2F%20Apply%20fade-out%20animation%0A%20%20%20%20%20%20%20%20setTimeout(function%20()%20%7B%0A%20%20%20%20%20%20%20%20%20%20alert.remove()%3B%0A%20%20%20%20%20%20%20%20%20%20alertStyle.remove()%3B%0A%20%20%20%20%20%20%20%20%7D%2C%20500)%3B%20%2F%2F%20Wait%20for%20fade-out%20animation%20to%20complete%20before%20removing%0A%20%20%20%20%20%20%7D%2C%20duration%20*%201000)%3B%20%2F%2F%20Convert%20duration%20to%20milliseconds%0A%20%20%20%20%7D%0A%0A%20%20%20%20setStyleOfTo(args)%20%7B%0A%20%20%20%20%20%20const%20cast%20%3D%20Scratch.Cast%3B%0A%20%20%20%20%20%20const%20styleNumbers%20%3D%20%5B%22fontSize%22%2C%20%22borderRadius%22%2C%20%22padding%22%5D%3B%0A%0A%20%20%20%20%20%20var%20style%20%3D%20args.STYLE%3B%0A%20%20%20%20%20%20var%20alltypes%20%3D%20args.ALLTYPES%3B%0A%20%20%20%20%20%20var%20value%20%3D%20args.VALUE%3B%0A%0A%20%20%20%20%20%20if%20(value%20%3D%3D%20%22%22)%20%7B%0A%20%20%20%20%20%20%20%20value%20%3D%20null%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20if%20(styleNumbers.includes(style))%20%7B%0A%20%20%20%20%20%20%20%20stylesToast%5Balltypes%5D%5Bstyle%5D%20%3D%20cast.toNumber(value)%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(style%20%3D%3D%20%22backgroundColour%22%20%7C%7C%20style%20%3D%3D%20%22fontColour%22)%20%7B%0A%20%20%20%20%20%20%20%20stylesToast%5Balltypes%5D%5Bstyle%5D%20%3D%20validColour(value)%20%3F%20value%20%3A%20null%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20stylesToast%5Balltypes%5D%5Bstyle%5D%20%3D%20value%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20resetStyleOf(args)%20%7B%0A%20%20%20%20%20%20const%20alltypes%20%3D%20args.ALLTYPES%3B%0A%20%20%20%20%20%20stylesToast%5Balltypes%5D%20%3D%20defaultStyles()%5Balltypes%5D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20getStyleOf(args)%20%7B%0A%20%20%20%20%20%20const%20alltypes%20%3D%20args.ALLTYPES%3B%0A%20%20%20%20%20%20const%20style%20%3D%20stylesToast%5Balltypes%5D%3B%0A%20%20%20%20%20%20return%20style%20%3D%3D%20null%20%3F%20%22undefined%22%20%3A%20style%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20getHexColour(args)%20%7B%0A%20%20%20%20%20%20return%20args.HEX%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setConfig(args)%20%7B%0A%20%20%20%20%20%20const%20configname%20%3D%20args.CONFIG%3B%0A%20%20%20%20%20%20toastConfig%5Bconfigname%5D%20%3D%20args.VALUE%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20Scratch.extensions.register(new%20ToastNotifsExt())%3B%0A%7D)(Scratch)%3B","data:application/javascript,%2F%2F%20Name%3A%20Cloudlink%0A%2F%2F%20ID%3A%20cloudlink%0A%2F%2F%20Description%3A%20Powerful%20WebSocket%20extension%20for%20Scratch%203.%0A%2F%2F%20By%3A%20MikeDEV%0A%0A%2F%2F%20Copy%20of%20S4-0_nosuite.js%20as%20of%2010%2F31%2F2022%0A%2F*%20eslint-disable%20*%2F%0A%0A(function%20(Scratch)%20%7B%0A%09var%20servers%20%3D%20%7B%7D%3B%20%2F%2F%20Server%20list%0A%09let%20mWS%20%3D%20null%3B%0A%20%20%0A%09%2F%2F%20Get%20the%20server%20URL%20list%0A%09try%20%7B%0A%09%20%20Scratch.fetch(%0A%09%09%22https%3A%2F%2Fraw.githubusercontent.com%2FMikeDev101%2Fcloudlink%2Fmaster%2Fserverlist.json%22%0A%09%20%20)%0A%09%09.then((response)%20%3D%3E%20%7B%0A%09%09%20%20return%20response.text()%3B%0A%09%09%7D)%0A%09%09.then((data)%20%3D%3E%20%7B%0A%09%09%20%20servers%20%3D%20JSON.parse(data)%3B%0A%09%09%7D)%0A%09%09.catch((err)%20%3D%3E%20%7B%0A%09%09%20%20console.log(err)%3B%0A%09%09%20%20servers%20%3D%20%7B%7D%3B%0A%09%09%7D)%3B%0A%09%7D%20catch%20(err)%20%7B%0A%09%20%20console.log(err)%3B%0A%09%20%20servers%20%3D%20%7B%7D%3B%0A%09%7D%0A%20%20%0A%09function%20find_id(ID%2C%20ulist)%20%7B%0A%09%20%20%2F%2F%20Thanks%20StackOverflow!%0A%09%20%20if%20(jsonCheck(ID)%20%26%26%20!intCheck(ID))%20%7B%0A%09%09return%20ulist.some(%0A%09%09%20%20(o)%20%3D%3E%0A%09%09%09o.username%20%3D%3D%3D%20JSON.parse(ID).username%20%26%26%20o.id%20%3D%3D%20JSON.parse(ID).id%0A%09%09)%3B%0A%09%20%20%7D%20else%20%7B%0A%09%09return%20ulist.some((o)%20%3D%3E%20o.username%20%3D%3D%3D%20String(ID)%20%7C%7C%20o.id%20%3D%3D%20ID)%3B%0A%09%20%20%7D%0A%09%7D%0A%20%20%0A%09function%20jsonCheck(JSON_STRING)%20%7B%0A%09%20%20try%20%7B%0A%09%09JSON.parse(JSON_STRING)%3B%0A%09%09return%20true%3B%0A%09%20%20%7D%20catch%20(err)%20%7B%0A%09%09return%20false%3B%0A%09%20%20%7D%0A%09%7D%0A%20%20%0A%09function%20intCheck(value)%20%7B%0A%09%20%20return%20!isNaN(value)%3B%0A%09%7D%0A%20%20%0A%09function%20autoConvert(value)%20%7B%0A%09%20%20%2F%2F%20Check%20if%20the%20value%20is%20JSON%20%2F%20Dict%20first%0A%09%20%20try%20%7B%0A%09%09JSON.parse(value)%3B%0A%09%09return%20JSON.parse(value)%3B%0A%09%20%20%7D%20catch%20(err)%20%7B%7D%0A%20%20%0A%09%20%20%2F%2F%20Check%20if%20the%20value%20is%20an%20array%0A%09%20%20try%20%7B%0A%09%09tmp%20%3D%20value%3B%0A%09%09tmp%20%3D%20tmp.replace(%2F'%2Fg%2C%20'%22')%3B%0A%09%09JSON.parse(tmp)%3B%0A%09%09return%20JSON.parse(tmp)%3B%0A%09%20%20%7D%20catch%20(err)%20%7B%7D%0A%20%20%0A%09%20%20%2F%2F%20Check%20if%20an%20int%2Ffloat%0A%09%20%20if%20(!isNaN(value))%20%7B%0A%09%09return%20Number(value)%3B%0A%09%20%20%7D%0A%20%20%0A%09%20%20%2F%2F%20Leave%20as%20the%20original%20value%20if%20none%20of%20the%20above%20work%0A%09%20%20return%20value%3B%0A%09%7D%0A%20%20%0A%09class%20CloudLink%20%7B%0A%09%20%20constructor(runtime%2C%20extensionId)%20%7B%0A%09%09%2F%2F%20Extension%20stuff%0A%09%09this.runtime%20%3D%20runtime%3B%0A%09%09this.cl_icon%20%3D%0A%09%09%20%20%22data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIyMjUuMzU0OCIgaGVpZ2h0PSIyMjUuMzU0OCIgdmlld0JveD0iMCwwLDIyNS4zNTQ4LDIyNS4zNTQ4Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTI3LjMyMjYsLTY3LjMyMjYpIj48ZyBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpc1BhaW50aW5nTGF5ZXImcXVvdDs6dHJ1ZX0iIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9ImJ1dHQiIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWRhc2hhcnJheT0iIiBzdHJva2UtZGFzaG9mZnNldD0iMCIgc3R5bGU9Im1peC1ibGVuZC1tb2RlOiBub3JtYWwiPjxwYXRoIGQ9Ik0xMjcuMzIyNiwxODBjMCwtNjIuMjMwMDEgNTAuNDQ3MzksLTExMi42Nzc0IDExMi42Nzc0LC0xMTIuNjc3NGM2Mi4yMzAwMSwwIDExMi42Nzc0LDUwLjQ0NzM5IDExMi42Nzc0LDExMi42Nzc0YzAsNjIuMjMwMDEgLTUwLjQ0NzM5LDExMi42Nzc0IC0xMTIuNjc3NCwxMTIuNjc3NGMtNjIuMjMwMDEsMCAtMTEyLjY3NzQsLTUwLjQ0NzM5IC0xMTIuNjc3NCwtMTEyLjY3NzR6IiBmaWxsPSIjMDBjMjhjIiBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZS13aWR0aD0iMCIvPjxnIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlLXdpZHRoPSIxIj48cGF0aCBkPSJNMjg2LjEyMDM3LDE1MC41NTc5NWMyMy4yNDA4NiwwIDQyLjA3ODksMTguODM5NDYgNDIuMDc4OSw0Mi4wNzg5YzAsMjMuMjM5NDQgLTE4LjgzODAzLDQyLjA3ODkgLTQyLjA3ODksNDIuMDc4OWgtOTIuMjQwNzRjLTIzLjI0MDg2LDAgLTQyLjA3ODksLTE4LjgzOTQ2IC00Mi4wNzg5LC00Mi4wNzg5YzAsLTIzLjIzOTQ0IDE4LjgzODAzLC00Mi4wNzg5IDQyLjA3ODksLTQyLjA3ODloNC4xODg4N2MxLjgxMTUzLC0yMS41NzA1NSAxOS44OTM1NywtMzguNTEyODkgNDEuOTMxNSwtMzguNTEyODljMjIuMDM3OTMsMCA0MC4xMTk5NywxNi45NDIzNCA0MS45MzE1LDM4LjUxMjg5eiIgZmlsbD0iI2ZmZmZmZiIvPjxwYXRoIGQ9Ik0yODkuMDg2NTUsMjEwLjM0MTE0djkuMDQ2NjdoLTI2LjkxNjYzaC05LjA0NjY3di05LjA0NjY3di01NC41MDMzOWg5LjA0NjY3djU0LjUwMzM5eiIgZmlsbD0iIzAwYzI4YyIvPjxwYXRoIGQ9Ik0yMjIuNDA5MjUsMjE5LjM4NzgxYy04LjM1MzIsMCAtMTYuMzY0MzEsLTMuMzE4MzQgLTIyLjI3MDksLTkuMjI0OTJjLTUuOTA2NjEsLTUuOTA2NTggLTkuMjI0OTEsLTEzLjkxNzY4IC05LjIyNDkxLC0yMi4yNzA4OWMwLC04LjM1MzIgMy4zMTgyOSwtMTYuMzY0MzEgOS4yMjQ5MSwtMjIuMjcwOWM1LjkwNjU5LC01LjkwNjYxIDEzLjkxNzcsLTkuMjI0OTEgMjIuMjcwOSwtOS4yMjQ5MWgyMS4xMDg5djguOTM0OThoLTIxLjEwODl2MC4xMDI1N2MtNS45NTYyOCwwIC0xMS42Njg2NCwyLjM2NjE2IC0xNS44ODAzNyw2LjU3Nzg5Yy00LjIxMTczLDQuMjExNzMgLTYuNTc3ODksOS45MjQwOCAtNi41Nzc4OSwxNS44ODAzN2MwLDUuOTU2MjggMi4zNjYxNiwxMS42Njg2NCA2LjU3Nzg5LDE1Ljg4MDM3YzQuMjExNzMsNC4yMTE3MyA5LjkyNDA4LDYuNTc3OTMgMTUuODgwMzcsNi41Nzc5M3YwLjEwMjUzaDIxLjEwODl2OC45MzQ5OHoiIGZpbGw9IiMwMGMyOGMiLz48L2c%2BPC9nPjwvZz48L3N2Zz48IS0tcm90YXRpb25DZW50ZXI6MTEyLjY3NzQwNDA4NDA4MzkyOjExMi42Nzc0MDQwODQwODQwMy0tPg%3D%3D%22%3B%0A%09%09this.cl_block%20%3D%0A%09%09%20%20%22data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIxNzYuMzk4NTQiIGhlaWdodD0iMTIyLjY3MDY5IiB2aWV3Qm94PSIwLDAsMTc2LjM5ODU0LDEyMi42NzA2OSI%2BPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTE1MS44MDA3MywtMTE4LjY2NDY2KSI%2BPGcgZGF0YS1wYXBlci1kYXRhPSJ7JnF1b3Q7aXNQYWludGluZ0xheWVyJnF1b3Q7OnRydWV9IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0iYnV0dCIgc3Ryb2tlLWxpbmVqb2luPSJtaXRlciIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiBzdHJva2UtZGFzaGFycmF5PSIiIHN0cm9rZS1kYXNob2Zmc2V0PSIwIiBzdHlsZT0ibWl4LWJsZW5kLW1vZGU6IG5vcm1hbCI%2BPGc%2BPHBhdGggZD0iTTI4Ni4xMjAzNywxNTcuMTc3NTVjMjMuMjQwODYsMCA0Mi4wNzg5LDE4LjgzOTQ2IDQyLjA3ODksNDIuMDc4OWMwLDIzLjIzOTQ0IC0xOC44MzgwMyw0Mi4wNzg5IC00Mi4wNzg5LDQyLjA3ODloLTkyLjI0MDc0Yy0yMy4yNDA4NiwwIC00Mi4wNzg5LC0xOC44Mzk0NiAtNDIuMDc4OSwtNDIuMDc4OWMwLC0yMy4yMzk0NCAxOC44MzgwMywtNDIuMDc4OSA0Mi4wNzg5LC00Mi4wNzg5aDQuMTg4ODdjMS44MTE1MywtMjEuNTcwNTUgMTkuODkzNTcsLTM4LjUxMjg5IDQxLjkzMTUsLTM4LjUxMjg5YzIyLjAzNzkzLDAgNDAuMTE5OTcsMTYuOTQyMzQgNDEuOTMxNSwzOC41MTI4OXoiIGZpbGw9IiNmZmZmZmYiLz48cGF0aCBkPSJNMjg5LjA4NjU1LDIxNi45NjA3NHY5LjA0NjY3aC0yNi45MTY2M2gtOS4wNDY2N3YtOS4wNDY2N3YtNTQuNTAzMzloOS4wNDY2N3Y1NC41MDMzOXoiIGZpbGw9IiMwMGMyOGMiLz48cGF0aCBkPSJNMjIyLjQwOTI1LDIyNi4wMDc0MWMtOC4zNTMyLDAgLTE2LjM2NDMxLC0zLjMxODM0IC0yMi4yNzA5LC05LjIyNDkyYy01LjkwNjYxLC01LjkwNjU4IC05LjIyNDkxLC0xMy45MTc2OCAtOS4yMjQ5MSwtMjIuMjcwODljMCwtOC4zNTMyIDMuMzE4MjksLTE2LjM2NDMxIDkuMjI0OTEsLTIyLjI3MDljNS45MDY1OSwtNS45MDY2MSAxMy45MTc3LC05LjIyNDkxIDIyLjI3MDksLTkuMjI0OTFoMjEuMTA4OXY4LjkzNDk4aC0yMS4xMDg5djAuMTAyNTdjLTUuOTU2MjgsMCAtMTEuNjY4NjQsMi4zNjYxNiAtMTUuODgwMzcsNi41Nzc4OWMtNC4yMTE3Myw0LjIxMTczIC02LjU3Nzg5LDkuOTI0MDggLTYuNTc3ODksMTUuODgwMzdjMCw1Ljk1NjI4IDIuMzY2MTYsMTEuNjY4NjQgNi41Nzc4OSwxNS44ODAzN2M0LjIxMTczLDQuMjExNzMgOS45MjQwOCw2LjU3NzkzIDE1Ljg4MDM3LDYuNTc3OTN2MC4xMDI1M2gyMS4xMDg5djguOTM0OTh6IiBmaWxsPSIjMDBjMjhjIi8%2BPC9nPjwvZz48L2c%2BPC9zdmc%2BPCEtLXJvdGF0aW9uQ2VudGVyOjg4LjE5OTI2OTk5OTk5OTk4OjYxLjMzNTM0NDk5OTk5OTk5LS0%2B%22%3B%0A%20%20%0A%09%09%2F%2F%20Socket%20data%0A%09%09this.socketData%20%3D%20%7B%0A%09%09%20%20gmsg%3A%20%5B%5D%2C%0A%09%09%20%20pmsg%3A%20%5B%5D%2C%0A%09%09%20%20direct%3A%20%5B%5D%2C%0A%09%09%20%20statuscode%3A%20%5B%5D%2C%0A%09%09%20%20gvar%3A%20%5B%5D%2C%0A%09%09%20%20pvar%3A%20%5B%5D%2C%0A%09%09%20%20motd%3A%20%22%22%2C%0A%09%09%20%20client_ip%3A%20%22%22%2C%0A%09%09%20%20ulist%3A%20%5B%5D%2C%0A%09%09%20%20server_version%3A%20%22%22%2C%0A%09%09%7D%3B%0A%09%09this.varData%20%3D%20%7B%0A%09%09%20%20gvar%3A%20%7B%7D%2C%0A%09%09%20%20pvar%3A%20%7B%7D%2C%0A%09%09%7D%3B%0A%20%20%0A%09%09this.queueableCmds%20%3D%20%5B%0A%09%09%20%20%22gmsg%22%2C%0A%09%09%20%20%22pmsg%22%2C%0A%09%09%20%20%22gvar%22%2C%0A%09%09%20%20%22pvar%22%2C%0A%09%09%20%20%22direct%22%2C%0A%09%09%20%20%22statuscode%22%2C%0A%09%09%5D%3B%0A%09%09this.varCmds%20%3D%20%5B%22gvar%22%2C%20%22pvar%22%5D%3B%0A%20%20%0A%09%09%2F%2F%20Listeners%0A%09%09this.socketListeners%20%3D%20%7B%7D%3B%0A%09%09this.socketListenersData%20%3D%20%7B%7D%3B%0A%09%09this.newSocketData%20%3D%20%7B%0A%09%09%20%20gmsg%3A%20false%2C%0A%09%09%20%20pmsg%3A%20false%2C%0A%09%09%20%20direct%3A%20false%2C%0A%09%09%20%20statuscode%3A%20false%2C%0A%09%09%20%20gvar%3A%20false%2C%0A%09%09%20%20pvar%3A%20false%2C%0A%09%09%7D%3B%0A%20%20%0A%09%09%2F%2F%20Edge-triggered%20hat%20blocks%0A%09%09this.connect_hat%20%3D%200%3B%0A%09%09this.packet_hat%20%3D%200%3B%0A%09%09this.close_hat%20%3D%200%3B%0A%20%20%0A%09%09%2F%2F%20Status%20stuff%0A%09%09this.isRunning%20%3D%20false%3B%0A%09%09this.isLinked%20%3D%20false%3B%0A%09%09this.version%20%3D%20%22S4.0%22%3B%0A%09%09this.link_status%20%3D%200%3B%0A%09%09this.username%20%3D%20%22%22%3B%0A%09%09this.tmp_username%20%3D%20%22%22%3B%0A%09%09this.isUsernameSyncing%20%3D%20false%3B%0A%09%09this.isUsernameSet%20%3D%20false%3B%0A%09%09this.disconnectWasClean%20%3D%20false%3B%0A%09%09this.wasConnectionDropped%20%3D%20false%3B%0A%09%09this.didConnectionFail%20%3D%20false%3B%0A%09%09this.protocolOk%20%3D%20false%3B%0A%20%20%0A%09%09%2F%2F%20Listeners%20stuff%0A%09%09this.enableListener%20%3D%20false%3B%0A%09%09this.setListener%20%3D%20%22%22%3B%0A%20%20%0A%09%09%2F%2F%20Rooms%20stuff%0A%09%09this.enableRoom%20%3D%20false%3B%0A%09%09this.isRoomSetting%20%3D%20false%3B%0A%09%09this.selectRoom%20%3D%20%22%22%3B%0A%20%20%0A%09%09%2F%2F%20Remapping%20stuff%0A%09%09this.menuRemap%20%3D%20%7B%0A%09%09%20%20%22Global%20data%22%3A%20%22gmsg%22%2C%0A%09%09%20%20%22Private%20data%22%3A%20%22pmsg%22%2C%0A%09%09%20%20%22Global%20variables%22%3A%20%22gvar%22%2C%0A%09%09%20%20%22Private%20variables%22%3A%20%22pvar%22%2C%0A%09%09%20%20%22Direct%20data%22%3A%20%22direct%22%2C%0A%09%09%20%20%22Status%20code%22%3A%20%22statuscode%22%2C%0A%09%09%20%20%22All%20data%22%3A%20%22all%22%2C%0A%09%09%7D%3B%0A%09%20%20%7D%0A%20%20%0A%09%20%20getInfo()%20%7B%0A%09%09return%20%7B%0A%09%09%20%20id%3A%20%22cloudlink%22%2C%0A%09%09%20%20name%3A%20%22CloudLink%22%2C%0A%09%09%20%20blockIconURI%3A%20this.cl_block%2C%0A%09%09%20%20menuIconURI%3A%20this.cl_icon%2C%0A%09%09%20%20docsURI%3A%20%22https%3A%2F%2Fhackmd.io%2F%40MikeDEV%2FHJiNYwOfo%22%2C%0A%09%09%20%20blocks%3A%20%5B%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22returnGlobalData%22%2C%0A%09%09%09%20%20blockType%3A%20%22reporter%22%2C%0A%09%09%09%20%20text%3A%20%22Global%20data%22%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22returnPrivateData%22%2C%0A%09%09%09%20%20blockType%3A%20%22reporter%22%2C%0A%09%09%09%20%20text%3A%20%22Private%20data%22%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22returnDirectData%22%2C%0A%09%09%09%20%20blockType%3A%20%22reporter%22%2C%0A%09%09%09%20%20text%3A%20%22Direct%20Data%22%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22returnLinkData%22%2C%0A%09%09%09%20%20blockType%3A%20%22reporter%22%2C%0A%09%09%09%20%20text%3A%20%22Link%20status%22%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22returnStatusCode%22%2C%0A%09%09%09%20%20blockType%3A%20%22reporter%22%2C%0A%09%09%09%20%20text%3A%20%22Status%20code%22%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22returnUserListData%22%2C%0A%09%09%09%20%20blockType%3A%20%22reporter%22%2C%0A%09%09%09%20%20text%3A%20%22Usernames%22%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22returnUsernameData%22%2C%0A%09%09%09%20%20blockType%3A%20%22reporter%22%2C%0A%09%09%09%20%20text%3A%20%22My%20username%22%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22returnVersionData%22%2C%0A%09%09%09%20%20blockType%3A%20%22reporter%22%2C%0A%09%09%09%20%20text%3A%20%22Extension%20version%22%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22returnServerVersion%22%2C%0A%09%09%09%20%20blockType%3A%20%22reporter%22%2C%0A%09%09%09%20%20text%3A%20%22Server%20version%22%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22returnServerList%22%2C%0A%09%09%09%20%20blockType%3A%20%22reporter%22%2C%0A%09%09%09%20%20text%3A%20%22Server%20list%22%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22returnMOTD%22%2C%0A%09%09%09%20%20blockType%3A%20%22reporter%22%2C%0A%09%09%09%20%20text%3A%20%22Server%20MOTD%22%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22returnClientIP%22%2C%0A%09%09%09%20%20blockType%3A%20%22reporter%22%2C%0A%09%09%09%20%20text%3A%20%22My%20IP%20address%22%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22returnListenerData%22%2C%0A%09%09%09%20%20blockType%3A%20%22reporter%22%2C%0A%09%09%09%20%20text%3A%20%22Response%20for%20listener%20%5BID%5D%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09ID%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22example-listener%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22readQueueSize%22%2C%0A%09%09%09%20%20blockType%3A%20%22reporter%22%2C%0A%09%09%09%20%20text%3A%20%22Size%20of%20queue%20for%20%5BTYPE%5D%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09TYPE%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20menu%3A%20%22allmenu%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22All%20data%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22readQueueData%22%2C%0A%09%09%09%20%20blockType%3A%20%22reporter%22%2C%0A%09%09%09%20%20text%3A%20%22Packet%20queue%20for%20%5BTYPE%5D%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09TYPE%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20menu%3A%20%22allmenu%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22All%20data%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22returnVarData%22%2C%0A%09%09%09%20%20blockType%3A%20%22reporter%22%2C%0A%09%09%09%20%20text%3A%20%22%5BTYPE%5D%20%5BVAR%5D%20data%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09VAR%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22Apple%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%09TYPE%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20menu%3A%20%22varmenu%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22Global%20variables%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22parseJSON%22%2C%0A%09%09%09%20%20blockType%3A%20%22reporter%22%2C%0A%09%09%09%20%20text%3A%20%22%5BPATH%5D%20of%20%5BJSON_STRING%5D%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09PATH%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22fruit%2Fapples%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%09JSON_STRING%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%0A%09%09%09%09%09'%7B%22fruit%22%3A%20%7B%22apples%22%3A%202%2C%20%22bananas%22%3A%203%7D%2C%20%22total_fruit%22%3A%205%7D'%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22getFromJSONArray%22%2C%0A%09%09%09%20%20blockType%3A%20%22reporter%22%2C%0A%09%09%09%20%20text%3A%20%22Get%20%5BNUM%5D%20from%20JSON%20array%20%5BARRAY%5D%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09NUM%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22number%22%2C%0A%09%09%09%09%20%20defaultValue%3A%200%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%09ARRAY%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20'%5B%22foo%22%2C%22bar%22%5D'%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22fetchURL%22%2C%0A%09%09%09%20%20blockType%3A%20%22reporter%22%2C%0A%09%09%09%20%20blockAllThreads%3A%20%22true%22%2C%0A%09%09%09%20%20text%3A%20%22Fetch%20data%20from%20URL%20%5Burl%5D%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09url%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22https%3A%2F%2Fextensions.turbowarp.org%2Fhello.txt%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22requestURL%22%2C%0A%09%09%09%20%20blockType%3A%20%22reporter%22%2C%0A%09%09%09%20%20blockAllThreads%3A%20%22true%22%2C%0A%09%09%09%20%20text%3A%20%22Send%20request%20with%20method%20%5Bmethod%5D%20for%20URL%20%5Burl%5D%20with%20data%20%5Bdata%5D%20and%20headers%20%5Bheaders%5D%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09method%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22GET%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%09url%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22https%3A%2F%2Fextensions.turbowarp.org%2Fhello.txt%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%09data%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22%7B%7D%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%09headers%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22%7B%7D%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22makeJSON%22%2C%0A%09%09%09%20%20blockType%3A%20%22reporter%22%2C%0A%09%09%09%20%20text%3A%20%22Convert%20%5BtoBeJSONified%5D%20to%20JSON%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09toBeJSONified%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20'%7B%22test%22%3A%20true%7D'%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22onConnect%22%2C%0A%09%09%09%20%20blockType%3A%20%22hat%22%2C%0A%09%09%09%20%20text%3A%20%22When%20connected%22%2C%0A%09%09%09%20%20blockAllThreads%3A%20%22true%22%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22onClose%22%2C%0A%09%09%09%20%20blockType%3A%20%22hat%22%2C%0A%09%09%09%20%20text%3A%20%22When%20disconnected%22%2C%0A%09%09%09%20%20blockAllThreads%3A%20%22true%22%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22onListener%22%2C%0A%09%09%09%20%20blockType%3A%20%22hat%22%2C%0A%09%09%09%20%20text%3A%20%22When%20I%20receive%20new%20packet%20with%20listener%20%5BID%5D%22%2C%0A%09%09%09%20%20blockAllThreads%3A%20%22true%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09ID%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22example-listener%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22onNewPacket%22%2C%0A%09%09%09%20%20blockType%3A%20%22hat%22%2C%0A%09%09%09%20%20text%3A%20%22When%20I%20receive%20new%20%5BTYPE%5D%20packet%22%2C%0A%09%09%09%20%20blockAllThreads%3A%20%22true%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09TYPE%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20menu%3A%20%22almostallmenu%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22Global%20data%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22onNewVar%22%2C%0A%09%09%09%20%20blockType%3A%20%22hat%22%2C%0A%09%09%09%20%20text%3A%20%22When%20I%20receive%20new%20%5BTYPE%5D%20data%20for%20%5BVAR%5D%22%2C%0A%09%09%09%20%20blockAllThreads%3A%20%22true%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09TYPE%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20menu%3A%20%22varmenu%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22Global%20variables%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%09VAR%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22Apple%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22getComState%22%2C%0A%09%09%09%20%20blockType%3A%20%22Boolean%22%2C%0A%09%09%09%20%20text%3A%20%22Connected%3F%22%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22getRoomState%22%2C%0A%09%09%09%20%20blockType%3A%20%22Boolean%22%2C%0A%09%09%09%20%20text%3A%20%22Linked%20to%20rooms%3F%22%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22getComLostConnectionState%22%2C%0A%09%09%09%20%20blockType%3A%20%22Boolean%22%2C%0A%09%09%09%20%20text%3A%20%22Lost%20connection%3F%22%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22getComFailedConnectionState%22%2C%0A%09%09%09%20%20blockType%3A%20%22Boolean%22%2C%0A%09%09%09%20%20text%3A%20%22Failed%20to%20connnect%3F%22%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22getUsernameState%22%2C%0A%09%09%09%20%20blockType%3A%20%22Boolean%22%2C%0A%09%09%09%20%20text%3A%20%22Username%20synced%3F%22%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22returnIsNewData%22%2C%0A%09%09%09%20%20blockType%3A%20%22Boolean%22%2C%0A%09%09%09%20%20text%3A%20%22Got%20New%20%5BTYPE%5D%3F%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09TYPE%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20menu%3A%20%22datamenu%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22Global%20data%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22returnIsNewVarData%22%2C%0A%09%09%09%20%20blockType%3A%20%22Boolean%22%2C%0A%09%09%09%20%20text%3A%20%22Got%20New%20%5BTYPE%5D%20data%20for%20variable%20%5BVAR%5D%3F%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09TYPE%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20menu%3A%20%22varmenu%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22Global%20variables%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%09VAR%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22Apple%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22returnIsNewListener%22%2C%0A%09%09%09%20%20blockType%3A%20%22Boolean%22%2C%0A%09%09%09%20%20text%3A%20%22Got%20new%20packet%20with%20listener%20%5BID%5D%3F%22%2C%0A%09%09%09%20%20blockAllThreads%3A%20%22true%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09ID%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22example-listener%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22checkForID%22%2C%0A%09%09%09%20%20blockType%3A%20%22Boolean%22%2C%0A%09%09%09%20%20text%3A%20%22ID%20%5BID%5D%20connected%3F%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09ID%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22Another%20name%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22isValidJSON%22%2C%0A%09%09%09%20%20blockType%3A%20%22Boolean%22%2C%0A%09%09%09%20%20text%3A%20%22Is%20%5BJSON_STRING%5D%20valid%20JSON%3F%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09JSON_STRING%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%0A%09%09%09%09%09'%7B%22fruit%22%3A%20%7B%22apples%22%3A%202%2C%20%22bananas%22%3A%203%7D%2C%20%22total_fruit%22%3A%205%7D'%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22openSocket%22%2C%0A%09%09%09%20%20blockType%3A%20%22command%22%2C%0A%09%09%09%20%20text%3A%20%22Connect%20to%20%5BIP%5D%22%2C%0A%09%09%09%20%20blockAllThreads%3A%20%22true%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09IP%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22ws%3A%2F%2F127.0.0.1%3A3000%2F%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22openSocketPublicServers%22%2C%0A%09%09%09%20%20blockType%3A%20%22command%22%2C%0A%09%09%09%20%20text%3A%20%22Connect%20to%20server%20%5BID%5D%22%2C%0A%09%09%09%20%20blockAllThreads%3A%20%22true%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09ID%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22number%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22closeSocket%22%2C%0A%09%09%09%20%20blockType%3A%20%22command%22%2C%0A%09%09%09%20%20blockAllThreads%3A%20%22true%22%2C%0A%09%09%09%20%20text%3A%20%22Disconnect%22%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22setMyName%22%2C%0A%09%09%09%20%20blockType%3A%20%22command%22%2C%0A%09%09%09%20%20text%3A%20%22Set%20%5BNAME%5D%20as%20username%22%2C%0A%09%09%09%20%20blockAllThreads%3A%20%22true%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09NAME%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22A%20name%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22createListener%22%2C%0A%09%09%09%20%20blockType%3A%20%22command%22%2C%0A%09%09%09%20%20text%3A%20%22Attach%20listener%20%5BID%5D%20to%20next%20packet%22%2C%0A%09%09%09%20%20blockAllThreads%3A%20%22true%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09ID%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22example-listener%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22linkToRooms%22%2C%0A%09%09%09%20%20blockType%3A%20%22command%22%2C%0A%09%09%09%20%20text%3A%20%22Link%20to%20room(s)%20%5BROOMS%5D%22%2C%0A%09%09%09%20%20blockAllThreads%3A%20%22true%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09ROOMS%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20'%5B%22test%22%5D'%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22selectRoomsInNextPacket%22%2C%0A%09%09%09%20%20blockType%3A%20%22command%22%2C%0A%09%09%09%20%20text%3A%20%22Select%20room(s)%20%5BROOMS%5D%20for%20next%20packet%22%2C%0A%09%09%09%20%20blockAllThreads%3A%20%22true%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09ROOMS%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20'%5B%22test%22%5D'%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22unlinkFromRooms%22%2C%0A%09%09%09%20%20blockType%3A%20%22command%22%2C%0A%09%09%09%20%20text%3A%20%22Unlink%20from%20all%20rooms%22%2C%0A%09%09%09%20%20blockAllThreads%3A%20%22true%22%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22sendGData%22%2C%0A%09%09%09%20%20blockType%3A%20%22command%22%2C%0A%09%09%09%20%20text%3A%20%22Send%20%5BDATA%5D%22%2C%0A%09%09%09%20%20blockAllThreads%3A%20%22true%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09DATA%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22Apple%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22sendPData%22%2C%0A%09%09%09%20%20blockType%3A%20%22command%22%2C%0A%09%09%09%20%20text%3A%20%22Send%20%5BDATA%5D%20to%20%5BID%5D%22%2C%0A%09%09%09%20%20blockAllThreads%3A%20%22true%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09DATA%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22Apple%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%09ID%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22Another%20name%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22sendGDataAsVar%22%2C%0A%09%09%09%20%20blockType%3A%20%22command%22%2C%0A%09%09%09%20%20text%3A%20%22Send%20variable%20%5BVAR%5D%20with%20data%20%5BDATA%5D%22%2C%0A%09%09%09%20%20blockAllThreads%3A%20%22true%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09DATA%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22Banana%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%09VAR%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22Apple%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22sendPDataAsVar%22%2C%0A%09%09%09%20%20blockType%3A%20%22command%22%2C%0A%09%09%09%20%20text%3A%20%22Send%20variable%20%5BVAR%5D%20to%20%5BID%5D%20with%20data%20%5BDATA%5D%22%2C%0A%09%09%09%20%20blockAllThreads%3A%20%22true%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09DATA%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22Banana%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%09ID%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22Another%20name%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%09VAR%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22Apple%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22runCMDnoID%22%2C%0A%09%09%09%20%20blockType%3A%20%22command%22%2C%0A%09%09%09%20%20text%3A%20%22Send%20command%20without%20ID%20%5BCMD%5D%20%5BDATA%5D%22%2C%0A%09%09%09%20%20blockAllThreads%3A%20%22true%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09CMD%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22direct%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%09DATA%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22val%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22runCMD%22%2C%0A%09%09%09%20%20blockType%3A%20%22command%22%2C%0A%09%09%09%20%20text%3A%20%22Send%20command%20%5BCMD%5D%20%5BID%5D%20%5BDATA%5D%22%2C%0A%09%09%09%20%20blockAllThreads%3A%20%22true%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09CMD%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22direct%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%09ID%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22id%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%09DATA%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22val%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22resetNewData%22%2C%0A%09%09%09%20%20blockType%3A%20%22command%22%2C%0A%09%09%09%20%20text%3A%20%22Reset%20got%20new%20%5BTYPE%5D%20status%22%2C%0A%09%09%09%20%20blockAllThreads%3A%20%22true%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09TYPE%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20menu%3A%20%22datamenu%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22Global%20data%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22resetNewVarData%22%2C%0A%09%09%09%20%20blockType%3A%20%22command%22%2C%0A%09%09%09%20%20text%3A%20%22Reset%20got%20new%20%5BTYPE%5D%20%5BVAR%5D%20status%22%2C%0A%09%09%09%20%20blockAllThreads%3A%20%22true%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09TYPE%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20menu%3A%20%22varmenu%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22Global%20variables%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%09VAR%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22Apple%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22resetNewListener%22%2C%0A%09%09%09%20%20blockType%3A%20%22command%22%2C%0A%09%09%09%20%20text%3A%20%22Reset%20got%20new%20%5BID%5D%20listener%20status%22%2C%0A%09%09%09%20%20blockAllThreads%3A%20%22true%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09ID%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22example-listener%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%09%7B%0A%09%09%09%20%20opcode%3A%20%22clearAllPackets%22%2C%0A%09%09%09%20%20blockType%3A%20%22command%22%2C%0A%09%09%09%20%20text%3A%20%22Clear%20all%20packets%20for%20%5BTYPE%5D%22%2C%0A%09%09%09%20%20arguments%3A%20%7B%0A%09%09%09%09TYPE%3A%20%7B%0A%09%09%09%09%20%20type%3A%20%22string%22%2C%0A%09%09%09%09%20%20menu%3A%20%22allmenu%22%2C%0A%09%09%09%09%20%20defaultValue%3A%20%22All%20data%22%2C%0A%09%09%09%09%7D%2C%0A%09%09%09%20%20%7D%2C%0A%09%09%09%7D%2C%0A%09%09%20%20%5D%2C%0A%09%09%20%20menus%3A%20%7B%0A%09%09%09coms%3A%20%7B%0A%09%09%09%20%20items%3A%20%5B%22Connected%22%2C%20%22Username%20synced%22%5D%2C%0A%09%09%09%7D%2C%0A%09%09%09datamenu%3A%20%7B%0A%09%09%09%20%20items%3A%20%5B%0A%09%09%09%09%22Global%20data%22%2C%0A%09%09%09%09%22Private%20data%22%2C%0A%09%09%09%09%22Direct%20data%22%2C%0A%09%09%09%09%22Status%20code%22%2C%0A%09%09%09%20%20%5D%2C%0A%09%09%09%7D%2C%0A%09%09%09varmenu%3A%20%7B%0A%09%09%09%20%20items%3A%20%5B%22Global%20variables%22%2C%20%22Private%20variables%22%5D%2C%0A%09%09%09%7D%2C%0A%09%09%09allmenu%3A%20%7B%0A%09%09%09%20%20items%3A%20%5B%0A%09%09%09%09%22Global%20data%22%2C%0A%09%09%09%09%22Private%20data%22%2C%0A%09%09%09%09%22Direct%20data%22%2C%0A%09%09%09%09%22Status%20code%22%2C%0A%09%09%09%09%22Global%20variables%22%2C%0A%09%09%09%09%22Private%20variables%22%2C%0A%09%09%09%09%22All%20data%22%2C%0A%09%09%09%20%20%5D%2C%0A%09%09%09%7D%2C%0A%09%09%09almostallmenu%3A%20%7B%0A%09%09%09%20%20items%3A%20%5B%0A%09%09%09%09%22Global%20data%22%2C%0A%09%09%09%09%22Private%20data%22%2C%0A%09%09%09%09%22Direct%20data%22%2C%0A%09%09%09%09%22Status%20code%22%2C%0A%09%09%09%09%22Global%20variables%22%2C%0A%09%09%09%09%22Private%20variables%22%2C%0A%09%09%09%20%20%5D%2C%0A%09%09%09%7D%2C%0A%09%09%20%20%7D%2C%0A%09%09%7D%3B%0A%09%20%20%7D%0A%20%20%0A%09%20%20%2F%2F%20Code%20for%20blocks%20go%20here%0A%20%20%0A%09%20%20returnGlobalData()%20%7B%0A%09%09if%20(this.socketData.gmsg.length%20!%3D%200)%20%7B%0A%09%09%20%20let%20data%20%3D%20this.socketData.gmsg%5Bthis.socketData.gmsg.length%20-%201%5D.val%3B%0A%20%20%0A%09%09%20%20if%20(typeof%20data%20%3D%3D%20%22object%22)%20%7B%0A%09%09%09data%20%3D%20JSON.stringify(data)%3B%20%2F%2F%20Make%20the%20JSON%20safe%20for%20Scratch%0A%09%09%20%20%7D%0A%20%20%0A%09%09%20%20return%20data%3B%0A%09%09%7D%20else%20%7B%0A%09%09%20%20return%20%22%22%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20returnPrivateData()%20%7B%0A%09%09if%20(this.socketData.pmsg.length%20!%3D%200)%20%7B%0A%09%09%20%20let%20data%20%3D%20this.socketData.pmsg%5Bthis.socketData.pmsg.length%20-%201%5D.val%3B%0A%20%20%0A%09%09%20%20if%20(typeof%20data%20%3D%3D%20%22object%22)%20%7B%0A%09%09%09data%20%3D%20JSON.stringify(data)%3B%20%2F%2F%20Make%20the%20JSON%20safe%20for%20Scratch%0A%09%09%20%20%7D%0A%20%20%0A%09%09%20%20return%20data%3B%0A%09%09%7D%20else%20%7B%0A%09%09%20%20return%20%22%22%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20returnDirectData()%20%7B%0A%09%09if%20(this.socketData.direct.length%20!%3D%200)%20%7B%0A%09%09%20%20let%20data%20%3D%0A%09%09%09this.socketData.direct%5Bthis.socketData.direct.length%20-%201%5D.val%3B%0A%20%20%0A%09%09%20%20if%20(typeof%20data%20%3D%3D%20%22object%22)%20%7B%0A%09%09%09data%20%3D%20JSON.stringify(data)%3B%20%2F%2F%20Make%20the%20JSON%20safe%20for%20Scratch%0A%09%09%20%20%7D%0A%20%20%0A%09%09%20%20return%20data%3B%0A%09%09%7D%20else%20%7B%0A%09%09%20%20return%20%22%22%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20returnLinkData()%20%7B%0A%09%09return%20String(this.link_status)%3B%0A%09%20%20%7D%0A%20%20%0A%09%20%20returnStatusCode()%20%7B%0A%09%09if%20(this.socketData.statuscode.length%20!%3D%200)%20%7B%0A%09%09%20%20let%20data%20%3D%0A%09%09%09this.socketData.statuscode%5Bthis.socketData.statuscode.length%20-%201%5D%0A%09%09%09%20%20.code%3B%0A%20%20%0A%09%09%20%20if%20(typeof%20data%20%3D%3D%20%22object%22)%20%7B%0A%09%09%09data%20%3D%20JSON.stringify(data)%3B%20%2F%2F%20Make%20the%20JSON%20safe%20for%20Scratch%0A%09%09%20%20%7D%0A%20%20%0A%09%09%20%20return%20data%3B%0A%09%09%7D%20else%20%7B%0A%09%09%20%20return%20%22%22%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20returnUserListData()%20%7B%0A%09%09return%20JSON.stringify(this.socketData.ulist)%3B%0A%09%20%20%7D%0A%20%20%0A%09%20%20returnUsernameData()%20%7B%0A%09%09let%20data%20%3D%20this.username%3B%0A%20%20%0A%09%09if%20(typeof%20data%20%3D%3D%20%22object%22)%20%7B%0A%09%09%20%20data%20%3D%20JSON.stringify(data)%3B%20%2F%2F%20Make%20the%20JSON%20safe%20for%20Scratch%0A%09%09%7D%0A%20%20%0A%09%09return%20data%3B%0A%09%20%20%7D%0A%20%20%0A%09%20%20returnVersionData()%20%7B%0A%09%09return%20String(this.version)%3B%0A%09%20%20%7D%0A%20%20%0A%09%20%20returnServerVersion()%20%7B%0A%09%09return%20String(this.socketData.server_version)%3B%0A%09%20%20%7D%0A%20%20%0A%09%20%20returnServerList()%20%7B%0A%09%09return%20JSON.stringify(servers)%3B%0A%09%20%20%7D%0A%20%20%0A%09%20%20returnMOTD()%20%7B%0A%09%09return%20String(this.socketData.motd)%3B%0A%09%20%20%7D%0A%20%20%0A%09%20%20returnClientIP()%20%7B%0A%09%09return%20String(this.socketData.client_ip)%3B%0A%09%20%20%7D%0A%20%20%0A%09%20%20returnListenerData(%7B%20ID%20%7D)%20%7B%0A%09%09const%20self%20%3D%20this%3B%0A%09%09if%20(this.isRunning%20%26%26%20this.socketListeners.hasOwnProperty(String(ID)))%20%7B%0A%09%09%20%20return%20JSON.stringify(this.socketListenersData%5BID%5D)%3B%0A%09%09%7D%20else%20%7B%0A%09%09%20%20return%20%22%7B%7D%22%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20readQueueSize(%7B%20TYPE%20%7D)%20%7B%0A%09%09if%20(this.menuRemap%5BString(TYPE)%5D%20%3D%3D%20%22all%22)%20%7B%0A%09%09%20%20let%20tmp_size%20%3D%200%3B%0A%09%09%20%20tmp_size%20%3D%20tmp_size%20%2B%20this.socketData.gmsg.length%3B%0A%09%09%20%20tmp_size%20%3D%20tmp_size%20%2B%20this.socketData.pmsg.length%3B%0A%09%09%20%20tmp_size%20%3D%20tmp_size%20%2B%20this.socketData.direct.length%3B%0A%09%09%20%20tmp_size%20%3D%20tmp_size%20%2B%20this.socketData.statuscode.length%3B%0A%09%09%20%20tmp_size%20%3D%20tmp_size%20%2B%20this.socketData.gvar.length%3B%0A%09%09%20%20tmp_size%20%3D%20tmp_size%20%2B%20this.socketData.pvar.length%3B%0A%09%09%20%20return%20tmp_size%3B%0A%09%09%7D%20else%20%7B%0A%09%09%20%20return%20this.socketData%5Bthis.menuRemap%5BString(TYPE)%5D%5D.length%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20readQueueData(%7B%20TYPE%20%7D)%20%7B%0A%09%09if%20(this.menuRemap%5BString(TYPE)%5D%20%3D%3D%20%22all%22)%20%7B%0A%09%09%20%20let%20tmp_socketData%20%3D%20JSON.parse(JSON.stringify(this.socketData))%3B%20%2F%2F%20Deep%20copy%0A%20%20%0A%09%09%20%20delete%20tmp_socketData.motd%3B%0A%09%09%20%20delete%20tmp_socketData.client_ip%3B%0A%09%09%20%20delete%20tmp_socketData.ulist%3B%0A%09%09%20%20delete%20tmp_socketData.server_version%3B%0A%20%20%0A%09%09%20%20return%20JSON.stringify(tmp_socketData)%3B%0A%09%09%7D%20else%20%7B%0A%09%09%20%20return%20JSON.stringify(this.socketData%5Bthis.menuRemap%5BString(TYPE)%5D%5D)%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20returnVarData(%7B%20TYPE%2C%20VAR%20%7D)%20%7B%0A%09%09if%20(this.isRunning)%20%7B%0A%09%09%20%20if%20(this.varData.hasOwnProperty(this.menuRemap%5BTYPE%5D))%20%7B%0A%09%09%09if%20(this.varData%5Bthis.menuRemap%5BTYPE%5D%5D.hasOwnProperty(VAR))%20%7B%0A%09%09%09%20%20return%20this.varData%5Bthis.menuRemap%5BTYPE%5D%5D%5BVAR%5D.value%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%20%20return%20%22%22%3B%0A%09%09%09%7D%0A%09%09%20%20%7D%20else%20%7B%0A%09%09%09return%20%22%22%3B%0A%09%09%20%20%7D%0A%09%09%7D%20else%20%7B%0A%09%09%20%20return%20%22%22%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20parseJSON(%7B%20PATH%2C%20JSON_STRING%20%7D)%20%7B%0A%09%09try%20%7B%0A%09%09%20%20const%20path%20%3D%20PATH.toString()%0A%09%09%09.split(%22%2F%22)%0A%09%09%09.map((prop)%20%3D%3E%20decodeURIComponent(prop))%3B%0A%09%09%20%20if%20(path%5B0%5D%20%3D%3D%3D%20%22%22)%20path.splice(0%2C%201)%3B%0A%09%09%20%20if%20(path%5Bpath.length%20-%201%5D%20%3D%3D%3D%20%22%22)%20path.splice(-1%2C%201)%3B%0A%09%09%20%20let%20json%3B%0A%09%09%20%20try%20%7B%0A%09%09%09json%20%3D%20JSON.parse(%22%20%22%20%2B%20JSON_STRING)%3B%0A%09%09%20%20%7D%20catch%20(e)%20%7B%0A%09%09%09return%20e.message%3B%0A%09%09%20%20%7D%0A%09%09%20%20path.forEach((prop)%20%3D%3E%20(json%20%3D%20json%5Bprop%5D))%3B%0A%09%09%20%20if%20(json%20%3D%3D%3D%20null)%20return%20%22null%22%3B%0A%09%09%20%20else%20if%20(json%20%3D%3D%3D%20undefined)%20return%20%22%22%3B%0A%09%09%20%20else%20if%20(typeof%20json%20%3D%3D%3D%20%22object%22)%20return%20JSON.stringify(json)%3B%0A%09%09%20%20else%20return%20json.toString()%3B%0A%09%09%7D%20catch%20(err)%20%7B%0A%09%09%20%20return%20%22%22%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20getFromJSONArray(%7B%20NUM%2C%20ARRAY%20%7D)%20%7B%0A%09%09var%20json_array%20%3D%20JSON.parse(ARRAY)%3B%0A%09%09if%20(json_array%5BNUM%5D%20%3D%3D%20%22undefined%22)%20%7B%0A%09%09%20%20return%20%22%22%3B%0A%09%09%7D%20else%20%7B%0A%09%09%20%20let%20data%20%3D%20json_array%5BNUM%5D%3B%0A%20%20%0A%09%09%20%20if%20(typeof%20data%20%3D%3D%20%22object%22)%20%7B%0A%09%09%09data%20%3D%20JSON.stringify(data)%3B%20%2F%2F%20Make%20the%20JSON%20safe%20for%20Scratch%0A%09%09%20%20%7D%0A%20%20%0A%09%09%20%20return%20data%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20fetchURL(args)%20%7B%0A%09%09return%20Scratch.fetch(args.url%2C%20%7B%0A%09%09%20%20method%3A%20%22GET%22%2C%0A%09%09%7D).then((response)%20%3D%3E%20response.text())%3B%0A%09%20%20%7D%0A%20%20%0A%09%20%20requestURL(args)%20%7B%0A%09%09if%20(args.method%20%3D%3D%20%22GET%22%20%7C%7C%20args.method%20%3D%3D%20%22HEAD%22)%20%7B%0A%09%09%20%20return%20Scratch.fetch(args.url%2C%20%7B%0A%09%09%09method%3A%20args.method%2C%0A%09%09%09headers%3A%20JSON.parse(args.headers)%2C%0A%09%09%20%20%7D).then((response)%20%3D%3E%20response.text())%3B%0A%09%09%7D%20else%20%7B%0A%09%09%20%20return%20Scratch.fetch(args.url%2C%20%7B%0A%09%09%09method%3A%20args.method%2C%0A%09%09%09headers%3A%20JSON.parse(args.headers)%2C%0A%09%09%09body%3A%20JSON.parse(args.data)%2C%0A%09%09%20%20%7D).then((response)%20%3D%3E%20response.text())%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20isValidJSON(%7B%20JSON_STRING%20%7D)%20%7B%0A%09%09return%20jsonCheck(JSON_STRING)%3B%0A%09%20%20%7D%0A%20%20%0A%09%20%20makeJSON(%7B%20toBeJSONified%20%7D)%20%7B%0A%09%09if%20(typeof%20toBeJSONified%20%3D%3D%20%22string%22)%20%7B%0A%09%09%20%20try%20%7B%0A%09%09%09JSON.parse(toBeJSONified)%3B%0A%09%09%09return%20String(toBeJSONified)%3B%0A%09%09%20%20%7D%20catch%20(err)%20%7B%0A%09%09%09return%20%22Not%20JSON!%22%3B%0A%09%09%20%20%7D%0A%09%09%7D%20else%20if%20(typeof%20toBeJSONified%20%3D%3D%20%22object%22)%20%7B%0A%09%09%20%20return%20JSON.stringify(toBeJSONified)%3B%0A%09%09%7D%20else%20%7B%0A%09%09%20%20return%20%22Not%20JSON!%22%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20onConnect()%20%7B%0A%09%09const%20self%20%3D%20this%3B%0A%09%09if%20(self.connect_hat%20%3D%3D%200%20%26%26%20self.isRunning%20%26%26%20self.protocolOk)%20%7B%0A%09%09%20%20self.connect_hat%20%3D%201%3B%0A%09%09%20%20return%20true%3B%0A%09%09%7D%20else%20%7B%0A%09%09%20%20return%20false%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20onClose()%20%7B%0A%09%09const%20self%20%3D%20this%3B%0A%09%09if%20(self.close_hat%20%3D%3D%200%20%26%26%20!self.isRunning)%20%7B%0A%09%09%20%20self.close_hat%20%3D%201%3B%0A%09%09%20%20return%20true%3B%0A%09%09%7D%20else%20%7B%0A%09%09%20%20return%20false%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20onListener(%7B%20ID%20%7D)%20%7B%0A%09%09const%20self%20%3D%20this%3B%0A%09%09if%20(this.isRunning%20%26%26%20this.socketListeners.hasOwnProperty(String(ID)))%20%7B%0A%09%09%20%20if%20(self.socketListeners%5BString(ID)%5D)%20%7B%0A%09%09%09self.socketListeners%5BString(ID)%5D%20%3D%20false%3B%0A%09%09%09return%20true%3B%0A%09%09%20%20%7D%20else%20%7B%0A%09%09%09return%20false%3B%0A%09%09%20%20%7D%0A%09%09%7D%20else%20%7B%0A%09%09%20%20return%20false%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20onNewPacket(%7B%20TYPE%20%7D)%20%7B%0A%09%09const%20self%20%3D%20this%3B%0A%09%09if%20(this.isRunning%20%26%26%20this.newSocketData%5Bthis.menuRemap%5BString(TYPE)%5D%5D)%20%7B%0A%09%09%20%20self.newSocketData%5Bthis.menuRemap%5BString(TYPE)%5D%5D%20%3D%20false%3B%0A%09%09%20%20return%20true%3B%0A%09%09%7D%20else%20%7B%0A%09%09%20%20return%20false%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20onNewVar(%7B%20TYPE%2C%20VAR%20%7D)%20%7B%0A%09%09const%20self%20%3D%20this%3B%0A%09%09if%20(this.isRunning)%20%7B%0A%09%09%20%20if%20(this.varData.hasOwnProperty(this.menuRemap%5BTYPE%5D))%20%7B%0A%09%09%09if%20(this.varData%5Bthis.menuRemap%5BTYPE%5D%5D.hasOwnProperty(VAR))%20%7B%0A%09%09%09%20%20if%20(this.varData%5Bthis.menuRemap%5BTYPE%5D%5D%5BVAR%5D.isNew)%20%7B%0A%09%09%09%09self.varData%5Bthis.menuRemap%5BTYPE%5D%5D%5BVAR%5D.isNew%20%3D%20false%3B%0A%09%09%09%09return%20true%3B%0A%09%09%09%20%20%7D%20else%20%7B%0A%09%09%09%09return%20false%3B%0A%09%09%09%20%20%7D%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%20%20return%20false%3B%0A%09%09%09%7D%0A%09%09%20%20%7D%20else%20%7B%0A%09%09%09return%20false%3B%0A%09%09%20%20%7D%0A%09%09%7D%20else%20%7B%0A%09%09%20%20return%20false%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20getComState()%20%7B%0A%09%09return%20String(this.link_status%20%3D%3D%202%20%7C%7C%20this.protocolOk)%3B%0A%09%20%20%7D%0A%20%20%0A%09%20%20getRoomState()%20%7B%0A%09%09return%20this.isLinked%3B%0A%09%20%20%7D%0A%20%20%0A%09%20%20getComLostConnectionState()%20%7B%0A%09%09return%20this.wasConnectionDropped%3B%0A%09%20%20%7D%0A%20%20%0A%09%20%20getComFailedConnectionState()%20%7B%0A%09%09return%20this.didConnectionFail%3B%0A%09%20%20%7D%0A%20%20%0A%09%20%20getUsernameState()%20%7B%0A%09%09return%20this.isUsernameSet%3B%0A%09%20%20%7D%0A%20%20%0A%09%20%20returnIsNewData(%7B%20TYPE%20%7D)%20%7B%0A%09%09if%20(this.isRunning)%20%7B%0A%09%09%20%20return%20this.newSocketData%5Bthis.menuRemap%5BString(TYPE)%5D%5D%3B%0A%09%09%7D%20else%20%7B%0A%09%09%20%20return%20false%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20returnIsNewVarData(%7B%20TYPE%2C%20VAR%20%7D)%20%7B%0A%09%09if%20(this.isRunning)%20%7B%0A%09%09%20%20if%20(this.varData.hasOwnProperty(this.menuRemap%5BTYPE%5D))%20%7B%0A%09%09%09if%20(this.varData%5Bthis.menuRemap%5BTYPE%5D%5D.hasOwnProperty(VAR))%20%7B%0A%09%09%09%20%20return%20this.varData%5Bthis.menuRemap%5BTYPE%5D%5D%5BVAR%5D.isNew%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%20%20return%20false%3B%0A%09%09%09%7D%0A%09%09%20%20%7D%20else%20%7B%0A%09%09%09return%20false%3B%0A%09%09%20%20%7D%0A%09%09%7D%20else%20%7B%0A%09%09%20%20return%20false%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20returnIsNewListener(%7B%20ID%20%7D)%20%7B%0A%09%09if%20(this.isRunning)%20%7B%0A%09%09%20%20if%20(this.socketListeners.hasOwnProperty(String(ID)))%20%7B%0A%09%09%09return%20this.socketListeners%5BID%5D%3B%0A%09%09%20%20%7D%20else%20%7B%0A%09%09%09return%20false%3B%0A%09%09%20%20%7D%0A%09%09%7D%20else%20%7B%0A%09%09%20%20return%20false%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20checkForID(%7B%20ID%20%7D)%20%7B%0A%09%09return%20find_id(ID%2C%20this.socketData.ulist)%3B%0A%09%20%20%7D%0A%20%20%0A%09%20%20async%20openSocket(%7B%20IP%20%7D)%20%7B%0A%09%09const%20self%20%3D%20this%3B%0A%09%09if%20(!self.isRunning)%20%7B%0A%09%09%20%20if%20(!(await%20Scratch.canFetch(IP)))%20%7B%0A%09%09%09return%3B%0A%09%09%20%20%7D%0A%20%20%0A%09%09%20%20console.log(%22Starting%20socket.%22)%3B%0A%09%09%20%20self.link_status%20%3D%201%3B%0A%20%20%0A%09%09%20%20self.disconnectWasClean%20%3D%20false%3B%0A%09%09%20%20self.wasConnectionDropped%20%3D%20false%3B%0A%09%09%20%20self.didConnectionFail%20%3D%20false%3B%0A%20%20%0A%09%09%20%20mWS%20%3D%20new%20WebSocket(String(IP))%3B%0A%20%20%0A%09%09%20%20mWS.onerror%20%3D%20function%20()%20%7B%0A%09%09%09self.isRunning%20%3D%20false%3B%0A%09%09%20%20%7D%3B%0A%20%20%0A%09%09%20%20mWS.onopen%20%3D%20function%20()%20%7B%0A%09%09%09self.isRunning%20%3D%20true%3B%0A%09%09%09self.packet_queue%20%3D%20%7B%7D%3B%0A%09%09%09self.link_status%20%3D%202%3B%0A%20%20%0A%09%09%09%2F%2F%20Send%20the%20handshake%20request%20to%20get%20server%20to%20detect%20client%20protocol%0A%09%09%09mWS.send(%0A%09%09%09%20%20JSON.stringify(%7B%20cmd%3A%20%22handshake%22%2C%20listener%3A%20%22setprotocol%22%20%7D)%0A%09%09%09)%3B%0A%20%20%0A%09%09%09console.log(%22Successfully%20opened%20socket.%22)%3B%0A%09%09%20%20%7D%3B%0A%20%20%0A%09%09%20%20mWS.onmessage%20%3D%20function%20(event)%20%7B%0A%09%09%09let%20tmp_socketData%20%3D%20JSON.parse(event.data)%3B%0A%09%09%09console.log(%22RX%3A%22%2C%20tmp_socketData)%3B%0A%20%20%0A%09%09%09if%20(self.queueableCmds.includes(tmp_socketData.cmd))%20%7B%0A%09%09%09%20%20self.socketData%5Btmp_socketData.cmd%5D.push(tmp_socketData)%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%20%20if%20(tmp_socketData.cmd%20%3D%3D%20%22ulist%22)%20%7B%0A%09%09%09%09%2F%2F%20ulist%20functionality%20has%20been%20changed%20in%20server%200.1.9%0A%09%09%09%09if%20(tmp_socketData.hasOwnProperty(%22mode%22))%20%7B%0A%09%09%09%09%20%20if%20(tmp_socketData.mode%20%3D%3D%20%22set%22)%20%7B%0A%09%09%09%09%09self.socketData%5B%22ulist%22%5D%20%3D%20tmp_socketData.val%3B%0A%09%09%09%09%20%20%7D%20else%20if%20(tmp_socketData.mode%20%3D%3D%20%22add%22)%20%7B%0A%09%09%09%09%09if%20(%0A%09%09%09%09%09%20%20!self.socketData.ulist.some(%0A%09%09%09%09%09%09(o)%20%3D%3E%0A%09%09%09%09%09%09%20%20o.username%20%3D%3D%3D%20tmp_socketData.val.username%20%26%26%0A%09%09%09%09%09%09%20%20o.id%20%3D%3D%20tmp_socketData.val.id%0A%09%09%09%09%09%20%20)%0A%09%09%09%09%09)%20%7B%0A%09%09%09%09%09%20%20self.socketData%5B%22ulist%22%5D.push(tmp_socketData.val)%3B%0A%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%20%20console.log(%0A%09%09%09%09%09%09%22Could%20not%20perform%20ulist%20method%20add%2C%20client%22%2C%0A%09%09%09%09%09%09tmp_socketData.val%2C%0A%09%09%09%09%09%09%22already%20exists%22%0A%09%09%09%09%09%20%20)%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%20%20%7D%20else%20if%20(tmp_socketData.mode%20%3D%3D%20%22remove%22)%20%7B%0A%09%09%09%09%09if%20(%0A%09%09%09%09%09%20%20self.socketData.ulist.some(%0A%09%09%09%09%09%09(o)%20%3D%3E%0A%09%09%09%09%09%09%20%20o.username%20%3D%3D%3D%20tmp_socketData.val.username%20%26%26%0A%09%09%09%09%09%09%20%20o.id%20%3D%3D%20tmp_socketData.val.id%0A%09%09%09%09%09%20%20)%0A%09%09%09%09%09)%20%7B%0A%09%09%09%09%09%20%20%2F%2F%20This%20is%20by%20far%20the%20fugliest%20thing%20I%20have%20ever%20written%20in%20JS%2C%20or%20in%20any%20programming%20language...%20thanks%20I%20hate%20it%0A%09%09%09%09%09%20%20self.socketData%5B%22ulist%22%5D%20%3D%20self.socketData%5B%22ulist%22%5D.filter(%0A%09%09%09%09%09%09(user)%20%3D%3E%0A%09%09%09%09%09%09%20%20!(user.username%20%3D%3D%3D%20tmp_socketData.val.username)%20%26%26%0A%09%09%09%09%09%09%20%20!(user.id%20%3D%3D%20tmp_socketData.val.id)%0A%09%09%09%09%09%20%20)%3B%0A%09%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%09%20%20console.log(%0A%09%09%09%09%09%09%22Could%20not%20perform%20ulist%20method%20remove%2C%20client%22%2C%0A%09%09%09%09%09%09tmp_socketData.val%2C%0A%09%09%09%09%09%09%22was%20not%20found%22%0A%09%09%09%09%09%20%20)%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%20%20%7D%20else%20%7B%0A%09%09%09%09%09console.log(%0A%09%09%09%09%09%20%20%22Could%20not%20understand%20ulist%20method%3A%22%2C%0A%09%09%09%09%09%20%20tmp_socketData.mode%0A%09%09%09%09%09)%3B%0A%09%09%09%09%20%20%7D%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%20%20%2F%2F%20Retain%20compatibility%20wtih%20existing%20servers%0A%09%09%09%09%20%20self.socketData%5B%22ulist%22%5D%20%3D%20tmp_socketData.val%3B%0A%09%09%09%09%7D%0A%09%09%09%20%20%7D%20else%20%7B%0A%09%09%09%09self.socketData%5Btmp_socketData.cmd%5D%20%3D%20tmp_socketData.val%3B%0A%09%09%09%20%20%7D%0A%09%09%09%7D%0A%20%20%0A%09%09%09if%20(self.newSocketData.hasOwnProperty(tmp_socketData.cmd))%20%7B%0A%09%09%09%20%20self.newSocketData%5Btmp_socketData.cmd%5D%20%3D%20true%3B%0A%09%09%09%7D%0A%20%20%0A%09%09%09if%20(self.varCmds.includes(tmp_socketData.cmd))%20%7B%0A%09%09%09%20%20self.varData%5Btmp_socketData.cmd%5D%5Btmp_socketData.name%5D%20%3D%20%7B%0A%09%09%09%09value%3A%20tmp_socketData.val%2C%0A%09%09%09%09isNew%3A%20true%2C%0A%09%09%09%20%20%7D%3B%0A%09%09%09%7D%0A%09%09%09if%20(tmp_socketData.hasOwnProperty(%22listener%22))%20%7B%0A%09%09%09%20%20if%20(tmp_socketData.listener%20%3D%3D%20%22setusername%22)%20%7B%0A%09%09%09%09self.socketListeners%5B%22setusername%22%5D%20%3D%20true%3B%0A%09%09%09%09if%20(tmp_socketData.code%20%3D%3D%20%22I%3A100%20%7C%20OK%22)%20%7B%0A%09%09%09%09%20%20self.username%20%3D%20tmp_socketData.val%3B%0A%09%09%09%09%20%20self.isUsernameSyncing%20%3D%20false%3B%0A%09%09%09%09%20%20self.isUsernameSet%20%3D%20true%3B%0A%09%09%09%09%20%20console.log(%0A%09%09%09%09%09%22Username%20was%20accepted%20by%20the%20server%2C%20and%20has%20been%20set%20to%3A%22%2C%0A%09%09%09%09%09self.username%0A%09%09%09%09%20%20)%3B%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%20%20console.warn(%0A%09%09%09%09%09%22Username%20was%20rejected%20by%20the%20server.%20Error%20code%3A%22%2C%0A%09%09%09%09%09String(tmp_socketData.code)%0A%09%09%09%09%20%20)%3B%0A%09%09%09%09%20%20self.isUsernameSyncing%20%3D%20false%3B%0A%09%09%09%09%7D%0A%09%09%09%20%20%7D%20else%20if%20(tmp_socketData.listener%20%3D%3D%20%22roomLink%22)%20%7B%0A%09%09%09%09self.isRoomSetting%20%3D%20false%3B%0A%09%09%09%09self.socketListeners%5B%22roomLink%22%5D%20%3D%20true%3B%0A%09%09%09%09if%20(tmp_socketData.code%20%3D%3D%20%22I%3A100%20%7C%20OK%22)%20%7B%0A%09%09%09%09%20%20console.log(%22Linking%20to%20room(s)%20was%20accepted%20by%20the%20server!%22)%3B%0A%09%09%09%09%20%20self.isLinked%20%3D%20true%3B%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%20%20console.warn(%0A%09%09%09%09%09%22Linking%20to%20room(s)%20was%20rejected%20by%20the%20server.%20Error%20code%3A%22%2C%0A%09%09%09%09%09String(tmp_socketData.code)%0A%09%09%09%09%20%20)%3B%0A%09%09%09%09%20%20self.enableRoom%20%3D%20false%3B%0A%09%09%09%09%20%20self.isLinked%20%3D%20false%3B%0A%09%09%09%09%20%20self.selectRoom%20%3D%20%22%22%3B%0A%09%09%09%09%7D%0A%09%09%09%20%20%7D%20else%20if%20(%0A%09%09%09%09tmp_socketData.listener%20%3D%3D%20%22setprotocol%22%20%26%26%0A%09%09%09%09!this.protocolOk%0A%09%09%09%20%20)%20%7B%0A%09%09%09%09console.log(%0A%09%09%09%09%20%20%22Server%20successfully%20set%20client%20protocol%20to%20cloudlink!%22%0A%09%09%09%09)%3B%0A%09%09%09%09self.socketData.statuscode%20%3D%20%5B%5D%3B%0A%09%09%09%09self.protocolOk%20%3D%20true%3B%0A%09%09%09%09self.socketListeners%5B%22setprotocol%22%5D%20%3D%20true%3B%0A%09%09%09%20%20%7D%20else%20%7B%0A%09%09%09%09if%20(%0A%09%09%09%09%20%20self.socketListeners.hasOwnProperty(tmp_socketData.listener)%0A%09%09%09%09)%20%7B%0A%09%09%09%09%20%20self.socketListeners%5Btmp_socketData.listener%5D%20%3D%20true%3B%0A%09%09%09%09%7D%0A%09%09%09%20%20%7D%0A%09%09%09%20%20self.socketListenersData%5Btmp_socketData.listener%5D%20%3D%20tmp_socketData%3B%0A%09%09%09%7D%0A%09%09%09self.packet_hat%20%3D%200%3B%0A%09%09%20%20%7D%3B%0A%20%20%0A%09%09%20%20mWS.onclose%20%3D%20function%20()%20%7B%0A%09%09%09self.isRunning%20%3D%20false%3B%0A%09%09%09self.connect_hat%20%3D%200%3B%0A%09%09%09self.packet_hat%20%3D%200%3B%0A%09%09%09self.protocolOk%20%3D%20false%3B%0A%09%09%09if%20(self.close_hat%20%3D%3D%201)%20%7B%0A%09%09%09%20%20self.close_hat%20%3D%200%3B%0A%09%09%09%7D%0A%09%09%09self.socketData%20%3D%20%7B%0A%09%09%09%20%20gmsg%3A%20%5B%5D%2C%0A%09%09%09%20%20pmsg%3A%20%5B%5D%2C%0A%09%09%09%20%20direct%3A%20%5B%5D%2C%0A%09%09%09%20%20statuscode%3A%20%5B%5D%2C%0A%09%09%09%20%20gvar%3A%20%5B%5D%2C%0A%09%09%09%20%20pvar%3A%20%5B%5D%2C%0A%09%09%09%20%20motd%3A%20%22%22%2C%0A%09%09%09%20%20client_ip%3A%20%22%22%2C%0A%09%09%09%20%20ulist%3A%20%5B%5D%2C%0A%09%09%09%20%20server_version%3A%20%22%22%2C%0A%09%09%09%7D%3B%0A%09%09%09self.newSocketData%20%3D%20%7B%0A%09%09%09%20%20gmsg%3A%20false%2C%0A%09%09%09%20%20pmsg%3A%20false%2C%0A%09%09%09%20%20direct%3A%20false%2C%0A%09%09%09%20%20statuscode%3A%20false%2C%0A%09%09%09%20%20gvar%3A%20false%2C%0A%09%09%09%20%20pvar%3A%20false%2C%0A%09%09%09%7D%3B%0A%09%09%09self.socketListeners%20%3D%20%7B%7D%3B%0A%09%09%09self.username%20%3D%20%22%22%3B%0A%09%09%09self.tmp_username%20%3D%20%22%22%3B%0A%09%09%09self.isUsernameSyncing%20%3D%20false%3B%0A%09%09%09self.isUsernameSet%20%3D%20false%3B%0A%09%09%09self.enableListener%20%3D%20false%3B%0A%09%09%09self.setListener%20%3D%20%22%22%3B%0A%09%09%09self.enableRoom%20%3D%20false%3B%0A%09%09%09self.selectRoom%20%3D%20%22%22%3B%0A%09%09%09self.isLinked%20%3D%20false%3B%0A%09%09%09self.isRoomSetting%20%3D%20false%3B%0A%20%20%0A%09%09%09if%20(self.link_status%20!%3D%201)%20%7B%0A%09%09%09%20%20if%20(self.disconnectWasClean)%20%7B%0A%09%09%09%09self.link_status%20%3D%203%3B%0A%09%09%09%09console.log(%22Socket%20closed.%22)%3B%0A%09%09%09%09self.wasConnectionDropped%20%3D%20false%3B%0A%09%09%09%09self.didConnectionFail%20%3D%20false%3B%0A%09%09%09%20%20%7D%20else%20%7B%0A%09%09%09%09self.link_status%20%3D%204%3B%0A%09%09%09%09console.error(%22Lost%20connection%20to%20the%20server.%22)%3B%0A%09%09%09%09self.wasConnectionDropped%20%3D%20true%3B%0A%09%09%09%09self.didConnectionFail%20%3D%20false%3B%0A%09%09%09%20%20%7D%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%20%20self.link_status%20%3D%204%3B%0A%09%09%09%20%20console.error(%22Failed%20to%20connect%20to%20server.%22)%3B%0A%09%09%09%20%20self.wasConnectionDropped%20%3D%20false%3B%0A%09%09%09%20%20self.didConnectionFail%20%3D%20true%3B%0A%09%09%09%7D%0A%09%09%20%20%7D%3B%0A%09%09%7D%20else%20%7B%0A%09%09%20%20console.warn(%22Socket%20is%20already%20open.%22)%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20openSocketPublicServers(%7B%20ID%20%7D)%20%7B%0A%09%09if%20(servers.hasOwnProperty(ID))%20%7B%0A%09%09%20%20console.log(%22Connecting%20to%3A%22%2C%20servers%5BID%5D.url)%3B%0A%09%09%20%20this.openSocket(%7B%20IP%3A%20servers%5BID%5D.url%20%7D)%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20closeSocket()%20%7B%0A%09%09const%20self%20%3D%20this%3B%0A%09%09if%20(this.isRunning)%20%7B%0A%09%09%20%20console.log(%22Closing%20socket...%22)%3B%0A%09%09%20%20mWS.close(1000%2C%20%22script%20closure%22)%3B%0A%09%09%20%20self.disconnectWasClean%20%3D%20true%3B%0A%09%09%7D%20else%20%7B%0A%09%09%20%20console.warn(%22Socket%20is%20not%20open.%22)%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20setMyName(%7B%20NAME%20%7D)%20%7B%0A%09%09const%20self%20%3D%20this%3B%0A%09%09if%20(this.isRunning)%20%7B%0A%09%09%20%20if%20(!this.isUsernameSyncing)%20%7B%0A%09%09%09if%20(!this.isUsernameSet)%20%7B%0A%09%09%09%20%20if%20(String(NAME)%20!%3D%20%22%22)%20%7B%0A%09%09%09%09if%20(!(String(NAME).length%20%3E%2020))%20%7B%0A%09%09%09%09%20%20if%20(%0A%09%09%09%09%09!(%0A%09%09%09%09%09%20%20String(NAME)%20%3D%3D%20%22%25CA%25%22%20%7C%7C%0A%09%09%09%09%09%20%20String(NAME)%20%3D%3D%20%22%25CC%25%22%20%7C%7C%0A%09%09%09%09%09%20%20String(NAME)%20%3D%3D%20%22%25CD%25%22%20%7C%7C%0A%09%09%09%09%09%20%20String(NAME)%20%3D%3D%20%22%25MS%25%22%0A%09%09%09%09%09)%0A%09%09%09%09%20%20)%20%7B%0A%09%09%09%09%09let%20tmp_msg%20%3D%20%7B%0A%09%09%09%09%09%20%20cmd%3A%20%22setid%22%2C%0A%09%09%09%09%09%20%20val%3A%20String(NAME)%2C%0A%09%09%09%09%09%20%20listener%3A%20%22setusername%22%2C%0A%09%09%09%09%09%7D%3B%0A%20%20%0A%09%09%09%09%09console.log(%22TX%3A%22%2C%20tmp_msg)%3B%0A%09%09%09%09%09mWS.send(JSON.stringify(tmp_msg))%3B%0A%20%20%0A%09%09%09%09%09self.tmp_username%20%3D%20String(NAME)%3B%0A%09%09%09%09%09self.isUsernameSyncing%20%3D%20true%3B%0A%09%09%09%09%20%20%7D%20else%20%7B%0A%09%09%09%09%09console.log(%22Blocking%20attempt%20to%20use%20reserved%20usernames%22)%3B%0A%09%09%09%09%20%20%7D%0A%09%09%09%09%7D%20else%20%7B%0A%09%09%09%09%20%20console.log(%0A%09%09%09%09%09%22Blocking%20attempt%20to%20use%20username%20larger%20than%2020%20characters%2C%20username%20is%20%22%20%2B%0A%09%09%09%09%09%20%20String(NAME).length%20%2B%0A%09%09%09%09%09%20%20%22%20characters%20long%22%0A%09%09%09%09%20%20)%3B%0A%09%09%09%09%7D%0A%09%09%09%20%20%7D%20else%20%7B%0A%09%09%09%09console.log(%22Blocking%20attempt%20to%20use%20blank%20username%22)%3B%0A%09%09%09%20%20%7D%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%20%20console.warn(%22Username%20already%20has%20been%20set!%22)%3B%0A%09%09%09%7D%0A%09%09%20%20%7D%20else%20%7B%0A%09%09%09console.warn(%22Username%20is%20still%20syncing!%22)%3B%0A%09%09%20%20%7D%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20createListener(%7B%20ID%20%7D)%20%7B%0A%09%09self%20%3D%20this%3B%0A%09%09if%20(this.isRunning)%20%7B%0A%09%09%20%20if%20(!this.enableListener)%20%7B%0A%09%09%09self.enableListener%20%3D%20true%3B%0A%09%09%09self.setListener%20%3D%20String(ID)%3B%0A%09%09%20%20%7D%20else%20%7B%0A%09%09%09console.warn(%22Listeners%20were%20already%20created!%22)%3B%0A%09%09%20%20%7D%0A%09%09%7D%20else%20%7B%0A%09%09%20%20console.log(%22Cannot%20assign%20a%20listener%20to%20a%20packet%20while%20disconnected%22)%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20linkToRooms(%7B%20ROOMS%20%7D)%20%7B%0A%09%09const%20self%20%3D%20this%3B%0A%20%20%0A%09%09if%20(this.isRunning)%20%7B%0A%09%09%20%20if%20(!this.isRoomSetting)%20%7B%0A%09%09%09if%20(!(String(ROOMS).length%20%3E%201000))%20%7B%0A%09%09%09%20%20let%20tmp_msg%20%3D%20%7B%0A%09%09%09%09cmd%3A%20%22link%22%2C%0A%09%09%09%09val%3A%20autoConvert(ROOMS)%2C%0A%09%09%09%09listener%3A%20%22roomLink%22%2C%0A%09%09%09%20%20%7D%3B%0A%20%20%0A%09%09%09%20%20console.log(%22TX%3A%22%2C%20tmp_msg)%3B%0A%09%09%09%20%20mWS.send(JSON.stringify(tmp_msg))%3B%0A%20%20%0A%09%09%09%20%20self.isRoomSetting%20%3D%20true%3B%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%20%20console.warn(%0A%09%09%09%09%22Blocking%20attempt%20to%20send%20a%20room%20ID%20%2F%20room%20list%20larger%20than%201000%20bytes%20(1%20KB)%2C%20room%20ID%20%2F%20room%20list%20is%20%22%20%2B%0A%09%09%09%09%20%20String(ROOMS).length%20%2B%0A%09%09%09%09%20%20%22%20bytes%22%0A%09%09%09%20%20)%3B%0A%09%09%09%7D%0A%09%09%20%20%7D%20else%20%7B%0A%09%09%09console.warn(%22Still%20linking%20to%20rooms!%22)%3B%0A%09%09%20%20%7D%0A%09%09%7D%20else%20%7B%0A%09%09%20%20console.warn(%22Socket%20is%20not%20open.%22)%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20selectRoomsInNextPacket(%7B%20ROOMS%20%7D)%20%7B%0A%09%09const%20self%20%3D%20this%3B%0A%09%09if%20(this.isRunning)%20%7B%0A%09%09%20%20if%20(this.isLinked)%20%7B%0A%09%09%09if%20(!this.enableRoom)%20%7B%0A%09%09%09%20%20if%20(!(String(ROOMS).length%20%3E%201000))%20%7B%0A%09%09%09%09self.enableRoom%20%3D%20true%3B%0A%09%09%09%09self.selectRoom%20%3D%20ROOMS%3B%0A%09%09%09%20%20%7D%20else%20%7B%0A%09%09%09%09console.warn(%0A%09%09%09%09%20%20%22Blocking%20attempt%20to%20select%20a%20room%20ID%20%2F%20room%20list%20larger%20than%201000%20bytes%20(1%20KB)%2C%20room%20ID%20%2F%20room%20list%20is%20%22%20%2B%0A%09%09%09%09%09String(ROOMS).length%20%2B%0A%09%09%09%09%09%22%20bytes%22%0A%09%09%09%09)%3B%0A%09%09%09%20%20%7D%0A%09%09%09%7D%20else%20%7B%0A%09%09%09%20%20console.warn(%22Rooms%20were%20already%20selected!%22)%3B%0A%09%09%09%7D%0A%09%09%20%20%7D%20else%20%7B%0A%09%09%09console.warn(%22Not%20linked%20to%20any%20room(s)!%22)%3B%0A%09%09%20%20%7D%0A%09%09%7D%20else%20%7B%0A%09%09%20%20console.warn(%22Socket%20is%20not%20open.%22)%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20unlinkFromRooms()%20%7B%0A%09%09const%20self%20%3D%20this%3B%0A%09%09if%20(this.isRunning)%20%7B%0A%09%09%20%20if%20(this.isLinked)%20%7B%0A%09%09%09let%20tmp_msg%20%3D%20%7B%0A%09%09%09%20%20cmd%3A%20%22unlink%22%2C%0A%09%09%09%20%20val%3A%20%22%22%2C%0A%09%09%09%7D%3B%0A%20%20%0A%09%09%09if%20(this.enableListener)%20%7B%0A%09%09%09%20%20tmp_msg%5B%22listener%22%5D%20%3D%20autoConvert(this.setListener)%3B%0A%09%09%09%7D%0A%20%20%0A%09%09%09console.log(%22TX%3A%22%2C%20tmp_msg)%3B%0A%09%09%09mWS.send(JSON.stringify(tmp_msg))%3B%0A%20%20%0A%09%09%09if%20(this.enableListener)%20%7B%0A%09%09%09%20%20if%20(!self.socketListeners.hasOwnProperty(this.setListener))%20%7B%0A%09%09%09%09self.socketListeners%5Bthis.setListener%5D%20%3D%20false%3B%0A%09%09%09%20%20%7D%0A%09%09%09%20%20self.enableListener%20%3D%20false%3B%0A%09%09%09%7D%0A%20%20%0A%09%09%09self.isLinked%20%3D%20false%3B%0A%09%09%20%20%7D%20else%20%7B%0A%09%09%09console.warn(%22Not%20linked%20to%20any%20rooms!%22)%3B%0A%09%09%20%20%7D%0A%09%09%7D%20else%20%7B%0A%09%09%20%20console.warn(%22Socket%20is%20not%20open.%22)%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20sendGData(%7B%20DATA%20%7D)%20%7B%0A%09%09const%20self%20%3D%20this%3B%0A%09%09if%20(this.isRunning)%20%7B%0A%09%09%20%20if%20(!(String(DATA).length%20%3E%201000))%20%7B%0A%09%09%09let%20tmp_msg%20%3D%20%7B%0A%09%09%09%20%20cmd%3A%20%22gmsg%22%2C%0A%09%09%09%20%20val%3A%20autoConvert(DATA)%2C%0A%09%09%09%7D%3B%0A%20%20%0A%09%09%09if%20(this.enableListener)%20%7B%0A%09%09%09%20%20tmp_msg%5B%22listener%22%5D%20%3D%20String(this.setListener)%3B%0A%09%09%09%7D%0A%20%20%0A%09%09%09if%20(this.enableRoom)%20%7B%0A%09%09%09%20%20tmp_msg%5B%22rooms%22%5D%20%3D%20autoConvert(this.selectRoom)%3B%0A%09%09%09%7D%0A%20%20%0A%09%09%09console.log(%22TX%3A%22%2C%20tmp_msg)%3B%0A%09%09%09mWS.send(JSON.stringify(tmp_msg))%3B%0A%20%20%0A%09%09%09if%20(this.enableListener)%20%7B%0A%09%09%09%20%20if%20(!self.socketListeners.hasOwnProperty(this.setListener))%20%7B%0A%09%09%09%09self.socketListeners%5Bthis.setListener%5D%20%3D%20false%3B%0A%09%09%09%20%20%7D%0A%09%09%09%20%20self.enableListener%20%3D%20false%3B%0A%09%09%09%7D%0A%09%09%09if%20(this.enableRoom)%20%7B%0A%09%09%09%20%20self.enableRoom%20%3D%20false%3B%0A%09%09%09%20%20self.selectRoom%20%3D%20%22%22%3B%0A%09%09%09%7D%0A%09%09%20%20%7D%20else%20%7B%0A%09%09%09console.warn(%0A%09%09%09%20%20%22Blocking%20attempt%20to%20send%20packet%20larger%20than%201000%20bytes%20(1%20KB)%2C%20packet%20is%20%22%20%2B%0A%09%09%09%09String(DATA).length%20%2B%0A%09%09%09%09%22%20bytes%22%0A%09%09%09)%3B%0A%09%09%20%20%7D%0A%09%09%7D%20else%20%7B%0A%09%09%20%20console.warn(%22Socket%20is%20not%20open.%22)%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20sendPData(%7B%20DATA%2C%20ID%20%7D)%20%7B%0A%09%09const%20self%20%3D%20this%3B%0A%09%09if%20(this.isRunning)%20%7B%0A%09%09%20%20if%20(!(String(DATA).length%20%3E%201000))%20%7B%0A%09%09%09let%20tmp_msg%20%3D%20%7B%0A%09%09%09%20%20cmd%3A%20%22pmsg%22%2C%0A%09%09%09%20%20val%3A%20autoConvert(DATA)%2C%0A%09%09%09%20%20id%3A%20autoConvert(ID)%2C%0A%09%09%09%7D%3B%0A%20%20%0A%09%09%09if%20(this.enableListener)%20%7B%0A%09%09%09%20%20tmp_msg%5B%22listener%22%5D%20%3D%20String(this.setListener)%3B%0A%09%09%09%7D%0A%09%09%09if%20(this.enableRoom)%20%7B%0A%09%09%09%20%20tmp_msg%5B%22rooms%22%5D%20%3D%20autoConvert(this.selectRoom)%3B%0A%09%09%09%7D%0A%20%20%0A%09%09%09console.log(%22TX%3A%22%2C%20tmp_msg)%3B%0A%09%09%09mWS.send(JSON.stringify(tmp_msg))%3B%0A%20%20%0A%09%09%09if%20(this.enableListener)%20%7B%0A%09%09%09%20%20if%20(!self.socketListeners.hasOwnProperty(this.setListener))%20%7B%0A%09%09%09%09self.socketListeners%5Bthis.setListener%5D%20%3D%20false%3B%0A%09%09%09%20%20%7D%0A%09%09%09%20%20self.enableListener%20%3D%20false%3B%0A%09%09%09%7D%0A%09%09%09if%20(this.enableRoom)%20%7B%0A%09%09%09%20%20self.enableRoom%20%3D%20false%3B%0A%09%09%09%20%20self.selectRoom%20%3D%20%22%22%3B%0A%09%09%09%7D%0A%09%09%20%20%7D%20else%20%7B%0A%09%09%09console.warn(%0A%09%09%09%20%20%22Blocking%20attempt%20to%20send%20packet%20larger%20than%201000%20bytes%20(1%20KB)%2C%20packet%20is%20%22%20%2B%0A%09%09%09%09String(DATA).length%20%2B%0A%09%09%09%09%22%20bytes%22%0A%09%09%09)%3B%0A%09%09%20%20%7D%0A%09%09%7D%20else%20%7B%0A%09%09%20%20console.warn(%22Socket%20is%20not%20open.%22)%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20sendGDataAsVar(%7B%20VAR%2C%20DATA%20%7D)%20%7B%0A%09%09const%20self%20%3D%20this%3B%0A%09%09if%20(this.isRunning)%20%7B%0A%09%09%20%20if%20(!(String(DATA).length%20%3E%201000))%20%7B%0A%09%09%09let%20tmp_msg%20%3D%20%7B%0A%09%09%09%20%20cmd%3A%20%22gvar%22%2C%0A%09%09%09%20%20name%3A%20VAR%2C%0A%09%09%09%20%20val%3A%20autoConvert(DATA)%2C%0A%09%09%09%7D%3B%0A%20%20%0A%09%09%09if%20(this.enableListener)%20%7B%0A%09%09%09%20%20tmp_msg%5B%22listener%22%5D%20%3D%20String(this.setListener)%3B%0A%09%09%09%7D%0A%09%09%09if%20(this.enableRoom)%20%7B%0A%09%09%09%20%20tmp_msg%5B%22rooms%22%5D%20%3D%20autoConvert(this.selectRoom)%3B%0A%09%09%09%7D%0A%20%20%0A%09%09%09console.log(%22TX%3A%22%2C%20tmp_msg)%3B%0A%09%09%09mWS.send(JSON.stringify(tmp_msg))%3B%0A%20%20%0A%09%09%09if%20(this.enableListener)%20%7B%0A%09%09%09%20%20if%20(!self.socketListeners.hasOwnProperty(this.setListener))%20%7B%0A%09%09%09%09self.socketListeners%5Bthis.setListener%5D%20%3D%20false%3B%0A%09%09%09%20%20%7D%0A%09%09%09%20%20self.enableListener%20%3D%20false%3B%0A%09%09%09%7D%0A%09%09%09if%20(this.enableRoom)%20%7B%0A%09%09%09%20%20self.enableRoom%20%3D%20false%3B%0A%09%09%09%20%20self.selectRoom%20%3D%20%22%22%3B%0A%09%09%09%7D%0A%09%09%20%20%7D%20else%20%7B%0A%09%09%09console.warn(%0A%09%09%09%20%20%22Blocking%20attempt%20to%20send%20packet%20larger%20than%201000%20bytes%20(1%20KB)%2C%20packet%20is%20%22%20%2B%0A%09%09%09%09String(DATA).length%20%2B%0A%09%09%09%09%22%20bytes%22%0A%09%09%09)%3B%0A%09%09%20%20%7D%0A%09%09%7D%20else%20%7B%0A%09%09%20%20console.warn(%22Socket%20is%20not%20open.%22)%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20sendPDataAsVar(%7B%20VAR%2C%20ID%2C%20DATA%20%7D)%20%7B%0A%09%09const%20self%20%3D%20this%3B%0A%09%09if%20(this.isRunning)%20%7B%0A%09%09%20%20if%20(!(String(DATA).length%20%3E%201000))%20%7B%0A%09%09%09let%20tmp_msg%20%3D%20%7B%0A%09%09%09%20%20cmd%3A%20%22pvar%22%2C%0A%09%09%09%20%20name%3A%20VAR%2C%0A%09%09%09%20%20val%3A%20autoConvert(DATA)%2C%0A%09%09%09%20%20id%3A%20autoConvert(ID)%2C%0A%09%09%09%7D%3B%0A%20%20%0A%09%09%09if%20(this.enableListener)%20%7B%0A%09%09%09%20%20tmp_msg%5B%22listener%22%5D%20%3D%20String(this.setListener)%3B%0A%09%09%09%7D%0A%09%09%09if%20(this.enableRoom)%20%7B%0A%09%09%09%20%20tmp_msg%5B%22rooms%22%5D%20%3D%20autoConvert(this.selectRoom)%3B%0A%09%09%09%7D%0A%20%20%0A%09%09%09console.log(%22TX%3A%22%2C%20tmp_msg)%3B%0A%09%09%09mWS.send(JSON.stringify(tmp_msg))%3B%0A%20%20%0A%09%09%09if%20(this.enableListener)%20%7B%0A%09%09%09%20%20if%20(!self.socketListeners.hasOwnProperty(this.setListener))%20%7B%0A%09%09%09%09self.socketListeners%5Bthis.setListener%5D%20%3D%20false%3B%0A%09%09%09%20%20%7D%0A%09%09%09%20%20self.enableListener%20%3D%20false%3B%0A%09%09%09%7D%0A%09%09%09if%20(this.enableRoom)%20%7B%0A%09%09%09%20%20self.enableRoom%20%3D%20false%3B%0A%09%09%09%20%20self.selectRoom%20%3D%20%22%22%3B%0A%09%09%09%7D%0A%09%09%20%20%7D%20else%20%7B%0A%09%09%09console.warn(%0A%09%09%09%20%20%22Blocking%20attempt%20to%20send%20packet%20larger%20than%201000%20bytes%20(1%20KB)%2C%20packet%20is%20%22%20%2B%0A%09%09%09%09String(DATA).length%20%2B%0A%09%09%09%09%22%20bytes%22%0A%09%09%09)%3B%0A%09%09%20%20%7D%0A%09%09%7D%20else%20%7B%0A%09%09%20%20console.warn(%22Socket%20is%20not%20open.%22)%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20runCMDnoID(%7B%20CMD%2C%20DATA%20%7D)%20%7B%0A%09%09const%20self%20%3D%20this%3B%0A%09%09if%20(this.isRunning)%20%7B%0A%09%09%20%20if%20(!(String(CMD).length%20%3E%20100)%20%7C%7C%20!(String(DATA).length%20%3E%201000))%20%7B%0A%09%09%09let%20tmp_msg%20%3D%20%7B%0A%09%09%09%20%20cmd%3A%20String(CMD)%2C%0A%09%09%09%20%20val%3A%20autoConvert(DATA)%2C%0A%09%09%09%7D%3B%0A%20%20%0A%09%09%09if%20(this.enableListener)%20%7B%0A%09%09%09%20%20tmp_msg%5B%22listener%22%5D%20%3D%20String(this.setListener)%3B%0A%09%09%09%7D%0A%09%09%09if%20(this.enableRoom)%20%7B%0A%09%09%09%20%20tmp_msg%5B%22rooms%22%5D%20%3D%20String(this.selectRoom)%3B%0A%09%09%09%7D%0A%20%20%0A%09%09%09console.log(%22TX%3A%22%2C%20tmp_msg)%3B%0A%09%09%09mWS.send(JSON.stringify(tmp_msg))%3B%0A%20%20%0A%09%09%09if%20(this.enableListener)%20%7B%0A%09%09%09%20%20if%20(!self.socketListeners.hasOwnProperty(this.setListener))%20%7B%0A%09%09%09%09self.socketListeners%5Bthis.setListener%5D%20%3D%20false%3B%0A%09%09%09%20%20%7D%0A%09%09%09%20%20self.enableListener%20%3D%20false%3B%0A%09%09%09%7D%0A%09%09%09if%20(this.enableRoom)%20%7B%0A%09%09%09%20%20self.enableRoom%20%3D%20false%3B%0A%09%09%09%20%20self.selectRoom%20%3D%20%22%22%3B%0A%09%09%09%7D%0A%09%09%20%20%7D%20else%20%7B%0A%09%09%09console.warn(%0A%09%09%09%20%20%22Blocking%20attempt%20to%20send%20packet%20with%20questionably%20long%20arguments%22%0A%09%09%09)%3B%0A%09%09%20%20%7D%0A%09%09%7D%20else%20%7B%0A%09%09%20%20console.warn(%22Socket%20is%20not%20open.%22)%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20runCMD(%7B%20CMD%2C%20ID%2C%20DATA%20%7D)%20%7B%0A%09%09const%20self%20%3D%20this%3B%0A%09%09if%20(this.isRunning)%20%7B%0A%09%09%20%20if%20(%0A%09%09%09!(String(CMD).length%20%3E%20100)%20%7C%7C%0A%09%09%09!(String(ID).length%20%3E%2020)%20%7C%7C%0A%09%09%09!(String(DATA).length%20%3E%201000)%0A%09%09%20%20)%20%7B%0A%09%09%09let%20tmp_msg%20%3D%20%7B%0A%09%09%09%20%20cmd%3A%20String(CMD)%2C%0A%09%09%09%20%20id%3A%20autoConvert(ID)%2C%0A%09%09%09%20%20val%3A%20autoConvert(DATA)%2C%0A%09%09%09%7D%3B%0A%20%20%0A%09%09%09if%20(this.enableListener)%20%7B%0A%09%09%09%20%20tmp_msg%5B%22listener%22%5D%20%3D%20String(this.setListener)%3B%0A%09%09%09%7D%0A%09%09%09if%20(this.enableRoom)%20%7B%0A%09%09%09%20%20tmp_msg%5B%22rooms%22%5D%20%3D%20String(this.selectRoom)%3B%0A%09%09%09%7D%0A%20%20%0A%09%09%09console.log(%22TX%3A%22%2C%20tmp_msg)%3B%0A%09%09%09mWS.send(JSON.stringify(tmp_msg))%3B%0A%20%20%0A%09%09%09if%20(this.enableListener)%20%7B%0A%09%09%09%20%20if%20(!self.socketListeners.hasOwnProperty(this.setListener))%20%7B%0A%09%09%09%09self.socketListeners%5Bthis.setListener%5D%20%3D%20false%3B%0A%09%09%09%20%20%7D%0A%09%09%09%20%20self.enableListener%20%3D%20false%3B%0A%09%09%09%7D%0A%09%09%09if%20(this.enableRoom)%20%7B%0A%09%09%09%20%20self.enableRoom%20%3D%20false%3B%0A%09%09%09%20%20self.selectRoom%20%3D%20%22%22%3B%0A%09%09%09%7D%0A%09%09%20%20%7D%20else%20%7B%0A%09%09%09console.warn(%0A%09%09%09%20%20%22Blocking%20attempt%20to%20send%20packet%20with%20questionably%20long%20arguments%22%0A%09%09%09)%3B%0A%09%09%20%20%7D%0A%09%09%7D%20else%20%7B%0A%09%09%20%20console.warn(%22Socket%20is%20not%20open.%22)%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20resetNewData(%7B%20TYPE%20%7D)%20%7B%0A%09%09const%20self%20%3D%20this%3B%0A%09%09if%20(this.isRunning)%20%7B%0A%09%09%20%20self.newSocketData%5Bthis.menuRemap%5BString(TYPE)%5D%5D%20%3D%20false%3B%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20resetNewVarData(%7B%20TYPE%2C%20VAR%20%7D)%20%7B%0A%09%09const%20self%20%3D%20this%3B%0A%09%09if%20(this.isRunning)%20%7B%0A%09%09%20%20if%20(this.varData.hasOwnProperty(this.menuRemap%5BTYPE%5D))%20%7B%0A%09%09%09if%20(this.varData%5Bthis.menuRemap%5BTYPE%5D%5D.hasOwnProperty(VAR))%20%7B%0A%09%09%09%20%20self.varData%5Bthis.menuRemap%5BTYPE%5D%5D%5BVAR%5D.isNew%20%3D%20false%3B%0A%09%09%09%7D%0A%09%09%20%20%7D%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20resetNewListener(%7B%20ID%20%7D)%20%7B%0A%09%09const%20self%20%3D%20this%3B%0A%09%09if%20(this.isRunning)%20%7B%0A%09%09%20%20if%20(this.socketListeners.hasOwnProperty(String(ID)))%20%7B%0A%09%09%09self.socketListeners%5BString(ID)%5D%20%3D%20false%3B%0A%09%09%20%20%7D%0A%09%09%7D%0A%09%20%20%7D%0A%20%20%0A%09%20%20clearAllPackets(%7B%20TYPE%20%7D)%20%7B%0A%09%09const%20self%20%3D%20this%3B%0A%09%09if%20(this.menuRemap%5BString(TYPE)%5D%20%3D%3D%20%22all%22)%20%7B%0A%09%09%20%20self.socketData.gmsg%20%3D%20%5B%5D%3B%0A%09%09%20%20self.socketData.pmsg%20%3D%20%5B%5D%3B%0A%09%09%20%20self.socketData.direct%20%3D%20%5B%5D%3B%0A%09%09%20%20self.socketData.statuscode%20%3D%20%5B%5D%3B%0A%09%09%20%20self.socketData.gvar%20%3D%20%5B%5D%3B%0A%09%09%20%20self.socketData.pvar%20%3D%20%5B%5D%3B%0A%09%09%7D%20else%20%7B%0A%09%09%20%20self.socketData%5Bthis.menuRemap%5BString(TYPE)%5D%5D%20%3D%20%5B%5D%3B%0A%09%09%7D%0A%09%20%20%7D%0A%09%7D%0A%20%20%0A%09console.log(%22CloudLink%204.0%20loaded.%20Detecting%20unsandboxed%20mode.%22)%3B%0A%09Scratch.extensions.register(new%20CloudLink(Scratch.vm.runtime))%3B%0A%20%20%7D)(Scratch)%3B","data:application/javascript,%2F%2F%20Name%3A%20Key%20Simulation%0A%2F%2F%20ID%3A%20cubesterKeySimulation%0A%2F%2F%20Description%3A%20Simulate%20Key%20Presses%20and%20Mouse%20Clicks.%0A%2F%2F%20By%3A%20CubesterYT%20%3Chttps%3A%2F%2Fscratch.mit.edu%2Fusers%2FCubesterYT%2F%3E%0A%0A%2F%2F%20Version%20V.1.0.0%0A%0A(function%20(Scratch)%20%7B%0A%20%20%22use%20strict%22%3B%0A%0A%20%20const%20icon%20%3D%0A%20%20%20%20%22data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAFs9JREFUeF7tnXuwZMVdxz9n5t67e%2B%2BCSGBFMMSERzAkGB9EjVHDkrA8AlSy0TxUqsRS4%2BMPqmI0CbDcvssjkFSMVlnRwtJYqVAQNGAJRBN3F4gkmhAMiJiEd4wGMYCBsK97986xvuecHnr6njPTM3POmYe3q6Zmd26f7v51f8%2Bvf%2F3r3yNiCouBFwOviuD4GI6N4MX6Bl4EHKpPBIfGEAMt0u%2BDwP%2FqE8EzMXwbeBx4LILHVuDBK%2BCxaZuuaNIJugo2L8PrgNdF8JpWuvBHVEFXDE834N4Y7ovgC%2Fvhcx9IgTKxZSIBYOA04GzgHL3pI579fwE%2BB9xiYPeIx9J39xMDgCU4I4Z3AOcDR%2FZNaT0PPCkgADcb%2BHQ9XQ7Xy1gDwMAJwIWkC39cKKmzwEL22QjoMwfo95ns0wAs8VYQWAVWss8ysD%2F77AP2ZL%2BHjgF4BPjEQbjuCnioj%2BdqrTqWAFiCLTG8C3h7yGx8D3AYoO9DsgUPea7fOgLE88BzwLPZd2AbfwV81MAdgfVrqzZWAFiC82J4D%2FBz3WZAb7OkPIn0hwPN2qarsyNxDB0bngGeBsQ1upUIbo%2Fhjw3cNKIhr%2Bl2LABg4CzShX9D0cRokb8P2Jwt%2BiATuCXwodsD6%2FnVBAYdCf4HEDi6lF0tuGYH%2FMOAXZX22EgBYOCHgB3ALxRRJLZ%2BNHCUs2cPSn3VALDjkkwhafC%2Fs62iy3hvXoXtl8MDg9I07HMjA4BJF357EQF6048BvndYCp3n6wKAO%2BTvAN%2FKOEMXUpYMmBJJDW6qdgAYeCPwkaLzu9i81HhS15VdRgEAS8N3gf%2FMtoc8uiJ4QPKPgb8vm%2B5u7dUKAAPXAL%2BfNyAJcz%2BYSfNVTcAoAWBp0unhPzLBsYDOawy8r6o58NutBQA74JQW%2FBnwk%2F4AdEZ%2FWSbgVU30OADA0ihBURcLOlrmlH8GfseAtIyVlsoBsAQXxHBt3vFcrF7ancoHkU3hOAFAQ5Kw%2BGi2NeSssnRSv2rgE1UioNK5L2L50tJJxSe2X2cZNwBY2nV8fBjYmz8ZHzBwcVXzVBkAMuT%2Bkj9wHelOrPGtd%2FsfVwBYbiB98RP5K32DgXdWAYLSAXAlHLUC1wNr5vvl2Zm%2BCkJC2hxnANjx68hYcHGwC3ibSRWPpZVSAXAJHDsLfwv8iDtCCXrS%2BEhfP8oyCQDQ%2FOik8LUcATGC%2B2LYZlLRoZRSGgAuh5etpovfcT%2BvRX8FsKGU4Q7XyKQAQFQeyEAgRZJX%2Fh14k0mtlYYupQAgW%2Fy%2FA05yRyRt3slDD7G8BiYJAJZqrXaOydEDM%2FCmS%2BEbw87O0AAwqbZW%2B9OPuYP5fh8Nw460hOcnEQAi%2B%2BvZvYI7BRHcPwtbLk4vIgcuZQBgp3%2BLJ0lfAt%2B4lUkFgObxwfwTwq5MtT7wVA8FgCW4MfZu8sbxzbezM8kAKOIEwPUGfnFQBAwMAANXAJeM857vT8qkA0D0FMgEVxt4%2FyAgGAgAmXr3426HEgRePcgIanxmGgCg6bo3387ggkHUxn0DwKRn%2FHsA2VUmRed8%2FTgOR71ueJoWAOiIKBC4F0kRHIjhp0z6p%2BAyCAA%2BD%2Fy024MWf9RKnhCKpwUAolXKopyV%2FpLJuXHtNjd9AcDA1cB73Qal15flzjgV2ePJ38sSZ79liRJSBrUJDGm7zDq6N9DpwCt92RMEA8CkXji3uZ2N03Ev9O0OWQBrZazJkcNgXhkXkBQcD8808NkQWvsBwH3AD9tGdaV76ohu9YoIKxME3SZvXBZfY5RNwZe9q%2BQIvroYqIQNAkBmsLjoToqQUPd9fgiiqwbBOC2%2BnQ%2FZE%2Fzr2skJMjTtCYDt8OqmJ2%2FIkuf4kNUYUZ2qQDCOi2%2BnWH5oMjr1yitNqjooLD0BYOBG125fR76fGDPWn0dd2SAY58W3W8GX1l4h32TgrQMDINMzd3iv6GpXptuTUMoCwbgvvl0LGZp%2B1VuYCLYudvFA6soBlmB37Fj2yBfvlElYeWeMw4JgUhbfknz%2FWpPzrhdGhQAw8Gb5ubvrPSkKHx%2Bjg4Jg0hZfdBcoiN5i4G%2Fy3t1CACzBzthx1hTbF%2Fuf1NIvCCZx8e3aaBvQduCUO0yOjab%2BngsAA6dnRh7tNmTtUYW7Vp2ACgXBJC%2B%2B5lNuaDkeJVvy4hMUAUD%2B62%2BxizNupl3DgKYXCCZ98e3c5Fwb32hyAm6sAUBm39dhdapr3jK9dIdZwDKeLQLBtCy%2B5kjGpFLdeuUk410frAGAr%2FWTf%2F6PljHrY9aGD4JpWnw71V9ZG8Zmh4EOje4aACzCo1Hqr5kUmfnKzGvainToEnRUpnHxRZcCVMig1CkPm9Qxq106AJCFapF5d1J0K6YIjD3VhdOGjimhRyCX8YYXruZsNwaBD4A%2FJY3OlZRxuu6dkjWpnYyc6%2BI%2FN%2FBrdiA%2BAMQ1FI4nKeN641f7LE5whzk3hU8aZ1dvA8DAVuAzllaFYnvtGBEezSjEo%2FajFzAbOf%2FuOtTQen4jsZhofyV2n4lj4tVVGKCd%2FnrtXvufvBB2EZy%2BmIk%2BLgA%2BCPzeOvsvc%2Bph7thjWf7mN8tttM%2FWcraBPzDwu8n7ZNsycHdm5JP89MoRB%2BRtzM3RWl5m7uijWX7iCc6fmeFgS5Z%2BadG7qcHbd9T%2Bu9tvVfzNTmIyDr3x2ff8%2FDw371OQ2bQ0N21idY8CztZfnqIzDl0EX1nMXPkSAJj0hleh7drlZ0YYgZOZGbYcPNhxPNvabLIiduqVRqNBKwNGs9lM%2Fi02rN%2F1rc%2BMwHPwBes%2B%2B4y%2FhXSwb6cf1bN%2FUx%2BrOeOw1W3dRhSxy2H90jvcdcQRrDw9lCvfQOjRrN219snNBp5KALAEb4%2FhBltHJt4dDv4DdTvYQ3EUcXo2ce75XGf2vB3ZLroWeWVFYXUkJqSMTYs2Ozvb%2Ft0Fi%2F23nhNo9HEX2h29%2Fd1%2Bz83NsbzcPTCs6u72AKA2dzWbNLoAaLBZ6%2F2UrxSKYNsi3Gw5QEf4NqXWCA7N3bvv8BqNBluyt%2FmYmRmuc97arVHESo4wZRdFC6lFFQi08C4ILCgsZ7AcwwdLyEAtNykCi20jjwPYv93ebELNIJBu35NEPmLg3RYAsvppm82PZP%2BPIrY4C%2FyiRoNPOXv%2BuTMz7HEA4bJcu9h2USzrd7eBkMUNreNyEv8Zl1v4HGDWAXHd2kdfDgB2G3iDBYDizrSNfBXMT7Z%2FdRZXNz%2FbaLAhjrnFAcS5UcSeHA6wYcOG5K3XW92MokQwXLXCWJ0EeH114wBtTlDj%2BORG9sXO%2Fp4ysDkyKbeXUWlSlFShw%2B%2BrhkG6i39Yo8GzrRaboohbnQU%2FJ4rY12ULcFmyK%2B2XNXxXY9ZNO9BNCNTf5FApgI4CBF%2Fwkl7MwEujLBVL24ukbi9f%2F1YuyeTRbLKx1eoAwBldvHTKWuRe7VgQhACgSAjU71KyHRgBCHyv4gjOEQf4TeBPLPF16%2F9dAMxEES19Wi3mo4hPO5MkAaVHDP5e6zf030M4SzcO4Aqj7mDqkgdyFEK%2FJQB8KEvWkIxJ98AvGXqqwhuwABDrf05Cn9hko8Fcq9UBgKJjYHhP9dTsJgS6AJCcs5IJubsbDSJH4K1qpApS7SU%2BvEYA0Pm%2FnZunTrt%2F98yvt6vhKHLGkQOELEw%2FHGAhitgbx9y1eTMr364%2B%2FWCO38ANAkBHkKc6zb9WNm5k6%2F79SWAJqVXcvdUHgHLJvKAIDlmK0dQJBYDqRXGc0FTXFpBjJnanACDZoB3dRR6%2Fm2qau%2BWFBc7cuzc5eaQ6vBfKtAMg2Q4y0NcFAN1EyJPYFkUeFQDkU%2FgD9kddAUtKraMcWFjgrEAAjIMQGDInoRxgFABQaBklInAA8A0BQDYDbaPfOi%2BBLAB00%2B8HYvA5wLQJgS6Y6uIA%2FqVQBM9Gi%2FB85HB9JeyrywbwwKZNnLVnT5LNsxcAppEDWBDUBQDJWEpy7JQD4gDiDG2u%2F%2FoQPldSnX4AMGlCYDdFkH%2FtXBcAtGx3dq7dQQFAnKEd8m0dAMOhux8ZoG4OkAOAWKrgvTHM28GsbwHTCwB%2FC4hgn2QAWYUoFW9S6hQC9y8scPbevYn%2Fga%2FmnfRj4DhuAb4QGMPT2gIUc76t%2Fa31GBggBM6fcAL7Hn44MVYY9V1ACG8Y5y3APwbKRkQAkDu5MrokpU5FkBUCu3GA%2BeOPZ98jjyRZpSdJExjCAUatCFJSEgFgt5vgqU5VcMgpwAJgGjlA3QDIUQXvFgCUmLCd3q3Oy6B1AKT3H3UdA3Mug64TADocQuq8Dg4RAuePO459jz66vgWECCA96uRcB39Ix8CLYvhD%2B2ydBiEhHMCOa30LGB4BOQYhF43UJCyEA1iy14XA4QGgiCFuGjrFENQWoMivbZPxOo1C1zlAvTKAbxS6Ai%2BxZuEdN4J1mYWvA6A%2BAOToAL5j4HDrGnZHDO1rgLocQ0L0AOtbwPCsXy3kOIbcaeA0C4CrYycTSF2uYescoD4OkOMalmQWsVtAR1jYupxD14XA%2BgDgO4e2YNsOxzlUgcA6UtfXcSnUDweYtFNAkWtYngdT1YqgPPfwWTjmEnjCDRAhkLS9wuuQA6YZAPJT3JnjHu4CQEYYbatgubRXFEqmZ4AICQl%2BRrA6FELTLASGcAAXAHKHS%2BIJVVByFEDtzGJtDrAEW%2BL0YigpdQSJCuEA8yeeyL6HHpo4VXAIB7BzrS1AQbDiHPf3MvAQFCQq4wId%2BoCqw8T1IwT2CvJcxkSV0Uaoa5jbVwKAijhATpi45Pxv%2B%2FfjBF4L%2FHpd9wIhHGBS9QAhW4DLAZLwdxXIADns%2F1rjBAP1AaA7l3aOoKpDxU4zAEIMQjoAUAb78dooCBV7RuYOmNRe4wJgUgfSl9q2Xp6FjK1gfKwDIJ3Vqo6BOcGiHzdOIPAiAFwJXGwXvMpw8SEAmFQhcBw4QE64%2BCsNXOq%2BzGs4QJ0JI7oJgQuNBrcpUERmFHq6E6uvCm5UVps2MJUAsMvx%2BbdCbF7gqio4QF7CiCYct90LEZDrBebHDKgqZUw3DtAGQHYMnBSDEAHJxiZ0F7bbKaYKAAycMkYE%2BHGD9FsVSaO6KYI2NZvc6ihG3qjQMWMQ%2FasXp1AcQRW5f%2B10xi8A2BiDfpi5sgGQlzSqKIFkoR%2BogV1OUo0klmzZaeO6cQCFqVPmCmsV%2FOaZGfatriaOpIoloG9rJp6EhtObl8Xhs%2Bnf9Xf9W46nNgaB%2Bzdp4vQ3%2FeZOhNqyDqv6dn3n3H7cMdi21M9yHDPXbHKbBwABww9bW4UQmJM2LokJmAfebgA4F7jFfajsxJHdAHDI7Cy3rKwwe%2BSRrDwlbfZkF3EA%2B%2BZXyQEKEkeeZ%2BDWvgCgyr7PQNmpY60QqOhgerNG6TVbNbwEAD98bRV6AKWRl%2FbPKYVJI3OPge6TBs4BbnN%2FK9NvwHIAse7VLDycG43b7o0hamA9V1S6RfeueuFdGuwW5QawLnMLKEgefc5iupvmlp6xIPwTQZnp4y0AtF8ur65iF3%2Bu0WC51UoUJCGLX%2FUi9tt%2B%2Bz7AiQHkHgPdYNVlAUBav5z08Z808I5u4%2B8JgEvhFTOgU0W7yIz4%2BH5nJae%2BywFsJHD3vtwFQLcAzSUMpZQm2o6hWQ4D%2B3%2BXCySBGJwcB2UBQLF%2BFezJLU04efvajPIddXoCQLUNXAW8332yjJtCfwtQ%2B%2Fbt6If9l7J6FTfSDczDHgNzbvxEzQeMo9EdeAuwDy7BvbETTm4h8yQOQlBB71YI1N6o45grBPrsfxI4QPpypxlMfIGvgwtkOg2fQwyCQbF%2BhX7b2%2FnwfSYw50fw%2Bpk0n0D7plD9DWs1ZDnAhmaTA541jAVASHzeQSZuFM%2F4oC4DADnXvSKt48ZvKBnAfdjAh4F3u78pD%2BkxA86mBYD%2FuPu22DdJdYpy%2BgzYfW2PWeHWp8vSM%2BgW8C3gobVUtDOChRAYzAFsYybNRtqRUmBQBVE3ALjSf9H5OYTAUddxhVqNxXKB2WYzyYImEAwCgAKFz%2BdNGuUnuAwCgFcB97ih5XQ0FAgU87efsjw%2Fz5lOajU7Qfq2ihPtqaM8x%2FdDT1FdcYBYiamyxbbgHnQLkJuX4vsqC4gtkVIQwKkG%2Fq2fMfcNADVu4FeAj7kdDZJowgaLdtvx98leadr6IXZUdYuUW4NGCPETP2R0XWjgL%2FulcSAAZCBYczTs99r4wPw8ZzkcoGOPLEgT1y%2BBo67vGom6e764gDim3uZ%2BtoCca16ReJWBSwahdWAAZCDoCC%2Bj3%2BRidFLgSGysYFt9UjV%2FIeS6x1hfxxEKgK8DMvPyynUGfjlkDHl1hgJABgKFn%2F1Zt%2FHQ46EvBLYFJCWBrMhGftCJGuY5N6NpHthDAFBw3LvLeHPf7ziHBsBVcMQKfCaGH3c7D%2BEELgcoOiL1S9A41rfbgGwBlCRCKXBdensBoODNv2cOzrwYhspFOzQAMi6g6wGlnj%2FZXYAQmUB7oc8SJ0XrFwo2aweo%2BgKDq%2B526c9rr2DP189nZrkeQoeRW68UAKjlS%2BHEWbgl9kQAuZrrCrnXEdEejWZ0Pl5dbatS3VG7SqGhqK7w4TxlVZECS8Dff%2BSRLOzfT%2Bv55ztGpRQ6WmWd970ihnC%2BAe0KQ5fSAKCRLKYxZz7lpqHX79ITKBSpwJBXXKWPPGp0Xq5b%2BVOmyrmfsStjmDyCtDXYokX%2FmnfOz%2F725RnYdumaNMCD46BUAGgY74PDN8JNwGn%2BsHwnk7jRoLmwwOsd9AsAyRuTpYEVGBLWmR0L%2Fe%2FBSe98Us6w6snGzZdtn%2FrS79aLV2%2Bl7BFla2gTXISEr%2FXHbNvTCPz9v0C9q6p37IdtV68x%2BBluBkoHgIZjYCaCj8fwTn94OiHo%2FqCSjoebi5E%2BLfBJr98RpeOFEV1%2FMlzwtgriZVe6DgauIEdBoavkE5xs1bM15c0b6QrndN447DBazz6b2PA9vPZK1z6xxpunTDoqBYAGugQXxiCv49Rg3ik6OihzdeWDKHPGSmxLb72CN%2FmWPFkX2mXeZeAvSuxyTVO1zP0OOKUFH83yUXQMQgKi4hPL7%2BD%2FU5EBp7xw3Qsdh%2F67GvDbl8H9Vc9JLQCwRPh5il3iZHKurBVFJ4WqJ6Ku9iXhK2jzM8UdftjAe%2BoaT60AEFEGtpJGKG9nK3WJFSfQ1nBoXTNQUz9y1xKr15tfUHTJ914Dn61pSEk3tQPA4QY7gO1FxEqLKEujdkbLOmelxL7kpaujXY%2FU0FeYLnNR4nBGIwMUEWBAxiXyV29nL%2FfrKj6Bjo5HjRKtfa6AhLsns5u7HE2e29onG3D5ZfBAn12UVn1kHMClINsWBISOW0W3jvx%2BtD2IM7QjHJU2DeU0pOOc3nSx%2BW4B3yL4xxj01tfK7vOoHAsA2IEtwXkxXESBJ6utJ%2B2c8txJcBQYip3CylnYola0yFp0CXS6kpOmsEfZFcEfLXpOt70eqvLvYwUAS%2BhlcEYDfgP4%2BRDidXLQVqHPIdndQ8hz%2FdbRkU1XNs9lnx7s3W3%2BryO4dtEzq%2B%2B3%2FyrqjyUALKEmDVZ1YfZREPOgIj3%2BJsUWyMAgXYO4hn6XNkof6eMt8dqzpdPXGy1dvz56m7Xg%2BuwD9mS%2FBw0grSShX0qcjxl4vI%2Fnaq061gBwZyKLWrINeGsmCtQ6UYGdKZCB3vabxvFtH3sZIHCSpUuQl5L9dFgihbZRVr0I7olhJ7DTjb9XVvtVtzMxHKBoIgwcE8FrY3hNBKfqOxMHSp%2B7CL4bw92ZJ%2FbdK%2FDFK%2BG%2FSu%2BoxgYnHgB5c5UZpsj8QB9dPEqNYD86PGyMYEOcfqvY7X5%2FnAr29hivb3lePxjDg0upFneqyv8BC0K%2Bo6SYlTUAAAAASUVORK5CYII%3D%22%3B%0A%0A%20%20let%20delay%20%3D%20(ms)%20%3D%3E%20new%20Promise((res)%20%3D%3E%20setTimeout(res%2C%20ms))%3B%0A%20%20let%20clamp%20%3D%20(min%2C%20max%2C%20num)%20%3D%3E%20%7B%0A%20%20%20%20return%20num%20%3C%3D%20min%20%3F%20min%20%3A%20num%20%3E%3D%20max%20%3F%20max%20%3A%20num%3B%0A%20%20%7D%3B%0A%0A%20%20let%20canvasSize%3B%0A%20%20if%20(window.ResizeObserver)%20%7B%0A%20%20%20%20let%20canvasWidth%20%3D%0A%20%20%20%20%20%20Scratch.vm.runtime.renderer._xRight%20-%20Scratch.vm.runtime.renderer._xLeft%3B%0A%20%20%20%20let%20canvasHeight%20%3D%0A%20%20%20%20%20%20Scratch.vm.runtime.renderer._yTop%20-%20Scratch.vm.runtime.renderer._yBottom%3B%0A%20%20%20%20const%20resize%20%3D%20new%20ResizeObserver((entries)%20%3D%3E%20%7B%0A%20%20%20%20%20%20for%20(const%20entry%20of%20entries)%20%7B%0A%20%20%20%20%20%20%20%20canvasWidth%20%3D%20entry.contentRect.width%3B%0A%20%20%20%20%20%20%20%20canvasHeight%20%3D%20entry.contentRect.height%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D)%3B%0A%20%20%20%20resize.observe(Scratch.vm.runtime.renderer.canvas)%3B%0A%20%20%20%20canvasSize%20%3D%20()%20%3D%3E%20%5BcanvasWidth%2C%20canvasHeight%5D%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20canvasSize%20%3D%20()%20%3D%3E%20%7B%0A%20%20%20%20%20%20const%20rectangle%20%3D%0A%20%20%20%20%20%20%20%20Scratch.vm.runtime.renderer.canvas.getBoundingClientRect()%3B%0A%20%20%20%20%20%20return%20%5Brectangle.width%2C%20rectangle.height%5D%3B%0A%20%20%20%20%7D%3B%0A%20%20%7D%0A%0A%20%20let%20simulatedX%20%3D%200%3B%0A%20%20let%20simulatedY%20%3D%200%3B%0A%20%20const%20postMouseData%20%3D%20(data)%20%3D%3E%20%7B%0A%20%20%20%20const%20%5BrectangleWidth%2C%20rectangleHeight%5D%20%3D%20canvasSize()%3B%0A%20%20%20%20Scratch.vm.postIOData(%22mouse%22%2C%20%7B%0A%20%20%20%20%20%20...data%2C%0A%20%20%20%20%20%20canvasWidth%3A%20rectangleWidth%2C%0A%20%20%20%20%20%20canvasHeight%3A%20rectangleHeight%2C%0A%20%20%20%20%20%20x%3A%0A%20%20%20%20%20%20%20%20(simulatedX%20%2B%0A%20%20%20%20%20%20%20%20%20%20(Scratch.vm.runtime.renderer._xRight%20-%0A%20%20%20%20%20%20%20%20%20%20%20%20Scratch.vm.runtime.renderer._xLeft)%20%2F%0A%20%20%20%20%20%20%20%20%20%20%20%202)%20*%0A%20%20%20%20%20%20%20%20(rectangleWidth%20%2F%0A%20%20%20%20%20%20%20%20%20%20(Scratch.vm.runtime.renderer._xRight%20-%0A%20%20%20%20%20%20%20%20%20%20%20%20Scratch.vm.runtime.renderer._xLeft))%2C%0A%20%20%20%20%20%20y%3A%0A%20%20%20%20%20%20%20%20((Scratch.vm.runtime.renderer._yTop%20-%0A%20%20%20%20%20%20%20%20%20%20Scratch.vm.runtime.renderer._yBottom)%20%2F%0A%20%20%20%20%20%20%20%20%20%202%20-%0A%20%20%20%20%20%20%20%20%20%20simulatedY)%20*%0A%20%20%20%20%20%20%20%20(rectangleHeight%20%2F%0A%20%20%20%20%20%20%20%20%20%20(Scratch.vm.runtime.renderer._yTop%20-%0A%20%20%20%20%20%20%20%20%20%20%20%20Scratch.vm.runtime.renderer._yBottom))%2C%0A%20%20%20%20%7D)%3B%0A%20%20%7D%3B%0A%0A%20%20class%20KeySimulation%20%7B%0A%20%20%20%20getInfo()%20%7B%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20id%3A%20%22cubesterKeySimulation%22%2C%0A%20%20%20%20%20%20%20%20name%3A%20%22Key%20Simulation%22%2C%0A%20%20%20%20%20%20%20%20color1%3A%20%22%23BF0000%22%2C%0A%20%20%20%20%20%20%20%20color2%3A%20%22%23800000%22%2C%0A%20%20%20%20%20%20%20%20menuIconURI%3A%20icon%2C%0A%20%20%20%20%20%20%20%20docsURI%3A%20%22https%3A%2F%2Fextensions.turbowarp.org%2FCubesterYT%2FKeySimulation%22%2C%0A%0A%20%20%20%20%20%20%20%20blocks%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22pressKey%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22press%20key%20%5BKEY%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20KEY%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22KEYS%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22holdKey%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22hold%20key%20%5BKEY%5D%20for%20%5BSECONDS%5D%20seconds%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20KEY%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22KEYS%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SECONDS%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%205%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22clickMouse%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22click%20%5BBUTTON%5D%20mouse%20button%20at%20x%3A%20%5BX%5D%20y%3A%20%5BY%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20BUTTON%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22BUTTONS%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20X%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Y%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22holdMouse%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22click%20and%20hold%20%5BBUTTON%5D%20mouse%20button%20at%20x%3A%20%5BX%5D%20y%3A%20%5BY%5D%20for%20%5BSECONDS%5D%20seconds%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20BUTTON%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22BUTTONS%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20X%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Y%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SECONDS%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%205%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20menus%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20KEYS%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%22space%22%2C%20value%3A%20%22%20%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%22up%20arrow%22%2C%20value%3A%20%22ArrowUp%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%22down%20arrow%22%2C%20value%3A%20%22ArrowDown%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%22right%20arrow%22%2C%20value%3A%20%22ArrowRight%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%22left%20arrow%22%2C%20value%3A%20%22ArrowLeft%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%22enter%22%2C%20value%3A%20%22Enter%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%22backspace%22%2C%20value%3A%20%22Backspace%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%22delete%22%2C%20value%3A%20%22Delete%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%22shift%22%2C%20value%3A%20%22Shift%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%22caps%20lock%22%2C%20value%3A%20%22CapsLock%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%22scroll%20lock%22%2C%20value%3A%20%22ScrollLock%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%22control%22%2C%20value%3A%20%22Control%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%22escape%22%2C%20value%3A%20%22Escape%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%22insert%22%2C%20value%3A%20%22Insert%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%22home%22%2C%20value%3A%20%22Home%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%22end%22%2C%20value%3A%20%22End%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%22page%20up%22%2C%20value%3A%20%22PageUp%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%22page%20down%22%2C%20value%3A%20%22PageDown%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22a%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22b%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22c%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22d%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22e%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22f%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22g%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22h%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22i%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22j%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22k%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22l%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22m%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22n%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22o%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22p%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22q%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22r%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22s%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22t%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22u%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22v%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22w%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22x%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22y%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22z%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%220%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%221%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%222%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%223%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%224%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%225%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%226%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%227%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%228%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%229%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22-%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%2C%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22.%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%60%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%3D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%5B%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%5C%5C%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%3B%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22'%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%2F%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22~%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%2B%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22!%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%3A%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22*%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%23%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22(%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22)%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%3F%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%3C%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%3E%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%40%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20'%22'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20BUTTONS%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%22left%22%2C%20value%3A%20%220%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%22middle%22%2C%20value%3A%20%221%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%20text%3A%20%22right%22%2C%20value%3A%20%222%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20async%20pressKey(args)%20%7B%0A%20%20%20%20%20%20const%20pressKey%20%3D%20new%20KeyboardEvent(%22keydown%22%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20args.KEY%2C%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20document.dispatchEvent(pressKey)%3B%0A%20%20%20%20%20%20await%20delay(100)%3B%0A%20%20%20%20%20%20const%20releaseKey%20%3D%20new%20KeyboardEvent(%22keyup%22%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20args.KEY%2C%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20document.dispatchEvent(releaseKey)%3B%0A%20%20%20%20%7D%0A%20%20%20%20async%20holdKey(args)%20%7B%0A%20%20%20%20%20%20const%20pressKey%20%3D%20new%20KeyboardEvent(%22keydown%22%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20args.KEY%2C%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20document.dispatchEvent(pressKey)%3B%0A%20%20%20%20%20%20await%20delay(args.SECONDS%20*%201000)%3B%0A%20%20%20%20%20%20const%20releaseKey%20%3D%20new%20KeyboardEvent(%22keyup%22%2C%20%7B%0A%20%20%20%20%20%20%20%20key%3A%20args.KEY%2C%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20document.dispatchEvent(releaseKey)%3B%0A%20%20%20%20%7D%0A%20%20%20%20async%20clickMouse(args)%20%7B%0A%20%20%20%20%20%20simulatedX%20%3D%20args.X%3B%0A%20%20%20%20%20%20simulatedY%20%3D%20args.Y%3B%0A%20%20%20%20%20%20postMouseData(%7B%0A%20%20%20%20%20%20%20%20isDown%3A%20true%2C%0A%20%20%20%20%20%20%20%20button%3A%20clamp(0%2C%202%2C%20args.BUTTON)%2C%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20await%20delay(100)%3B%0A%20%20%20%20%20%20postMouseData(%7B%0A%20%20%20%20%20%20%20%20isDown%3A%20false%2C%0A%20%20%20%20%20%20%20%20button%3A%20clamp(0%2C%202%2C%20args.BUTTON)%2C%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%7D%0A%20%20%20%20async%20holdMouse(args)%20%7B%0A%20%20%20%20%20%20simulatedX%20%3D%20args.X%3B%0A%20%20%20%20%20%20simulatedY%20%3D%20args.Y%3B%0A%20%20%20%20%20%20postMouseData(%7B%0A%20%20%20%20%20%20%20%20isDown%3A%20true%2C%0A%20%20%20%20%20%20%20%20button%3A%20clamp(0%2C%202%2C%20args.BUTTON)%2C%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20await%20delay(args.SECONDS%20*%201000)%3B%0A%20%20%20%20%20%20postMouseData(%7B%0A%20%20%20%20%20%20%20%20isDown%3A%20false%2C%0A%20%20%20%20%20%20%20%20button%3A%20clamp(0%2C%202%2C%20args.BUTTON)%2C%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20Scratch.extensions.register(new%20KeySimulation())%3B%0A%7D)(Scratch)%3B","data:application/javascript,(function%20(Scratch)%20%7B%0A%22use%20strict%22%3B%0Aconst%20delay%20%3D%20ms%20%3D%3E%20new%20Promise(res%20%3D%3E%20setTimeout(res%2C%20ms))%3B%0Alet%20topBar%3B%0Alet%20topBar2%3B%0Alet%20css%20%3D%20%22%22%3B%0AtopBar%20%3D%20'div%5Bclass%5E%3D%22menu-bar_main-menu_%22%5D'%3B%0AtopBar2%20%3D%20'div%5Bclass%5E%3D%22menu-bar_account-info-group_%22%5D'%3B%0Aconst%20stylesheet%20%3D%20document.createElement(%22style%22)%3B%0Astylesheet.className%20%3D%20%22shovelcss-style%22%3B%0A%2F%2F%20end%20of%20%3Cbody%3E%20for%20higher%20precedence%20than%20other%20sheets%0Adocument.body.appendChild(stylesheet)%3B%0Acss%20%2B%3D%20%60%24%7BtopBar%7D%2C%20%24%7BtopBar2%7D%20%7B%20background-color%3A%20%23111111%20!important%3B%20%7D%60%3B%0Astylesheet.textContent%20%3D%20css%3B%0Aclass%20darkmodething%20%7B%0AgetInfo()%20%7B%0Areturn%20%7B%0Aid%3A%20%22darkmodething%22%2C%0Aname%3A%20%22%20%22%2C%0Ablocks%3A%20%5B%0A%5D%2C%0A%7D%3B%0A%7D%0A%7D%0AScratch.extensions.register(new%20darkmodething())%3B%0A%7D)(Scratch)%3B%0A%0A","data:application/javascript,%2F%2F%20Name%3A%20Better%20Input%0A%2F%2F%20ID%3A%20BetterInputSP%0A%2F%2F%20Description%3A%20Expansion%20of%20the%20%22ask%20and%20wait%22%20Blocks%0A%2F%2F%20By%3A%20SharkPool%0A%0A%2F%2F%20Version%20V.4.1.0%0A%0A(function%20(Scratch)%20%7B%0A%20%20%22use%20strict%22%3B%0A%20%20if%20(!Scratch.extensions.unsandboxed)%20throw%20new%20Error(%22Better%20Input%20must%20run%20unsandboxed%22)%3B%0A%0A%20%20const%20menuIconURI%20%3D%0A%22data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIxMzQuMTc2MjgiIGhlaWdodD0iMTM0LjE3NjI4IiB2aWV3Qm94PSIwLDAsMTM0LjE3NjI4LDEzNC4xNzYyOCI%2BPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTE3Mi45MTE4NiwtMTEyLjkxMTg2KSI%2BPGcgZGF0YS1wYXBlci1kYXRhPSJ7JnF1b3Q7aXNQYWludGluZ0xheWVyJnF1b3Q7OnRydWV9IiBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZS1saW5lY2FwPSJidXR0IiBzdHJva2UtbGluZWpvaW49Im1pdGVyIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS1kYXNoYXJyYXk9IiIgc3Ryb2tlLWRhc2hvZmZzZXQ9IjAiIHN0eWxlPSJtaXgtYmxlbmQtbW9kZTogbm9ybWFsIj48cGF0aCBkPSJNMTcyLjkxMTg2LDE4MGMwLC0zNy4wNTE3NiAzMC4wMzYzOCwtNjcuMDg4MTQgNjcuMDg4MTQsLTY3LjA4ODE0YzM3LjA1MTc2LDAgNjcuMDg4MTQsMzAuMDM2MzggNjcuMDg4MTQsNjcuMDg4MTRjMCwzNy4wNTE3NiAtMzAuMDM2MzgsNjcuMDg4MTQgLTY3LjA4ODE0LDY3LjA4ODE0Yy0zNy4wNTE3NiwwIC02Ny4wODgxNCwtMzAuMDM2MzggLTY3LjA4ODE0LC02Ny4wODgxNHoiIGZpbGw9IiM5NDAwZmYiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIwIi8%2BPHBhdGggZD0iTTI0OS42Nzg4MiwxNDEuMDQ1NzZsMTAuODMzOSwwLjAzOTgzYzEwLjUxNTI2LDAuMDc5NjYgMTAuODMzOSwwLjExOTQ5IDExLjUxMTAyLDAuNTk3NDVjMi40Mjk2NiwxLjg3MjA0IDIuMzg5ODMsNC45Mzg5OSAtMC4xNTkzMyw2LjY1MTY5Yy0wLjc1Njc4LDAuNTE3OCAtMS4xMTUyNSwwLjU1NzYzIC00LjM0MTUyLDAuNTU3NjNoLTMuNTA1MDl2MzEuMTA3NjN2MzEuMDY3NzloMy40NjUyNmMzLjk0MzIyLDAgNC44OTkxNiwwLjMxODY1IDUuODE1MjYsMS45NTE3YzEuMDM1NiwxLjgzMjIgMC41MTc4LDMuOTQzMjMgLTEuMjc0NTgsNS4yNTc2M2MtMC42NzcxMiwwLjUxNzggLTAuOTk1NzYsMC41MTc4IC0xMS41MTEwMiwwLjU5NzQ1bC0xMC44MzM5LDAuMDc5NjZsLTEuMTE1MjUsLTAuNTU3NjNjLTEuMTU1MDksLTAuNjM3MjkgLTIuMTkwNjgsLTIuMTUwODUgLTIuMTkwNjgsLTMuMzg1NmMwLC0wLjg3NjI3IDAuOTk1NzcsLTIuNjY4NjQgMS43OTIzNywtMy4yNjYxYzAuNTk3NDYsLTAuNDc3OTcgMS4xMTUyNSwtMC41MTc4IDQuMzQxNTIsLTAuNTk3NDVsMy42NjQ0LC0wLjA3OTY3di0zMS4wNjc3OXYtMzEuMDY3NzlsLTMuNjY0NCwtMC4wNzk2N2MtMy4yMjYyNywtMC4wNzk2NiAtMy43NDQwNiwtMC4xMTk0OSAtNC4zNDE1MiwtMC41OTc0NWMtMC43OTY2MSwtMC41NTc2MyAtMS43OTIzNywtMi4zNSAtMS43OTIzNywtMy4yNjYxYzAsLTEuMjM0NzUgMC45OTU3NiwtMi43ODgxNCAyLjE5MDY4LC0zLjM4NTZ6IiBmaWxsPSJub25lIiBzdHJva2U9IiM2OTAwYjQiIHN0cm9rZS13aWR0aD0iMTAiLz48cGF0aCBkPSJNMjI0LjY2NTI2LDE1OC40NTE3aDI4LjA0MDY3djIxLjU0ODMxdjIxLjUwODQ4bC0yOC40Mzg5OCwtMC4wMzk4M2MtMjguMiwtMC4wNzk2NiAtMjguNDM4OTksLTAuMDc5NjcgLTI5LjMxNTI2LC0wLjU5NzQ2Yy0wLjQ3Nzk3LC0wLjI3ODgyIC0xLjExNTI1LC0wLjkxNjEgLTEuMzk0MDcsLTEuNDczNzNsLTAuNTU3NjMsLTAuOTU1OTN2LTE4LjQ0MTUzYzAsLTE3LjcyNDU4IDAuMDM5ODMsLTE4LjQ0MTUzIDAuNDc3OTcsLTE5LjM1NzYzYzAuNTk3NDYsLTEuMDc1NDIgMC45NTU5MywtMS40MzM5IDIuMTUwODUsLTEuODcyMDNjMC43NTY3OCwtMC4yMzg5OSA2LjE3MzczLC0wLjMxODY1IDI5LjAzNjQ0LC0wLjMxODY1ek0yMTQuNjI3OTcsMTY4LjQ0OTE2Yy0wLjYzNzI5LDAuMzk4MyAtMS4zMTQ0MSwxLjc5MjM3IC01LjAxODY0LDkuOTk3NDZjLTQuNjIwMzQsMTAuMjM2NDQgLTQuODU5MzIsMTAuOTEzNTYgLTMuODIzNzIsMTIuMDI4ODJjMS4xNTUwOSwxLjIzNDc1IDIuOTQ3NDUsMS4yNzQ1NyAzLjk4MzA1LDAuMDM5ODNjMC4zMTg2NSwtMC4zOTgzIDAuNzk2NiwtMS4yNzQ1NyAxLjAzNTU5LC0xLjk1MTdsMC40MzgxNCwtMS4yMzQ3NWg0Ljc3OTY2aDQuNzc5NjZsMC41NTc2MywxLjQzMzljMC43MTY5NSwxLjk1MTcgMS40NzM3MywyLjYyODgyIDIuOTA3NjMsMi42Mjg4MmMwLjkxNjEsMCAxLjE5NDkxLC0wLjExOTQ5IDEuNzkyMzcsLTAuNzk2NjFjMC41MTc4LC0wLjU1NzYzIDAuNzE2OTUsLTEuMDM1NTkgMC43MTY5NSwtMS42NzI4OGMwLC0wLjYzNzI5IC0xLjE1NTA4LC0zLjU4NDc0IC0zLjc4MzksLTkuNDM5ODNjLTQuOTc4ODEsLTExLjE5MjM3IC00LjczOTg0LC0xMC43MTQ0MSAtNS41MzY0NSwtMTEuMTEyNzFjLTAuOTE2MSwtMC41MTc4IC0xLjkxMTg3LC0wLjQ3Nzk2IC0yLjgyNzk3LDAuMDc5NjZ6IiBmaWxsPSJub25lIiBzdHJva2U9IiM2OTAwYjQiIHN0cm9rZS13aWR0aD0iMTAiLz48cGF0aCBkPSJNMjE2LjEwMTcsMTc2LjA5NjYxYzAuMTU5MzIsMC4xNTkzMiAyLjU4ODk4LDYuMTMzOSAyLjU4ODk4LDYuMzMzMDVjMCwwLjE1OTMyIC0xLjE5NDkxLDAuMjM4OTggLTIuNzA4NDcsMC4yMzg5OGMtMi4wNzExOCwwIC0yLjY2ODY0LC0wLjA3OTY2IC0yLjU4ODk4LC0wLjMxODY1YzAuMDc5NjYsLTAuMTU5MzIgMC42NzcxMiwtMS42MzMwNSAxLjM5NDA3LC0zLjMwNTkzYzAuNzE2OTUsLTEuNjMzMDUgMS4zMTQ0LC0yLjk4NzI5IDEuMzE0NCwtMi45NDc0NnoiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzY5MDBiNCIgc3Ryb2tlLXdpZHRoPSIxMCIvPjxwYXRoIGQ9Ik0yNjcuNjQyMzgsMTgwdi0yMS41ODgxM2w4LjI4NDc0LDAuMDc5NjZjNy44MDY3OCwwLjA3OTY2IDguMzI0NTgsMC4xMTk1IDkuMTIxMTksMC41OTc0NmMwLjQ3Nzk2LDAuMjc4ODIgMS4xMTUyNSwwLjkxNjEgMS4zOTQwNywxLjQ3MzczbDAuNTU3NjIsMC45NTU5M3YxOC40ODEzNnYxOC40NDE1M2wtMC41NTc2MiwwLjk1NTkzYy0wLjI3ODgyLDAuNTU3NjMgLTAuOTE2MTEsMS4xOTQ5MSAtMS4zOTQwNywxLjQ3MzczYy0wLjgzNjQ0LDAuNTE3OCAtMS4zMTQ0MSwwLjUxNzggLTkuMTIxMTksMC41OTc0NmwtOC4yODQ3NCwwLjA3OTY2di0yMS41NDgzeiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNjkwMGI0IiBzdHJva2Utd2lkdGg9IjEwIi8%2BPHBhdGggZD0iTTI0OS42Nzg4MiwxNDEuMDQ1NzZsMTAuODMzOSwwLjAzOTgzYzEwLjUxNTI2LDAuMDc5NjYgMTAuODMzOSwwLjExOTQ5IDExLjUxMTAyLDAuNTk3NDVjMi40Mjk2NiwxLjg3MjA0IDIuMzg5ODMsNC45Mzg5OSAtMC4xNTkzMyw2LjY1MTY5Yy0wLjc1Njc4LDAuNTE3OCAtMS4xMTUyNSwwLjU1NzYzIC00LjM0MTUyLDAuNTU3NjNoLTMuNTA1MDl2MzEuMTA3NjN2MzEuMDY3NzloMy40NjUyNmMzLjk0MzIyLDAgNC44OTkxNiwwLjMxODY1IDUuODE1MjYsMS45NTE3YzEuMDM1NiwxLjgzMjIgMC41MTc4LDMuOTQzMjMgLTEuMjc0NTgsNS4yNTc2M2MtMC42NzcxMiwwLjUxNzggLTAuOTk1NzYsMC41MTc4IC0xMS41MTEwMiwwLjU5NzQ1bC0xMC44MzM5LDAuMDc5NjZsLTEuMTE1MjUsLTAuNTU3NjNjLTEuMTU1MDksLTAuNjM3MjkgLTIuMTkwNjgsLTIuMTUwODUgLTIuMTkwNjgsLTMuMzg1NmMwLC0wLjg3NjI3IDAuOTk1NzcsLTIuNjY4NjQgMS43OTIzNywtMy4yNjYxYzAuNTk3NDYsLTAuNDc3OTcgMS4xMTUyNSwtMC41MTc4IDQuMzQxNTIsLTAuNTk3NDVsMy42NjQ0LC0wLjA3OTY3di0zMS4wNjc3OXYtMzEuMDY3NzlsLTMuNjY0NCwtMC4wNzk2N2MtMy4yMjYyNywtMC4wNzk2NiAtMy43NDQwNiwtMC4xMTk0OSAtNC4zNDE1MiwtMC41OTc0NWMtMC43OTY2MSwtMC41NTc2MyAtMS43OTIzNywtMi4zNSAtMS43OTIzNywtMy4yNjYxYzAsLTEuMjM0NzUgMC45OTU3NiwtMi43ODgxNCAyLjE5MDY4LC0zLjM4NTZ6IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIvPjxwYXRoIGQ9Ik0yNTEuMzcyNiwxNTguNDUxN3Y0My4wNTY3OGMwLDAgLTU1LjU0NDYzLC0wLjExOTUgLTU2LjQyMDksLTAuNjM3MjljLTAuNDc3OTcsLTAuMjc4ODIgLTEuMTE1MjUsLTAuOTE2MSAtMS4zOTQwNywtMS40NzM3M2wtMC41NTc2MywtMC45NTU5M3YtMTguNDQxNTNjMCwtMTcuNzI0NTggMC4wMzk4MywtMTguNDQxNTMgMC40Nzc5NywtMTkuMzU3NjNjMC41OTc0NiwtMS4wNzU0MiAwLjk1NTkzLC0xLjQzMzkgMi4xNTA4NSwtMS44NzIwM2MwLjc1Njc4LC0wLjIzODk5IDU1Ljc0Mzc4LC0wLjMxODY1IDU1Ljc0Mzc4LC0wLjMxODY1ek0yMTQuNjI3OTcsMTY4LjQ0OTE2Yy0wLjYzNzI5LDAuMzk4MyAtMS4zMTQ0MSwxLjc5MjM3IC01LjAxODY0LDkuOTk3NDZjLTQuNjIwMzQsMTAuMjM2NDQgLTQuODU5MzIsMTAuOTEzNTYgLTMuODIzNzIsMTIuMDI4ODJjMS4xNTUwOSwxLjIzNDc1IDIuOTQ3NDUsMS4yNzQ1NyAzLjk4MzA1LDAuMDM5ODNjMC4zMTg2NSwtMC4zOTgzIDAuNzk2NiwtMS4yNzQ1NyAxLjAzNTU5LC0xLjk1MTdsMC40MzgxNCwtMS4yMzQ3NWg0Ljc3OTY2aDQuNzc5NjZsMC41NTc2MywxLjQzMzljMC43MTY5NSwxLjk1MTcgMS40NzM3MywyLjYyODgyIDIuOTA3NjMsMi42Mjg4MmMwLjkxNjEsMCAxLjE5NDkxLC0wLjExOTQ5IDEuNzkyMzcsLTAuNzk2NjFjMC41MTc4LC0wLjU1NzYzIDAuNzE2OTUsLTEuMDM1NTkgMC43MTY5NSwtMS42NzI4OGMwLC0wLjYzNzI5IC0xLjE1NTA4LC0zLjU4NDc0IC0zLjc4MzksLTkuNDM5ODNjLTQuOTc4ODEsLTExLjE5MjM3IC00LjczOTg0LC0xMC43MTQ0MSAtNS41MzY0NSwtMTEuMTEyNzFjLTAuOTE2MSwtMC41MTc4IC0xLjkxMTg3LC0wLjQ3Nzk2IC0yLjgyNzk3LDAuMDc5NjZ6IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIvPjxwYXRoIGQ9Ik0yMTYuMTAxNywxNzYuMDk2NjFjMC4xNTkzMiwwLjE1OTMyIDIuNTg4OTgsNi4xMzM5IDIuNTg4OTgsNi4zMzMwNWMwLDAuMTU5MzIgLTEuMTk0OTEsMC4yMzg5OCAtMi43MDg0NywwLjIzODk4Yy0yLjA3MTE4LDAgLTIuNjY4NjQsLTAuMDc5NjYgLTIuNTg4OTgsLTAuMzE4NjVjMC4wNzk2NiwtMC4xNTkzMiAwLjY3NzEyLC0xLjYzMzA1IDEuMzk0MDcsLTMuMzA1OTNjMC43MTY5NSwtMS42MzMwNSAxLjMxNDQsLTIuOTg3MjkgMS4zMTQ0LC0yLjk0NzQ2eiIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiLz48cGF0aCBkPSJNMjY4Ljk3NTcxLDE1OC40MTE4N2MwLDAgMTUuMjc1OTksMC4xOTkxNSAxNi4wNzI2LDAuNjc3MTJjMC40Nzc5NiwwLjI3ODgyIDEuMTE1MjUsMC45MTYxIDEuMzk0MDcsMS40NzM3M2wwLjU1NzYyLDAuOTU1OTN2MTguNDgxMzZ2MTguNDQxNTNsLTAuNTU3NjIsMC45NTU5M2MtMC4yNzg4MiwwLjU1NzYzIC0wLjkxNjExLDEuMTk0OTEgLTEuMzk0MDcsMS40NzM3M2MtMC44MzY0NCwwLjUxNzggLTE2LjA3MjYsMC42NzcxMiAtMTYuMDcyNiwwLjY3NzEyeiIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiLz48L2c%2BPC9nPjwvc3ZnPg%3D%3D%22%3B%0A%0A%20%20const%20blockIconURI%20%3D%0A%22data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSI3OS4zNjMxMyIgaGVpZ2h0PSI4Ny45MjE0OSIgdmlld0JveD0iMCwwLDc5LjM2MzEzLDg3LjkyMTQ5Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjAwLjMxODQzLC0xMzYuMDQxNDMpIj48ZyBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpc1BhaW50aW5nTGF5ZXImcXVvdDs6dHJ1ZX0iIGZpbGwtcnVsZT0ibm9uemVybyIgc3Ryb2tlLWxpbmVjYXA9ImJ1dHQiIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWRhc2hhcnJheT0iIiBzdHJva2UtZGFzaG9mZnNldD0iMCIgc3R5bGU9Im1peC1ibGVuZC1tb2RlOiBub3JtYWwiPjxwYXRoIGQ9Ik0yMzIuNjcxMTksMTgwLjAwMDAzdjIxLjU0ODNsLTExLjcwNjUyLC0wLjA3OTY2Yy0xMS4wMzExNiwtMC4wNzk2NiAtMTEuNzA2NTQsLTAuMDc5NjYgLTEyLjg4ODQ1LC0wLjU5NzQ2Yy0wLjY3NTM3LC0wLjI3ODgyIC0xLjU3NTg3LC0wLjkxNjEgLTEuOTY5ODUsLTEuNDczNzNsLTAuNzg3OTMsLTAuOTU1OTN2LTE4LjQ0MTUzdi0xOC40ODEzNmwwLjc4NzkzLC0wLjk1NTkzYzAuMzkzOTgsLTAuNTU3NjMgMS4yOTQ0OCwtMS4xOTQ5MSAxLjk2OTg1LC0xLjQ3MzczYzEuMTI1NjMsLTAuNDc3OTYgMS44NTcyOSwtMC41MTc4IDEyLjg4ODQ1LC0wLjU5NzQ2bDExLjcwNjUyLC0wLjA3OTY2djIxLjU4ODEzeiIgZGF0YS1wYXBlci1kYXRhPSJ7JnF1b3Q7aW5kZXgmcXVvdDs6bnVsbH0iIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzY5MDBiNCIgc3Ryb2tlLXdpZHRoPSIxMCIvPjxwYXRoIGQ9Ik0yMzAuNzg3MTYsMjAxLjU0ODMzYzAsMCAtMjEuNTI5MDQsLTAuMTU5MzIgLTIyLjcxMDk0LC0wLjY3NzEyYy0wLjY3NTM3LC0wLjI3ODgyIC0xLjU3NTg3LC0wLjkxNjEgLTEuOTY5ODUsLTEuNDczNzNsLTAuNzg3OTMsLTAuOTU1OTN2LTE4LjQ0MTUzdi0xOC40ODEzNmwwLjc4NzkzLC0wLjk1NTkzYzAuMzkzOTgsLTAuNTU3NjMgMS4yOTQ0OCwtMS4xOTQ5MSAxLjk2OTg1LC0xLjQ3MzczYzEuMTI1NjMsLTAuNDc3OTcgMjIuNzEwOTQsLTAuNjc3MTIgMjIuNzEwOTQsLTAuNjc3MTJ6IiBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpbmRleCZxdW90OzpudWxsfSIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiLz48cGF0aCBkPSJNMjQ3LjMyODgxLDE4MC4wMDAwMXYtMjEuNTg4MTNsMTEuNzA2NTIsMC4wNzk2NmMxMS4wMzExNiwwLjA3OTY2IDExLjc2MjgyLDAuMTE5NSAxMi44ODg0NSwwLjU5NzQ2YzAuNjc1MzcsMC4yNzg4MiAxLjU3NTg3LDAuOTE2MSAxLjk2OTg1LDEuNDczNzNsMC43ODc5MywwLjk1NTkzdjE4LjQ4MTM2djE4LjQ0MTUzbC0wLjc4NzkzLDAuOTU1OTNjLTAuMzkzOTgsMC41NTc2MyAtMS4yOTQ0OCwxLjE5NDkxIC0xLjk2OTg1LDEuNDczNzNjLTEuMTgxOTEsMC41MTc4IC0xLjg1NzI5LDAuNTE3OCAtMTIuODg4NDUsMC41OTc0NmwtMTEuNzA2NTIsMC4wNzk2NnYtMjEuNTQ4M3oiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzY5MDBiNCIgc3Ryb2tlLXdpZHRoPSIxMCIvPjxwYXRoIGQ9Ik0yNDkuMjEyODQsMTU4LjQxMTg4YzAsMCAyMS41ODUzMiwwLjE5OTE1IDIyLjcxMDk0LDAuNjc3MTJjMC42NzUzNywwLjI3ODgyIDEuNTc1ODcsMC45MTYxIDEuOTY5ODUsMS40NzM3M2wwLjc4NzkzLDAuOTU1OTN2MTguNDgxMzZ2MTguNDQxNTNsLTAuNzg3OTMsMC45NTU5M2MtMC4zOTM5OCwwLjU1NzYzIC0xLjI5NDQ4LDEuMTk0OTEgLTEuOTY5ODUsMS40NzM3M2MtMS4xODE5MSwwLjUxNzggLTIyLjcxMDk0LDAuNjc3MTIgLTIyLjcxMDk0LDAuNjc3MTJ6IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIvPjxwYXRoIGQ9Ik0yMjkuNTk1NTYsMTQxLjA0NTc3bDEwLjgzMzksMC4wMzk4M2MxMC41MTUyNiwwLjA3OTY2IDEwLjgzMzksMC4xMTk0OSAxMS41MTEwMiwwLjU5NzQ1YzIuNDI5NjYsMS44NzIwNCAyLjM4OTgzLDQuOTM4OTkgLTAuMTU5MzMsNi42NTE2OWMtMC43NTY3OCwwLjUxNzggLTEuMTE1MjUsMC41NTc2MyAtNC4zNDE1MiwwLjU1NzYzaC0zLjUwNTA5djMxLjEwNzYzdjMxLjA2Nzc5aDMuNDY1MjZjMy45NDMyMiwwIDQuODk5MTYsMC4zMTg2NSA1LjgxNTI2LDEuOTUxN2MxLjAzNTYsMS44MzIyIDAuNTE3OCwzLjk0MzIzIC0xLjI3NDU4LDUuMjU3NjNjLTAuNjc3MTIsMC41MTc4IC0wLjk5NTc2LDAuNTE3OCAtMTEuNTExMDIsMC41OTc0NWwtMTAuODMzOSwwLjA3OTY2bC0xLjExNTI1LC0wLjU1NzYzYy0xLjE1NTA5LC0wLjYzNzI5IC0yLjE5MDY4LC0yLjE1MDg1IC0yLjE5MDY4LC0zLjM4NTZjMCwtMC44NzYyNyAwLjk5NTc3LC0yLjY2ODY0IDEuNzkyMzcsLTMuMjY2MWMwLjU5NzQ2LC0wLjQ3Nzk3IDEuMTE1MjUsLTAuNTE3OCA0LjM0MTUyLC0wLjU5NzQ1bDMuNjY0NCwtMC4wNzk2N3YtMzEuMDY3Nzl2LTMxLjA2Nzc5bC0zLjY2NDQsLTAuMDc5NjdjLTMuMjI2MjcsLTAuMDc5NjYgLTMuNzQ0MDYsLTAuMTE5NDkgLTQuMzQxNTIsLTAuNTk3NDVjLTAuNzk2NjEsLTAuNTU3NjMgLTEuNzkyMzcsLTIuMzUgLTEuNzkyMzcsLTMuMjY2MWMwLC0xLjIzNDc1IDAuOTk1NzYsLTIuNzg4MTQgMi4xOTA2OCwtMy4zODU2eiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNjkwMGI0IiBzdHJva2Utd2lkdGg9IjEwIi8%2BPHBhdGggZD0iTTIyOS41OTU1NiwxNDEuMDQ1NzdsMTAuODMzOSwwLjAzOTgzYzEwLjUxNTI2LDAuMDc5NjYgMTAuODMzOSwwLjExOTQ5IDExLjUxMTAyLDAuNTk3NDVjMi40Mjk2NiwxLjg3MjA0IDIuMzg5ODMsNC45Mzg5OSAtMC4xNTkzMyw2LjY1MTY5Yy0wLjc1Njc4LDAuNTE3OCAtMS4xMTUyNSwwLjU1NzYzIC00LjM0MTUyLDAuNTU3NjNoLTMuNTA1MDl2MzEuMTA3NjN2MzEuMDY3NzloMy40NjUyNmMzLjk0MzIyLDAgNC44OTkxNiwwLjMxODY1IDUuODE1MjYsMS45NTE3YzEuMDM1NiwxLjgzMjIgMC41MTc4LDMuOTQzMjMgLTEuMjc0NTgsNS4yNTc2M2MtMC42NzcxMiwwLjUxNzggLTAuOTk1NzYsMC41MTc4IC0xMS41MTEwMiwwLjU5NzQ1bC0xMC44MzM5LDAuMDc5NjZsLTEuMTE1MjUsLTAuNTU3NjNjLTEuMTU1MDksLTAuNjM3MjkgLTIuMTkwNjgsLTIuMTUwODUgLTIuMTkwNjgsLTMuMzg1NmMwLC0wLjg3NjI3IDAuOTk1NzcsLTIuNjY4NjQgMS43OTIzNywtMy4yNjYxYzAuNTk3NDYsLTAuNDc3OTcgMS4xMTUyNSwtMC41MTc4IDQuMzQxNTIsLTAuNTk3NDVsMy42NjQ0LC0wLjA3OTY3di0zMS4wNjc3OXYtMzEuMDY3NzlsLTMuNjY0NCwtMC4wNzk2N2MtMy4yMjYyNywtMC4wNzk2NiAtMy43NDQwNiwtMC4xMTk0OSAtNC4zNDE1MiwtMC41OTc0NWMtMC43OTY2MSwtMC41NTc2MyAtMS43OTIzNywtMi4zNSAtMS43OTIzNywtMy4yNjYxYzAsLTEuMjM0NzUgMC45OTU3NiwtMi43ODgxNCAyLjE5MDY4LC0zLjM4NTZ6IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIvPjwvZz48L2c%2BPC9zdmc%2B%22%3B%0A%0A%20%20const%20formatIcon%20%3D%0A%22data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIxNTAuOTAzNTUiIGhlaWdodD0iOTUuNSIgdmlld0JveD0iMCwwLDE1MC45MDM1NSw5NS41Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTY0LjU0ODIyLC0xMzIuMjUpIj48ZyBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpc1BhaW50aW5nTGF5ZXImcXVvdDs6dHJ1ZX0iIGZpbGwtcnVsZT0ibm9uemVybyIgc3Ryb2tlLWxpbmVjYXA9ImJ1dHQiIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWRhc2hhcnJheT0iIiBzdHJva2UtZGFzaG9mZnNldD0iMCIgc3R5bGU9Im1peC1ibGVuZC1tb2RlOiBub3JtYWwiPjxwYXRoIGQ9Ik0yMzkuNzQxOTcsMjAxLjgxODIzYzAsMCAtNDAuMjY2OTcsLTAuMTU5MzIgLTQxLjU1OTI5LC0wLjY3NzEyYy0wLjczODQ2LC0wLjI3ODgyIC0xLjcyMzA5LC0wLjkxNjEgLTIuMTUzODcsLTEuNDczNzNsLTAuODYxNTQsLTAuOTU1OTN2LTE4LjQ0MTUzdi0xOC40ODEzNmwwLjg2MTU0LC0wLjk1NTkzYzAuNDMwNzksLTAuNTU3NjMgMS40MTU0MSwtMS4xOTQ5MSAyLjE1Mzg3LC0xLjQ3MzczYzEuMjMwNzksLTAuNDc3OTYgNDEuNTU5MjksLTAuNjc3MTIgNDEuNTU5MjksLTAuNjc3MTJ6IiBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpbmRleCZxdW90OzpudWxsfSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNjkwMGI0IiBzdHJva2Utd2lkdGg9IjEwIi8%2BPHBhdGggZD0iTTIzNC4wOTEzNiwxNTguNjgxNzhjMCwwIDQyLjY2MTg0LDAuMTk5MTYgNDMuODkyNjIsMC42NzcxMmMwLjczODQ2LDAuMjc4ODIgMS43MjMwOSwwLjkxNjEgMi4xNTM4NywxLjQ3MzczbDAuODYxNTQsMC45NTU5M3YxOC40ODEzNnYxOC40NDE1M2wtMC44NjE1NCwwLjk1NTkzYy0wLjQzMDc5LDAuNTU3NjMgLTEuNDE1NDEsMS4xOTQ5MSAtMi4xNTM4NywxLjQ3MzczYy0xLjI5MjMyLDAuNTE3OCAtNDMuODkyNjIsMC42NzcxMiAtNDMuODkyNjIsMC42NzcxMnoiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzY5MDBiNCIgc3Ryb2tlLXdpZHRoPSIxMCIvPjxwYXRoIGQ9Ik0yMzYuMTUxNCwxNTguNjgxNzhjMCwwIDQwLjYwMTgxLDAuMTk5MTUgNDEuODMyNTksMC42NzcxMmMwLjczODQ2LDAuMjc4ODIgMS43MjMwOSwwLjkxNjEgMi4xNTM4NywxLjQ3MzczbDAuODYxNTQsMC45NTU5M3YxOC40ODEzNnYxOC40NDE1M2wtMC44NjE1NCwwLjk1NTkzYy0wLjQzMDc5LDAuNTU3NjMgLTEuNDE1NDEsMS4xOTQ5MSAtMi4xNTM4NywxLjQ3MzczYy0xLjI5MjMyLDAuNTE3OCAtNDEuODMyNTksMC42NzcxMiAtNDEuODMyNTksMC42NzcxMnoiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIi8%2BPHBhdGggZD0iTTIzNy42ODE5MywyMDEuODE4MjNjMCwwIC0zOC4yMDY5NCwtMC4xNTkzMiAtMzkuNDk5MjYsLTAuNjc3MTJjLTAuNzM4NDYsLTAuMjc4ODIgLTEuNzIzMDksLTAuOTE2MSAtMi4xNTM4NywtMS40NzM3M2wtMC44NjE1NCwtMC45NTU5M3YtMTguNDQxNTN2LTE4LjQ4MTM2bDAuODYxNTQsLTAuOTU1OTNjMC40MzA3OSwtMC41NTc2MyAxLjQxNTQxLC0xLjE5NDkxIDIuMTUzODcsLTEuNDczNzNjMS4yMzA3OCwtMC40Nzc5NyAzOS40OTkyNiwtMC42NzcxMiAzOS40OTkyNiwtMC42NzcxMnoiIGRhdGEtcGFwZXItZGF0YT0ieyZxdW90O2luZGV4JnF1b3Q7Om51bGx9IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIvPjxwYXRoIGQ9Ik0xNjkuNTQ4MjIsMTU0LjQwNzUydi0xNy4xNTc1MmgxNy4xNTc1MnoiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzY5MDBiNCIgc3Ryb2tlLXdpZHRoPSIxMCIvPjxwYXRoIGQ9Ik0zMTAuNDUxNzgsMjA1LjU5MjQ4djE3LjE1NzUyaC0xNy4xNTc1MnoiIGRhdGEtcGFwZXItZGF0YT0ieyZxdW90O2luZGV4JnF1b3Q7Om51bGx9IiBmaWxsPSJub25lIiBzdHJva2U9IiM2OTAwYjQiIHN0cm9rZS13aWR0aD0iMTAiLz48cGF0aCBkPSJNMTY5LjU0ODIzLDE1NC40MDc1MnYtMTcuMTU3NTJoMTcuMTU3NTJ6IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Ik0zMTAuNDUxNzgsMjA1LjU5MjQ4djE3LjE1NzUyaC0xNy4xNTc1MnoiIGRhdGEtcGFwZXItZGF0YT0ieyZxdW90O2luZGV4JnF1b3Q7Om51bGx9IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Ik0xODYuNzA1NzYsMjIyLjc1aC0xNy4xNTc1MnYtMTcuMTU3NTJ6IiBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpbmRleCZxdW90OzpudWxsfSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNjkwMGI0IiBzdHJva2Utd2lkdGg9IjEwIi8%2BPHBhdGggZD0iTTI5My4yOTQyNSwxMzcuMjVoMTcuMTU3NTJ2MTcuMTU3NTJ6IiBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpbmRleCZxdW90OzpudWxsfSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNjkwMGI0IiBzdHJva2Utd2lkdGg9IjEwIi8%2BPHBhdGggZD0iTTE4Ni43MDU3NiwyMjIuNzVoLTE3LjE1NzUydi0xNy4xNTc1MnoiIGRhdGEtcGFwZXItZGF0YT0ieyZxdW90O2luZGV4JnF1b3Q7Om51bGx9IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Ik0yOTMuMjk0MjUsMTM3LjI1aDE3LjE1NzUydjE3LjE1NzUyeiIgZGF0YS1wYXBlci1kYXRhPSJ7JnF1b3Q7aW5kZXgmcXVvdDs6bnVsbH0iIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIwIi8%2BPHBhdGggZD0iTTIzNi4yNjY0NCwxNjUuNjY5ODVjMS4xODI3MiwtMC43MTk5MSAyLjQ4NDMxLC0wLjc3MTMzIDMuNjY3MDMsLTAuMTAyODNjMS4wMjg0NSwwLjUxNDIyIDAuNzc2MzksLTAuMDQwOTQgNy4yMDQyMSwxNC40MDg4YzMuMzkzOSw3LjU1OTEzIDQuODY5NjUsMTEuNDA4NTMgNC44Njk2NSwxMi4yMzEyOWMwLDAuODIyNzYgLTAuMjYyMzgsMS40NDUyOSAtMC45MzA4OCwyLjE2NTIxYy0wLjc3MTM0LDAuODc0MTkgLTEuMTM3ODQsMS4wMzM3NCAtMi4zMjA1NSwxLjAzMzc0Yy0xLjg1MTIxLDAgLTIuODk4MjIsLTAuOTgyNTUgLTMuODIzODIsLTMuNTAyMjdsLTAuNjUyODgsLTEuNzQwOWwtNi4yMDUwNSwwLjAwOTg1bC02LjIwNSwtMC4wMDk5bC0wLjQ5ODQ5LDEuNDgzODZjLTAuMzA4NTQsMC44NzQyIC0wLjk5MDc4LDIuMTE2OTMgLTEuNDAyMTcsMi42MzExNWMtMS4zMzcsMS41OTQwOSAtMy42NjMxMywxLjUzMzU5IC01LjE1NDM5LC0wLjA2MDUxYy0xLjMzNywtMS40Mzk4NCAtMS4wNDcyOSwtMi4zNzMyOCA0LjkxNzczLC0xNS41ODg4OGM0Ljc4MjI5LC0xMC41OTMwNiA1LjcxMTg0LC0xMi40NDQ0MSA2LjUzNDYsLTEyLjk1ODYzeiIgZGF0YS1wYXBlci1kYXRhPSJ7JnF1b3Q7bm9Ib3ZlciZxdW90OzpmYWxzZSwmcXVvdDtvcmlnSXRlbSZxdW90OzpbJnF1b3Q7UGF0aCZxdW90Oyx7JnF1b3Q7YXBwbHlNYXRyaXgmcXVvdDs6dHJ1ZSwmcXVvdDtzZWdtZW50cyZxdW90OzpbW1szMzcuMjU1OTQsMTk4LjIzMTY1XSxbMCwwXSxbLTEuMjc0NTgsMC43OTY2XV0sW1szMjcuMjE4NjYsMjE4LjIyNjU3XSxbNy40MDg0NiwtMTYuNDEwMThdLFstOS4yNDA2OCwyMC40NzI4OF1dLFtbMzE5LjU3MTIyLDI0Mi4yODQyMV0sWy0yLjA3MTIsLTIuMjMwNTJdLFsyLjMxMDE4LDIuNDY5NV1dLFtbMzI3LjUzNzMyLDI0Mi4zNjM4N10sWy0yLjA3MTIsMi40Njk0OF0sWzAuNjM3MywtMC43OTY2XV0sW1szMjkuNjA4NSwyMzguNDYwNDddLFstMC40Nzc5OCwxLjM1NDI2XSxbMCwwXV0sWzMzMC40ODQ3OCwyMzUuOTkwOTddLFszNDAuMDQ0MSwyMzUuOTkwOTddLFszNDkuNjAzNDIsMjM1Ljk5MDk3XSxbWzM1MC43MTg2OCwyMzguODU4NzddLFswLDBdLFsxLjQzMzksMy45MDM0XV0sW1szNTYuNTMzOTQsMjQ0LjExNjQxXSxbLTIuODY3OCwwXSxbMS44MzIyLDBdXSxbWzM2MC4xMTg2OCwyNDIuNTIzMTldLFstMS4xOTQ5MiwxLjM1NDI0XSxbMS4wMzU2LC0xLjExNTI2XV0sW1szNjEuNTUyNTgsMjM5LjE3NzQzXSxbMCwxLjI3NDU4XSxbMCwtMS4yNzQ1OF1dLFtbMzUzLjk4NDc4LDIyMC4yOTc3N10sWzUuMjU3NjQsMTEuNzEwMThdLFstOS45NTc2MiwtMjIuMzg0NzRdXSxbWzM0Mi45MTE4OCwxOTguMDcyMzVdLFsxLjU5MzIyLDAuNzk2Nl0sWy0xLjgzMjIsLTEuMDM1Nl1dLFtbMzM3LjI1NTk0LDE5OC4yMzE2N10sWzEuODMyMiwtMS4xMTUyNF0sWzAsMF1dXSwmcXVvdDtjbG9zZWQmcXVvdDs6dHJ1ZSwmcXVvdDtmaWxsQ29sb3ImcXVvdDs6WzAsMCwwLDFdfV19IiBmaWxsPSIjNjkwMGI0IiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMC41Ii8%2BPHBhdGggZD0iTTIzOC4xNzcwNCwxNzUuNjA3MDJjMC4yMDU2OSwwLjIwNTY5IDMuMzQyNDYsNy45MTkwOCAzLjM0MjQ2LDguMTc2MTljMCwwLjIwNTY5IC0xLjU0MjY3LDAuMzA4NTMgLTMuNDk2NzMsMC4zMDg1M2MtMi42NzM5NywwIC0zLjQ0NTMxLC0wLjEwMjg0IC0zLjM0MjQ2LC0wLjQxMTM5YzAuMTAyODQsLTAuMjA1NjkgMC44NzQxOSwtMi4xMDgzMiAxLjc5OTc5LC00LjI2ODA3YzAuOTI1NjEsLTIuMTA4MzIgMS42OTY5NCwtMy44NTY3IDEuNjk2OTQsLTMuODA1Mjd6IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIvPjwvZz48L2c%2BPC9zdmc%2B%22%3B%0A%0A%20%20const%20colorIcon%20%3D%0A%22data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSI3NS41MzUxNyIgaGVpZ2h0PSI3MS40OTc0NiIgdmlld0JveD0iMCwwLDc1LjUzNTE3LDcxLjQ5NzQ2Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjAyLjIzMjQxLC0xNDQuMjUxMjcpIj48ZyBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpc1BhaW50aW5nTGF5ZXImcXVvdDs6dHJ1ZX0iIGZpbGwtcnVsZT0ibm9uemVybyIgc3Ryb2tlLWxpbmVjYXA9ImJ1dHQiIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWRhc2hhcnJheT0iIiBzdHJva2UtZGFzaG9mZnNldD0iMCIgc3R5bGU9Im1peC1ibGVuZC1tb2RlOiBub3JtYWwiPjxwYXRoIGQ9Ik0yMjMuNTM4NTYsMTY1LjcxMjcxYzAsLTkuMDkxNDEgNy4zNzAwNCwtMTYuNDYxNDQgMTYuNDYxNDQsLTE2LjQ2MTQ0YzkuMDkxNDEsMCAxNi40NjE0NCw3LjM3MDA0IDE2LjQ2MTQ0LDE2LjQ2MTQ0YzAsOS4wOTE0MSAtNy4zNzAwMywxNi40NjE0NCAtMTYuNDYxNDQsMTYuNDYxNDRjLTkuMDkxNDEsMCAtMTYuNDYxNDQsLTcuMzcwMDMgLTE2LjQ2MTQ0LC0xNi40NjE0NHoiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzY5MDBiNCIgc3Ryb2tlLXdpZHRoPSIxMCIvPjxwYXRoIGQ9Ik0yMDcuMjMyNDIsMTk0LjI4NzI5YzAsLTkuMDkxNDEgNy4zNzAwNCwtMTYuNDYxNDQgMTYuNDYxNDQsLTE2LjQ2MTQ0YzkuMDkxNDEsMCAxNi40NjE0NCw3LjM3MDA0IDE2LjQ2MTQ0LDE2LjQ2MTQ0YzAsOS4wOTE0MSAtNy4zNzAwNCwxNi40NjE0NCAtMTYuNDYxNDQsMTYuNDYxNDRjLTkuMDkxNDEsMCAtMTYuNDYxNDQsLTcuMzcwMDMgLTE2LjQ2MTQ0LC0xNi40NjE0NHoiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzY5MDBiNCIgc3Ryb2tlLXdpZHRoPSIxMCIvPjxwYXRoIGQ9Ik0yMzkuODQ0NzEsMTk0LjI4NzI5YzAsLTkuMDkxNDEgNy4zNzAwNCwtMTYuNDYxNDQgMTYuNDYxNDQsLTE2LjQ2MTQ0YzkuMDkxNDEsMCAxNi40NjE0NCw3LjM3MDA0IDE2LjQ2MTQ0LDE2LjQ2MTQ0YzAsOS4wOTE0MSAtNy4zNzAwMywxNi40NjE0NCAtMTYuNDYxNDQsMTYuNDYxNDRjLTkuMDkxNDEsMCAtMTYuNDYxNDQsLTcuMzcwMDMgLTE2LjQ2MTQ0LC0xNi40NjE0NHoiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzY5MDBiNCIgc3Ryb2tlLXdpZHRoPSIxMCIvPjxwYXRoIGQ9Ik0yMjMuNTM4NTYsMTY1LjcxMjcxYzAsLTkuMDkxNDEgNy4zNzAwMywtMTYuNDYxNDQgMTYuNDYxNDQsLTE2LjQ2MTQ0YzkuMDkxNCwwIDE2LjQ2MTQ0LDcuMzcwMDQgMTYuNDYxNDQsMTYuNDYxNDRjMCw5LjA5MTQxIC03LjM3MDAzLDE2LjQ2MTQ0IC0xNi40NjE0NCwxNi40NjE0NGMtOS4wOTE0LDAgLTE2LjQ2MTQ0LC03LjM3MDAzIC0xNi40NjE0NCwtMTYuNDYxNDR6IiBmaWxsPSIjMDBmZjAxIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0ibm9uZSIvPjxwYXRoIGQ9Ik0yMDcuMjMyNDEsMTk0LjI4NzI5YzAsLTkuMDkxNCA3LjM3MDA0LC0xNi40NjE0NCAxNi40NjE0NCwtMTYuNDYxNDRjOS4wOTE0LDAgMTYuNDYxNDQsNy4zNzAwNCAxNi40NjE0NCwxNi40NjE0NGMwLDkuMDkxNCAtNy4zNzAwNCwxNi40NjE0NCAtMTYuNDYxNDQsMTYuNDYxNDRjLTkuMDkxNCwwIC0xNi40NjE0NCwtNy4zNzAwNCAtMTYuNDYxNDQsLTE2LjQ2MTQ0eiIgZmlsbD0iI2ZmMDAwMCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9Im5vbmUiLz48cGF0aCBkPSJNMjM5Ljg0NDcxLDE5NC4yODcyOWMwLC05LjA5MTQxIDcuMzcwMDMsLTE2LjQ2MTQ0IDE2LjQ2MTQ0LC0xNi40NjE0NGM5LjA5MTQsMCAxNi40NjE0NCw3LjM3MDA0IDE2LjQ2MTQ0LDE2LjQ2MTQ0YzAsOS4wOTE0MSAtNy4zNzAwMywxNi40NjE0NCAtMTYuNDYxNDQsMTYuNDYxNDRjLTkuMDkxNCwwIC0xNi40NjE0NCwtNy4zNzAwNCAtMTYuNDYxNDQsLTE2LjQ2MTQ0eiIgZmlsbD0iIzAwNzFmZiIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9Im5vbmUiLz48L2c%2BPC9nPjwvc3ZnPg%3D%3D%22%3B%0A%0A%20%20const%20effectIcon%20%3D%0A%22data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSI1Ny40NDI0MSIgaGVpZ2h0PSI3MC40NSIgdmlld0JveD0iMCwwLDU3LjQ0MjQxLDcwLjQ1Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjEwLjI2NjQ1LC0xNDQuODU2NTUpIj48ZyBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpc1BhaW50aW5nTGF5ZXImcXVvdDs6dHJ1ZX0iIGZpbGw9IiNmZmZmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlLWxpbmVjYXA9ImJ1dHQiIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWRhc2hhcnJheT0iIiBzdHJva2UtZGFzaG9mZnNldD0iMCIgc3R5bGU9Im1peC1ibGVuZC1tb2RlOiBub3JtYWwiPjxwYXRoIGQ9Ik0yMTUuMjY2NDUsMTkzLjkwNDFjLTMuOTg4MTUsLTguMTE3MSAtMy45OTYxMSwtMTguMjQzMDUgMC4xNTIyMSwtMjYuNDExMDNjNC42ODc3OSwtOS41NzQzMSAxMi41NzY5MSwtMTMuODE3OTcgMTUuNzQ3NTYsLTE1LjE5Nzc1YzEuOTA1OCwtMC44ODUwOCAzLjkxMzg4LC0xLjU3NDk3IDYuMDc1MzcsLTIuMDgzMTNsMi4xMjA1OSwtMC40NTc2OGMxLjU1ODA1LC0wLjMxOTcgMy4xMDkyOCwwLjY0NjE0IDMuNDQ2OCwyLjE4NzQ1YzAuMzQwOTMsMS41NDQ2OCAtMC42NTExOCwzLjA2NTggLTIuMjE2MDUsMy40MDIzM2wtMi4wNjI2MywwLjQ0NDIyYy0xLjcxNDg4LDAuNDAzODQgLTMuMzU4MTYsMC45NjkyMSAtNC45NjA1MywxLjcxNjMxYy0yLjA4MzA4LDAuOTAxOSAtOC45NzMyOCw0LjM5MTczIC0xMi45NDg1MiwxMi41MTU2Yy0zLjAxNzIzLDUuOTMzMDUgLTMuOTE3MjksMTUuMzY2MDIgMC44MzE4NywyMy4xNDk5OGM0LjMwMjU0LDcuNDk3OTIgMTMuMTEyMTcsMTIuMDk0OTMgMjEuNDY4MzcsMTEuMzIwOTFjNy45MDI3NiwtMC41Njg3NCAxNS4xNTQzNCwtNS44Mjg3MiAxNy42OTc2OCwtMTIuNzk0OTJjMi41ODA4NCwtNi41NTIyNiAwLjg2NTk2LC0xMy4yNjk0MyAtMS45NjcxNywtMTcuMDUyMDRjLTMuNDEyNzEsLTQuNjYwOTYgLTcuNjYwNywtNi4wOTQ1OCAtOS4zMjc4NSwtNi40OTUwNWMtMC4yNDg4OCwtMC4wNzQwNCAtNi4wODU2LC0xLjgyNzM2IC0xMS4yNDA0NiwwLjc1MzgzYy0yLjIxOTQ1LDEuMDYzNDQgLTUuMDkwMDksMy40NTYxOCAtNi42Mjc2OCw3LjA1MDMzYy0xLjY2MDMzLDMuNzExOTQgLTEuMjMwNzYsOC40ODM5NSAxLjAxOTM4LDExLjY1NDA4YzIuMjYzNzgsMy4zOTg5NyA2LjUzMjIyLDUuMzIzOTIgMTAuMjA0MDQsNC42NzEwNWMzLjY1NDc3LC0wLjU3NTQ3IDYuMTI2NTEsLTMuMjk0NjQgNi43MTI5MSwtNS42ODQwMWMwLjY4ODY4LC0yLjU2NzczIC0wLjM2ODIsLTQuNzM4MzYgLTEuMTkzMjYsLTUuNTE5MTFjLTEuNDAxMjIsLTEuMzgzMTQgLTIuNjExNTIsLTEuNDA2NyAtMi42NjI2NiwtMS40MTAwN2MtMC41NzI3NiwtMC4wMTY4MyAtMC44NTU3MywwLjAyNjkyIC0xLjAyNjIsMC4wNTM4NGMtMC42NTQ1OSwwLjIzODk0IC0xLjU4MTkyLDAuNzYzOTMgLTEuODU0NjYsMS4zMTU4NGMtMC4wNDc3MywwLjA5MDg2IC0wLjE3MDQ3LDAuMzM5OSAwLjA2NDc4LDAuOTYyNDhjMC41NjI1MywxLjQ3NzM3IC0wLjE5Nzc0LDMuMTI5NzQgLTEuNjk0NDIsMy42ODUwMmMtMS40ODk4NiwwLjU1ODY0IC0zLjE2NzI0LC0wLjE5MTgyIC0zLjczMzE4LC0xLjY3MjU2Yy0wLjkzMDc0LC0yLjQ0OTk1IC0wLjQxNTkzLC00LjM2ODE4IDAuMTgwNjksLTUuNTQ2MDNjMS41NTgwNSwtMy4wNjU4IDUuMTc1MzIsLTQuMTc2MzUgNS41ODQ0MywtNC4yOTQxNGMwLjE4NzUxLC0wLjA1NzIxIDAuMzg1MjUsLTAuMDkwODYgMC41Nzk1OCwtMC4xMDc2OWMwLjM5ODg5LC0wLjA2MDU4IDEuMTAxMiwtMC4xNTQ4IDIuMDUyNCwtMC4xMTc3OWMyLjE3ODU0LDAuMDI2OTIgNC42NjA1MSwxLjE2NDQgNi41NjI5LDMuMDQ1NjFjMi4yNDY3MywyLjEyMDE1IDQuMDA1OTMsNi4zODA2MyAyLjc1ODEyLDExLjAxMTNjLTEuMjE3MTIsNC45NTcxIC01Ljg5NDY4LDkuMDU2MDYgLTExLjM1Mjk3LDkuOTE0MjFjLTUuODcwODIsMS4wNDY2MSAtMTIuNDgxNDUsLTEuODQ3NTYgLTE1Ljk3MjU3LC03LjA5NDA4Yy0zLjM2NDk4LC00LjcyODI2IC00LjAwOTM0LC0xMS42NDczNSAtMS41NDc4MiwtMTcuMTM2MTdjMi43MDAxNywtNi4zMjAwNiA3Ljg1ODQ0LC05LjE4MDU3IDkuMzcyMTcsLTkuOTA3NDhjNy4yNzg4NiwtMy42MzQ1NCAxNS4wNTg4OCwtMS4yMzUwNyAxNS4zODYxNywtMS4xMzQxMWMyLjA5MzMxLDAuNDk0NyA3LjkxMjk5LDIuNDQzMjIgMTIuNDM3MTMsOC42MjUyOWMzLjQ3NzQ5LDQuNjUwODYgNi4yOTY5OCwxMy4zMzY3MyAyLjcxMzgsMjIuNDI5ODFjLTMuMjcyOTMsOC45NjE4MyAtMTIuNTkwNTUsMTUuNzY5ODUgLTIyLjYzNzc2LDE2LjQ5MzM5Yy0wLjc4NzU1LDAuMDc0MDQgLTEuNTg1MzIsMC4xMTQ0MiAtMi4zNzk2OSwwLjExNDQyYy05Ljc1MDYsMCAtMTkuNjI3MzQsLTUuNjIwMDcgLTI0LjU4MTA2LC0xNC4yNDg3M2MwLDAgLTAuODIwNDksLTEuNDE4MzQgLTEuMTgxODEsLTIuMTUzNzN6IiBzdHJva2U9IiM2OTAwYjQiIHN0cm9rZS13aWR0aD0iMTAiLz48cGF0aCBkPSJNMjE2LjQ0ODI3LDE5Ni4wNTc4NGMtNS4xMzQ0MSwtOC40MjAwMSAtNS41NTM3NSwtMTkuNjU2NzkgLTEuMDI5NjEsLTI4LjU2NDc3YzQuNjg3NzksLTkuNTc0MzEgMTIuNTc2OTEsLTEzLjgxNzk3IDE1Ljc0NzU2LC0xNS4xOTc3NWMxLjkwNTgsLTAuODg1MDggMy45MTM4OCwtMS41NzQ5NyA2LjA3NTM3LC0yLjA4MzEzbDIuMTIwNTksLTAuNDU3NjhjMS41NTgwNSwtMC4zMTk3IDMuMTA5MjgsMC42NDYxNCAzLjQ0NjgsMi4xODc0NWMwLjM0MDkzLDEuNTQ0NjggLTAuNjUxMTgsMy4wNjU4IC0yLjIxNjA1LDMuNDAyMzNsLTIuMDYyNjMsMC40NDQyMmMtMS43MTQ4OCwwLjQwMzg0IC0zLjM1ODE2LDAuOTY5MjEgLTQuOTYwNTMsMS43MTYzMWMtMi4wODMwOCwwLjkwMTkgLTguOTczMjgsNC4zOTE3MyAtMTIuOTQ4NTIsMTIuNTE1NmMtMy4wMTcyMyw1LjkzMzA1IC0zLjkxNzI5LDE1LjM2NjAyIDAuODMxODcsMjMuMTQ5OThjNC4zMDI1NCw3LjQ5NzkyIDEzLjExMjE3LDEyLjA5NDkzIDIxLjQ2ODM3LDExLjMyMDkxYzcuOTAyNzYsLTAuNTY4NzQgMTUuMTU0MzQsLTUuODI4NzIgMTcuNjk3NjgsLTEyLjc5NDkyYzIuNTgwODQsLTYuNTUyMjYgMC44NjU5NiwtMTMuMjY5NDMgLTEuOTY3MTcsLTE3LjA1MjA0Yy0zLjQxMjcxLC00LjY2MDk2IC03LjY2MDcsLTYuMDk0NTggLTkuMzI3ODUsLTYuNDk1MDVjLTAuMjQ4ODgsLTAuMDc0MDQgLTYuMDg1NiwtMS44MjczNiAtMTEuMjQwNDYsMC43NTM4M2MtMi4yMTk0NSwxLjA2MzQ0IC01LjA5MDA5LDMuNDU2MTggLTYuNjI3NjgsNy4wNTAzM2MtMS42NjAzMywzLjcxMTk0IC0xLjIzMDc2LDguNDgzOTUgMS4wMTkzOCwxMS42NTQwOGMyLjI2Mzc4LDMuMzk4OTcgNi41MzIyMiw1LjMyMzkyIDEwLjIwNDA0LDQuNjcxMDVjMy42NTQ3NywtMC41NzU0NyA2LjEyNjUxLC0zLjI5NDY0IDYuNzEyOTEsLTUuNjg0MDFjMC42ODg2OCwtMi41Njc3MyAtMC4zNjgyLC00LjczODM2IC0xLjE5MzI2LC01LjUxOTExYy0xLjQwMTIyLC0xLjM4MzE0IC0yLjYxMTUyLC0xLjQwNjcgLTIuNjYyNjYsLTEuNDEwMDdjLTAuNTcyNzYsLTAuMDE2ODMgLTAuODU1NzMsMC4wMjY5MiAtMS4wMjYyLDAuMDUzODRjLTAuNjU0NTksMC4yMzg5NCAtMS41ODE5MiwwLjc2MzkzIC0xLjg1NDY2LDEuMzE1ODRjLTAuMDQ3NzMsMC4wOTA4NiAtMC4xNzA0NywwLjMzOTkgMC4wNjQ3OCwwLjk2MjQ4YzAuNTYyNTMsMS40NzczNyAtMC4xOTc3NCwzLjEyOTc0IC0xLjY5NDQyLDMuNjg1MDJjLTEuNDg5ODYsMC41NTg2NCAtMy4xNjcyNCwtMC4xOTE4MiAtMy43MzMxOCwtMS42NzI1NmMtMC45MzA3NCwtMi40NDk5NSAtMC40MTU5MywtNC4zNjgxOCAwLjE4MDY5LC01LjU0NjAzYzEuNTU4MDUsLTMuMDY1OCA1LjE3NTMyLC00LjE3NjM1IDUuNTg0NDMsLTQuMjk0MTRjMC4xODc1MSwtMC4wNTcyMSAwLjM4NTI1LC0wLjA5MDg2IDAuNTc5NTgsLTAuMTA3NjljMC4zOTg4OSwtMC4wNjA1OCAxLjEwMTIsLTAuMTU0OCAyLjA1MjQsLTAuMTE3NzljMi4xNzg1NCwwLjAyNjkyIDQuNjYwNTEsMS4xNjQ0IDYuNTYyOSwzLjA0NTYxYzIuMjQ2NzMsMi4xMjAxNSA0LjAwNTkzLDYuMzgwNjMgMi43NTgxMiwxMS4wMTEzYy0xLjIxNzEyLDQuOTU3MSAtNS44OTQ2OCw5LjA1NjA2IC0xMS4zNTI5Nyw5LjkxNDIxYy01Ljg3MDgyLDEuMDQ2NjEgLTEyLjQ4MTQ1LC0xLjg0NzU2IC0xNS45NzI1NywtNy4wOTQwOGMtMy4zNjQ5OCwtNC43MjgyNiAtNC4wMDkzNCwtMTEuNjQ3MzUgLTEuNTQ3ODIsLTE3LjEzNjE3YzIuNzAwMTcsLTYuMzIwMDYgNy44NTg0NCwtOS4xODA1NyA5LjM3MjE3LC05LjkwNzQ4YzcuMjc4ODYsLTMuNjM0NTQgMTUuMDU4ODgsLTEuMjM1MDcgMTUuMzg2MTcsLTEuMTM0MTFjMi4wOTMzMSwwLjQ5NDcgNy45MTI5OSwyLjQ0MzIyIDEyLjQzNzEzLDguNjI1MjljMy40Nzc0OSw0LjY1MDg2IDYuMjk2OTgsMTMuMzM2NzMgMi43MTM4LDIyLjQyOTgxYy0zLjI3MjkzLDguOTYxODMgLTEyLjU5MDU1LDE1Ljc2OTg1IC0yMi42Mzc3NiwxNi40OTMzOWMtMC43ODc1NSwwLjA3NDA0IC0xLjU4NTMyLDAuMTE0NDIgLTIuMzc5NjksMC4xMTQ0MmMtOS43NTA2LDAgLTE5LjYyNzM0LC01LjYyMDA3IC0yNC41ODEwNiwtMTQuMjQ4NzN6IiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIvPjwvZz48L2c%2BPC9zdmc%2B%22%3B%0A%0A%20%20let%20newColorType%20%3D%20%22%22%3B%0A%20%20let%20overlayImageContainer%20%3D%20%22%22%3B%0A%20%20const%20vm%20%3D%20Scratch.vm%3B%0A%20%20const%20fontMenu%20%3D%20%5B%0A%20%20%20%20%22Scratch%22%2C%20%22Sans%20Serif%22%2C%20%22Serif%22%2C%0A%20%20%20%20%22Handwriting%22%2C%20%22Marker%22%2C%20%22Curly%22%2C%20%22Pixel%22%0A%20%20%5D%3B%20%20%0A%0A%20%20const%20xmlEscape%20%3D%20function%20(unsafe)%20%7B%0A%20%20%20%20return%20Scratch.Cast.toString(unsafe).replace(%2F%5B%3C%3E%26'%22%5D%2Fg%2C%20c%20%3D%3E%20%7B%0A%20%20%20%20%20%20switch%20(c)%20%7B%0A%20%20%20%20%20%20%20%20case%20%22%3C%22%3A%20return%20%22%26lt%3B%22%3B%0A%20%20%20%20%20%20%20%20case%20%22%3E%22%3A%20return%20%22%26gt%3B%22%3B%0A%20%20%20%20%20%20%20%20case%20%22%26%22%3A%20return%20%22%26amp%3B%22%3B%0A%20%20%20%20%20%20%20%20case%20%22'%22%3A%20return%20%22%26apos%3B%22%3B%0A%20%20%20%20%20%20%20%20case%20%22%5C%22%22%3A%20return%20%22%26quot%3B%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D)%3B%0A%20%20%7D%3B%0A%0A%20%20class%20BetterInputSP%20%7B%0A%20%20%20%20constructor()%20%7B%0A%20%20%20%20%20%20this.activeOverlays%20%3D%20%5B%5D%3B%20this.activeUI%20%3D%20%5B%5D%3B%20this.askBoxPromises%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%20this.isWaitingForInput%20%3D%20false%3B%20this.isDropdownOpen%20%3D%20false%3B%0A%20%20%20%20%20%20this.userInput%20%3D%20%22%20%22%3B%20this.defaultValue%20%3D%20%22%22%3B%0A%20%20%20%20%20%20this.textBoxX%20%3D%200%3B%20this.textBoxY%20%3D%200%3B%0A%20%20%20%20%20%20this.askBoxInfo%20%3D%20%5B0%2C%201%5D%3B%20this.appendTarget%20%3D%20%5B%22window%22%2C%20false%5D%3B%0A%20%20%20%20%20%20this.forceInput%20%3D%20%22Disabled%22%3B%0A%20%20%20%20%20%20this.overlayInput%20%3D%20null%3B%0A%20%20%20%20%20%20this.uiOrder%20%3D%20%5B%22question%22%2C%20%22input%22%2C%20%22buttons%22%5D%3B%0A%0A%20%20%20%20%20%20this.optionList%20%3D%20%5B%22Option%201%22%2C%20%22Option%202%22%2C%20%22Option%203%22%5D%3B%0A%20%20%20%20%20%20this.sliderInfo%20%3D%20%5B0%2C%20100%2C%2050%5D%3B%0A%20%20%20%20%20%20this.Timeout%20%3D%200%3B%0A%0A%20%20%20%20%20%20this.shadowEnabled%20%3D%20true%3B%0A%20%20%20%20%20%20this.isInputEnabled%20%3D%20%22Enabled%22%3B%0A%20%20%20%20%20%20this.DropdownText%20%3D%20%22Dropdown%22%3B%0A%20%20%20%20%20%20this.fontSize%20%3D%20%2214px%22%3B%0A%20%20%20%20%20%20this.textAlign%20%3D%20%22left%22%3B%0A%20%20%20%20%20%20this.fontFamily%20%3D%20%22Sans%20Serif%22%3B%0A%20%20%20%20%20%20%20%2F%2F%20overlay%20%2B%20Image%2C%20input%2C%20dropdown%20button%20%0A%20%20%20%20%20%20this.mainUIinfo%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%2F%2F%20Border%20Radius%0A%20%20%20%20%20%20%20%20dimensions%3A%20%5B%22auto%22%2C%20%22auto%22%5D%2C%0A%20%20%20%20%20%20%20%20overlayRad%3A%205%2C%20%0A%20%20%20%20%20%20%20%20inputRad%3A%204%2C%0A%20%20%20%20%20%20%20%20dropBtnRad%3A%205%2C%0A%20%20%20%20%20%20%20%20%2F%2F%20Border%20Information%0A%20%20%20%20%20%20%20%20overlayBord%3A%20%221px%20none%20%23000000%22%2C%0A%20%20%20%20%20%20%20%20inputBord%3A%20%221px%20solid%20%23000000%22%2C%0A%20%20%20%20%20%20%20%20dropBtnBord%3A%20%221px%20none%20%23000000%22%2C%0A%20%20%20%20%20%20%20%20%2F%2F%20Text%20Padding%0A%20%20%20%20%20%20%20%20overlayPad%3A%20%2215px%22%2C%0A%20%20%20%20%20%20%20%20inputPad%3A%20%225px%22%2C%0A%20%20%20%20%20%20%20%20dropBtnPad%3A%20%225px%2010px%22%2C%0A%20%20%20%20%20%20%20%20%2F%2F%20Text%20Shadow%0A%20%20%20%20%20%20%20%20overlayTxtShad%3A%20%22none%22%2C%0A%20%20%20%20%20%20%20%20inputTxtShad%3A%20%22none%22%2C%0A%20%20%20%20%20%20%20%20dropBtnTxtShad%3A%20%22none%22%2C%0A%20%20%20%20%20%20%20%20%2F%2F%20Outline%3A%20Color%20%2B%20Thickness%0A%20%20%20%20%20%20%20%20overlayOutline%3A%20%5B%22%22%2C%200%5D%2C%0A%20%20%20%20%20%20%20%20inputOutline%3A%20%5B%22%22%2C%200%5D%2C%0A%20%20%20%20%20%20%20%20dropBtnOutline%3A%20%5B%22%22%2C%200%5D%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20this.lastPressBtn%20%3D%20%22%22%3B%0A%20%20%20%20%20%20this.buttonJSON%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%22Submit%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20color%3A%20%22%230074D9%22%2C%20textColor%3A%20%22%23ffffff%22%2C%0A%20%20%20%20%20%20%20%20%20%20name%3A%20%22Submit%22%2C%20image%3A%20%22%22%2C%20imgScale%3A%20100%2C%0A%20%20%20%20%20%20%20%20%20%20borderRadius%3A%205%2C%20border%3A%20%221px%20none%20%23000000%22%2C%0A%20%20%20%20%20%20%20%20%20%20padding%3A%20%225px%2010px%22%2C%20dropShadow%3A%20%22none%22%2C%20outline%3A%20%5B%22%22%2C%200%5D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%22Cancel%22%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20color%3A%20%22%23d9534f%22%2C%20textColor%3A%20%22%23ffffff%22%2C%0A%20%20%20%20%20%20%20%20%20%20name%3A%20%22Cancel%22%2C%20image%3A%20%22%22%2C%20imgScale%3A%20100%2C%0A%20%20%20%20%20%20%20%20%20%20borderRadius%3A%205%2C%20border%3A%20%221px%20none%20%23000000%22%2C%0A%20%20%20%20%20%20%20%20%20%20padding%3A%20%225px%2010px%22%2C%20dropShadow%3A%20%22none%22%2C%20outline%3A%20%5B%22%22%2C%200%5D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%7D%3B%0A%0A%20%20%20%20%20%20this.questionColor%20%3D%20%22%23000000%22%3B%0A%20%20%20%20%20%20this.inputColor%20%3D%20%22%23000000%22%3B%0A%20%20%20%20%20%20this.textBoxColor%20%3D%20%5B%22%23ffffff%22%5D%3B%0A%20%20%20%20%20%20this.inputFieldColor%20%3D%20%22%23ffffff%22%3B%0A%20%20%20%20%20%20this.dropdownButtonColor%20%3D%20%5B%22%235f5f5f%22%2C%20%22%23ffffff%22%5D%3B%0A%20%20%20%20%20%20this.overlayImage%20%3D%20%5B%22%20%22%2C%20%22%20%22%2C%20%22%20%22%5D%3B%0A%0A%20%20%20%20%20%20this.Blur%20%3D%200%3B%20this.Brightness%20%3D%200%3B%20this.Opacity%20%3D%20100%3B%0A%20%20%20%20%20%20this.Invert%20%3D%200%3B%20this.Saturation%20%3D%20100%3B%20this.Hue%20%3D%200%3B%0A%20%20%20%20%20%20this.Sepia%20%3D%200%3B%20this.Contrast%20%3D%20100%3B%20this.Scale%20%3D%20100%3B%20%0A%20%20%20%20%20%20this.SkewX%20%3D%200%3B%20this.SkewY%20%3D%200%3B%20this.Rotation%20%3D%2090%3B%0A%20%20%20%20%20%20this.imgScale%20%3D%20%5B100%2C%20100%2C%20100%5D%3B%0A%20%20%20%20%20%20this.shadowS%20%3D%20%5B0%2C%200%2C%205%2C%20%22%23000000%22%5D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20getInfo()%20%7B%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20id%3A%20%22BetterInputSP%22%2C%0A%20%20%20%20%20%20%20%20name%3A%20%22Better%20Input%22%2C%0A%20%20%20%20%20%20%20%20color1%3A%20%22%239400ff%22%2C%0A%20%20%20%20%20%20%20%20color2%3A%20%22%237800cd%22%2C%0A%20%20%20%20%20%20%20%20color3%3A%20%22%236900b3%22%2C%0A%20%20%20%20%20%20%20%20menuIconURI%2C%0A%20%20%20%20%20%20%20%20blockIconURI%2C%0A%20%20%20%20%20%20%20%20blocks%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22askAndWait%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22ask%20%5Bquestion%5D%20and%20wait%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20question%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20defaultValue%3A%20%22What%20is%20your%20name%3F%22%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22askAndWaitForInput%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22ask%20%5Bquestion%5D%20and%20wait%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20question%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20defaultValue%3A%20%22What%20is%20your%20name%3F%22%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getUserInput%22%2C%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22user%20input%22%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setDefaultV%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20default%20value%20to%20%5BdefaultV%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultV%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20defaultValue%3A%20%22My%20Name%20Is...%22%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22removeAskBoxes%22%2C%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22remove%20all%20ask%20boxes%22%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%20blockType%3A%20Scratch.BlockType.LABEL%2C%20text%3A%20%22Formatting%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setEnable%22%2C%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20hideFromPalette%3A%20true%2C%20text%3A%20%22set%20%5BENABLE_MENU%5D%20to%20be%20%5BACTION%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ENABLE_MENU%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20menu%3A%20%22enableMenu%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ACTION%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20menu%3A%20%22inputActionMenu%22%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getBoxCount%22%2C%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20hideFromPalette%3A%20true%2C%20text%3A%20%22box%20count%22%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getMaxCount%22%2C%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20hideFromPalette%3A%20true%2C%20text%3A%20%22box%20limit%22%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setFontSize%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20font%20size%20to%20%5BSIZE%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SIZE%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%2C%20defaultValue%3A%2014%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setTextAlignment%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20alignment%20to%20%5BALIGNMENT%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ALIGNMENT%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20menu%3A%20%22alignmentMenu%22%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setFontFamily%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20font%20to%20%5BFONT%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20FONT%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20menu%3A%20%22fontMenu%22%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setDropShadow%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20%5BELEMENT%5D%20shadow%20to%20x%20%5Bx%5D%20y%20%5By%5D%20z%20%5Bz%5D%20color%20%5BCOLOR%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ELEMENT%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20menu%3A%20%22textsMenu%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20x%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%2C%20defaultValue%3A%200%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20y%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%2C%20defaultValue%3A%200%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20z%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%2C%20defaultValue%3A%202%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20COLOR%3A%20%7B%20type%3A%20Scratch.ArgumentType.COLOR%2C%20defaultValue%3A%20%22%23ff0000%22%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setOutline%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20%5BELEMENT%5D%20outline%20to%20%5BCOLOR%5D%20thickness%20%5BTHICK%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ELEMENT%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20menu%3A%20%22textsMenu%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20COLOR%3A%20%7B%20type%3A%20Scratch.ArgumentType.COLOR%2C%20defaultValue%3A%20%22%23ff0000%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20THICK%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%2C%20defaultValue%3A%205%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setInputType%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20Input%20Box%20to%20be%20%5BACTION%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ACTION%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20menu%3A%20%22inputActionMenu%22%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setDropdown%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20dropdown%20options%20to%20array%3A%20%5BDROPDOWN%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20DROPDOWN%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20defaultValue%3A%20%22%5B%5C%22Option%201%5C%22%2C%20%5C%22Option%202%5C%22%2C%20%5C%22Option%203%5C%22%5D%22%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setSlider%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20slider%20to%20min%3A%20%5BMIN%5D%20max%3A%20%5BMAX%5D%20default%3A%20%5BDEFAULT%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20MIN%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%2C%20defaultValue%3A%200%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20MAX%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%2C%20defaultValue%3A%20100%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20DEFAULT%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%2C%20defaultValue%3A%2050%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%20blockType%3A%20Scratch.BlockType.LABEL%2C%20text%3A%20%22Buttons%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setButton%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22%5BBUTTON%5D%20button%20named%20%5BNAME%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20BUTTON%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20menu%3A%20%22buttonType%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20NAME%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20defaultValue%3A%20%22Submit%22%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22deleteAllButtons%22%2C%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22remove%20all%20buttons%22%2C%20blockIconURI%3A%20formatIcon%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setButtonText%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20%5BBUTTON_MENU%5D%20button%20name%20to%20%5BTEXT%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20BUTTON_MENU%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20menu%3A%20%22buttonMenu%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20TEXT%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20defaultValue%3A%20%22my%20dropdown%22%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22lastButton%22%2C%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22last%20pressed%20button%22%2C%20blockIconURI%3A%20formatIcon%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%20blockType%3A%20Scratch.BlockType.LABEL%2C%20text%3A%20%22Positioning%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setPrePosition%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22preset%20textbox%20position%20to%20x%3A%20%5BX%5D%20y%3A%20%5BY%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20X%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%2C%20defaultValue%3A%200%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Y%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%2C%20defaultValue%3A%200%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setPosition%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20textbox%20position%20to%20x%3A%20%5BX%5D%20y%3A%20%5BY%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20X%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%2C%20defaultValue%3A%200%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Y%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%2C%20defaultValue%3A%200%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22changePosition%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22change%20textbox%20position%20by%20x%3A%20%5BX%5D%20y%3A%20%5BY%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20X%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%2C%20defaultValue%3A%205%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Y%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%2C%20defaultValue%3A%200%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getXpos%22%2C%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%20text%3A%20%22x%20position%22%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getYpos%22%2C%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%20text%3A%20%22y%20position%22%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setDirection%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20direction%20to%20%5BROTATE%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ROTATE%3A%20%7B%20type%3A%20Scratch.ArgumentType.ANGLE%2C%20defaultValue%3A%2090%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22changeDirection%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22change%20direction%20by%20%5BROTATE%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ROTATE%3A%20%7B%20type%3A%20Scratch.ArgumentType.ANGLE%2C%20defaultValue%3A%2015%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22reportDirection%22%2C%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22direction%22%2C%20blockIconURI%3A%20formatIcon%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%20blockType%3A%20Scratch.BlockType.LABEL%2C%20text%3A%20%22Visual%20Settings%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setColorSettings%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20%5BCOLOR_TYPE%5D%20color%20to%20%5BCOLOR%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20colorIcon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20COLOR_TYPE%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20menu%3A%20%22colorSettingsMenu%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20COLOR%3A%20%7B%20type%3A%20Scratch.ArgumentType.COLOR%2C%20defaultValue%3A%20%22%23000000%22%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setGradient%22%2C%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20%5BCOLOR_TYPE%5D%20color%20to%20gradient%20with%20%5BCOLOR1%5D%20and%20%5BCOLOR2%5D%20with%20direction%20%5BDIR%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20hideFromPalette%3A%20true%2C%20%2F%2Fdeprecated%20but%20needed%20for%20support%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20COLOR_TYPE%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20menu%3A%20%22elementMenu%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20COLOR1%3A%20%7B%20type%3A%20Scratch.ArgumentType.COLOR%20%7D%2C%20COLOR2%3A%20%7B%20type%3A%20Scratch.ArgumentType.COLOR%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20DIR%3A%20%7B%20type%3A%20Scratch.ArgumentType.ANGLE%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setCircleGradient%22%2C%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20%5BCOLOR_TYPE%5D%20color%20to%20radial%20gradient%20with%20%5BCOLOR1%5D%20and%20%5BCOLOR2%5D%20at%20x%20%5BX%5D%20y%20%5BY%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20hideFromPalette%3A%20true%2C%20%2F%2Fdeprecated%20but%20needed%20for%20support%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20COLOR_TYPE%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20menu%3A%20%22elementMenu%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20COLOR1%3A%20%7B%20type%3A%20Scratch.ArgumentType.COLOR%20%7D%2C%20COLOR2%3A%20%7B%20type%3A%20Scratch.ArgumentType.COLOR%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20X%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%20%7D%2C%20Y%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setImage%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20%5BELEMENT%5D%20image%20to%20%5BIMAGE%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20colorIcon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ELEMENT%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20menu%3A%20%22elementMenu%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20IMAGE%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20defaultValue%3A%20%22input-url-here%22%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22scaleImage%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22scale%20%5BELEMENT%5D%20image%20to%20%5BSCALE%5D%25%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20colorIcon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ELEMENT%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20menu%3A%20%22elementMenu%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SCALE%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%2C%20defaultValue%3A%20100%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22enableShadow%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20box%20shadow%20to%20be%20%5BACTION%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20colorIcon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ACTION%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20menu%3A%20%22buttonActionMenu%22%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setShadow%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20box%20shadow%20%5BSHADOW%5D%20to%20%5BAMT%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20colorIcon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SHADOW%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20menu%3A%20%22shadowStuff%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20AMT%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%2C%20defaultValue%3A%205%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setBorder%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20%5BELEMENT%5D%20border%20to%20%5BTYPE%5D%20color%20%5BCOLOR%5D%20width%20%5BWIDTH%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20colorIcon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ELEMENT%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20menu%3A%20%22elementMenu%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20TYPE%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20menu%3A%20%22borderTypes%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20COLOR%3A%20%7B%20type%3A%20Scratch.ArgumentType.COLOR%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20WIDTH%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%2C%20defaultValue%3A%205%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setBorderRadius%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20%5BELEMENT%5D%20border%20radius%20to%20%5BVALUE%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20colorIcon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ELEMENT%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20menu%3A%20%22elementMenu%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20VALUE%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%2C%20defaultValue%3A%205%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setPadding%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20%5BELEMENT%5D%20padding%20to%20T%3A%20%5BN1%5D%20B%3A%20%5BN3%5D%20L%3A%20%5BN4%5D%20R%3A%20%5BN2%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20colorIcon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ELEMENT%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20menu%3A%20%22elementMenu%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20N1%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%2C%20defaultValue%3A%205%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20N2%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%2C%20defaultValue%3A%205%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20N3%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%2C%20defaultValue%3A%205%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20N4%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%2C%20defaultValue%3A%205%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setDimension%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20Textbox%20width%20%5BW%5D%20height%20%5BH%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20colorIcon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20W%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%2C%20defaultValue%3A%20100%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20H%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%2C%20defaultValue%3A%20100%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%20blockType%3A%20Scratch.BlockType.LABEL%2C%20text%3A%20%22Effects%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22resetEffect%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22reset%20effects%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20effectIcon%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setEffect%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20effect%20%5BEFFECT%5D%20to%20%5BAMT%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20effectIcon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20EFFECT%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20menu%3A%20%22effectMenu%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20AMT%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%2C%20defaultValue%3A%205%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22changeEffect%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22change%20effect%20%5BEFFECT%5D%20by%20%5BAMT%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20effectIcon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20EFFECT%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20menu%3A%20%22effectMenu%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20AMT%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%2C%20defaultValue%3A%205%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22showEffect%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22effect%20%5BEFFECT%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20effectIcon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20EFFECT%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20menu%3A%20%22effectMenu%22%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setTimeout%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22when%20submitted%20delete%20textbox%20after%20%5BTIME%5D%20secs%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20effectIcon%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20TIME%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%2C%20defaultValue%3A%205%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22reportTimeout%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22current%20textbox%20timeout%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20effectIcon%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%20blockType%3A%20Scratch.BlockType.LABEL%2C%20text%3A%20%22Operations%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setUI%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20UI%20order%20to%20%5BARRAY%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ARRAY%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20defaultValue%3A%20%22%5B%5C%22question%5C%22%2C%20%5C%22input%5C%22%2C%20%5C%22buttons%5C%22%5D%22%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getUIOrder%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22UI%20order%22%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setAppend%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22append%20next%20textbox%20to%20%5BTARGET%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20TARGET%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20menu%3A%20%22appendMenu%22%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setFocus%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22toggle%20focus%20mode%20to%20%5BTYPE%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20TYPE%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20menu%3A%20%22buttonActionMenu%22%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22isWaitingInput%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22is%20waiting%3F%22%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22isDropdown%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22is%20dropdown%20open%3F%22%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setSubmitEvent%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20force%20input%20to%20%5BENTER%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ENTER%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20menu%3A%20%22enterMenu%22%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setMaxBoxCount%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20max%20box%20count%20to%3A%20%5BMAX%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20MAX%3A%20%7B%20type%3A%20Scratch.ArgumentType.NUMBER%2C%20defaultValue%3A%201%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getBoxInfo%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22textbox%20%5BINFO%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INFO%3A%20%7B%20type%3A%20Scratch.ArgumentType.STRING%2C%20menu%3A%20%22boxInfo%22%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20menus%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20enableMenu%3A%20%7B%20acceptReporters%3A%20true%2C%20items%3A%20%5B%22Button%202%22%2C%20%22Button%203%22%2C%20%22Button%204%22%2C%20%22Textbox%20Shadow%22%5D%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%2F%2F%20%5E%20Old%20Menu%20%5E%20(Needed%20for%20V2%20Support)%0A%20%20%20%20%20%20%20%20%20%20fontMenu%3A%20%7B%20acceptReporters%3A%20true%2C%20items%3A%20%22allFonts%22%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20buttonMenu%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20this.allButtons(%5B%22Dropdown%22%5D%2C%20false)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20elementMenu%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20this.allButtons(%5B%22Textbox%22%2C%20%22Input%20Box%22%2C%20%22Dropdown%20Button%22%5D%2C%20false)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20colorSettingsMenu%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20this.allButtons(%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Textbox%22%2C%20%22Question%20Text%22%2C%20%22Textbox%20Shadow%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Input%20Text%22%2C%20%22Input%20Box%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Dropdown%20Button%22%2C%20%22Dropdown%20Text%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%20true)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20textsMenu%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20this.allButtons(%5B%22Question%20Text%22%2C%20%22Input%20Text%22%2C%20%22Dropdown%20Text%22%5D%2C%20true%2C%20true)%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20appendMenu%3A%20%5B%22window%22%2C%20%22canvas%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20buttonType%3A%20%7B%20acceptReporters%3A%20true%2C%20items%3A%20%5B%22add%22%2C%20%22remove%22%5D%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20buttonActionMenu%3A%20%7B%20acceptReporters%3A%20true%2C%20items%3A%20%5B%22Enabled%22%2C%20%22Disabled%22%5D%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20alignmentMenu%3A%20%7B%20acceptReporters%3A%20true%2C%20items%3A%20%5B%22left%22%2C%20%22right%22%2C%20%22center%22%5D%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20shadowStuff%3A%20%7B%20acceptReporters%3A%20true%2C%20items%3A%20%5B%22Size%22%2C%20%22X%22%2C%20%22Y%22%5D%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20boxInfo%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%22count%22%2C%20%22limit%22%2C%20%22button%20count%22%2C%20%22button%20names%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20inputActionMenu%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22None%22%2C%20%22Text%22%2C%20%22Password%22%2C%20%22Number%22%2C%20%22Color%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Dropdown%22%2C%20%22Multi-Select%20Dropdown%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Horizontal%20Slider%22%2C%20%22Vertical%20Slider%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20effectMenu%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Blur%22%2C%20%22Brightness%22%2C%20%22Opacity%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Invert%22%2C%20%22Saturation%22%2C%20%22Hue%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Sepia%22%2C%20%22Contrast%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Scale%22%2C%20%22SkewX%22%2C%20%22SkewY%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20enterMenu%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%22Disabled%22%2C%20%22Enter%20Key%22%2C%20%22Shift%20%2B%20Enter%20Key%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20borderTypes%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22none%22%2C%20%22solid%22%2C%20%22dotted%22%2C%20%22dashed%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22double%22%2C%20%22groove%22%2C%20%22ridge%22%2C%20%22inset%22%2C%20%22outset%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20allFonts()%20%7B%0A%20%20%20%20%20%20const%20customFonts%20%3D%20Scratch.vm.runtime.fontManager%0A%20%20%20%20%20%20%20%20%3F%20Scratch.vm.runtime.fontManager.getFonts().map((i)%20%3D%3E%20(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20i.name%2C%20value%3A%20i.family%0A%20%20%20%20%20%20%20%20%20%20%7D))%0A%20%20%20%20%20%20%20%20%3A%20%5B%5D%3B%0A%20%20%20%20%20%20return%20%5B%20...fontMenu%2C%20...customFonts%20%5D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20allButtons(array%2C%20enableTxt%2C%20justTxt)%20%7B%0A%20%20%20%20%20%20let%20customBtn%20%3D%20Object.keys(this.buttonJSON)%3B%0A%20%20%20%20%20%20if%20(justTxt)%20customBtn%20%3D%20customBtn.map(btn%20%3D%3E%20btn%20%2B%20%22%20Text%22)%3B%0A%20%20%20%20%20%20else%20if%20(enableTxt)%20customBtn.forEach((btn)%20%3D%3E%20%7B%20customBtn.push(btn%20%2B%20%22%20Text%22)%20%7D)%3B%0A%20%20%20%20%20%20return%20%5B%20...array%2C%20...customBtn%20%5D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20updateOverlayPos(overlay)%20%7B%0A%20%20%20%20%20%20if%20(this.Rotation%20%3E%20359)%20this.Rotation%20%3D%200%3B%0A%20%20%20%20%20%20else%20if%20(this.Rotation%20%3C%201)%20this.Rotation%20%3D%20360%3B%0A%20%20%20%20%20%20if%20(this.textBoxX%20!%3D%3D%20null%20%26%26%20this.textBoxY%20!%3D%3D%20null)%20%7B%0A%20%20%20%20%20%20%20%20if%20(this.appendTarget%5B0%5D%20%3D%3D%3D%20%22window%22)%20%7B%0A%20%20%20%20%20%20%20%20%20%20overlay.style.left%20%3D%20%60%24%7B50%20%2B%20this.textBoxX%7D%25%60%3B%0A%20%20%20%20%20%20%20%20%20%20overlay.style.top%20%3D%20%60%24%7B50%20%2B%20this.textBoxY%7D%25%60%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20overlay.style.transform%20%3D%20%60%0A%20%20%20%20%20%20%20%20%20%20translate%24%7Bthis.appendTarget%5B0%5D%20%3D%3D%3D%20%22window%22%20%3F%20%22(-50%25%2C%20-50%25)%22%20%3A%20%60(%24%7B-50%20%2B%20this.textBoxX%7D%25%2C%20%24%7B-50%20%2B%20this.textBoxY%7D%25)%60%20%7D%0A%20%20%20%20%20%20%20%20%20%20SkewX(%24%7Bthis.SkewX%7Ddeg)%20SkewY(%24%7Bthis.SkewY%7Ddeg)%0A%20%20%20%20%20%20%20%20%20%20rotate(%24%7Bthis.Rotation%20-%2090%7Ddeg)%20scale(%24%7Bthis.Scale%20%2F%20100%7D)%0A%20%20%20%20%20%20%20%20%60%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20overlay.style.left%20%3D%20%2250%25%22%3B%0A%20%20%20%20%20%20%20%20overlay.style.top%20%3D%20%2250%25%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20updateOverlay(overlay)%20%7B%0A%20%20%20%20%20%20const%20newOpacity%20%3D%20%20this.Opacity%20%2F%20100%3B%0A%20%20%20%20%20%20const%20newBrightness%20%3D%20this.Brightness%20%2B%20100%3B%0A%20%20%20%20%20%20overlay.style.backgroundImage%20%3D%20%22%22%3B%0A%20%20%20%20%20%20overlay.style%5Bthis.textBoxColor%5B0%5D.includes(%22gradient%22)%20%3F%20%22backgroundImage%22%20%3A%20%22backgroundColor%22%5D%20%3D%20this.textBoxColor%5B0%5D%3B%0A%20%20%20%20%20%20overlay.style.boxShadow%20%3D%20this.shadowEnabled%20%3F%20%60%24%7Bthis.shadowS%5B0%5D%7Dpx%20%24%7Bthis.shadowS%5B1%5D%7Dpx%20%24%7Bthis.shadowS%5B2%5D%7Dpx%20%24%7Bthis.shadowS%5B3%5D%7D%60%20%3A%20%22none%22%3B%0A%20%20%20%20%20%20overlay.style.transform%20%3D%20%60%0A%20%20%20%20%20%20%20%20translate%24%7Bthis.appendTarget%5B0%5D%20%3D%3D%3D%20%22window%22%20%3F%20%22(-50%25%2C%20-50%25)%22%20%3A%20%60(%24%7B-50%20%2B%20this.textBoxX%7D%25%2C%20%24%7B-50%20%2B%20this.textBoxY%7D%25)%60%20%7D%0A%20%20%20%20%20%20%20%20SkewX(%24%7Bthis.SkewX%7Ddeg)%20SkewY(%24%7Bthis.SkewY%7Ddeg)%0A%20%20%20%20%20%20%20%20rotate(%24%7Bthis.Rotation%20-%2090%7Ddeg)%20scale(%24%7Bthis.Scale%20%2F%20100%7D)%0A%20%20%20%20%20%20%60%3B%0A%20%20%20%20%20%20overlay.style.filter%20%3D%20%60%0A%20%20%20%20%20%20%20%20blur(%24%7Bthis.Blur%7Dpx)%20brightness(%24%7BnewBrightness%7D%25)%0A%20%20%20%20%20%20%20%20invert(%24%7Bthis.Invert%7D%25)%20saturate(%24%7Bthis.Saturation%7D%25)%0A%20%20%20%20%20%20%20%20hue-rotate(%24%7Bthis.Hue%7Ddeg)%20sepia(%24%7Bthis.Sepia%7D%25)%0A%20%20%20%20%20%20%20%20contrast(%24%7Bthis.Contrast%7D%25)%0A%20%20%20%20%20%20%60%3B%0A%20%20%20%20%20%20overlay.style.opacity%20%3D%20newOpacity%3B%0A%20%20%20%20%20%20overlay.style.border%20%3D%20this.mainUIinfo.overlayBord%3B%0A%20%20%20%20%20%20overlay.style.padding%20%3D%20this.mainUIinfo.overlayPad%3B%0A%20%20%20%20%20%20overlay.style.fontFamily%20%3D%20this.fontFamily%3B%0A%20%20%20%20%20%20overlay.style.textAlign%20%3D%20this.textAlign%3B%0A%20%20%20%20%20%20overlay.style.borderRadius%20%3D%20%60%24%7Bthis.mainUIinfo.overlayRad%7Dpx%60%3B%0A%20%20%20%20%20%20overlay.style.width%20%3D%20this.mainUIinfo.dimensions%5B0%5D%3B%0A%20%20%20%20%20%20overlay.style.height%20%3D%20this.mainUIinfo.dimensions%5B1%5D%3B%0A%20%20%20%20%20%20overlayImageContainer.style.borderRadius%20%3D%20%60%24%7Bthis.mainUIinfo.overlayRad%7Dpx%60%3B%0A%20%20%20%20%20%20overlayImageContainer.style.background%20%3D%20%22%22%3B%0A%20%20%20%20%20%20this.setImageStyles(overlayImageContainer%2C%20this.overlayImage%5B0%5D%2C%20this.imgScale%5B0%5D)%3B%0A%20%20%20%20%20%20this.updateButtonImages(overlay)%3B%0A%20%20%20%20%7D%0A%20%20%20%20updateButtonImages(overlay)%20%7B%0A%20%20%20%20%20%20let%20text%20%3D%20overlay.querySelector(%22.question%22)%3B%0A%20%20%20%20%20%20if%20(text)%20%7B%0A%20%20%20%20%20%20%20%20text.style.color%20%3D%20this.questionColor%3B%0A%20%20%20%20%20%20%20%20text.style.textShadow%20%3D%20this.mainUIinfo.overlayTxtShad%3B%0A%20%20%20%20%20%20%20%20this.tryOutline(text%2C%20this.mainUIinfo.overlayOutline%5B0%5D%2C%20this.mainUIinfo.overlayOutline%5B1%5D)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20const%20inputField%20%3D%20overlay.querySelector(%22input%22)%3B%0A%20%20%20%20%20%20if%20(inputField)%20%7B%0A%20%20%20%20%20%20%20%20inputField.style.width%20%3D%20this.isInputEnabled%20%3D%3D%3D%20%22Color%22%20%3F%20%22100%25%22%20%3A%20%22auto%22%3B%0A%20%20%20%20%20%20%20%20inputField.style.background%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20inputField.style.fontFamily%20%3D%20this.fontFamily%3B%0A%20%20%20%20%20%20%20%20inputField.style%5Bthis.inputFieldColor.includes(%22gradient%22)%20%3F%20%22backgroundImage%22%20%3A%20%22backgroundColor%22%5D%20%3D%20this.inputFieldColor%3B%0A%20%20%20%20%20%20%20%20inputField.style.color%20%3D%20this.inputColor%3B%0A%20%20%20%20%20%20%20%20inputField.style.textShadow%20%3D%20this.mainUIinfo.inputTxtShad%3B%0A%20%20%20%20%20%20%20%20this.tryOutline(inputField%2C%20this.mainUIinfo.inputOutline%5B0%5D%2C%20this.mainUIinfo.inputOutline%5B1%5D)%3B%0A%20%20%20%20%20%20%20%20inputField.style.border%20%3D%20this.mainUIinfo.inputBord%3B%0A%20%20%20%20%20%20%20%20inputField.style.borderRadius%20%3D%20%60%24%7Bthis.mainUIinfo.inputRad%7Dpx%60%3B%0A%20%20%20%20%20%20%20%20inputField.style.padding%20%3D%20this.mainUIinfo.inputPad%3B%0A%20%20%20%20%20%20%20%20this.setImageStyles(inputField%2C%20this.overlayImage%5B1%5D%2C%20this.imgScale%5B1%5D)%3B%0A%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20const%20dropBtn%20%3D%20overlay.querySelector(%22button.dropbtn%22)%3B%0A%20%20%20%20%20%20if%20(dropBtn)%20%7B%0A%20%20%20%20%20%20%20%20dropBtn.style.backgroundImage%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20dropBtn.style.fontFamily%20%3D%20this.fontFamily%3B%0A%20%20%20%20%20%20%20%20dropBtn.style.color%20%3D%20this.dropdownButtonColor%5B1%5D%3B%0A%20%20%20%20%20%20%20%20dropBtn.style.borderRadius%20%3D%20%60%24%7Bthis.mainUIinfo.dropBtnRad%7Dpx%60%3B%0A%20%20%20%20%20%20%20%20dropBtn.style.border%20%3D%20this.mainUIinfo.dropBtnBord%3B%0A%20%20%20%20%20%20%20%20dropBtn.style.padding%20%3D%20this.mainUIinfo.dropBtnPad%3B%0A%20%20%20%20%20%20%20%20dropBtn.style.textShadow%20%3D%20this.mainUIinfo.dropBtnTxtShad%3B%0A%20%20%20%20%20%20%20%20this.tryOutline(dropBtn%2C%20this.mainUIinfo.dropBtnOutline%5B0%5D%2C%20this.mainUIinfo.dropBtnOutline%5B1%5D)%3B%0A%20%20%20%20%20%20%20%20dropBtn.style%5Bthis.dropdownButtonColor%5B0%5D.includes(%22gradient%22)%20%3F%20%22backgroundImage%22%20%3A%20%22backgroundColor%22%5D%20%3D%20this.dropdownButtonColor%5B0%5D%3B%0A%20%20%20%20%20%20%20%20this.setImageStyles(dropBtn%2C%20this.overlayImage%5B2%5D%2C%20this.imgScale%5B2%5D)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20const%20buttonContainer%20%3D%20overlay.querySelector(%22.button-container%22)%3B%0A%20%20%20%20%20%20if%20(buttonContainer)%20%7B%0A%20%20%20%20%20%20%20%20const%20buttons%20%3D%20buttonContainer.querySelectorAll(%22button%22)%3B%0A%20%20%20%20%20%20%20%20buttons.forEach((button%2C%20index)%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20const%20buttonName%20%3D%20Object.keys(this.buttonJSON)%5Bindex%5D%3B%0A%20%20%20%20%20%20%20%20%20%20const%20buttonInfo%20%3D%20this.buttonJSON%5BbuttonName%5D%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(buttonInfo)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20button.style.color%20%3D%20buttonInfo.textColor%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20button.style.fontFamily%20%3D%20this.fontFamily%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20button.style.borderRadius%20%3D%20%60%24%7BbuttonInfo.borderRadius%7Dpx%60%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20button.style.border%20%3D%20buttonInfo.border%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20button.style.padding%20%3D%20buttonInfo.padding%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20button.style.textShadow%20%3D%20buttonInfo.dropShadow%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.tryOutline(button%2C%20buttonInfo.outline%5B0%5D%2C%20buttonInfo.outline%5B1%5D)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20button.style.background%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20button.style%5BbuttonInfo.color.includes(%22gradient%22)%20%3F%20%22backgroundImage%22%20%3A%20%22background%22%5D%20%3D%20buttonInfo.color%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.setImageStyles(button%2C%20buttonInfo.image%2C%20buttonInfo.imgScale)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20tryOutline(element%2C%20color%2C%20thick)%20%7B%0A%20%20%20%20%20%20element.style.webkitTextStrokeColor%20%3D%20color%3B%0A%20%20%20%20%20%20element.style.webkitTextStrokeWidth%20%3D%20%60%24%7Bthick%7Dpx%60%3B%0A%20%20%20%20%20%20%2F%2Fmulti-platform%20support%20cuz%20we%20cant%20have%20nice%20things%0A%20%20%20%20%20%20element.style.textStrokeColor%20%3D%20color%3B%0A%20%20%20%20%20%20element.style.textStrokeWidth%20%3D%20%60%24%7Bthick%7Dpx%60%3B%0A%20%20%20%20%20%20element.style.mozTextStrokeColor%20%3D%20color%3B%0A%20%20%20%20%20%20element.style.mozTextStrokeWidth%20%3D%20%60%24%7Bthick%7Dpx%60%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setImageStyles(element%2C%20url%2C%20scale)%20%7B%0A%20%20%20%20%20%20if%20(Scratch.Cast.toString(url).length%20%3E%205)%20%7B%0A%20%20%20%20%20%20%20%20Scratch.canFetch(encodeURI(url)).then((canFetch)%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20(canFetch)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20element.style.background%20%3D%20%60url(%24%7BencodeURI(url)%7D)%60%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20element.style.backgroundSize%20%3D%20%60%24%7Bscale%7D%25%60%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%20console.log(%22Cannot%20fetch%20content%20from%20the%20URL%22)%20%7D%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20showEffect(args)%20%7B%20return%20this%5Bargs.EFFECT%5D%20%7D%0A%0A%20%20%20%20setEffect(args)%20%7B%0A%20%20%20%20%20%20this%5Bargs.EFFECT%5D%20%3D%20args.AMT%3B%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%20this.updateOverlay(overlay)%20%7D)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20changeEffect(args)%20%7B%0A%20%20%20%20%20%20const%20effect%20%3D%20args.EFFECT%3B%0A%20%20%20%20%20%20this%5Beffect%5D%20%3D%20this%5Beffect%5D%20%2B%20args.AMT%3B%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%20this.updateOverlay(overlay)%20%7D)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20resetEffect()%20%7B%0A%20%20%20%20%20%20this.Blur%20%3D%200%3B%20this.Brightness%20%3D%200%3B%20this.Opacity%20%3D%20100%3B%20this.Invert%20%3D%200%3B%0A%20%20%20%20%20%20this.Saturation%20%3D%20100%3B%20this.Hue%20%3D%200%3B%20this.Sepia%20%3D%200%3B%20this.Contrast%20%3D%20100%3B%0A%20%20%20%20%20%20this.Scale%20%3D%20100%3B%20this.SkewX%20%3D%200%3B%20this.SkewY%20%3D%200%3B%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%20this.updateOverlay(overlay)%20%7D)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setColorSettings(args)%20%7B%0A%20%20%20%20%20%20const%20colorType%20%3D%20args.COLOR_TYPE%3B%0A%20%20%20%20%20%20const%20colorValue%20%3D%20args.COLOR%3B%0A%20%20%20%20%20%20const%20colorTypeMap%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%22Question%20Text%22%3A%20()%20%3D%3E%20this.questionColor%20%3D%20colorValue%2C%0A%20%20%20%20%20%20%20%20%22Input%20Text%22%3A%20()%20%3D%3E%20this.inputColor%20%3D%20colorValue%2C%0A%20%20%20%20%20%20%20%20%22Textbox%22%3A%20()%20%3D%3E%20%7B%20this.textBoxColor%5B0%5D%20%3D%20colorValue%3B%20this.overlayImage%5B0%5D%20%3D%20%22%20%22%3B%20%7D%2C%0A%20%20%20%20%20%20%20%20%22Textbox%20Shadow%22%3A%20()%20%3D%3E%20%7B%20this.shadowS%5B3%5D%20%3D%20colorValue%20%7D%2C%0A%20%20%20%20%20%20%20%20%22Input%20Box%22%3A%20()%20%3D%3E%20%7B%20this.inputFieldColor%20%3D%20colorValue%3B%20this.overlayImage%5B1%5D%20%3D%20%22%20%22%3B%20%7D%2C%0A%20%20%20%20%20%20%20%20%22Dropdown%20Button%22%3A%20()%20%3D%3E%20%7B%20this.dropdownButtonColor%5B0%5D%20%3D%20colorValue%3B%20this.overlayImage%5B2%5D%20%3D%20%22%20%22%3B%20%7D%2C%0A%20%20%20%20%20%20%20%20%22Dropdown%20Text%22%3A%20()%20%3D%3E%20this.dropdownButtonColor%5B1%5D%20%3D%20colorValue%2C%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20const%20buttonInfo%20%3D%20this.buttonJSON%5BcolorType%5D%20%7C%7C%20this.buttonJSON%5BcolorType.replace(%22%20Text%22%2C%20%22%22)%5D%3B%0A%20%20%20%20%20%20if%20(buttonInfo)%20%7B%0A%20%20%20%20%20%20%20%20if%20(colorType.includes(%22%20Text%22))%20%7B%0A%20%20%20%20%20%20%20%20%20%20buttonInfo.textColor%20%3D%20colorValue%3B%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20buttonInfo.color%20%3D%20colorValue%3B%0A%20%20%20%20%20%20%20%20%20%20buttonInfo.image%20%3D%20%22%20%22%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20const%20applyColor%20%3D%20colorTypeMap%5BcolorType%5D%3B%0A%20%20%20%20%20%20if%20(applyColor)%20applyColor()%3B%0A%20%20%20%20%20%20this.activeOverlays.forEach(overlay%20%3D%3E%20this.updateOverlay(overlay))%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20findGradientType(menu)%20%7B%0A%20%20%20%20%20%20const%20colorTypeMap%20%3D%20%7B%0A%20%20%20%20%20%20%20%20Textbox%3A%20%7B%20newColorType%3A%20%22textBoxColor%22%2C%20ind%3A%200%20%7D%2C%0A%20%20%20%20%20%20%20%20%22Dropdown%20Button%22%3A%20%7B%20newColorType%3A%20%22dropdownButtonColor%22%2C%20ind%3A%202%20%7D%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20if%20(colorTypeMap%5Bmenu%5D)%20%7B%0A%20%20%20%20%20%20%20%20const%20%7B%20newColorType%2C%20ind%20%7D%20%3D%20colorTypeMap%5Bmenu%5D%3B%0A%20%20%20%20%20%20%20%20this.overlayImage%5Bind%5D%20%3D%20%22%20%22%3B%0A%20%20%20%20%20%20%20%20return%20newColorType%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(this.buttonJSON%5Bmenu%5D)%20%7B%20return%20%5B%22button%22%2C%20menu%5D%20%7D%0A%20%20%20%20%20%20return%20menu%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setGradient(args)%20%7B%0A%20%20%20%20%20%20if%20(args.COLOR_TYPE%20%3D%3D%3D%20%22Input%20Box%22)%20throw%20new%20Error%20(%22As%20of%20Better%20Input%20V4%2C%20this%20Option%20no%20Longer%20Works%22)%3B%0A%20%20%20%20%20%20const%20newColorType%20%3D%20this.findGradientType(args.COLOR_TYPE)%3B%0A%20%20%20%20%20%20const%20gradientColor%20%3D%20%60linear-gradient(%24%7Bargs.DIR%20-%2090%7Ddeg%2C%20%24%7Bargs.COLOR2%7D%2C%20%24%7Bargs.COLOR1%7D)%60%3B%0A%20%20%20%20%20%20if%20(newColorType%5B0%5D%20!%3D%3D%20%22button%22)%20this%5BnewColorType%5D%5B0%5D%20%3D%20gradientColor%3B%0A%20%20%20%20%20%20else%20this.buttonJSON%5BnewColorType%5B1%5D%5D.color%20%3D%20gradientColor%3B%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%20this.updateOverlay(overlay)%20%7D)%3B%0A%20%20%20%20%7D%0A%20%20%20%20setCircleGradient(args)%20%7B%0A%20%20%20%20%20%20const%20newColorType%20%3D%20this.findGradientType(args.COLOR_TYPE)%3B%0A%20%20%20%20%20%20const%20newPos%20%3D%20%5Bargs.X%20%2B%2050%2C%20args.Y%20%2B%2050%5D%3B%0A%20%20%20%20%20%20const%20gradientColor%20%3D%20%60radial-gradient(circle%20at%20%24%7BnewPos%5B0%5D%7D%25%20%24%7BnewPos%5B1%5D%7D%25%2C%20%24%7Bargs.COLOR2%7D%2C%20%24%7Bargs.COLOR1%7D)%60%3B%0A%20%20%20%20%20%20if%20(newColorType%5B0%5D%20!%3D%3D%20%22button%22)%20this%5BnewColorType%5D%5B0%5D%20%3D%20gradientColor%3B%0A%20%20%20%20%20%20else%20this.buttonJSON%5BnewColorType%5B1%5D%5D.color%20%3D%20gradientColor%3B%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%20this.updateOverlay(overlay)%20%7D)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20callStyling(element%2C%20value%2C%20type%2C%20elements)%20%7B%0A%20%20%20%20%20%20const%20elementID%20%3D%20elements%5Belement%5D%3B%0A%20%20%20%20%20%20if%20(elementID%20!%3D%3D%20undefined)%20this.mainUIinfo%5BelementID%5D%20%3D%20value%3B%0A%20%20%20%20%20%20else%20if%20(this.buttonJSON%5Belement%5D)%20this.buttonJSON%5Belement%5D%5Btype%5D%20%3D%20value%3B%0A%20%20%20%20%20%20this.activeOverlays.forEach(overlay%20%3D%3E%20this.updateOverlay(overlay))%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setBorder(args)%20%7B%0A%20%20%20%20%20%20const%20width%20%3D%20Scratch.Cast.toNumber(args.WIDTH)%3B%0A%20%20%20%20%20%20const%20string%20%3D%20%60%24%7Bwidth%7Dpx%20%24%7Bargs.TYPE%7D%20%24%7Bargs.COLOR%7D%60%3B%0A%20%20%20%20%20%20this.callStyling(%0A%20%20%20%20%20%20%20%20args.ELEMENT%2C%20string%2C%20%22border%22%2C%0A%20%20%20%20%20%20%20%20%7B%20Textbox%3A%20%22overlayBord%22%2C%20%22Input%20Box%22%3A%20%22inputBord%22%2C%20%22Dropdown%20Button%22%3A%20%22dropBtnBord%22%20%7D%0A%20%20%20%20%20%20)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setBorderRadius(args)%20%7B%0A%20%20%20%20%20%20this.callStyling(%0A%20%20%20%20%20%20%20%20args.ELEMENT%2C%20Math.max(args.VALUE%2C%200)%2C%20%22borderRadius%22%2C%0A%20%20%20%20%20%20%20%20%7B%20Textbox%3A%20%22overlayRad%22%2C%20%22Input%20Box%22%3A%20%22inputRad%22%2C%20%22Dropdown%20Button%22%3A%20%22dropBtnRad%22%20%7D%0A%20%20%20%20%20%20)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setPadding(args)%20%7B%0A%20%20%20%20%20%20const%20casted%20%3D%20%5B%0A%20%20%20%20%20%20%20%20Scratch.Cast.toNumber(args.N1)%2C%20Scratch.Cast.toNumber(args.N2)%2C%0A%20%20%20%20%20%20%20%20Scratch.Cast.toNumber(args.N3)%2C%20Scratch.Cast.toNumber(args.N4)%0A%20%20%20%20%20%20%5D%3B%0A%20%20%20%20%20%20let%20pad%20%3D%20%60%24%7Bcasted%5B0%5D%7Dpx%20%24%7Bcasted%5B1%5D%7Dpx%20%24%7Bcasted%5B2%5D%7Dpx%20%24%7Bcasted%5B3%5D%7Dpx%60%3B%0A%20%20%20%20%20%20this.callStyling(%0A%20%20%20%20%20%20%20%20args.ELEMENT%2C%20pad%2C%20%22padding%22%2C%0A%20%20%20%20%20%20%20%20%7B%20Textbox%3A%20%22overlayPad%22%2C%20%22Input%20Box%22%3A%20%22inputPad%22%2C%20%22Dropdown%20Button%22%3A%20%22dropBtnPad%22%20%7D%0A%20%20%20%20%20%20)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setDropShadow(args)%20%7B%0A%20%20%20%20%20%20const%20casted%20%3D%20%5B%0A%20%20%20%20%20%20%20%20Scratch.Cast.toNumber(args.x)%2C%20Scratch.Cast.toNumber(args.y)%2C%0A%20%20%20%20%20%20%20%20Scratch.Cast.toNumber(args.z)%2C%0A%20%20%20%20%20%20%5D%3B%0A%20%20%20%20%20%20let%20shadow%20%3D%20args.z%20%3D%3D%3D%200%20%3F%20%22none%22%20%3A%20%60%24%7Bcasted%5B0%5D%7Dpx%20%24%7Bcasted%5B1%5D%20*%20-1%7Dpx%20%24%7Bcasted%5B2%5D%7Dpx%20%24%7Bargs.COLOR%7D%60%3B%0A%20%20%20%20%20%20this.callStyling(%0A%20%20%20%20%20%20%20%20args.ELEMENT.slice(0%2C%20-5)%2C%20shadow%2C%20%22dropShadow%22%2C%0A%20%20%20%20%20%20%20%20%7B%20%22Question%22%3A%20%22overlayTxtShad%22%2C%20%22Input%22%3A%20%22inputTxtShad%22%2C%20%22Dropdown%22%3A%20%22dropBtnTxtShad%22%20%7D%0A%20%20%20%20%20%20)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setOutline(args)%20%7B%0A%20%20%20%20%20%20const%20thick%20%3D%20Scratch.Cast.toNumber(args.THICK)%3B%0A%20%20%20%20%20%20this.callStyling(%0A%20%20%20%20%20%20%20%20args.ELEMENT.slice(0%2C%20-5)%2C%20%5Bargs.COLOR%2C%20thick%5D%2C%20%22outline%22%2C%0A%20%20%20%20%20%20%20%20%7B%20%22Question%22%3A%20%22overlayOutline%22%2C%20%22Input%22%3A%20%22inputOutline%22%2C%20%22Dropdown%22%3A%20%22dropBtnOutline%22%20%7D%0A%20%20%20%20%20%20)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setShadow(args)%20%7B%0A%20%20%20%20%20%20const%20shadowMap%20%3D%20%7B%20Size%3A%202%2C%20X%3A%200%2C%20Y%3A%201%20%7D%3B%0A%20%20%20%20%20%20const%20propertyIndex%20%3D%20shadowMap%5Bargs.SHADOW%5D%3B%0A%20%20%20%20%20%20if%20(propertyIndex%20!%3D%3D%20undefined)%20this.shadowS%5BpropertyIndex%5D%20%3D%20args.AMT%3B%0A%20%20%20%20%20%20this.activeOverlays.forEach(overlay%20%3D%3E%20this.updateOverlay(overlay))%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setImage(args)%20%7B%0A%20%20%20%20%20%20const%20elementMap%20%3D%20%7B%20Textbox%3A%200%2C%20%22Input%20Box%22%3A%201%2C%20%22Dropdown%20Button%22%3A%202%20%7D%3B%0A%20%20%20%20%20%20const%20elementIndex%20%3D%20elementMap%5Bargs.ELEMENT%5D%3B%0A%20%20%20%20%20%20if%20(elementIndex%20!%3D%3D%20undefined)%20this.overlayImage%5BelementIndex%5D%20%3D%20args.IMAGE%3B%0A%20%20%20%20%20%20else%20if%20(this.buttonJSON%5Bargs.ELEMENT%5D)%20this.buttonJSON%5Bargs.ELEMENT%5D.image%20%3D%20args.IMAGE%3B%0A%20%20%20%20%20%20this.activeOverlays.forEach(overlay%20%3D%3E%20this.updateOverlay(overlay))%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20scaleImage(args)%20%7B%0A%20%20%20%20%20%20const%20elementMap%20%3D%20%7B%20Textbox%3A%200%2C%20%22Input%20Box%22%3A%201%2C%20%22Dropdown%20Button%22%3A%202%20%7D%3B%0A%20%20%20%20%20%20const%20elementIndex%20%3D%20elementMap%5Bargs.ELEMENT%5D%3B%0A%20%20%20%20%20%20if%20(elementIndex%20!%3D%3D%20undefined)%20this.imgScale%5BelementIndex%5D%20%3D%20args.SCALE%3B%0A%20%20%20%20%20%20else%20if%20(this.buttonJSON%5Bargs.ELEMENT%5D)%20this.buttonJSON%5Bargs.ELEMENT%5D.imgScale%20%3D%20args.SCALE%3B%0A%20%20%20%20%20%20this.activeOverlays.forEach(overlay%20%3D%3E%20this.updateOverlay(overlay))%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setDimension(args)%20%7B%0A%20%20%20%20%20%20const%20w%20%3D%20%60%24%7BScratch.Cast.toNumber(args.W)%7Dpx%60%3B%0A%20%20%20%20%20%20const%20h%20%3D%20%60%24%7BScratch.Cast.toNumber(args.H)%7Dpx%60%3B%0A%20%20%20%20%20%20%2F%2F%20Negative%20numbers%20result%20in%20auto-dimensions%0A%20%20%20%20%20%20this.mainUIinfo.dimensions%20%3D%20%5Bw.includes(%22-%22)%20%3F%20%22auto%22%20%3A%20w%2C%20h.includes(%22-%22)%20%3F%20%22auto%22%20%3A%20h%5D%3B%0A%20%20%20%20%20%20this.activeOverlays.forEach(overlay%20%3D%3E%20this.updateOverlay(overlay))%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setDirection(args)%20%7B%0A%20%20%20%20%20%20this.Rotation%20%3D%20Scratch.Cast.toNumber(args.ROTATE)%3B%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%20this.updateOverlay(overlay)%20%7D)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20changeDirection(args)%20%7B%0A%20%20%20%20%20%20this.Rotation%20%3D%20this.Rotation%20%2B%20Scratch.Cast.toNumber(args.ROTATE)%3B%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%20this.updateOverlay(overlay)%20%7D)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20reportDirection()%20%7B%20return%20this.Rotation%20%7D%0A%0A%20%20%20%20setPrePosition(args)%20%7B%0A%20%20%20%20%20%20this.textBoxX%20%3D%20Scratch.Cast.toNumber(args.X)%20%2F%20(screen.width%20%2F%20400)%3B%0A%20%20%20%20%20%20this.textBoxY%20%3D%20Scratch.Cast.toNumber(args.Y)%20%2F%20(screen.height%20%2F%20-300)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setPosition(args)%20%7B%0A%20%20%20%20%20%20this.textBoxX%20%3D%20Scratch.Cast.toNumber(args.X)%20%2F%20(screen.width%20%2F%20400)%3B%0A%20%20%20%20%20%20this.textBoxY%20%3D%20Scratch.Cast.toNumber(args.Y)%20%2F%20(screen.height%20%2F%20-300)%3B%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%20this.updateOverlayPos(overlay)%20%7D)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20changePosition(args)%20%7B%0A%20%20%20%20%20%20this.textBoxX%20%3D%20this.textBoxX%20%2B%20Scratch.Cast.toNumber(args.X)%20%2F%20(screen.width%20%2F%20400)%3B%0A%20%20%20%20%20%20this.textBoxY%20%3D%20this.textBoxY%20%2B%20Scratch.Cast.toNumber(args.Y)%20%2F%20(screen.height%20%2F%20-300)%3B%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%20this.updateOverlayPos(overlay)%20%7D)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20getXpos()%20%7B%20return%20this.textBoxX%20*%20(screen.width%20%2F%20400)%20%7D%0A%20%20%20%20getYpos()%20%7B%20return%20this.textBoxY%20*%20(screen.height%20%2F%20-300)%20%7D%0A%0A%20%20%20%20setFontSize(args)%20%7B%20this.fontSize%20%3D%20args.SIZE%20%2B%20%22px%22%20%7D%0A%0A%20%20%20%20setTextAlignment(args)%20%7B%0A%20%20%20%20%20%20this.textAlign%20%3D%20args.ALIGNMENT%3B%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%20this.updateOverlay(overlay)%20%7D)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setFontFamily(args)%20%7B%0A%20%20%20%20%20%20this.fontFamily%20%3D%20args.FONT%3B%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%20this.updateOverlay(overlay)%20%7D)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setSlider(args)%20%7B%20this.sliderInfo%20%3D%20%5Bargs.MIN%2C%20args.MAX%2C%20args.DEFAULT%5D%20%7D%0A%0A%20%20%20%20setInputType(args)%20%7B%0A%20%20%20%20%20%20if%20(args.ACTION%20%3D%3D%3D%20%22Text%22%20%7C%7C%20args.ACTION%20%3D%3D%3D%20%20%22None%22)%20%7B%0A%20%20%20%20%20%20%20%20this.isInputEnabled%20%3D%20args.ACTION%20%3D%3D%3D%20%22Text%22%20%3F%20%22Enabled%22%20%3A%20%22Disabled%22%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%20this.isInputEnabled%20%3D%20args.ACTION%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20enableShadow(args)%20%7B%20this.shadowEnabled%20%3D%20args.ACTION%20%3D%3D%3D%20%22Enabled%22%20%7D%0A%0A%20%20%20%20setButtonText(args)%20%7B%0A%20%20%20%20%20%20const%20buttonMenu%20%3D%20args.BUTTON_MENU%3B%0A%20%20%20%20%20%20const%20text%20%3D%20args.TEXT%3B%0A%20%20%20%20%20%20if%20(buttonMenu%20%3D%3D%3D%20%22Dropdown%22)%20%7B%0A%20%20%20%20%20%20%20%20this.DropdownText%20%3D%20text%3B%0A%20%20%20%20%20%20%7D%20else%20if%20(this.buttonJSON%5BbuttonMenu%5D)%20%7B%0A%20%20%20%20%20%20%20%20this.buttonJSON%5BbuttonMenu%5D.name%20%3D%20text%3B%0A%20%20%20%20%20%20%20%20Scratch.vm.extensionManager.refreshBlocks()%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20setDropdown(args)%20%7B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20this.optionList%20%3D%20JSON.parse(args.DROPDOWN)%3B%0A%20%20%20%20%20%20%7D%20catch%20%7B%20this.optionList%20%3D%20%5B%22Undefined%20Array%20Error%22%5D%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20removeAskBoxes()%20%7B%0A%20%20%20%20%20%20const%20overlaysToRemove%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20if%20(overlay)%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20(this.appendTarget%5B0%5D%20%3D%3D%3D%20%22window%22%20%26%26%20overlay.parentNode)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20overlay.parentNode.removeChild(overlay)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20if%20(overlay.parentNode.parentNode%20!%3D%3D%20document.documentElement)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20overlay.parentNode.parentNode.removeChild(overlay.parentNode)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20overlaysToRemove.push(overlay)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20if%20(this.askBoxPromises)%20%7B%0A%20%20%20%20%20%20%20%20%20%20const%20index%20%3D%20this.activeOverlays.indexOf(overlay)%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(index%20!%3D%3D%20-1)%20this.askBoxPromises%5Bindex%5D.resolve(%22removed%22)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20this.askBoxPromises%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%20this.activeOverlays%20%3D%20this.activeOverlays.filter((overlay)%20%3D%3E%20!overlaysToRemove.includes(overlay))%3B%0A%20%20%20%20%20%20this.activeUI%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%20this.askBoxInfo%5B0%5D%20%3D%200%3B%0A%20%20%20%20%20%20%2F%2F%20Remove%20%22Bugged%22%20Boxes%2C%20bugged%20boxes%20is%20a%20intentional%20feature%2C%20ask%20for%20more%20info%0A%20%20%20%20%20%20const%20bugged%20%3D%20document.querySelectorAll(%60%5Bclass%5E%3D%22SP-ask-box%22%5D%60)%3B%0A%20%20%20%20%20%20bugged.forEach((box)%20%3D%3E%20%7B%20box.parentNode.removeChild(box)%20%7D)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20askAndWaitForInput(args)%20%7B%0A%20%20%20%20%20%20if%20(this.askBoxInfo%5B0%5D%20%3C%20this.askBoxInfo%5B1%5D%20)%20%7B%0A%20%20%20%20%20%20%20%20return%20this.askAndWait(args).then(()%20%3D%3E%20%7B%20return%20this.getUserInput()%20%7D)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20askAndWait(args)%20%7B%0A%20%20%20%20%20%20if%20(this.askBoxInfo%5B0%5D%20%3C%20this.askBoxInfo%5B1%5D)%20%7B%0A%20%20%20%20%20%20%20%20const%20question%20%3D%20args.question%3B%0A%20%20%20%20%20%20%20%20this.isWaitingForInput%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20this.lastPressBtn%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20this.askBoxInfo%5B0%5D%2B%2B%3B%0A%20%20%20%20%20%20%20%20let%20selectedOptions%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%20%20%20return%20new%20Promise((resolve)%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20const%20askBoxPromise%20%3D%20%7B%20resolve%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20this.askBoxPromises.push(askBoxPromise)%3B%0A%20%20%20%20%20%20%20%20%20%20const%20overlay%20%3D%20document.createElement(%22div%22)%3B%0A%20%20%20%20%20%20%20%20%20%20overlay.classList.add(%22SP-ask-box%22)%3B%0A%20%20%20%20%20%20%20%20%20%20overlay.style.pointerEvents%20%3D%20%22auto%22%3B%0A%20%20%20%20%20%20%20%20%20%20overlay.style.position%20%3D%20%22fixed%22%3B%0A%20%20%20%20%20%20%20%20%20%20overlay.style.zIndex%20%3D%20%229999%22%3B%0A%20%20%20%20%20%20%20%20%20%20overlay.style.fontSize%20%3D%20this.fontSize%3B%0A%20%20%20%20%20%20%20%20%20%20overlay.style.left%20%3D%20this.appendTarget%5B0%5D%20%3D%3D%3D%20%22window%22%20%3F%20%60%24%7B50%20%2B%20this.textBoxX%7D%25%60%20%3A%20%220%25%22%3B%0A%20%20%20%20%20%20%20%20%20%20overlay.style.top%20%3D%20this.appendTarget%5B0%5D%20%3D%3D%3D%20%22window%22%20%3F%20%60%24%7B50%20%2B%20this.textBoxY%7D%25%60%20%3A%20%220%25%22%3B%0A%0A%20%20%20%20%20%20%20%20%20%20const%20focusBG%20%3D%20document.createElement(%22div%22)%3B%0A%20%20%20%20%20%20%20%20%20%20focusBG.style.cssText%20%3D%20%22pointer-events%3A%20auto%3B%20position%3A%20fixed%3B%20width%3A%20100%25%3B%20height%3A%20100%25%3B%20background-color%3A%20rgba(0%2C%200%2C%200%2C%200.5)%3B%20z-index%3A%209998%3B%22%3B%0A%20%20%20%20%20%20%20%20%20%20focusBG.className%20%3D%20%22SP-ask-boxBG%22%3B%0A%20%20%20%20%20%20%20%20%20%20focusBG.id%20%3D%20this.appendTarget%5B0%5D%3B%0A%20%20%20%20%20%20%20%20%20%20focusBG.style.left%20%3D%20this.appendTarget%5B0%5D%20%3D%3D%3D%20%22window%22%20%3F%20%220%25%22%20%3A%20%22-50%25%22%3B%0A%20%20%20%20%20%20%20%20%20%20focusBG.style.top%20%3D%20this.appendTarget%5B0%5D%20%3D%3D%3D%20%22window%22%20%3F%20%220%25%22%20%3A%20%22-50%25%22%3B%0A%0A%20%20%20%20%20%20%20%20%20%20overlayImageContainer%20%3D%20document.createElement(%22div%22)%3B%0A%20%20%20%20%20%20%20%20%20%20overlayImageContainer.style.width%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20%20%20%20%20overlayImageContainer.style.height%20%3D%20%22100%25%22%3B%0A%20%20%20%20%20%20%20%20%20%20overlayImageContainer.style.position%20%3D%20%22absolute%22%3B%0A%20%20%20%20%20%20%20%20%20%20overlayImageContainer.style.top%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%20%20overlayImageContainer.style.left%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%20%20overlayImageContainer.style.zIndex%20%3D%20%22-1%22%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(this.forceInput%20!%3D%3D%20%22Disabled%22)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20const%20overlayInput%20%3D%20this.forceInput%20%3D%3D%3D%20%22Enter%20Key%22%20%3F%20%22Enter%22%20%3A%20this.forceInput%20%3D%3D%3D%20%22Shift%20%2B%20Enter%20Key%22%20%3F%20%22ShiftEnter%22%20%3A%20this.forceInput%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20const%20handleKeydown%20%3D%20(event)%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20((overlayInput%20%3D%3D%3D%20%22ShiftEnter%22%20%26%26%20event.shiftKey%20%26%26%20event.key%20%3D%3D%3D%20%22Enter%22)%20%7C%7C%20event.key%20%3D%3D%3D%20overlayInput)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.userInput%20%3D%20inputField.value%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.closeOverlay(overlay)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20resolve()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20const%20observer%20%3D%20new%20MutationObserver((mutationsList)%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(const%20mutation%20of%20mutationsList)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(mutation.type%20%3D%3D%3D%20%22childList%22%20%26%26%20!document.contains(overlay))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.removeEventListener(%22keydown%22%2C%20handleKeydown)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20observer.disconnect()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20observer.observe(document.body%2C%20%7B%20childList%3A%20true%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20document.addEventListener(%22keydown%22%2C%20handleKeydown)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20const%20questionText%20%3D%20document.createElement(%22div%22)%3B%0A%20%20%20%20%20%20%20%20%20%20questionText.classList.add(%22question%22)%3B%0A%20%20%20%20%20%20%20%20%20%20questionText.style.fontSize%20%3D%20this.fontSize%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(this.uiOrder%5B0%5D%20!%3D%3D%20%22question%22)%20questionText.style.marginTop%20%3D%20%2210px%22%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(this.uiOrder%5B0%5D%20%3D%3D%3D%20%22question%22)%20questionText.style.marginBottom%20%3D%20%2210px%22%3B%0A%20%20%20%20%20%20%20%20%20%20questionText.innerHTML%20%3D%20xmlEscape(question).replace(%2F%5Cn%2Fg%2C%20%22%3Cbr%3E%22)%3B%0A%0A%20%20%20%20%20%20%20%20%20%20const%20inputField%20%3D%20document.createElement(%22input%22)%3B%0A%20%20%20%20%20%20%20%20%20%20inputField.style.display%20%3D%20this.isInputEnabled%20%3F%20%22block%22%20%3A%20%22none%22%3B%0A%20%20%20%20%20%20%20%20%20%20inputField.style.fontSize%20%3D%20this.fontSize%3B%0A%20%20%20%20%20%20%20%20%20%20inputField.style.margin%20%3D%20%220%20auto%22%3B%0A%20%20%20%20%20%20%20%20%20%20inputField.type%20%3D%20this.isInputEnabled.toLowerCase()%3B%0A%20%20%20%20%20%20%20%20%20%20inputField.addEventListener(%22input%22%2C%20()%20%3D%3E%20%7B%20this.userInput%20%3D%20inputField.value%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20const%20buttonContainer%20%3D%20document.createElement(%22div%22)%3B%0A%20%20%20%20%20%20%20%20%20%20buttonContainer.classList.add(%22button-container%22)%3B%0A%20%20%20%20%20%20%20%20%20%20for%20(const%20buttonName%20in%20this.buttonJSON)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20const%20buttonInfo%20%3D%20this.buttonJSON%5BbuttonName%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(buttonInfo.name.includes(%22%3Cnewline%3E%22))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20lineBreak%20%3D%20document.createElement(%22br%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20buttonContainer.appendChild(lineBreak)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20button%20%3D%20document.createElement(%22button%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.uiOrder%5B0%5D%20!%3D%3D%20%22buttons%22)%20button.style.marginTop%20%3D%20%2210px%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.uiOrder%5B2%5D%20!%3D%3D%20%22buttons%22)%20button.style.marginBottom%20%3D%20%2210px%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20button.style.marginRight%20%3D%20%225px%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20button.style.cursor%20%3D%20%22pointer%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20button.innerHTML%20%3D%20xmlEscape(buttonInfo.name).replace(%2F%5Cn%2Fg%2C%20%22%3Cbr%3E%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20button.style.display%20%3D%20%22inline-block%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20button.addEventListener(%22click%22%2C%20()%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.lastPressBtn%20%3D%20buttonInfo.name%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.userInput%20%3D%20this.isInputEnabled%20%3D%3D%3D%20%22Disabled%22%20%3F%20buttonInfo.name%20%3A%20inputField.value%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.closeOverlay(overlay)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20resolve()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20buttonContainer.appendChild(button)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20const%20dropdown%20%3D%20document.createElement(%22div%22)%3B%0A%20%20%20%20%20%20%20%20%20%20dropdown.className%20%3D%20%22dropdown%22%3B%0A%20%20%20%20%20%20%20%20%20%20const%20dropdownButton%20%3D%20document.createElement(%22button%22)%3B%0A%20%20%20%20%20%20%20%20%20%20dropdownButton.className%20%3D%20%22dropbtn%22%3B%0A%20%20%20%20%20%20%20%20%20%20dropdownButton.innerHTML%20%3D%20xmlEscape(this.DropdownText).replace(%2F%5Cn%2Fg%2C%20%22%3Cbr%3E%22)%3B%0A%20%20%20%20%20%20%20%20%20%20const%20dropdownContent%20%3D%20document.createElement(%22div%22)%3B%0A%20%20%20%20%20%20%20%20%20%20dropdownContent.id%20%3D%20%22myDropdown%22%3B%0A%20%20%20%20%20%20%20%20%20%20dropdownContent.className%20%3D%20%22dropdown-content%22%3B%0A%20%20%20%20%20%20%20%20%20%20dropdownContent.style.display%20%3D%20%22none%22%3B%0A%0A%20%20%20%20%20%20%20%20%20%20const%20optionLabels%20%3D%20this.optionList%3B%0A%20%20%20%20%20%20%20%20%20%20optionLabels.forEach((label%2C%20index)%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20const%20optionLabel%20%3D%20document.createElement(%22label%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20optionLabel.style.color%20%3D%20this.questionColor%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20optionLabel.textContent%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20const%20optionRadio%20%3D%20document.createElement(%22input%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20optionRadio.type%20%3D%20this.isInputEnabled%20%3D%3D%3D%20%22Dropdown%22%20%3F%20%22radio%22%20%3A%20%22checkbox%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20optionRadio.name%20%3D%20%22dropdownOptions%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20optionRadio.value%20%3D%20index%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20optionRadio.classList.add(%22dropdown-radio%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20optionRadio.addEventListener(%22click%22%2C%20()%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.isInputEnabled%20%3D%3D%3D%20%22Multi-Select%20Dropdown%22)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(selectedOptions.includes(label))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20selectedOptions%20%3D%20selectedOptions.filter(item%20%3D%3E%20item%20!%3D%3D%20label)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%20selectedOptions.push(label)%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20inputField.value%20%3D%20selectedOptions.length%20%3E%200%20%3F%20JSON.stringify(selectedOptions)%20%3A%20%22%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%20inputField.value%20%3D%20label%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.userInput%20%3D%20inputField.value%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20optionLabel.appendChild(optionRadio)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20optionLabel.appendChild(document.createTextNode(%22%20%22%20%2B%20label))%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20optionLabel.appendChild(document.createElement(%22br%22))%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20dropdownContent.appendChild(optionLabel)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20document.body.appendChild(dropdown)%3B%0A%20%20%20%20%20%20%20%20%20%20dropdownButton.addEventListener(%22click%22%2C%20()%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.lastPressBtn%20%3D%20this.DropdownText%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20dropdownContent.style.display%20%3D%20this.isDropdownOpen%20%3F%20%22none%22%20%3A%20%22block%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.isDropdownOpen%20%3D%20!this.isDropdownOpen%3B%0A%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%0A%20%20%20%20%20%20%20%20%20%20const%20sliderContainer%20%3D%20document.createElement(%22div%22)%3B%0A%20%20%20%20%20%20%20%20%20%20sliderContainer.classList.add(%22slider-container%22)%3B%0A%20%20%20%20%20%20%20%20%20%20const%20slider%20%3D%20document.createElement(%22input%22)%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(this.isInputEnabled.includes(%22Vertical%22))%20slider.style.transform%20%3D%20%22rotate(270deg)%22%3B%0A%20%20%20%20%20%20%20%20%20%20slider.type%20%3D%20%22range%22%3B%0A%20%20%20%20%20%20%20%20%20%20slider.min%20%3D%20this.sliderInfo%5B0%5D%3B%0A%20%20%20%20%20%20%20%20%20%20slider.max%20%3D%20this.sliderInfo%5B1%5D%3B%0A%20%20%20%20%20%20%20%20%20%20slider.value%20%3D%20this.sliderInfo%5B2%5D%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(this.isInputEnabled.includes(%22Vertical%22))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20%3D%200%3B%20i%20%3C%203%3B%20i%2B%2B)%20%7B%20sliderContainer.appendChild(document.createElement(%22br%22))%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20sliderContainer.appendChild(slider)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20%3D%200%3B%20i%20%3C%204%3B%20i%2B%2B)%20%7B%20sliderContainer.appendChild(document.createElement(%22br%22))%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%20sliderContainer.appendChild(slider)%20%7D%0A%20%20%20%20%20%20%20%20%20%20const%20valueDisplay%20%3D%20document.createElement(%22span%22)%3B%0A%20%20%20%20%20%20%20%20%20%20valueDisplay.classList.add(%22slider-value%22)%3B%0A%20%20%20%20%20%20%20%20%20%20sliderContainer.appendChild(valueDisplay)%3B%0A%20%20%20%20%20%20%20%20%20%20valueDisplay.style.color%20%3D%20this.questionColor%3B%0A%20%20%20%20%20%20%20%20%20%20valueDisplay.textContent%20%3D%20slider.value%3B%0A%20%20%20%20%20%20%20%20%20%20slider.addEventListener(%22input%22%2C%20()%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20valueDisplay.textContent%20%3D%20slider.value%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20inputField.value%20%3D%20slider.value%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20this.userInput%20%3D%20valueDisplay.textContent%3B%0A%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20for%20(const%20item%20of%20this.uiOrder)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20switch%20(item)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20case%20%22question%22%3A%20%7B%20overlay.appendChild(questionText)%3B%20break%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20case%20%22input%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.isInputEnabled%20!%3D%3D%20%22Disabled%22)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.isInputEnabled%20%3D%3D%3D%20%22Enabled%22%20%7C%7C%20this.isInputEnabled%20%3D%3D%3D%20%22Color%22%20%7C%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.isInputEnabled%20%3D%3D%3D%20%22Number%22%20%7C%7C%20this.isInputEnabled%20%3D%3D%3D%20%22Password%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.appendChild(inputField)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20if%20(this.isInputEnabled.includes(%22Dropdown%22))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.appendChild(dropdownButton)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.appendChild(dropdownContent)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.appendChild(document.createElement(%22br%22))%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.appendChild(sliderContainer)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.appendChild(valueDisplay)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.appendChild(document.createElement(%22br%22))%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20case%20%22buttons%22%3A%20%7B%20overlay.appendChild(buttonContainer)%3B%20break%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20overlay.appendChild(overlayImageContainer)%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(this.appendTarget%5B0%5D%20%3D%3D%3D%20%22window%22)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20document.body.appendChild(overlay)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.appendTarget%5B1%5D)%20document.body.appendChild(focusBG)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20inputField.focus()%3B%0A%20%20%20%20%20%20%20%20%20%20inputField.value%20%3D%20this.defaultValue%3B%0A%20%20%20%20%20%20%20%20%20%20this.activeOverlays.push(overlay)%3B%0A%20%20%20%20%20%20%20%20%20%20this.activeUI.push(%7B%20overlay%3A%20%7B%20button%3A%20buttonContainer%2C%20dropdown%3A%20dropdownButton%2C%20input%3A%20inputField%20%7D%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20if%20(this.appendTarget%5B0%5D%20%3D%3D%3D%20%22window%22)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20const%20resizeHandler%20%3D%20()%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.style.left%20%3D%20%60%24%7Bthis.textBoxX%20!%3D%3D%20null%20%3F%2050%20%2B%20this.textBoxX%20%3A%2050%7D%25%60%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.style.top%20%3D%20%60%24%7Bthis.textBoxY%20!%3D%3D%20null%20%3F%2050%20%2B%20this.textBoxY%20%3A%2050%7D%25%60%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20document.addEventListener(%22fullscreenchange%22%2C%20resizeHandler)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20document.addEventListener(%22webkitfullscreenchange%22%2C%20resizeHandler)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20document.addEventListener(%22mozfullscreenchange%22%2C%20resizeHandler)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20document.addEventListener(%22MSFullscreenChange%22%2C%20resizeHandler)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20const%20observer%20%3D%20new%20MutationObserver((mutationsList)%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(const%20mutation%20of%20mutationsList)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(mutation.type%20%3D%3D%3D%20%22childList%22%20%26%26%20Array.from(mutation.removedNodes).includes(overlay))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.removeEventListener(%22fullscreenchange%22%2C%20resizeHandler)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.removeEventListener(%22webkitfullscreenchange%22%2C%20resizeHandler)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.removeEventListener(%22mozfullscreenchange%22%2C%20resizeHandler)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.removeEventListener(%22MSFullscreenChange%22%2C%20resizeHandler)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20observer.disconnect()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20observer.observe(overlay.parentNode%2C%20%7B%20childList%3A%20true%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20document.body.appendChild(overlay)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.appendTarget%5B1%5D)%20vm.renderer.addOverlay(focusBG%2C%20%22scale-centered%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20vm.renderer.addOverlay(overlay%2C%20%22scale-centered%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20inputField.focus()%3B%0A%20%20%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20closeOverlay(overlay)%20%7B%0A%20%20%20%20%20%20if%20(this.askBoxInfo%5B0%5D%20%3C%202)%20this.isWaitingForInput%20%3D%20false%3B%0A%20%20%20%20%20%20this.isDropdownOpen%20%3D%20false%3B%0A%20%20%20%20%20%20this.askBoxInfo%5B0%5D--%3B%0A%20%20%20%20%20%20let%20usedBG%20%3D%20document.querySelectorAll(%22.SP-ask-boxBG%22)%3B%0A%20%20%20%20%20%20usedBG%20%3D%20usedBG%5BusedBG.length%20-%201%5D%3B%0A%20%20%20%20%20%20%2F%2F%20%5E%20Prioritizes%20Textboxes%20on%20Window%0A%20%20%20%20%20%20const%20index%20%3D%20this.activeOverlays.indexOf(overlay)%3B%0A%20%20%20%20%20%20setTimeout(()%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20if%20(index%20!%3D%3D%20-1)%20%7B%0A%20%20%20%20%20%20%20%20%20%20this.activeOverlays.splice(index%2C%201)%3B%0A%20%20%20%20%20%20%20%20%20%20this.askBoxPromises.splice(index%2C%201)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20delete%20this.activeUI%5Boverlay%5D%3B%0A%20%20%20%20%20%20%20%20if%20(this.appendTarget%5B0%5D%20%3D%3D%3D%20%22window%22)%20document.body.removeChild(overlay)%3B%0A%20%20%20%20%20%20%20%20else%20vm.renderer.removeOverlay(overlay)%3B%0A%20%20%20%20%20%20%20%20if%20(usedBG)%20%7B%0A%20%20%20%20%20%20%20%20%20%20if%20(usedBG.id%20%3D%3D%3D%20%22window%22)%20document.body.removeChild(usedBG)%3B%0A%20%20%20%20%20%20%20%20%20%20else%20vm.renderer.removeOverlay(usedBG)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%7D%2C%20this.Timeout%20*%201000)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setButton(args)%20%7B%0A%20%20%20%20%20%20if%20(args.BUTTON%20%3D%3D%3D%20%22add%22)%20%7B%0A%20%20%20%20%20%20%20%20this.buttonJSON%5Bargs.NAME%5D%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%20%20borderRadius%3A%205%2C%20border%3A%20%221px%20none%20%23000000%22%2C%0A%20%20%20%20%20%20%20%20%20%20color%3A%20%22%230074D9%22%2C%20textColor%3A%20%22%23ffffff%22%2C%0A%20%20%20%20%20%20%20%20%20%20name%3A%20args.NAME%2C%20padding%3A%20%225px%2010px%22%2C%0A%20%20%20%20%20%20%20%20%20%20image%3A%20%22%22%2C%20imgScale%3A%20100%2C%0A%20%20%20%20%20%20%20%20%20%20dropShadow%3A%20%22none%22%2C%20outline%3A%20%5B%22%22%2C%200%5D%0A%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%20delete%20this.buttonJSON%5Bargs.NAME%5D%20%7D%0A%20%20%20%20%20%20Scratch.vm.extensionManager.refreshBlocks()%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20deleteAllButtons()%20%7B%0A%20%20%20%20%20%20this.buttonJSON%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20Scratch.vm.extensionManager.refreshBlocks()%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20lastButton()%20%7B%20return%20this.lastPressBtn%20%7D%0A%0A%20%20%20%20isWaitingInput()%20%7B%20return%20this.isWaitingForInput%20%7D%0A%0A%20%20%20%20isDropdown()%20%7B%20return%20this.isDropdownOpen%20%7D%0A%0A%20%20%20%20setMaxBoxCount(args)%20%7B%20this.askBoxInfo%5B1%5D%20%3D%20args.MAX%20%7D%0A%0A%20%20%20%20setTimeout(args)%20%7B%0A%20%20%20%20%20%20this.Timeout%20%3D%20args.TIME%3B%0A%20%20%20%20%20%20this.Condition%20%3D%20args.CONDITION%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20reportTimeout()%20%7B%20return%20this.Timeout%20%7D%0A%0A%20%20%20%20getUserInput()%20%7B%20return%20this.userInput%20%3D%3D%3D%20null%20%3F%20%22%22%20%3A%20this.userInput%20%7D%0A%0A%20%20%20%20getBoxInfo(args)%20%7B%0A%20%20%20%20%20%20if%20(args.INFO.includes(%22button%22))%20%7B%0A%20%20%20%20%20%20%20%20const%20buttons%20%3D%20Object.keys(this.buttonJSON)%3B%0A%20%20%20%20%20%20%20%20return%20args.INFO.includes(%22names%22)%20%3F%20JSON.stringify(buttons)%20%3A%20buttons.length%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%20return%20this.askBoxInfo%5Bargs.INFO%20%3D%3D%3D%20%22count%22%20%3F%200%20%3A%201%5D%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20setSubmitEvent(args)%20%7B%20this.forceInput%20%3D%20args.ENTER%20%7D%0A%0A%20%20%20%20setDefaultV(args)%20%7B%20this.defaultValue%20%3D%20args.defaultV%20%7D%0A%0A%20%20%20%20setAppend(args)%20%7B%20this.appendTarget%5B0%5D%20%3D%20args.TARGET%20%7D%0A%20%20%20%20setFocus(args)%20%7B%20this.appendTarget%5B1%5D%20%3D%20args.TYPE%20%3D%3D%3D%20%22Enabled%22%20%7D%0A%0A%20%20%20%20setUI(args)%20%7B%0A%20%20%20%20%20%20let%20array%3B%0A%20%20%20%20%20%20try%20%7B%20array%20%3D%20JSON.parse(args.ARRAY.toLowerCase())%20%7D%20catch%20%7B%20return%20%7D%0A%20%20%20%20%20%20if%20(!Array.isArray(array))%20return%3B%0A%20%20%20%20%20%20const%20allowedUI%20%3D%20%5B%22question%22%2C%20%22input%22%2C%20%22buttons%22%5D%3B%0A%20%20%20%20%20%20let%20filteredArray%20%3D%20%5B...new%20Set(array.filter(element%20%3D%3E%20allowedUI.includes(element)))%5D%3B%0A%20%20%20%20%20%20allowedUI.forEach(element%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20if%20(!filteredArray.includes(element))%20filteredArray.push(element)%3B%0A%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20this.uiOrder%20%3D%20filteredArray%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20getUIOrder()%20%7B%20return%20JSON.stringify(this.uiOrder)%20%7D%0A%0A%20%20%20%20setEnable()%20%7B%20throw%20new%20Error(%22This%20Block%20has%20been%20removed%20since%20Better%20Input%20V3.%20Please%20use%20the%20New%20Powerful%20Blocks%22)%20%7D%0A%20%20%20%20getBoxCount()%20%7B%20return%20this.askBoxInfo%5B0%5D%20%7D%20%2F%2FLegacy%0A%20%20%20%20getMaxCount()%20%7B%20return%20this.askBoxInfo%5B1%5D%20%7D%20%2F%2FLegacy%0A%20%20%7D%0A%0A%20%20Scratch.extensions.register(new%20BetterInputSP())%3B%0A%7D)(Scratch)%3B%0A"],"bakeExtensions":true}