weAtob(string) {
let b64re = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/;
let b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
? ? string = String(string).replace(/[\t\n\f\r ]+/g, "");
? ? if (!b64re.test(string))
? ? ? ? throw new TypeError("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");
? ? string += "==".slice(2 - (string.length & 3));
? ? var bitmap, result = "", r1, r2, i = 0;
? ? for (; i < string.length;) {
? ? ? ? bitmap = b64.indexOf(string.charAt(i++)) << 18 | b64.indexOf(string.charAt(i++)) << 12 |
? ? ? ? ? ? (r1 = b64.indexOf(string.charAt(i++))) << 6 | (r2 = b64.indexOf(string.charAt(i++)));
? ? ? ? result += r1 === 64 ? String.fromCharCode(bitmap >> 16 & 255) :
? ? ? ? ? ? r2 === 64 ? String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255) :
? ? ? ? ? ? ? ? String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255, bitmap & 255);
? ? }
? ? return result;
},