@capjs-persian/capjs-local 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +13 -0
- package/README.md +5 -0
- package/cap-floating.min.js +1 -0
- package/cap.compat.min.js +1 -0
- package/cap.d.ts +155 -0
- package/cap.min.js +1 -0
- package/capjs-persian-capjs-local-0.0.1.tgz +0 -0
- package/package.json +34 -0
- package/src/cap-floating.js +125 -0
- package/src/cap.js +613 -0
- package/src/worker.js +115 -0
- package/wasm/cap_wasm.min.js +7 -0
- package/wasm/cap_wasm_bg.wasm +0 -0
- package/wasm-hashes.min.js +395 -0
package/src/worker.js
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
(() => {
|
|
2
|
+
const solveFallback = async ({ salt, target }) => {
|
|
3
|
+
let nonce = 0;
|
|
4
|
+
const batchSize = 50000;
|
|
5
|
+
const encoder = new TextEncoder();
|
|
6
|
+
|
|
7
|
+
const targetBytes = new Uint8Array(target.length / 2);
|
|
8
|
+
for (let k = 0; k < targetBytes.length; k++) {
|
|
9
|
+
targetBytes[k] = parseInt(target.substring(k * 2, k * 2 + 2), 16);
|
|
10
|
+
}
|
|
11
|
+
const targetBytesLength = targetBytes.length;
|
|
12
|
+
|
|
13
|
+
while (true) {
|
|
14
|
+
try {
|
|
15
|
+
for (let i = 0; i < batchSize; i++) {
|
|
16
|
+
const inputString = salt + nonce;
|
|
17
|
+
const inputBytes = encoder.encode(inputString);
|
|
18
|
+
|
|
19
|
+
const hashBuffer = await crypto.subtle.digest("SHA-256", inputBytes);
|
|
20
|
+
|
|
21
|
+
const hashBytes = new Uint8Array(hashBuffer, 0, targetBytesLength);
|
|
22
|
+
|
|
23
|
+
let matches = true;
|
|
24
|
+
for (let k = 0; k < targetBytesLength; k++) {
|
|
25
|
+
if (hashBytes[k] !== targetBytes[k]) {
|
|
26
|
+
matches = false;
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (matches) {
|
|
32
|
+
self.postMessage({ nonce, found: true });
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
nonce++;
|
|
37
|
+
}
|
|
38
|
+
} catch (error) {
|
|
39
|
+
console.error("[cap worker]", error);
|
|
40
|
+
self.postMessage({
|
|
41
|
+
found: false,
|
|
42
|
+
error: error.message,
|
|
43
|
+
});
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
if (
|
|
50
|
+
typeof WebAssembly !== "object" ||
|
|
51
|
+
typeof WebAssembly?.instantiate !== "function"
|
|
52
|
+
) {
|
|
53
|
+
console.warn(
|
|
54
|
+
"[cap worker] wasm not supported, falling back to alternative solver. this will be significantly slower.",
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
self.onmessage = async ({ data: { salt, target } }) => {
|
|
58
|
+
return solveFallback({ salt, target });
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
let wasmCacheUrl, solve_pow_function;
|
|
65
|
+
|
|
66
|
+
self.onmessage = async ({ data: { salt, target, wasmUrl } }) => {
|
|
67
|
+
let fb;
|
|
68
|
+
|
|
69
|
+
if (wasmCacheUrl !== wasmUrl) {
|
|
70
|
+
wasmCacheUrl = wasmUrl;
|
|
71
|
+
await import(wasmUrl)
|
|
72
|
+
.then((wasmModule) => {
|
|
73
|
+
return wasmModule.default().then((instance) => {
|
|
74
|
+
solve_pow_function = (
|
|
75
|
+
instance?.exports ? instance.exports : wasmModule
|
|
76
|
+
).solve_pow;
|
|
77
|
+
});
|
|
78
|
+
})
|
|
79
|
+
.catch((e) => {
|
|
80
|
+
console.error("[cap worker] using fallback solver due to error:", e);
|
|
81
|
+
fb = true;
|
|
82
|
+
|
|
83
|
+
return solveFallback({ salt, target });
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
if (fb) return;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
try {
|
|
90
|
+
const startTime = performance.now();
|
|
91
|
+
const nonce = solve_pow_function(salt, target);
|
|
92
|
+
const endTime = performance.now();
|
|
93
|
+
|
|
94
|
+
self.postMessage({
|
|
95
|
+
nonce: Number(nonce),
|
|
96
|
+
found: true,
|
|
97
|
+
durationMs: (endTime - startTime).toFixed(2),
|
|
98
|
+
});
|
|
99
|
+
} catch (error) {
|
|
100
|
+
console.error("[cap worker]", error);
|
|
101
|
+
|
|
102
|
+
self.postMessage({
|
|
103
|
+
found: false,
|
|
104
|
+
error: error.message || String(error),
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
self.onerror = (error) => {
|
|
110
|
+
self.postMessage({
|
|
111
|
+
found: false,
|
|
112
|
+
error,
|
|
113
|
+
});
|
|
114
|
+
};
|
|
115
|
+
})();
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skipped minification because the original files appears to be already minified.
|
|
3
|
+
* Original file: /npm/@cap.js/wasm@0.0.6/browser/cap_wasm.js
|
|
4
|
+
*
|
|
5
|
+
* Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
|
|
6
|
+
*/
|
|
7
|
+
let wasm,WASM_VECTOR_LEN=0,cachedUint8ArrayMemory0=null;function getUint8ArrayMemory0(){return null!==cachedUint8ArrayMemory0&&0!==cachedUint8ArrayMemory0.byteLength||(cachedUint8ArrayMemory0=new Uint8Array(wasm.memory.buffer)),cachedUint8ArrayMemory0}const cachedTextEncoder="undefined"!=typeof TextEncoder?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}},encodeString="function"==typeof cachedTextEncoder.encodeInto?function(e,t){return cachedTextEncoder.encodeInto(e,t)}:function(e,t){const n=cachedTextEncoder.encode(e);return t.set(n),{read:e.length,written:n.length}};function passStringToWasm0(e,t,n){if(void 0===n){const n=cachedTextEncoder.encode(e),i=t(n.length,1)>>>0;return getUint8ArrayMemory0().subarray(i,i+n.length).set(n),WASM_VECTOR_LEN=n.length,i}let i=e.length,o=t(i,1)>>>0;const r=getUint8ArrayMemory0();let a=0;for(;a<i;a++){const t=e.charCodeAt(a);if(t>127)break;r[o+a]=t}if(a!==i){0!==a&&(e=e.slice(a)),o=n(o,i,i=a+3*e.length,1)>>>0;const t=getUint8ArrayMemory0().subarray(o+a,o+i);a+=encodeString(e,t).written,o=n(o,i,a,1)>>>0}return WASM_VECTOR_LEN=a,o}export function solve_pow(e,t){const n=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),i=WASM_VECTOR_LEN,o=passStringToWasm0(t,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),r=WASM_VECTOR_LEN,a=wasm.solve_pow(n,i,o,r);return BigInt.asUintN(64,a)}async function __wbg_load(e,t){if("function"==typeof Response&&e instanceof Response){if("function"==typeof WebAssembly.instantiateStreaming)try{return await WebAssembly.instantiateStreaming(e,t)}catch(t){if("application/wasm"==e.headers.get("Content-Type"))throw t;console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",t)}const n=await e.arrayBuffer();return await WebAssembly.instantiate(n,t)}{const n=await WebAssembly.instantiate(e,t);return n instanceof WebAssembly.Instance?{instance:n,module:e}:n}}function __wbg_get_imports(){const e={wbg:{}};return e.wbg.__wbindgen_init_externref_table=function(){const e=wasm.__wbindgen_export_0,t=e.grow(4);e.set(0,void 0),e.set(t+0,void 0),e.set(t+1,null),e.set(t+2,!0),e.set(t+3,!1)},e}function __wbg_init_memory(e,t){}function __wbg_finalize_init(e,t){return wasm=e.exports,__wbg_init.__wbindgen_wasm_module=t,cachedUint8ArrayMemory0=null,wasm.__wbindgen_start(),wasm}function initSync(e){if(void 0!==wasm)return wasm;void 0!==e&&(Object.getPrototypeOf(e)===Object.prototype?({module:e}=e):console.warn("using deprecated parameters for `initSync()`; pass a single object instead"));const t=__wbg_get_imports();__wbg_init_memory(t),e instanceof WebAssembly.Module||(e=new WebAssembly.Module(e));return __wbg_finalize_init(new WebAssembly.Instance(e,t),e)}async function __wbg_init(e){if(void 0!==wasm)return wasm;void 0!==e&&(Object.getPrototypeOf(e)===Object.prototype?({module_or_path:e}=e):console.warn("using deprecated parameters for the initialization function; pass a single object instead")),void 0===e&&(e=new URL("cap_wasm_bg.wasm",import.meta.url));const t=__wbg_get_imports();("string"==typeof e||"function"==typeof Request&&e instanceof Request||"function"==typeof URL&&e instanceof URL)&&(e=fetch(e)),__wbg_init_memory(t);const{instance:n,module:i}=await __wbg_load(await e,t);return __wbg_finalize_init(n,i)}export{initSync};export default __wbg_init;
|
|
Binary file
|
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
!((e, t) => {
|
|
2
|
+
"object" == typeof exports && "undefined" != typeof module
|
|
3
|
+
? t(exports)
|
|
4
|
+
: "function" == typeof define && define.amd
|
|
5
|
+
? define(["exports"], t)
|
|
6
|
+
: t(
|
|
7
|
+
((e =
|
|
8
|
+
"undefined" != typeof globalThis
|
|
9
|
+
? globalThis
|
|
10
|
+
: e || self).hashwasm = e.hashwasm || {}),
|
|
11
|
+
);
|
|
12
|
+
})(void 0, (e) => {
|
|
13
|
+
function t(e, t, n, A) {
|
|
14
|
+
return new (n || (n = Promise))((i, o) => {
|
|
15
|
+
function r(e) {
|
|
16
|
+
try {
|
|
17
|
+
a(A.next(e));
|
|
18
|
+
} catch (e) {
|
|
19
|
+
o(e);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function E(e) {
|
|
23
|
+
try {
|
|
24
|
+
a(A.throw(e));
|
|
25
|
+
} catch (e) {
|
|
26
|
+
o(e);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function a(e) {
|
|
30
|
+
var t;
|
|
31
|
+
e.done
|
|
32
|
+
? i(e.value)
|
|
33
|
+
: ((t = e.value),
|
|
34
|
+
t instanceof n
|
|
35
|
+
? t
|
|
36
|
+
: new n((e) => {
|
|
37
|
+
e(t);
|
|
38
|
+
})).then(r, E);
|
|
39
|
+
}
|
|
40
|
+
a((A = A.apply(e, t || [])).next());
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
"function" == typeof SuppressedError && SuppressedError;
|
|
44
|
+
class n {
|
|
45
|
+
constructor() {
|
|
46
|
+
this.mutex = Promise.resolve();
|
|
47
|
+
}
|
|
48
|
+
lock() {
|
|
49
|
+
let e = () => {};
|
|
50
|
+
return (
|
|
51
|
+
(this.mutex = this.mutex.then(() => new Promise(e))),
|
|
52
|
+
new Promise((t) => {
|
|
53
|
+
e = t;
|
|
54
|
+
})
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
dispatch(e) {
|
|
58
|
+
return t(this, void 0, void 0, function* () {
|
|
59
|
+
const t = yield this.lock();
|
|
60
|
+
try {
|
|
61
|
+
return yield Promise.resolve(e());
|
|
62
|
+
} finally {
|
|
63
|
+
t();
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
var A;
|
|
69
|
+
const i =
|
|
70
|
+
"undefined" != typeof globalThis
|
|
71
|
+
? globalThis
|
|
72
|
+
: "undefined" != typeof self
|
|
73
|
+
? self
|
|
74
|
+
: "undefined" != typeof window
|
|
75
|
+
? window
|
|
76
|
+
: global,
|
|
77
|
+
o = null !== (A = i.Buffer) && void 0 !== A ? A : null,
|
|
78
|
+
r = i.TextEncoder ? new i.TextEncoder() : null;
|
|
79
|
+
function E(e, t) {
|
|
80
|
+
return (
|
|
81
|
+
(((15 & e) + ((e >> 6) | ((e >> 3) & 8))) << 4) |
|
|
82
|
+
((15 & t) + ((t >> 6) | ((t >> 3) & 8)))
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
const a = "a".charCodeAt(0) - 10,
|
|
86
|
+
g = "0".charCodeAt(0);
|
|
87
|
+
function s(e, t, n) {
|
|
88
|
+
let A = 0;
|
|
89
|
+
for (let i = 0; i < n; i++) {
|
|
90
|
+
let n = t[i] >>> 4;
|
|
91
|
+
(e[A++] = n > 9 ? n + a : n + g),
|
|
92
|
+
(n = 15 & t[i]),
|
|
93
|
+
(e[A++] = n > 9 ? n + a : n + g);
|
|
94
|
+
}
|
|
95
|
+
return String.fromCharCode.apply(null, e);
|
|
96
|
+
}
|
|
97
|
+
const C =
|
|
98
|
+
null !== o
|
|
99
|
+
? (e) => {
|
|
100
|
+
if ("string" == typeof e) {
|
|
101
|
+
const t = o.from(e, "utf8");
|
|
102
|
+
return new Uint8Array(t.buffer, t.byteOffset, t.length);
|
|
103
|
+
}
|
|
104
|
+
if (o.isBuffer(e))
|
|
105
|
+
return new Uint8Array(e.buffer, e.byteOffset, e.length);
|
|
106
|
+
if (ArrayBuffer.isView(e))
|
|
107
|
+
return new Uint8Array(e.buffer, e.byteOffset, e.byteLength);
|
|
108
|
+
throw new Error("Invalid data type!");
|
|
109
|
+
}
|
|
110
|
+
: (e) => {
|
|
111
|
+
if ("string" == typeof e) return r.encode(e);
|
|
112
|
+
if (ArrayBuffer.isView(e))
|
|
113
|
+
return new Uint8Array(e.buffer, e.byteOffset, e.byteLength);
|
|
114
|
+
throw new Error("Invalid data type!");
|
|
115
|
+
},
|
|
116
|
+
B = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
|
|
117
|
+
c = new Uint8Array(256);
|
|
118
|
+
for (let e = 0; e < 64; e++) c[B.charCodeAt(e)] = e;
|
|
119
|
+
function l(e) {
|
|
120
|
+
const t = ((e) => {
|
|
121
|
+
let t = Math.floor(0.75 * e.length);
|
|
122
|
+
const n = e.length;
|
|
123
|
+
return "=" === e[n - 1] && ((t -= 1), "=" === e[n - 2] && (t -= 1)), t;
|
|
124
|
+
})(e),
|
|
125
|
+
n = e.length,
|
|
126
|
+
A = new Uint8Array(t);
|
|
127
|
+
let i = 0;
|
|
128
|
+
for (let t = 0; t < n; t += 4) {
|
|
129
|
+
const n = c[e.charCodeAt(t)],
|
|
130
|
+
o = c[e.charCodeAt(t + 1)],
|
|
131
|
+
r = c[e.charCodeAt(t + 2)],
|
|
132
|
+
E = c[e.charCodeAt(t + 3)];
|
|
133
|
+
(A[i] = (n << 2) | (o >> 4)),
|
|
134
|
+
(i += 1),
|
|
135
|
+
(A[i] = ((15 & o) << 4) | (r >> 2)),
|
|
136
|
+
(i += 1),
|
|
137
|
+
(A[i] = ((3 & r) << 6) | (63 & E)),
|
|
138
|
+
(i += 1);
|
|
139
|
+
}
|
|
140
|
+
return A;
|
|
141
|
+
}
|
|
142
|
+
const h = 16384,
|
|
143
|
+
f = new n(),
|
|
144
|
+
d = new Map();
|
|
145
|
+
function u(e, n) {
|
|
146
|
+
return t(this, void 0, void 0, function* () {
|
|
147
|
+
let A = null,
|
|
148
|
+
i = null,
|
|
149
|
+
o = !1;
|
|
150
|
+
if ("undefined" == typeof WebAssembly)
|
|
151
|
+
throw new Error("WebAssembly is not supported in this environment!");
|
|
152
|
+
const r = () =>
|
|
153
|
+
new DataView(A.exports.memory.buffer).getUint32(
|
|
154
|
+
A.exports.STATE_SIZE,
|
|
155
|
+
!0,
|
|
156
|
+
),
|
|
157
|
+
a = f.dispatch(() =>
|
|
158
|
+
t(this, void 0, void 0, function* () {
|
|
159
|
+
if (!d.has(e.name)) {
|
|
160
|
+
const t = l(e.data),
|
|
161
|
+
n = WebAssembly.compile(t);
|
|
162
|
+
d.set(e.name, n);
|
|
163
|
+
}
|
|
164
|
+
const t = yield d.get(e.name);
|
|
165
|
+
A = yield WebAssembly.instantiate(t, {});
|
|
166
|
+
}),
|
|
167
|
+
),
|
|
168
|
+
g = () => {
|
|
169
|
+
const e =
|
|
170
|
+
arguments.length > 0 && void 0 !== arguments[0]
|
|
171
|
+
? arguments[0]
|
|
172
|
+
: null;
|
|
173
|
+
(o = !0), A.exports.Hash_Init(e);
|
|
174
|
+
},
|
|
175
|
+
B = (e) => {
|
|
176
|
+
if (!o) throw new Error("update() called before init()");
|
|
177
|
+
((e) => {
|
|
178
|
+
let t = 0;
|
|
179
|
+
for (; t < e.length; ) {
|
|
180
|
+
const n = e.subarray(t, t + h);
|
|
181
|
+
(t += n.length), i.set(n), A.exports.Hash_Update(n.length);
|
|
182
|
+
}
|
|
183
|
+
})(C(e));
|
|
184
|
+
},
|
|
185
|
+
c = new Uint8Array(2 * n),
|
|
186
|
+
u = (e) => {
|
|
187
|
+
const t =
|
|
188
|
+
arguments.length > 1 && void 0 !== arguments[1]
|
|
189
|
+
? arguments[1]
|
|
190
|
+
: null;
|
|
191
|
+
if (!o) throw new Error("digest() called before init()");
|
|
192
|
+
return (
|
|
193
|
+
(o = !1),
|
|
194
|
+
A.exports.Hash_Final(t),
|
|
195
|
+
"binary" === e ? i.slice(0, n) : s(c, i, n)
|
|
196
|
+
);
|
|
197
|
+
},
|
|
198
|
+
v = (e) => ("string" == typeof e ? e.length < 4096 : e.byteLength < h);
|
|
199
|
+
let N = v;
|
|
200
|
+
switch (e.name) {
|
|
201
|
+
case "argon2":
|
|
202
|
+
case "scrypt":
|
|
203
|
+
N = () => !0;
|
|
204
|
+
break;
|
|
205
|
+
case "blake2b":
|
|
206
|
+
case "blake2s":
|
|
207
|
+
N = (e, t) => t <= 512 && v(e);
|
|
208
|
+
break;
|
|
209
|
+
case "blake3":
|
|
210
|
+
N = (e, t) => 0 === t && v(e);
|
|
211
|
+
break;
|
|
212
|
+
case "xxhash64":
|
|
213
|
+
case "xxhash3":
|
|
214
|
+
case "xxhash128":
|
|
215
|
+
N = () => !1;
|
|
216
|
+
}
|
|
217
|
+
return (
|
|
218
|
+
yield (() =>
|
|
219
|
+
t(this, void 0, void 0, function* () {
|
|
220
|
+
A || (yield a);
|
|
221
|
+
const e = A.exports.Hash_GetBuffer(),
|
|
222
|
+
t = A.exports.memory.buffer;
|
|
223
|
+
i = new Uint8Array(t, e, h);
|
|
224
|
+
}))(),
|
|
225
|
+
{
|
|
226
|
+
getMemory: () => i,
|
|
227
|
+
writeMemory: (e) => {
|
|
228
|
+
const t =
|
|
229
|
+
arguments.length > 1 && void 0 !== arguments[1]
|
|
230
|
+
? arguments[1]
|
|
231
|
+
: 0;
|
|
232
|
+
i.set(e, t);
|
|
233
|
+
},
|
|
234
|
+
getExports: () => A.exports,
|
|
235
|
+
setMemorySize: (e) => {
|
|
236
|
+
A.exports.Hash_SetMemorySize(e);
|
|
237
|
+
const t = A.exports.Hash_GetBuffer(),
|
|
238
|
+
n = A.exports.memory.buffer;
|
|
239
|
+
i = new Uint8Array(n, t, e);
|
|
240
|
+
},
|
|
241
|
+
init: g,
|
|
242
|
+
update: B,
|
|
243
|
+
digest: u,
|
|
244
|
+
save: () => {
|
|
245
|
+
if (!o)
|
|
246
|
+
throw new Error(
|
|
247
|
+
"save() can only be called after init() and before digest()",
|
|
248
|
+
);
|
|
249
|
+
const t = A.exports.Hash_GetState(),
|
|
250
|
+
n = r(),
|
|
251
|
+
i = A.exports.memory.buffer,
|
|
252
|
+
a = new Uint8Array(i, t, n),
|
|
253
|
+
g = new Uint8Array(4 + n);
|
|
254
|
+
return (
|
|
255
|
+
((e, t) => {
|
|
256
|
+
const n = t.length >> 1;
|
|
257
|
+
for (let A = 0; A < n; A++) {
|
|
258
|
+
const n = A << 1;
|
|
259
|
+
e[A] = E(t.charCodeAt(n), t.charCodeAt(n + 1));
|
|
260
|
+
}
|
|
261
|
+
})(g, e.hash),
|
|
262
|
+
g.set(a, 4),
|
|
263
|
+
g
|
|
264
|
+
);
|
|
265
|
+
},
|
|
266
|
+
load: (t) => {
|
|
267
|
+
if (!(t instanceof Uint8Array))
|
|
268
|
+
throw new Error(
|
|
269
|
+
"load() expects an Uint8Array generated by save()",
|
|
270
|
+
);
|
|
271
|
+
const n = A.exports.Hash_GetState(),
|
|
272
|
+
i = r(),
|
|
273
|
+
a = 4 + i,
|
|
274
|
+
g = A.exports.memory.buffer;
|
|
275
|
+
if (t.length !== a)
|
|
276
|
+
throw new Error(
|
|
277
|
+
"Bad state length (expected "
|
|
278
|
+
.concat(a, " bytes, got ")
|
|
279
|
+
.concat(t.length, ")"),
|
|
280
|
+
);
|
|
281
|
+
if (
|
|
282
|
+
!((e, t) => {
|
|
283
|
+
if (e.length !== 2 * t.length) return !1;
|
|
284
|
+
for (let n = 0; n < t.length; n++) {
|
|
285
|
+
const A = n << 1;
|
|
286
|
+
if (t[n] !== E(e.charCodeAt(A), e.charCodeAt(A + 1)))
|
|
287
|
+
return !1;
|
|
288
|
+
}
|
|
289
|
+
return !0;
|
|
290
|
+
})(e.hash, t.subarray(0, 4))
|
|
291
|
+
)
|
|
292
|
+
throw new Error(
|
|
293
|
+
"This state was written by an incompatible hash implementation",
|
|
294
|
+
);
|
|
295
|
+
const s = t.subarray(4);
|
|
296
|
+
new Uint8Array(g, n, i).set(s), (o = !0);
|
|
297
|
+
},
|
|
298
|
+
calculate: (e) => {
|
|
299
|
+
const t =
|
|
300
|
+
arguments.length > 1 && void 0 !== arguments[1]
|
|
301
|
+
? arguments[1]
|
|
302
|
+
: null,
|
|
303
|
+
o =
|
|
304
|
+
arguments.length > 2 && void 0 !== arguments[2]
|
|
305
|
+
? arguments[2]
|
|
306
|
+
: null;
|
|
307
|
+
if (!N(e, t)) return g(t), B(e), u("hex", o);
|
|
308
|
+
const r = C(e);
|
|
309
|
+
return (
|
|
310
|
+
i.set(r), A.exports.Hash_Calculate(r.length, t, o), s(c, i, n)
|
|
311
|
+
);
|
|
312
|
+
},
|
|
313
|
+
hashLength: n,
|
|
314
|
+
}
|
|
315
|
+
);
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
let v =
|
|
319
|
+
"AGFzbQE||BEAF/YAF/AG|AGACf38|wgH|EBAQAw$AQECAgYOAn8BQfCJBQt/AEGACAsHcAgGbWVtb3J5AÔHZXRCdWZmZX|lº0luaXQ|Qtº1VwZGF0ZQACCkhhc2hfRmluYWwABA1º0dldFN0YXRl|UÔDYWxjdWxhdGUABgpTVEFURV9TSVpFAwEKoEoHBQBBkLnQEABCADcDwÈBHEEgBB4AFGIbNgL#QFBAEKnn+anxvST/b5/Qquzj/yRo7Pw2wABs3A+CQrGWgP6fooWs6ABC/6S5iMWR2oKbfy|GzcD2ÈCl7rDg5Onlod3QvLmu+Ojp/2npX8Bs3A9CQti9loj8oLW+NkLnzKfQ1tDrs7t/AbNwPI¥L7wICAX4Gf0EAApA8CJASCtfDcDw`AkACQAJAGnQT9xIgINAEGACSEDDAELAkBBw|msiBC|QEkbIgNFDQA0EDcSEFJBg`aiEGAhAgJANBBEkNACADQfwAcSEHAhAgNAYm#AyACQYAJDFqJBgQ¿NBAmokGCCÀ0ED\vCQYMJHJBBG#AkcN|sLVFDQADQCAGJqJB¿JBAWohAiAFQX9gUN|sLQEsNAU»y|RrIQAgBEGACWohAwsCQC|Qc|SQ0|0AxADNBwABQMEFAaiQT9LDQALCy|RQ0AAhAkÊUDQCACQYCJAWoyACCFQICAFFgVB/wFxSw0ACwsLoz4BRX9BAC|KAI8IgFËU¡AB$§FBGXc$OA$̶OCICÏJ?k±JÒC\vµg!R>BE£BE}¶HF\vµE!Z>Bk£Bk}¶AH\vµk!hqJAk=Ak\bgN hgCÜK[K]µUtqJ hADEM[M]µM1 jADmo¶CCIJÏl?gC$Idk<lÒPÝ9-9.Z igEGo$PBB{C$PJJ{E$PRR{EkEPSS{E2o¶NCIUh0R?gFE±RÒVV-V.5qJ iwiFÜW[W]Q\vR\vIÝh-h.RqlqV>B$OB$ÌgCmoÇC0L[L]M\vV\vNÝ1-1.9qZqNA0=A0\bhRFE=FE\bhdF0=F0\bhÂlGÉGU\bhpGk=Gk\bhtG0=G0\bhx>HE£HE}ÜC[C]V\vY\vOÝ5-5.ZqdqB>EE£EE}gCGogFGogE0EPTT{H$Pdd{HkEPee{HE0T[T]Y\vDÝN-N.Fqlq9H0=H0\biBqJ>Ek£Ek}gFHE$ZR[R]U\ve\vJÝl-l.Nq1qxHE=HE\biFIÉIU\biJIk=Ik\biNI0=I0\biRqt>G0£G0}gH¢IGÜa[a]d\vi\vZl-l.NCFqh>GE£GE}ÍHGogF0X[X]R\vb\vUR-R.lqpCBIE=IE\biVJÉJU\biZJk=Jk\bidJ0=J0\bihKE=KE\bilKÉKU\bipKk=Kk\bit>K0£K0}gH0f[f]b\vn\ve5-5.pCZq1>H$OH$ÌgGÇJÇJEEPkk{LEEPss{L$Ptt{L¢JEk[k]n\vg¸B-ICB.xChC5Lk=Lk\bi9CN>I0£I0}gJ¢L¢IÜi[i]l\vt\vh¸F-ICF.ICBCxCtK0=K0\bjBME=ME\bjFMÉMU\bjJMk=Mk\bjNCp>Kk£Kk}gLÇM¢K$Zp[p]s\vx\vo¸h-ICh.ICRDBCd>J0£J0}gIKJÜm[m]i\vq\vl¸V-ICV.ICFClC9L0=L0\bjRNE=NE\bjVNÉNU\bjZNk=Nk\bjdN0=N0\bjhOE=OE\bjlOÉOU\bjogOCA0IC4gLCAhsgG,D4gBEY¥iO0ª7(7d3c0k¥iPGp4`Ij13`Ij5zIDtxID1z\vHakGY36iUBG#B0U¥iP2#ACAM\v71D4gDP,G\vAID4gO3NxID5z\vA¦BBGRid2JB2#QEQ¥iQW#DC|IDt7Ãz/eDrntkJz`IkNg0gDC|c3EHNq1%D$VDUaW3181+aiJE·siJASP0gDHÙxHbhNvKA2#RSBBIEMHNxIEMHÚB®EETAEE«dgZgdqUgDCiAN\vLxqcgDyANDXfGjxM8FKYHMgQ3EgBi|pIX+kXlgs¼A×PQ¨HVvfHYem#QC*ER½EBHZjVnsB9aiJCRW#DG#BÇFiAH\vQ9qggBGogB,Ö$aF(FgbaNlAFgg¼N^\vKNPU¨G+i8ahAm#Di*qt½FBXcP7sagFQ9Lr5lQdhY¼N×F\vBRqIgBF,P\vFQ¨z\vF¦VVH+4/qGeG#By*qhÐgYgB,EBHNqZ%BkEVBkaeN8N55EEÕ,N
DmÛ#DCAGVFÃ9OLvjHxgUÎNQDNwgBnÙZz\vN¦11HB0+2kfm#CC\tZÐg8gFE,N\vUxqkgB¢DyANxMD0ªP(Pho/5/X5gYHCJ8gDXÙ1³HGu4b+AG#DCR¯EgC,PD3~czDsqACNBW#AW#FCßÄ79ik7wJg8ICX\vTRqgEiAJ\vXQÁX¦ddGqidLTBG#GCZgNgkgFyAUFH©dzTwuUFUDG°,JdXÅ2pHmtwdhcNC&HSovnBeW#GS9¯Nq4ÍGiAR\vd;e2Mx8F6aGG#AWyM+MgHthgUCHH/+X6e2#FCdgN@fOXgLd8XGW°ICAS\vcFq8_x6KerX1àHRxqk2a:G#A259KkoQFhgUai&GFldy9Am#FCABdgJhMgIJiAS\viFCU_uMLs8AJØH827HpBG#GS\tpZOa4JkFa\fGG1OapqAZhgUDT\voJCQJyAJ\v)G7laizB2#FC\tdgFa6Si454X\fGWÛhdnIk3lhkaD&Gh0f+Vem#Gi\thÐhNCoÍL,R\vp;cvM6cB6Y\fFGÛ8JauknxhQXDGjo7G7fG#Fy\tlgF@ZnQy4x9Z\fGmÛ#EMCAS\vvFCs_pIzktH1hoYDGF67igf2#GC\tRfDAqoMBU\fF2loKTzQFØTIDZDIÍN,R\vx;YjY3fEBZGm#AWzO6hugJhoYCG1+cKlA2#GCRgN@bOZ8MgDUF2°LEs[s]o\v0\vz93IDN¬IDNXJDcMyAJ\v)HK1OL2BG#GyABlgJc+U89wFZ:m#A289+5wQZhoYai&Huhb6kB2#HCABRgJhNC5>Lk£Lk}gK¢N¢L$Zt[t]p\v1\vX93d¬dU93R¬RYJDkFCAJ\v)HvxpXFB2#CSt¯E¾~ZTwoaZ4bGW°iARNTÆiISc5nhà)H6//uFeW#Gix¯QgPGo2AuSID8Jaitg:W#AaJajYC1`AgP,v¸9-IC9.ICtDdqÂgFCATJSÄ69nBonphkW#EWo2AuCIEEgC,DCc,JNxJ¹ll\vZaiajYC0`AgPiAwIDB-IDB.IC9qdDpOk=Ok\bBJqEgFCATE3~ffH5vd7XJhJqNgLcCBDEgCXM3E,J
F2Ûo2AsyIDsgNE0[0]w\v4\vY93h¬h\vT\vSEgFHNxR´Hy8cWzfG#E,Damo2AtiAÎJRamo2AsiJAQu2BgIEfwF+·sCJASJ29xIgFÞCIoAgBBfy|N0IgB0QX9zcUG|,AdHM2ACQAJ|kA$OSQ0|kA$ORw0ABBADYCv`C0»0ÊMMAQs$NRg0BFBAWohAwsyE|kBBBiADa0EHcSICRQ0ANÞaiEBMh|NAFBADYCACABRQEEEBaiEAJBf2#Ag0ACws0F5akEHSQ0ABBAnQhAQNAFBmkigIG#A$4Rw0ACwtBACEBBBACkDw`IgSnIgBBG3QEELdEGAgPwHcXIEEFdk<BBA3RjYCv`AgBEIdiKc2AriJAU»0EA·uS 5È4gEc¥2Aty·ti 2È1UEQ¥2AtC·sy zÈyI¥CQE#QEiAkUNAEÊADQCABQYAJ\vBQciJAÀ$BaiEBIEEBaiQf8BcUsN|sLCwYAQYCJAQujAQBBAENwPAEEcQ,UHUYiARs2AuiQqef5qfG9JP9vn9Cq7OP/JGjs/DbACABGzcD4ÈCsZaA/p+ihazoAEL/pLmIxZHagpt/EbNwPYEKXusODk6eWh3dC8ua746On/aelfyABGzcD0ÈC2L2WiPygtb42QufMp9DW0Ouzu38Rs3A8iJA,AÊBAsLCwEAQYAICwRw||IAd3MgcyAMnMXEyACcXM0EeDÑDÓ,DCc,BNxB¹FF\vACÚÙIXÚJ®kETAkE«c,CFxC¹JJ\v\bEKdnN\tADJzFxMnÚN®0ETA0E«\vaiA\fE3MnE,D
d3c2pBIBBD3cgBB3dzakiC$YdCAJ¤l²Jh2cnIiiAEEYdC|¤B²Ah2cnIaiIgAQQdyAEHd3NqQyACBc,DJxD¹NN\vqINzJxE3ÚF®$TA$«c`IgBËE¡|EEYdnJyNgLQRBFXdz JASÏB?E±BjYC!IgNË0¡AD0E§#oi$UE%BGncg&SEgCXÙl´(V3)TIÁT¦NN*ANxzZx0gDHÚ1BHncgD$TD$Kd3N,SA-BDndz.BA3Zz:IXM3EÎcXMkEeCÑCÓG;lqMgEiAREXNqN%E0EVE0<GA/gNx=EN>BGXcg?BgP4Dc$IdHI@hIgE,JCXNqJ%EkEVEk[53]N2^c,MZxM¹xx_gCÇEyASFRE0ªT(T`IkB{p2c2#|AA}EÌ~NqF%E$VEURkgE3NxNz\vR¦FFQG#DG#BCAÖEªE(EJMgEnNxJ³IglËgCU¡AJgC$§#C,TJSC$aJ(J#E,JNTÅ
cXM$eBÑBÓc3EgÎDBGHZych2QYD+A3E`akNwFBNqd%B0EVB0gk¾©Û#Ei߯z\vP¦99CIDÏN?0±NÒ13EAKALcXMgBkEeGÑGÓJA$ABE3dzl3BACgC2ogai0|Do|CAEZYÕgBiANÐhEgC,TE3~zc,iQFBABCndzgEÇ qAoA¡<h0ci¢mog£EO¤QYD+A3FBCHRy¥iQE¦p3§YdnJyIg¨gB3Ùd©Nql%C$VCUªEa«Kd3Nq¬BDXdzBCnZz®BHnc¯gNh°#AW#E±EIdk<²BCHZBgP4Dc,³z\vJ¦ll´z\vS¦JJµAKAI¶CgC·AoA¸IC¹53ºIYXNoX»GA¥QA¼gDCAG½gZgcgDyA¾gEyASEn¿lqLQ|OAÀWot|A6|AÁgEXNxFz\vÂhGE=GE\bhÃDEªM(MÄFEªU(UÅE$aR(RÆEkªS(SÇWogÈ`BÉ$NÊEAIQËBGHQÌDdnMÍgE¢ÎiABÏh0ÐgFÑN3ÒiIÓp3ÔOSGFzaF9ÕgDXMgDHEÖH9PB×^aiBCNØhcZDÙNxÚFzÛ#AmÜkÝÞBAnRBg`ßARlJàhkaC";
|
|
320
|
+
const N =
|
|
321
|
+
"àßÞÝÜÛÚÙØ×ÖÕÔÓÒÑÐÏÎÍÌËÊÉÈÇÆÅÄÃÂÁÀ¿¾½¼»º¹¸·¶µ´³²±°¯®¬«ª©¨§¦¥¤£¢¡
~}|{`_^][@?>=<;:.-,*)(&%$#! \f\v\t\b";
|
|
322
|
+
let D;
|
|
323
|
+
for (D in N) {
|
|
324
|
+
const e = v.split(N[D]);
|
|
325
|
+
v = e.join(e.pop());
|
|
326
|
+
}
|
|
327
|
+
var G = { name: "sha256", data: v, hash: "64f06674" };
|
|
328
|
+
const y = new n();
|
|
329
|
+
let J = null;
|
|
330
|
+
(e.createSHA256 = () =>
|
|
331
|
+
u(G, 32).then((e) => {
|
|
332
|
+
e.init(256);
|
|
333
|
+
const t = {
|
|
334
|
+
init: () => (e.init(256), t),
|
|
335
|
+
update: (n) => (e.update(n), t),
|
|
336
|
+
digest: (t) => e.digest(t),
|
|
337
|
+
save: () => e.save(),
|
|
338
|
+
load: (n) => (e.load(n), t),
|
|
339
|
+
blockSize: 64,
|
|
340
|
+
digestSize: 32,
|
|
341
|
+
};
|
|
342
|
+
return t;
|
|
343
|
+
})),
|
|
344
|
+
(e.sha256 = (e) => {
|
|
345
|
+
if (null === J)
|
|
346
|
+
return (function (e, n) {
|
|
347
|
+
return t(this, void 0, void 0, function* () {
|
|
348
|
+
const t = yield e.lock(),
|
|
349
|
+
A = yield u(n, 32);
|
|
350
|
+
return t(), A;
|
|
351
|
+
});
|
|
352
|
+
})(y, G).then((t) => ((J = t), J.calculate(e, 256)));
|
|
353
|
+
try {
|
|
354
|
+
const t = J.calculate(e, 256);
|
|
355
|
+
return Promise.resolve(t);
|
|
356
|
+
} catch (e) {
|
|
357
|
+
return Promise.reject(e);
|
|
358
|
+
}
|
|
359
|
+
});
|
|
360
|
+
});
|
|
361
|
+
|
|
362
|
+
// ====================================================
|
|
363
|
+
|
|
364
|
+
// this is a now unused library which an old version of
|
|
365
|
+
// cap depended on. to avoid breaking things as much as
|
|
366
|
+
// possible, we've kept it here.
|
|
367
|
+
|
|
368
|
+
try {
|
|
369
|
+
// lets us know how many people are actually using this
|
|
370
|
+
// so we can know when it's safe to deprecate.
|
|
371
|
+
|
|
372
|
+
// server source code:
|
|
373
|
+
// https://gist.github.com/tiagozip/ffb39489f5af91e6e45f94f1bfa14ab2
|
|
374
|
+
fetch(
|
|
375
|
+
`https://api.tiagorangel.com/cap-legacy-widget?h=${self.location?.hostname || "unknown"}`,
|
|
376
|
+
{
|
|
377
|
+
mode: "no-cors",
|
|
378
|
+
},
|
|
379
|
+
).catch(() => {});
|
|
380
|
+
} catch {}
|
|
381
|
+
|
|
382
|
+
console.warn(
|
|
383
|
+
`[cap]
|
|
384
|
+
%cYou're using a deprecated version of Cap's widget that still relies on this file.
|
|
385
|
+
|
|
386
|
+
It may continue to work for now, but could break at any time since this dependency was removed several versions ago.
|
|
387
|
+
|
|
388
|
+
Please update Cap to fix this.`,
|
|
389
|
+
"font-size:15px;background-image:url('https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fpreview.colorkit.co%2Fcolor%2FEEEEEE.png%3Ftype%3Darticle-preview-logo%26size%3Dsocial%26colorname%3DSuper%2520Silver&f=1&nofb=1&ipt=49845e9195461b7c779182793c2ebf7834102eaf5561c15fa2cbb55494b77a9b');background-size:10px",
|
|
390
|
+
);
|
|
391
|
+
|
|
392
|
+
console.log(
|
|
393
|
+
`%cTo help us understand how many people are using this legacy version and when it's safe to deprecate it, we've sent a small, privacy-friendly beacon to our servers. All related code, including the telemetry server, is open source.\n\nYou might have gotten a CSP error before this, it should be safe to ignore. Server source code: https://gist.github.com/tiagozip/ffb39489f5af91e6e45f94f1bfa14ab2`,
|
|
394
|
+
"font-size:11px;color:#b7b7b7",
|
|
395
|
+
);
|