DOOT

Telegram clientside aes

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         DOOT
// @namespace    http://tampermonkey.net/
// @version      1.32
// @description  Telegram clientside aes
// @author       MrKleiner
// @match        https://web.telegram.org/
// @icon         https://www.google.com/s2/favicons?domain=telegram.org
// @require      https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js
// @grant        none
// ==/UserScript==

/*
Disclaimer: Yes, I know that Telegram uses AES by default.
The point of this shit is to make sure that there's no PHYSICAL way to intercept the "message access password".
With this method - NOTHING password-related is being tossed into the network. All the decryptions and encryptions are completely client-side.

So even if there's a malicious FBI lizard with linux laptop sitting next to your house and monitoring all the traffic - he won't see any actual messages.
Altough this doesnt mean that he won't fuck you in the ass if he wanted to.

I mean, this should theoretically protect you from your Telegram password being stolen by MITM attack or something.
*/

// ====================================================
// ====================================================
//                  API DOCUMENTATION
// ====================================================
// ====================================================


// liz3 cookie config is an array, where
/*

0 - global enable
1 - local mute
2 - darkmode
3 - group igonre
4 - decrypt only
*/





/*

function release_compiler()
{
    var all_css_compile = btoa($('#user-css').html());

    var what_to_copy = 'var liz3_css_64 = "' + all_css_compile + '";';
    // console.log(what_to_copy)
    var $temp = $("<input>");
    $("body").append($temp);
    $temp.val(what_to_copy).select();
    document.execCommand("copy");
    $temp.remove();
}

*/


var liz3_css_64 = "PHN0eWxlPi8qCkBpbXBvcnQgdXJsKCJodHRwczovL2RsLmRyb3Bib3guY29tL3MvdHVrMXQ4bnR2bjg0Mzc1L2RhcmsuY3NzP2RsPTAiKTsKKi8KCgouZGVkMgp7CiAgZGlzcGxheTogbm9uZTsKfQoKCgoKCi8qCj09PT09PT09PT09PT09PT09PT09PT09PT0KQmxlbmRlcgo9PT09PT09PT09PT09PT09PT09PT09PT09CiovCgo6cm9vdAp7CgktLWJlbW51X2JnOiByZ2JhKDMxLCAzMSwgMzEsIDAuOTM3KTsKCS0tYm1lbnVfb3V0bGluZV9jb2w6ICMxOTE5MUE7CgktLWJtZW51X291dGxpbmU6IDFweCBzb2xpZCAjMTkxOTFBOwoJLS1ibWVudV9ob3ZlcjogIzU2ODBDMjsKCS0tYm1lbnVfaXRlbV90ZXh0OiAjRTZFNkU2OwoJLS1ibWVudV9oZWFkZXJfZGltOiAjYTNhM2EzOwoJLS1ibWVudV9zaGFkb3c6IDBweCAxcHggM3B4IDBweCByZ2JhKDAsMCwwLDAuOSk7CgktLWJtZW51X2JvcmRlcl9yYWRpdXM6IDZweDsKCS0tYm1lbnVfdGV4dF9maWVsZF9iZzogIzU5NTk1OTsKCS0tYm1lbnVfdGV4dF9maWVsZF9iZ19ob3ZlcjogIzgwODA4MDsKCS0tYm1lbnVfdGV4dF9maWVsZF9ib3JkZXI6IDFweCBzb2xpZCAjNDQ0NDQ0OwoJLS1ibGVuZGVyX3RleHRfc2hhZG93OiAwcHggMXB4IDJweCAjMjYyNjI2OwoJLS1ibWVudV9idXR0b25fZGVmX2JsdTogIzUwNzZiMjsKCS0tYmxlbmRlcl90ZXh0X3NlbGVjdDogIzE5MTkxOTsKCS0tYmxlbmRlcl90b29sdGlwOiByZ2JhKDI1LCAyNSwgMjYsIDAuOTM3MjU1KTsKfQoKLyoKPT09PT09PT09PT09PT09PT09PT09PT09PQpCbGVuZGVyCj09PT09PT09PT09PT09PT09PT09PT09PT0KKi8KCgoKCgovKgo9PT09PT09PT09PT09PT09PT09PT09PT09Ck1lbnUKPT09PT09PT09PT09PT09PT09PT09PT09PQoqLwpAaW1wb3J0IHVybCgnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1Sb2JvdG86d2dodEAxMDAmZGlzcGxheT1zd2FwJyk7CgpAaW1wb3J0IHVybCgiaHR0cHM6Ly9kbC5kcm9wYm94LmNvbS9zL3Iza2hteXA0a2pwb3ltaS9kcm9pZHNhbnMudHRmP2RsPTAiKTsKCkBmb250LWZhY2UgCnsKCWZvbnQtZmFtaWx5OiAiYmxlbmRlciI7CglzcmM6IHVybCgiaHR0cHM6Ly9kbC5kcm9wYm94LmNvbS9zL3Iza2hteXA0a2pwb3ltaS9kcm9pZHNhbnMudHRmP2RsPTAiKTsKfQoKLmNsYXNzX2hpZGRlbgp7CglkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KCi5ub3NlbGVjdAp7Cgktd2Via2l0LXRvdWNoLWNhbGxvdXQ6IG5vbmU7Cgktd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwoJLWtodG1sLXVzZXItc2VsZWN0OiBub25lOwoJLW1vei11c2VyLXNlbGVjdDogbm9uZTsKCS1tcy11c2VyLXNlbGVjdDogbm9uZTsKCXVzZXItc2VsZWN0OiBub25lOwp9CgouZmxpcF94CnsKCS13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoLTEpOwoJdHJhbnNmb3JtOiBzY2FsZVgoLTEpOwp9CgouZWxlbV9ob3Zlcjpob3Zlcgp7CglmaWx0ZXI6IGdyYXlzY2FsZSgxMDAlKTsKfQoKCi5ibWVudV9yb290CnsKCXotaW5kZXg6IDk5OTk5OTsKCXBvc2l0aW9uOiBmaXhlZDsKCS8qIHdpZHRoOiAyMDBweDsqLwoJbWluLXdpZHRoOiAxOTBweDsKCW1heC13aWR0aDogMjcwcHg7CglkaXNwbGF5OiBmbGV4OwoJY29sb3I6ICNFNkU2RTY7Cglmb250LWZhbWlseTogJ2JsZW5kZXInLCBzYW5zLXNlcmlmOwoJZm9udC1zaXplOiAxMnB4Owp9CgouYm1lbnVfbWVudQp7CglkaXNwbGF5OiBmbGV4OwoJZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCXdpZHRoOiAxMDAlOwoJaGVpZ2h0OiAxMDAlOwoJYmFja2dyb3VuZDogcmdiYSgzMSwgMzEsIDMxLCAwLjkzNyk7Cglib3JkZXI6IDFweCBzb2xpZCAjMTkxOTFBOwoJYm9yZGVyLXJhZGl1czogNnB4OwoJcGFkZGluZzogNXB4IDFweCA1cHggMXB4OwoKCgktd2Via2l0LWJveC1zaGFkb3c6IDBweCAxcHggM3B4IDBweCByZ2JhKDAsMCwwLDAuOSk7IAoJYm94LXNoYWRvdzogMHB4IDFweCAzcHggMHB4IHJnYmEoMCwwLDAsMC45KTsKfQoKLmJtZW51X2VudHJ5CnsKCS8qCQoJcGFkZGluZzogMnB4IDBweCAycHggMzBweDsKCQoJcGFkZGluZzogMnB4IDBweCAycHggMHB4OwogICovCglkaXNwbGF5OiBmbGV4OwoJbWFyZ2luLXRvcDogMnB4Owp9CgouYm1lbnVfZW50cnlfbGVmdF9zaWRlCnsKCXdpZHRoOiAzMHB4OwoJZGlzcGxheTogZmxleDsKCWp1c3RpZnktY29udGVudDogY2VudGVyOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7Cn0KCi5ibWVudV9lbnRyeTpob3Zlcgp7CgliYWNrZ3JvdW5kOiAjNTY4MEMyOwp9CgouYm1lbnVfaGVhZGVyCnsKCXBhZGRpbmc6IDBweCAwcHggMnB4IDEwcHg7CglkaXNwbGF5OiBmbGV4OwoJbWFyZ2luLXRvcDogMnB4OwoJY29sb3I6ICNhNWE1YTU7Cn0KCi5ibWVudV9oZWFkX3NlcGFyYXRvcgp7CgloZWlnaHQ6IDFweDsKCWRpc3BsYXk6IGZsZXg7CgltYXJnaW46IDNweCAwcHggM3B4IDBweDsKCWJhY2tncm91bmQ6ICMzOTM5Mzk7Cn0KCi5ibWVudV9zZXBhcmF0b3IKewoJaGVpZ2h0OiAxcHg7CglkaXNwbGF5OiBmbGV4OwoJbWFyZ2luOiA3cHggMHB4IDVweCAwcHg7CgliYWNrZ3JvdW5kOiAjMzkzOTM5Owp9CgouZGlzYWJsZWRzIHsKCXBvaW50ZXItZXZlbnRzOiBub25lOwoJY3Vyc29yOiBkZWZhdWx0Owp9CgoKLmJtZW51X2NoZWNrYm94X2NoZWNrZWRfYmcgCnsKICAgIGJhY2tncm91bmQ6ICM1Mzc5YjQgIWltcG9ydGFudDsKfQoKLmJtZW51X2NoZWNrYm94IAp7CiAgICBkaXNwbGF5OiBmbGV4OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgd2lkdGg6IDEycHg7CiAgICBoZWlnaHQ6IDEycHg7CiAgICBiYWNrZ3JvdW5kOiAjNjY2NjY2OwogICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgYm9yZGVyOiAxcHggc29saWQgIzM3MzczNzsKfQoKCi5ibWVudV9jaGVja2JveF9jaGVja21hcmsgCnsKICAgIHdpZHRoOiAycHg7CiAgICBoZWlnaHQ6IDdweDsKICAgIGJhY2tncm91bmQ6IG5vbmU7CglvcGFjaXR5OiAxOwoJdHJhbnNmb3JtOiByb3RhdGUoCgkJNDVkZWcKCSk7Cglib3JkZXI6IHNvbGlkIHdoaXRlOwoJYm9yZGVyLXdpZHRoOiAwIDJweCAycHggMDsKCW1hcmdpbi1ib3R0b206IDJweDsKfQoKCi5ibWVudV9tZW51ICoKewogIC13ZWJraXQtYm94LXNpemluZzogdW5zZXQ7Cn0KCgoKCgoKCgovKgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIGJtZW51IHBzd2Qgc2V0dGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiovCgoKCi5wc3dkX2VkaXRvciAqCnsKICAgIHBhZGRpbmc6IDBweDsKICAgIG1hcmdpbjogMHB4OwogICAgZm9udC1mYW1pbHk6ICdibGVuZGVyJywgc2Fucy1zZXJpZjsKICAgIGZvbnQtc2l6ZTogMTFweDsKICAgIHRleHQtc2hhZG93OiAwcHggMXB4IDJweCAjMjYyNjI2OwogICAgY29sb3I6IHdoaXRlOwp9CgouaG92ZXJfZWRpdG9yXzFfcm9vdCAKewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB3aWR0aDogMzAwcHg7CiAgICAvKiBoZWlnaHQ6IDEwMHB4OyAqLwogICAgYmFja2dyb3VuZDogIzE1MTUxNWUwOwogICAgLyogbWFyZ2luLXRvcDogLTExMHB4OyAqLwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOwogICAgcGFkZGluZy1ib3R0b206IDEzcHg7Cn0KCi5ob3Zlcl9lZGl0b3JfMV9idG5zIAp7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgaGVpZ2h0OiAyMHB4OwogICAgd2lkdGg6IDgwJTsKICAgIC8qIGJhY2tncm91bmQ6ICM3OTllZDc7ICovCiAgICBiYWNrZ3JvdW5kOiAjNTA3NmIyOwogICAgbWFyZ2luLXRvcDogMTBweDsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGJvcmRlcjogMXB4IHNvbGlkICMzZjNmM2Y7CiAgICB1c2VyLXNlbGVjdDogbm9uZTsKfQoKCi5ob3Zlcl9lZGl0b3JfMV9pbnB1dF9jb250YWluZXIgCnsKCWRpc3BsYXk6IGZsZXg7Cgl3aWR0aDogODAlOwoJaGVpZ2h0OiAyMHB4OwoJb3V0bGluZTogMHB4OwoJY29sb3I6IHdoaXRlOwoJbWFyZ2luOiAxMHB4IDVweCAxcHggNXB4Owp9CgoKLmhvdmVyX2VkaXRvcl8xX2J0bnMgCnsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBoZWlnaHQ6IDIwcHg7CiAgICB3aWR0aDogODAlOwogICAgLyogYmFja2dyb3VuZDogIzc5OWVkNzsgKi8KICAgIGJhY2tncm91bmQ6ICM1MDc2YjI7CiAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgYm9yZGVyOiAxcHggc29saWQgIzNmM2YzZjsKICAgIHVzZXItc2VsZWN0OiBub25lOwp9CgouaG92ZXJfZWRpdG9yXzFfaW5wdXQgCnsKICAgIGFsbDogdW5zZXQ7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMjBweDsKICAgIG91dGxpbmU6IDBweDsKICAgIGJhY2tncm91bmQ6ICM1OTU5NTk7CiAgICBjb2xvcjogd2hpdGU7CiAgICBwYWRkaW5nOiAxcHggOHB4IDFweCA4cHg7CiAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjNDQ0NDQ0Owp9CgouaG92ZXJfZWRpdG9yXzFfYnRuczphY3RpdmUgCnsKICAgIGJhY2tncm91bmQ6ICM1MDc2YjI7Cn0KCi5ob3Zlcl9lZGl0b3JfMV9idG5zOmhvdmVyIAp7CiAgICBiYWNrZ3JvdW5kOiAjNzk5ZWQ3Owp9CgouaG92ZXJfZWRpdG9yXzFfaW5wdXQ6aG92ZXIgCnsKICAgIGJhY2tncm91bmQ6ICM4MDgwODA7Cn0KCi5ob3Zlcl9lZGl0b3JfMV9idG5zOmFjdGl2ZSAKewogICAgYmFja2dyb3VuZDogIzUwNzZiMjsKfQoKCi8qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgYm1lbnUgcHN3ZCBzZXR0ZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKi8KCgoKCi5saXozX2FsdF9tc2dfaW5wdXQKewogIGxlZnQ6IC0xN3B4OyAKICB3aWR0aDogY2FsYygxMDAlICsgMzRweCk7IAogIHBhZGRpbmctbGVmdDogMTlweDsgCiAgcGFkZGluZy1yaWdodDogNDVweDsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7Cn0KCgovKiBzcGFtbWVyIAp0b2RvOiA6cm9vdCByZXVzZQoqLwoKCgoKCgovKgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIGJtZW51IGNyZWF0b3IKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKi8KCi5ibWVudV9jcmVhdG9yX3Jvb3QgKgp7CglwYWRkaW5nOiAwcHg7CgltYXJnaW46IDBweDsKfQoKCi5ub3NlbGVjdAp7CiAgLXdlYmtpdC10b3VjaC1jYWxsb3V0OiBub25lOwogIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgLWtodG1sLXVzZXItc2VsZWN0OiBub25lOwogIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogIHVzZXItc2VsZWN0OiBub25lOwp9CgouYm1lbnVfY3JlYXRvcl9yb290CnsKICBwb3NpdGlvbjogYWJzb2x1dGU7Cgl6LWluZGV4OiA5OTk5OTk5OwoJZGlzcGxheTogZmxleDsKCXdpZHRoOiAzMzBweDsKCWJhY2tncm91bmQ6IHZhcigtLWJlbW51X2JnKTsKCWJvcmRlcjogdmFyKC0tYm1lbnVfb3V0bGluZSk7Cglib3gtc2hhZG93OiB2YXIoLS1ibWVudV9zaGFkb3cpOwoJYm9yZGVyLXJhZGl1czogdmFyKC0tYm1lbnVfYm9yZGVyX3JhZGl1cyk7CgkKCWNvbG9yOiB2YXIoLS1ibWVudV9oZWFkZXJfZGltKTsKCWZvbnQtZmFtaWx5OiAnYmxlbmRlcicsIHNhbnMtc2VyaWY7Cglmb250LXNpemU6IDEycHg7CgkKCXRleHQtc2hhZG93OiB2YXIoLS1ibGVuZGVyX3RleHRfc2hhZG93KTsKfQoKLmJtZW51X2NyZWF0b3Jfcm9vdCAqOjpzZWxlY3Rpb24KewoJYmFja2dyb3VuZDogdmFyKC0tYmxlbmRlcl90ZXh0X3NlbGVjdCk7Cn0KCi5ibWVudV9jcmVhdG9yCnsKCWRpc3BsYXk6IGZsZXg7CglmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJZmxleC1ncm93OiAxOwoJcGFkZGluZy1ib3R0b206IDVweDsKfQoKLmJtZW51X2NyZWF0b3JfaGVhZGVyCnsKCWNvbG9yOiB2YXIoLS1ibWVudV9oZWFkZXJfZGltKTsKCW1hcmdpbi10b3A6IDExcHg7CgltYXJnaW4tbGVmdDogOHB4Owp9CgouYm1lbnVfY3JlYXRvcl9ib2R5CnsKCWRpc3BsYXk6IGZsZXg7CgltYXJnaW4tdG9wOiA3cHg7Cn0KCi5ibWVudV9jcmVhdG9yX2JvZHlfbGVmdAp7CglkaXNwbGF5OiBmbGV4OwoJZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKCXdpZHRoOiA0NSU7Cn0KCi5ibWVudV9jcmVhdG9yX2xfcm93CnsKCWRpc3BsYXk6IGZsZXg7CglhbGlnbi1pdGVtczogY2VudGVyOwoJanVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKCWhlaWdodDogMjJweDsKCW1hcmdpbjogM3B4IDBweCAzcHggMHB4OwoJcGFkZGluZy1yaWdodDogMTBweDsKCXBhZGRpbmctbGVmdDogMTBweDsKCgl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCW92ZXJmbG93OiBoaWRkZW47Cgl3aGl0ZS1zcGFjZTogbm93cmFwOwp9CgouYm1lbnVfY3JlYXRvcl9ib2R5X3JpZ2h0CnsKCWRpc3BsYXk6IGZsZXg7CglmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoJZmxleC1ncm93OiAxOwp9CgouYm1lbnVfY3JlYXRvcl9yX3Jvdwp7CglkaXNwbGF5OiBmbGV4OwoJaGVpZ2h0OiAyMnB4OwoJbWFyZ2luOiAzcHggMHB4IDNweCAwcHg7CglwYWRkaW5nLXJpZ2h0OiA3cHg7Cn0KCi5ibWVudV9yb3dfdGV4dF9pbnB1dCAKewoJCiAgICBhbGw6IHVuc2V0OwoJZGlzcGxheTogZmxleDsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICB3aWR0aDogMTAwJTsKCWhlaWdodGQ6IDEwMCU7CiAgICBvdXRsaW5lOiAwcHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ibWVudV90ZXh0X2ZpZWxkX2JnKTsKICAgIGNvbG9yOiB3aGl0ZTsKICAgIHBhZGRpbmc6IDBweCA4cHggMHB4IDhweDsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIGN1cnNvcjogZS1yZXNpemU7CiAgICBib3JkZXI6IHZhcigtLWJtZW51X3RleHRfZmllbGRfYm9yZGVyKTsKfQoKLmJtZW51X3Jvd190ZXh0X2lucHV0OmhvdmVyIAp7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ibWVudV90ZXh0X2ZpZWxkX2JnX2hvdmVyKTsKfQoKLmJtZW51X2NvbmZpcm1fYnRuIAp7Cgljb2xvcjogd2hpdGU7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgaGVpZ2h0OiAyMHB4OwoJd2lkdGg6IDEwMCU7CiAgICAvKiBiYWNrZ3JvdW5kOiAjNzk5ZWQ3OyAqLwogICAgYmFja2dyb3VuZDogdmFyKC0tYm1lbnVfYnV0dG9uX2RlZl9ibHUpOwogICAgbWFyZ2luLXRvcDogMTBweDsKICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGJvcmRlcjogMXB4IHNvbGlkICMzZjNmM2Y7CiAgICB1c2VyLXNlbGVjdDogbm9uZTsKfQoKLmJtZW51X2NvbmZpcm1fYnRuOmhvdmVyIAp7CiAgICBiYWNrZ3JvdW5kOiAjNzk5ZWQ3Owp9CgouYWxpZ25fc2VsZl9jZW50ZXIKewoJYWxpZ24tc2VsZjogY2VudGVyOwp9CgouY29uZmlybV9pbGx1bWluYXRpCnsKCXBhZGRpbmc6IDBweCA3cHggMHB4IDdweDsKfQoKLyoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICBibWVudSBjcmVhdG9yCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiovCgoKCgoKLyoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICBibGVuZGVyIHRvb2x0aXBzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiovCgoubXJrX2VjdF90b29sdGlwX2JveAp7Cgl6LWluZGV4OiA5OTk5OTk5OTk5OwoJd2hpdGUtc3BhY2U6IHByZTsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCWRpc3BsYXk6IGZsZXg7CgltYXJnaW4tdG9wOiAyNXB4OwoJYmFja2dyb3VuZDogdmFyKC0tYmxlbmRlcl90b29sdGlwKTsKCWJvcmRlci1yYWRpdXM6IHZhcigtLWJtZW51X2JvcmRlcl9yYWRpdXMpOwoJYm9yZGVyOiB2YXIoLS1ibWVudV9vdXRsaW5lKTsKCWNvbG9yOiB3aGl0ZTsKCWZvbnQtZmFtaWx5OiAnYmxlbmRlcicsIHNhbnMtc2VyaWY7Cglmb250LXNpemU6IDExcHg7CglwYWRkaW5nOiA5cHg7CiAgdGV4dC1zaGFkb3c6IHZhcigtLWJsZW5kZXJfdGV4dF9zaGFkb3cpOwogIGJveC1zaGFkb3c6IHZhcigtLWJtZW51X3NoYWRvdyk7Cn0KCgoKCgoKCgoKCgoKCgoKCgoKCgo8L3N0eWxlPg==";

window.bmenu_spammer_html =
`
<div class="bmenu_creator_root illuminati_place class_hidden">
	<div class="bmenu_creator">
		<div class="bmenu_creator_header noselect">Toybox message spammer</div>
		<div class="bmenu_creator_body">
			<div class="bmenu_creator_body_left">
				<div class="bmenu_creator_l_row noselect">Message</div>
				<div class="bmenu_creator_l_row noselect">Interval</div>
				<div class="bmenu_creator_l_row noselect">Total count</div>
				<div class="bmenu_creator_l_row noselect">Notification frequency</div>
			</div>
			<div class="bmenu_creator_body_right">
				<div class="bmenu_creator_r_row">
					<input mrk_ect_tooltip="Message to send." value="lol" class="bmenu_row_text_input illuminati_msg"></input>
				</div>
				<div class="bmenu_creator_r_row">
					<input mrk_ect_tooltip="Interval between each message in seconds. Fractional values allowed." value="1" class="bmenu_row_text_input illuminati_int"></input>
				</div>
				<div class="bmenu_creator_r_row">
					<input mrk_ect_tooltip="Total number of messages to send." value="10" class="bmenu_row_text_input illuminati_count"></input>
				</div>
				<div class="bmenu_creator_r_row">
					<input mrk_ect_tooltip="Log the amount of sent messages in console every nth message." value="5" class="bmenu_row_text_input illuminati_info_freq"></input>
				</div>
			</div>
		</div>
		<div class="confirm_illuminati">
			<div class="bmenu_confirm_btn noselect align_self_center illuminati_confirm">OK</div>
			<div class="bmenu_confirm_btn noselect align_self_center cancel_illuminati">Cancel</div>
		</div>
	</div>
</div>
`;

window.liz3_pswd_changer_html =
`
<div id="global_password_changer" class="hover_editor_1_root pswd_editor class_hidden">
	<div class="hover_editor_1_btns pswd_editor_btns pswd_editor_btn_apply">OK</div>
	<div class="hover_editor_1_input_container pswd_editor_input_container">
		<input class="hover_editor_1_input pswd_editor_input" value="">
	</div>
	<div class="hover_editor_1_btns pswd_editor_btns pswd_editor_btn_cancel">Cancel</div>
</div>
`;


window.liz3_blender_menu =
`
<div class="bmenu_root">
	<div class="bmenu_menu">
		<div class="bmenu_header noselect">Sex Toys</div>
		<div class="bmenu_head_separator"></div>
		<div bmenu_opt="bmenu_imgflip" class="bmenu_entry noselect">
			<div class="bmenu_entry_left_side"></div>
			<div class="bmenu_entry_right_side">Flip image</div>
		</div>
		<div bmenu_opt="decrypt_pswd_changer" class="bmenu_entry noselect">
			<div class="bmenu_entry_left_side"></div>
			<div class="bmenu_entry_right_side">Set Password</div>
		</div>
		<div class="bmenu_separator"></div>
		<div bmenu_ischeckbox="1" bmenu_opt="enable_liz3" class="bmenu_entry noselect">
			<div class="bmenu_entry_left_side"></div>
			<div class="bmenu_entry_right_side">Enable liz3</div>
		</div>
		<div bmenu_ischeckbox="1" bmenu_opt="liz3_quick_mute" class="bmenu_entry noselect">
			<div class="bmenu_entry_left_side"></div>
			<div class="bmenu_entry_right_side">Liz3 quick mute</div>
		</div>
		<div bmenu_ischeckbox="1" bmenu_opt="liz3_group_ignore" class="bmenu_entry noselect">
			<div class="bmenu_entry_left_side"></div>
			<div class="bmenu_entry_right_side">Liz3 group ignore</div>
		</div>
		<div bmenu_ischeckbox="1" bmenu_opt="liz3_decrypt_only" class="bmenu_entry noselect">
			<div class="bmenu_entry_left_side"></div>
			<div class="bmenu_entry_right_side">Liz3 decrypt only</div>
		</div>
		<div class="bmenu_separator"></div>
		<div bmenu_ischeckbox="1" bmenu_opt="liz3_dark_theme_menu_call" class="bmenu_entry noselect">
			<div class="bmenu_entry_left_side"></div>
			<div class="bmenu_entry_right_side">Dark mode</div>
		</div>
		<div bmenu_opt="toybox_msg_spammer" class="bmenu_entry noselect">
			<div class="bmenu_entry_left_side"></div>
			<div class="bmenu_entry_right_side">Spammer</div>
		</div>
	</div>
</div>
`;


// cbid = selector for the checkbox, state = set the checkbox state to... 1 = true, 0 = false
function checkbox_activator(cbid, cstate)
{
    // var current_cbox = $("#" + cbid).closest(".disaster_checkbox_row");
    // var current_cbox_state = $(current_cbox).find(".disaster_checkbox_checkmark").attr("mgh_checkbox_checked");
    if ( cstate == "toggle" )
    {
        console.log('toggle command');
        if ( $(cbid).find('.bmenu_checkbox_checkmark').attr('bmenu_checkbox_checked') == "1" )
        {
            $(cbid).find(".bmenu_checkbox_checkmark").attr("bmenu_checkbox_checked", "0");
            $(cbid).removeClass("bmenu_checkbox_checked_bg");
            $(cbid).find(".bmenu_checkbox_checkmark").addClass("class_hidden");
        }else{
        // if ( $(cbid).find('.bmenu_checkbox_checkmark').attr('bmenu_checkbox_checked') == "0" )

            $(cbid).find(".bmenu_checkbox_checkmark").attr("bmenu_checkbox_checked", "1");
            $(cbid).addClass("bmenu_checkbox_checked_bg");
            $(cbid).find(".bmenu_checkbox_checkmark").removeClass("class_hidden");
        }
    }else{
        if (parseInt(cstate) > 0)
        {
            $(cbid).find(".bmenu_checkbox_checkmark").attr("bmenu_checkbox_checked", "1");
            $(cbid).addClass("bmenu_checkbox_checked_bg");
            $(cbid).find(".bmenu_checkbox_checkmark").removeClass("class_hidden");
        }

        if (parseInt(cstate) == 0)
        {
            $(cbid).find(".bmenu_checkbox_checkmark").attr("bmenu_checkbox_checked", "0");
            $(cbid).removeClass("bmenu_checkbox_checked_bg");
            $(cbid).find(".bmenu_checkbox_checkmark").addClass("class_hidden");
        }
    }


}

function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
        }
        if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
        }
    }
    return "";
}

function checkCookie(cookie_name) {
    var user = getCookie(cookie_name);
    if (user != "") {
        console.log('detected cookie "' + cookie_name + '" ' + 'with a value of ' + user);
        return false;
    } else {
        console.log('no cookie with the name "' + cookie_name + '" detected');
        return true;
    }
}



// setTimeout(function() { big_msngr_observer(); }, 5000);
$(document).ready(function(){

    window.mrk_ect_timer; // create container for tolltip timer
    window.mrk_ect_tooltip_timeout = 500; // tooltip timeout
    // check if we have config
    if ( checkCookie('liz3_config') )
    {
        setCookie('liz3_config', '1-0-0-0', 420);
        console.log('no liz3 config detected, falling back to defaults');
        window.liz3_system_enabled = 1;
        window.liz3_quick_mute = 0;
        window.liz3_dark_mode = 0;
        window.liz3_group_ignore_var = 0;
        window.liz3_decrypt_only_v = 0;
    }

    window.liz3_current_session_password = getCookie('liz3_cur_pswd');
    window.liz3_current_config = getCookie('liz3_config').split('-');

    window.liz3_system_enabled = parseInt(liz3_current_config[0]);
    window.liz3_quick_mute = parseInt(liz3_current_config[1]);
    window.liz3_dark_mode = parseInt(liz3_current_config[2]);
    window.liz3_group_ignore_var = parseInt(liz3_current_config[3]);
    window.liz3_decrypt_only_v = parseInt(liz3_current_config[4]);
    // window.liz3_quick_mute = 1;

    window.initializer_timeout = 0;
    window.tg_msg_edit_mode = 0;

    $("body").append(liz3_blender_menu);
    $('body').append(liz3_pswd_changer_html);
    look_at_telegram()
    console.log(getCookie('liz3_config'));
    liz3_dark_theme_page_load()
    $('body').append('<div id="liz3_required_css">' + atob(liz3_css_64) + '</div>');
    $('body').append('<div class="mrk_ect_tooltip_box noselect class_hidden">tolltip is nil</div>');
    // $('body').append('<div class="bmenu_creator_root illuminati_place class_hidden"> <div class="bmenu_creator"> <div class="bmenu_creator_header noselect">Toybox message spammer</div> <div class="bmenu_creator_body"> <div class="bmenu_creator_body_left"> <div class="bmenu_creator_l_row noselect">Message</div> <div class="bmenu_creator_l_row noselect">Interval</div> <div class="bmenu_creator_l_row noselect">Total count</div> <div class="bmenu_creator_l_row noselect">Notification frequency</div> </div> <div class="bmenu_creator_body_right"> <div class="bmenu_creator_r_row"> <input value="lol" class="bmenu_row_text_input illuminati_msg"></input> </div> <div class="bmenu_creator_r_row"> <input value="1" class="bmenu_row_text_input illuminati_int"></input> </div> <div class="bmenu_creator_r_row"> <input value="10" class="bmenu_row_text_input illuminati_count"></input> </div> <div class="bmenu_creator_r_row"> <input value="5" class="bmenu_row_text_input illuminati_info_freq"></input> </div> </div> </div> <div class="confirm_illuminati"> <div class="bmenu_confirm_btn noselect align_self_center illuminati_confirm">OK</div><div class="bmenu_confirm_btn noselect align_self_center cancel_illuminati">Cancel</div> </div> </div> </div>');
    $('body').append(bmenu_spammer_html);
    window.wtf_fuck_js_bmenu_root_height = $('.bmenu_root').outerHeight( true );
});

function liz3_set_config()
{
    checkbox_activator($('.bmenu_entry[bmenu_opt="enable_liz3"] .bmenu_checkbox'), liz3_current_config[0]);
    checkbox_activator($('.bmenu_entry[bmenu_opt="liz3_quick_mute"] .bmenu_checkbox'), liz3_current_config[1]);
    checkbox_activator($('.bmenu_entry[bmenu_opt="liz3_dark_theme_menu_call"] .bmenu_checkbox'), window.liz3_dark_mode);
    checkbox_activator($('.bmenu_entry[bmenu_opt="liz3_group_ignore"] .bmenu_checkbox'), window.liz3_group_ignore_var);
    checkbox_activator($('.bmenu_entry[bmenu_opt="liz3_decrypt_only"] .bmenu_checkbox'), window.liz3_decrypt_only_v);
}

function look_at_telegram()
{
    // Try to locate the mini messenger message grid. Got better solution for more accurate selector? Email us at "[email protected]"
    if($('form .composer_rich_textarea').length > 0 && $('.im_history_message_wrap').closest('.im_history_messages_peer').length > 0 )
    {
        window.initializer_timeout = 1;
        // celebrate. Important info log
        console.log('found text field');
        // trigger message decryptor
        if ( liz3_system_enabled == 1 )
        {
            if ( window.liz3_decrypt_only_v == 0 )
            {
                init2();
            }

            tg_msgs_observer();
        }

    }else{
        // important info log, which informs us that no messenger presented on a page
        console.log('We aint found shit');
        // check if we've reached the timeout. If we've reached the timeout - it means that the page is done loading, but mini-messenger window did not appear
        if ( initializer_timeout == 0 )
        {
            // If we got here, then we havent found the messenger. Try again
            setTimeout( look_at_telegram, 250 );
        }

    }

}

function init2()
{
    $('.composer_rich_textarea').addClass('ded2 tg_original_msg_input');
    $('.im_send_field_wrap.hasselect').append('<textarea type="text" class="composer_rich_textarea liz3_alt_msg_input" dir="auto" placeholder="Write a message..."></textarea>');

   // setTimeout( tg_msgs_observer, 1500 );
    $(".liz3_alt_msg_input").on('keydown', function (e) {
        if (e.key === 'Enter' || e.keyCode === 13) {
            if($('.liz3_alt_msg_input').val().length > 0)
            {
                if( e.shiftKey  &&  e.key === 'Enter' )
                {
                    console.log('thats gonna be a line break')
                }else{
                    console.log("input is full and we want to send");
                    if ( window.liz3_quick_mute == 1 )
                    {
                        message_mitm_copier(0)

                    }else{
                        if ( window.liz3_system_enabled == 1 && window.liz3_decrypt_only_v == 0)
                        {
                            if ( window.liz3_group_ignore_var == 1 )
                            {
                                if ( window.location.href.split('?p=')[1].charAt(0) == "u" || window.location.href.split('?p=')[1].charAt(0) == "@" )
                                {
                                    message_mitm_copier(1)
                                }else{
                                    // replace this command with a function !
                                    message_mitm_copier(0)
                                }
                            }else{
                                message_mitm_copier(1)
                            }

                        }else{
                            message_mitm_copier(0)
                        }

                    }

                    $('.im_submit').trigger('mousedown');
                    $('.liz3_alt_msg_input').val('');
                    setTimeout( make_input_great_again, 100 );
                    console.log('is it what Im thinking about');
                    // $('.liz3_alt_msg_input').focus();

                    /*
                    setTimeout(() => {
                        console.log('focus');
                        $('.liz3_alt_msg_input').blur();
                        $('.liz3_alt_msg_input').focus();
                    }, 10);
                    */
                    console.log('pre return');
                    return false;

                }
            }else{
                console.log("input is empty");
                return false;
            }
        }

        if (e.key === 'ArrowUp')
        {
            if($('.liz3_alt_msg_input').val().length > 0)
            {
                console.log('we have text in input - dont edit last msg');
            }else{

                var se = jQuery.Event("keydown");
                se.keyCode = 38;
                $('.tg_original_msg_input').trigger(se);

                setTimeout(() => {
                    $('.liz3_alt_msg_input').val($('.tg_original_msg_input').text());
                }, 15);
                setTimeout( make_input_great_again, 100 );

            }
        }
    });

    $('.icon.icon-slash').closest('.composer_command_btn').remove();
}

function tg_msgs_observer()
{
    let tg_msgs_feed_observer = new MutationObserver(function(mutation) {
        // log that there were changes
        console.log("msg list change logged");
        setTimeout( liz3_tg_decrypt_all_msgs, 25 );

    })

    let observerConfig = {
        attributes: true,
        childList: true,
        attributeOldValue: true,
        characterData: true,
        subtree: true
    }


    let tg_msgs_feed_container = $('.im_history.im_history_selectable .im_history_messages');

    for (i = 0; i < tg_msgs_feed_container.length; i++)
    {
        tg_msgs_feed_observer.observe(tg_msgs_feed_container[i], observerConfig);
    }
}







// =================================================
//
// MENU
//
// =================================================


// img flip mode
window.img_flip_mode = false;

// hax init
window.hax_innit = true;

//lock menu
window.menu_lock = false;

//====================================
//  pootis
//====================================
		document.addEventListener('mousemove'
			, function(e){
				var x = e.clientX;
				var y = e.clientY
				window.cs_x = x + "px";
				window.cs_y = y + "px";
			});
//====================================
//  pootis
//====================================


function img_flip(selector_fuck)
{
  $(selector_fuck).toggleClass("flip_x");
}




// innit hax

document.addEventListener ("keydown", function (zEvent) {

    if ( zEvent.keyCode == 27)
    {
        window.img_flip_mode = false;
        window.menu_lock = false;
        $("img").removeClass("elem_hover");
    }

    if (  zEvent.altKey  &&  zEvent.keyCode == 87  ) {  // case sensitive
        if (hax_innit)
        {
            //
            // TODO: GET RID OF THE FUCKING INIT STAGE. IT'S USELESS TRASH !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            // OR REMOVE THE CLASS_HIDDEN BEFORE MEASURING HEIGHT, AT LEAST
            //
            // ALSO THINK OF APPROPRIATE ORDER NO MATTER WHAT
            //

           window.hax_innit = false;
            console.log("hax_created");

            $('.bmenu_entry[bmenu_ischeckbox="1"] .bmenu_entry_left_side').append(' <div class="bmenu_checkbox bmenu_checkbox_checked_bg"> <div class="bmenu_checkbox_checkmark" bmenu_checkbox_checked="1"></div> </div>');
            $('.bmenu_entry[bmenu_ischeckbox="1"]').removeAttr('bmenu_ischeckbox');
            liz3_set_config()

            $(".bmenu_root").removeClass("class_hidden");
            console.log($('.bmenu_root').outerHeight( true ));
            var calc_menu_y = cs_y;
            var calc_menu_x = cs_x;

            if (parseInt(cs_y) > ( window.innerHeight - $('.bmenu_root').outerHeight( true ) ) )
            {
                var calc_menu_y = parseInt(cs_y) - ((parseInt(cs_y) + $('.bmenu_root').outerHeight( true )) - window.innerHeight) - 20;
                console.log('calc y is=' + calc_menu_y + ' original y is=' + cs_y);
            }

            if (parseInt(cs_x) > ( window.innerWidth - $('.bmenu_root').outerWidth( true ) ) )
            {
                var calc_menu_x = parseInt(cs_x) - ((parseInt(cs_x) + $('.bmenu_root').outerWidth( true )) - window.innerWidth) - 20;
                console.log('calc x is ' + calc_menu_x + ' original x is ' + cs_x);
            }
            $(".bmenu_root")
                .css({
                left: calc_menu_x,
                top: calc_menu_y,
            });

        }else{

            if (menu_lock)
            {
                console.log("menu_locked");
            }else{

                // DOES IT ACTUALLY MAKE ANY SENSE TO MEASURE THIS DYNAMICALLY ?????????????????????????????????????????????????????
                $(".bmenu_root").removeClass("class_hidden");
                var calc_menu_y = cs_y;
                var calc_menu_x = cs_x;

                if (parseInt(cs_x) > ( window.innerWidth - $('.bmenu_root').outerWidth( true ) ) )
                {
                    var calc_menu_x = parseInt(cs_x) - ((parseInt(cs_x) + $('.bmenu_root').outerWidth( true )) - window.innerWidth) - 20;
                    console.log('calc x is ' + calc_menu_x + ' original x is ' + cs_x);
                }

                if (parseInt(cs_y) > ( window.innerHeight - $('.bmenu_root').outerHeight( true ) ) )
                {
                    var calc_menu_y = parseInt(cs_y) - ((parseInt(cs_y) + $('.bmenu_root').outerHeight( true )) - window.innerHeight) -  20;
                    console.log('calc is ' + calc_menu_y + ' original is ' + cs_y);
                }

                 console.log('calc is ' + calc_menu_y + 'original is ' + cs_y);

                $(".bmenu_root")
                    .css({
                    left: calc_menu_x,
                    top: calc_menu_y,
                });

            }

        }

    }

    // Cancel edit on ctrl + q
    if ( zEvent.ctrlKey  &&  zEvent.keyCode == 81)
    {
        console.log("ctrl + q");
        $('.liz3_alt_msg_input').val('');
        $('.im_send_reply_cancel').trigger('mousedown');
        setTimeout( make_input_great_again, 100 );
    }

});



// hax
document.addEventListener('click', event => {
    // console.log("click_registered");


    // Close hax if clicked outside
    const bmenu_close = event.target.closest('.bmenu_menu');
    if (bmenu_close)
    {
        console.log("clicked_a_menu");
    }else{
        // console.log("clicked_not_menu");
        $(".bmenu_root").addClass("class_hidden");
    }


    // Menu entries processor. Thanks to shitty eval() we now don't have to create a new if attr check
    const bmenu_entry = event.target.closest('.bmenu_entry');
    if (bmenu_entry)
    {
        console.log("clicked_on_an_entry");
        eval($(bmenu_entry).attr("bmenu_opt"))()
    }


    // built-in image alter
    const questionable_img = event.target.closest('img');
    if (img_flip_mode)
    {

        if (questionable_img)
        {
            img_flip(questionable_img);
            window.img_flip_mode = false;
            window.menu_lock = false;
            $("img").removeClass("elem_hover");
        }

    }

    const pswd_changer_cancel = event.target.closest('.pswd_editor_btn_cancel');
    if (pswd_changer_cancel)
    {
        $('#global_password_changer').addClass('class_hidden');
        $('#global_password_changer input').val('');
    }


    const pswd_changer_apply = event.target.closest('.pswd_editor_btn_apply');
    if (pswd_changer_apply)
    {
        setCookie('liz3_cur_pswd', CryptoJS.MD5($('#global_password_changer input').val()), 420)
        $('#global_password_changer').addClass('class_hidden');
        $('#global_password_changer input').val('');
    }


    // edit button. Make it copy the message to our shit
    const msg_btn_selective_edit = event.target.closest('.btn.btn-primary.im_edit_reply_btn[ng-click="selectedEdit()"]');
    if (msg_btn_selective_edit)
    {
        setTimeout(() => {
            $('.liz3_alt_msg_input').val($('.tg_original_msg_input').text());
        }, 15);
    }

    const toybox_spammer_conf = event.target.closest('.illuminati_confirm');
    if (toybox_spammer_conf)
    {
        if( $('.illuminati_msg').val().length > 0 && $('.illuminati_int').val().length > 0 && $('.illuminati_count').val().length > 0 && $('.illuminati_info_freq').val().length > 0)
        {
            $('.illuminati_place').addClass('class_hidden');
            super_msg_spammer($('.illuminati_msg').val(), $('.illuminati_int').val(), $('.illuminati_count').val(), $('.illuminati_info_freq').val())
            $('.illuminati_msg').val('lol');
            $('.illuminati_int').val('1');
            $('.illuminati_count').val('10');
            $('.illuminati_info_freq').val('5');
        }else{
            console.log('spammer config invalid!');
        }
    }

    const bmenu_input_autoselect = event.target.closest('.bmenu_row_text_input');
    if (bmenu_input_autoselect)
    {
        $(bmenu_input_autoselect).select();
        $('.mrk_ect_tooltip_box').addClass('class_hidden');
    }

    const bmenu_cancel_illuminati = event.target.closest('.cancel_illuminati');
    if (bmenu_cancel_illuminati)
    {
        $('.illuminati_place').addClass('class_hidden');
        $('.illuminati_msg').val('lol');
        $('.illuminati_int').val('1');
        $('.illuminati_count').val('10');
        $('.illuminati_info_freq').val('5');
    }


});
// hax

document.addEventListener('mouseover', event => {
    // ===========================
    //           Tooltip
    // ===========================
	const cursor_over_tooltip_obj = event.target.closest('*[mrk_ect_tooltip]');
	if (cursor_over_tooltip_obj)
	{
		mrk_ect_timer = setTimeout(function() {
			console.log('delayed call');
			$('.mrk_ect_tooltip_box').css({top: cs_y, left: parseInt(cs_x) - 30 + 'px'});
			$('.mrk_ect_tooltip_box').removeClass('class_hidden');
			$('.mrk_ect_tooltip_box').text($(cursor_over_tooltip_obj).attr('mrk_ect_tooltip'));
		}, mrk_ect_tooltip_timeout);
	}
    // ===========================
    //           Tooltip
    // ===========================
});

document.addEventListener('mouseout', event => {
    // ===========================
    //           Tooltip
    // ===========================
	const cursor_over_tooltip_obj_leave_soon = event.target.closest('*[mrk_ect_tooltip]');
	if (cursor_over_tooltip_obj_leave_soon)
	{
		clearTimeout(mrk_ect_timer);
		$('.mrk_ect_tooltip_box').addClass('class_hidden');
	}
    // ===========================
    //           Tooltip
    // ===========================
});





function action_if_pizza()
{
    glob_hmenu()
    console.log('dominos');
}


function glob_hmenu()
{
    $(".bmenu_root").addClass("class_hidden");
}



function bmenu_imgflip()
{
    glob_hmenu()
    console.log("imgflipped");
    window.img_flip_mode = true;
    window.menu_lock = true;
    $("img").addClass("elem_hover");
}


function decrypt_pswd_changer()
{
    // hide the menu
    glob_hmenu()
    $("#global_password_changer").removeClass('class_hidden');
    $("#global_password_changer")
        .css({
        left: cs_x,
        top: cs_y,
    })
    $("#global_password_changer input").select();

}


function liz3_tg_decrypt_all_msgs()
{
    $('.im_message_text:contains(enc_dat420;)').each(function(){
        $(this).html($(this).html().split('enc_dat420;').join(''));
        console.log("corrected msg is " + $(this).text());
        $(this).text(CryptoJS.AES.decrypt($(this).text(), liz3_current_session_password).toString(CryptoJS.enc.Utf8));
    });

    $('span .im_short_message_text:contains(enc_dat420;)').each(function(){
        $(this).html($(this).html().split('enc_dat420;').join(''));
        console.log("corrected msg is " + $(this).text());
        $(this).text(CryptoJS.AES.decrypt($(this).text(), liz3_current_session_password).toString(CryptoJS.enc.Utf8));
    });
}


function make_input_great_again()
{
    console.log('focus');
    $('.liz3_alt_msg_input').blur();
    $('.liz3_alt_msg_input').focus();
}


// good cookie reference
function enable_liz3()
{
    glob_hmenu()
    checkbox_activator($('.bmenu_entry[bmenu_opt="enable_liz3"] .bmenu_checkbox'), "toggle");
    window.liz3_system_enabled ^= 1;
    liz3_current_config[0] ^= 1;
    setCookie('liz3_config', liz3_current_config.join('-'), 420)
}

function liz3_quick_mute()
{
    glob_hmenu()
    checkbox_activator($('.bmenu_entry[bmenu_opt="liz3_quick_mute"] .bmenu_checkbox'), "toggle");
    window.liz3_quick_mute ^= 1;
    liz3_current_config[1] ^= 1;
    setCookie('liz3_config', liz3_current_config.join('-'), 420)
}

function liz3_dark_theme_menu_call()
{

    if ( window.liz3_dark_mode == 0 )
    {
        $('body').append('<style id="liz3_darkmode_css">@import url("https://dl.dropbox.com/s/tuk1t8ntvn84375/dark.css?dl=0");</style>');
    }else{
        $('#liz3_darkmode_css').remove();
    }
    glob_hmenu()
    window.liz3_dark_mode ^= 1;
    liz3_current_config[2] ^= 1;
    checkbox_activator($('.bmenu_entry[bmenu_opt="liz3_dark_theme_menu_call"] .bmenu_checkbox'), "toggle");
    setCookie('liz3_config', liz3_current_config.join('-'), 420)

}

function liz3_dark_theme_page_load()
{
    if ( window.liz3_dark_mode == 1 )
    {
        $('body').append('<style id="liz3_darkmode_css">@import url("https://dl.dropbox.com/s/tuk1t8ntvn84375/dark.css?dl=0");</style>');
    }
}


function liz3_group_ignore()
{
    glob_hmenu()
    checkbox_activator($('.bmenu_entry[bmenu_opt="liz3_group_ignore"] .bmenu_checkbox'), "toggle");
    window.liz3_group_ignore_var ^= 1;
    liz3_current_config[3] ^= 1;
    setCookie('liz3_config', liz3_current_config.join('-'), 420)
}



function super_msg_spammer(msg, int, count, notify)
{
    /*
    var message = "lolly"; // spam message
    var interval = 0.1  ; // in seconds
    var count = 100 ; // number of times to send
    var notifyInterval = 5 ; // notify
    */
    var message = msg; // spam message
    var interval = int  ; // in seconds
    var count = count ; // number of times to send
    var notifyInterval = notify ; // notify

    var i = 0 ;
    var timer = setInterval(function(){
        document.getElementsByClassName('composer_rich_textarea')[0].innerHTML = message;
        $('.im_submit').trigger('mousedown');
        i++;
        if( i  == count )
            clearInterval(timer);
        if( i % notifyInterval == 0)
            console.log(i + ' MESSAGES SENT');
    } , interval * 1000 ) ;
}


function toybox_msg_spammer()
{
    glob_hmenu()
    $('.illuminati_place').removeClass('class_hidden');


    var calc_menu_y = cs_y;
    var calc_menu_x = cs_x;

    if (parseInt(cs_x) > ( window.innerWidth - $('.illuminati_place').outerWidth( true ) ) )
    {
        var calc_menu_x = parseInt(cs_x) - ((parseInt(cs_x) + $('.illuminati_place').outerWidth( true )) - window.innerWidth) - 20;
        console.log('calc x is ' + calc_menu_x + ' original x is ' + cs_x);
    }

    if (parseInt(cs_y) > ( window.innerHeight - $('.illuminati_place').outerHeight( true ) ) )
    {
        var calc_menu_y = parseInt(cs_y) - ((parseInt(cs_y) + $('.illuminati_place').outerHeight( true )) - window.innerHeight) -  20;
        console.log('calc is ' + calc_menu_y + ' original is ' + cs_y);
    }


    $(".illuminati_place")
        .css({
        left: calc_menu_x,
        top: calc_menu_y,
    });

}


function liz3_decrypt_only()
{
    glob_hmenu()
    checkbox_activator($('.bmenu_entry[bmenu_opt="liz3_decrypt_only"] .bmenu_checkbox'), "toggle");
    window.liz3_decrypt_only_v ^= 1;
    liz3_current_config[4] ^= 1;
    setCookie('liz3_config', liz3_current_config.join('-'), 420)
}


function message_mitm_copier(enc)
{
    if ( parseInt(enc) == 1 )
    {
        var encrypted_beforesend = CryptoJS.AES.encrypt($('.liz3_alt_msg_input').val(), liz3_current_session_password);
        $('.tg_original_msg_input').text('enc_dat420;' + encrypted_beforesend);
    }else{
        $('.tg_original_msg_input').text($('.liz3_alt_msg_input').val());
    }
}