Browse Source

use base58 in pngs

pull/46/head
coomdev 2 years ago
parent
commit
c437c51268
  1. 280
      chrome/dist/main.js
  2. 2
      chrome/manifest.json
  3. 280
      dist/main.js
  4. 278
      firefox/dist/main.js
  5. 2
      firefox/manifest.json
  6. 2
      firefox_update.json
  7. 2
      main.meta.js
  8. 282
      main.user.js
  9. 41
      package-lock.json
  10. 2
      package.json
  11. 7
      src/Components/App.svelte
  12. 1758
      src/f5stego.ts
  13. 40
      src/pngv3.ts
  14. 2
      src/stores.ts

280
chrome/dist/main.js

@ -51,7 +51,7 @@
var define_BUILD_VERSION_default;
var init_define_BUILD_VERSION = __esm({
"<define:BUILD_VERSION>"() {
define_BUILD_VERSION_default = [0, 268];
define_BUILD_VERSION_default = [0, 270];
}
});
@ -5213,6 +5213,151 @@
}
});
// node_modules/base-x/src/index.js
var require_src = __commonJS({
"node_modules/base-x/src/index.js"(exports, module) {
"use strict";
init_define_BUILD_VERSION();
init_esbuild_inject();
function base(ALPHABET) {
if (ALPHABET.length >= 255) {
throw new TypeError("Alphabet too long");
}
var BASE_MAP = new Uint8Array(256);
for (var j = 0; j < BASE_MAP.length; j++) {
BASE_MAP[j] = 255;
}
for (var i = 0; i < ALPHABET.length; i++) {
var x = ALPHABET.charAt(i);
var xc = x.charCodeAt(0);
if (BASE_MAP[xc] !== 255) {
throw new TypeError(x + " is ambiguous");
}
BASE_MAP[xc] = i;
}
var BASE = ALPHABET.length;
var LEADER = ALPHABET.charAt(0);
var FACTOR = Math.log(BASE) / Math.log(256);
var iFACTOR = Math.log(256) / Math.log(BASE);
function encode2(source) {
if (source instanceof Uint8Array) {
} else if (ArrayBuffer.isView(source)) {
source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);
} else if (Array.isArray(source)) {
source = Uint8Array.from(source);
}
if (!(source instanceof Uint8Array)) {
throw new TypeError("Expected Uint8Array");
}
if (source.length === 0) {
return "";
}
var zeroes = 0;
var length = 0;
var pbegin = 0;
var pend = source.length;
while (pbegin !== pend && source[pbegin] === 0) {
pbegin++;
zeroes++;
}
var size = (pend - pbegin) * iFACTOR + 1 >>> 0;
var b58 = new Uint8Array(size);
while (pbegin !== pend) {
var carry = source[pbegin];
var i2 = 0;
for (var it1 = size - 1; (carry !== 0 || i2 < length) && it1 !== -1; it1--, i2++) {
carry += 256 * b58[it1] >>> 0;
b58[it1] = carry % BASE >>> 0;
carry = carry / BASE >>> 0;
}
if (carry !== 0) {
throw new Error("Non-zero carry");
}
length = i2;
pbegin++;
}
var it2 = size - length;
while (it2 !== size && b58[it2] === 0) {
it2++;
}
var str = LEADER.repeat(zeroes);
for (; it2 < size; ++it2) {
str += ALPHABET.charAt(b58[it2]);
}
return str;
}
function decodeUnsafe(source) {
if (typeof source !== "string") {
throw new TypeError("Expected String");
}
if (source.length === 0) {
return new Uint8Array();
}
var psz = 0;
var zeroes = 0;
var length = 0;
while (source[psz] === LEADER) {
zeroes++;
psz++;
}
var size = (source.length - psz) * FACTOR + 1 >>> 0;
var b256 = new Uint8Array(size);
while (source[psz]) {
var carry = BASE_MAP[source.charCodeAt(psz)];
if (carry === 255) {
return;
}
var i2 = 0;
for (var it3 = size - 1; (carry !== 0 || i2 < length) && it3 !== -1; it3--, i2++) {
carry += BASE * b256[it3] >>> 0;
b256[it3] = carry % 256 >>> 0;
carry = carry / 256 >>> 0;
}
if (carry !== 0) {
throw new Error("Non-zero carry");
}
length = i2;
psz++;
}
var it4 = size - length;
while (it4 !== size && b256[it4] === 0) {
it4++;
}
var vch = new Uint8Array(zeroes + (size - it4));
var j2 = zeroes;
while (it4 !== size) {
vch[j2++] = b256[it4++];
}
return vch;
}
function decode3(string) {
var buffer = decodeUnsafe(string);
if (buffer) {
return buffer;
}
throw new Error("Non-base" + BASE + " character");
}
return {
encode: encode2,
decodeUnsafe,
decode: decode3
};
}
module.exports = base;
}
});
// node_modules/bs58/index.js
var require_bs58 = __commonJS({
"node_modules/bs58/index.js"(exports, module) {
init_define_BUILD_VERSION();
init_esbuild_inject();
var basex = require_src();
var ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
module.exports = basex(ALPHABET);
}
});
// node_modules/int64-buffer/int64-buffer.js
var require_int64_buffer = __commonJS({
"node_modules/int64-buffer/int64-buffer.js"(exports) {
@ -13476,12 +13621,12 @@
init5();
}
if (typeof module !== "undefined") {
module.exports = encode;
module.exports = encode2;
} else if (typeof window !== "undefined") {
window["jpeg-js"] = window["jpeg-js"] || {};
window["jpeg-js"].encode = encode;
window["jpeg-js"].encode = encode2;
}
function encode(imgData, qu) {
function encode2(imgData, qu) {
if (typeof qu === "undefined")
qu = 50;
var encoder = new JPEGEncoder(qu);
@ -13769,21 +13914,21 @@
successiveACState = 0;
}
}
function decodeMcu(component2, decode3, mcu2, row, col) {
function decodeMcu(component2, decode4, mcu2, row, col) {
var mcuRow = mcu2 / mcusPerLine | 0;
var mcuCol = mcu2 % mcusPerLine;
var blockRow = mcuRow * component2.v + row;
var blockCol = mcuCol * component2.h + col;
if (component2.blocks[blockRow] === void 0 && opts.tolerantDecoding)
return;
decode3(component2, component2.blocks[blockRow][blockCol]);
decode4(component2, component2.blocks[blockRow][blockCol]);
}
function decodeBlock(component2, decode3, mcu2) {
function decodeBlock(component2, decode4, mcu2) {
var blockRow = mcu2 / component2.blocksPerLine | 0;
var blockCol = mcu2 % component2.blocksPerLine;
if (component2.blocks[blockRow] === void 0 && opts.tolerantDecoding)
return;
decode3(component2, component2.blocks[blockRow][blockCol]);
decode4(component2, component2.blocks[blockRow][blockCol]);
}
var componentsLength = components.length;
var component, i, j, k, n;
@ -14481,12 +14626,12 @@
return constructor;
}();
if (typeof module !== "undefined") {
module.exports = decode2;
module.exports = decode3;
} else if (typeof window !== "undefined") {
window["jpeg-js"] = window["jpeg-js"] || {};
window["jpeg-js"].decode = decode2;
window["jpeg-js"].decode = decode3;
}
function decode2(jpegData, userOpts = {}) {
function decode3(jpegData, userOpts = {}) {
var defaultOpts = {
colorTransform: void 0,
useTArray: false,
@ -14536,11 +14681,11 @@
"node_modules/jpeg-js/index.js"(exports, module) {
init_define_BUILD_VERSION();
init_esbuild_inject();
var encode = require_encoder();
var decode2 = require_decoder();
var encode2 = require_encoder();
var decode3 = require_decoder();
module.exports = {
encode,
decode: decode2
encode: encode2,
decode: decode3
};
}
});
@ -18231,6 +18376,7 @@
};
// src/pngv3.ts
var bs58 = __toESM(require_bs58(), 1);
var csettings2;
settings.subscribe((b) => {
csettings2 = b;
@ -18303,15 +18449,21 @@
const passed = buff.slice(4 + w.length);
if (!passed.toString().match(/^[0-9a-zA-Z+/=]+$/g))
continue;
try {
const decoded = import_buffer3.Buffer.from(passed.toString(), "base64").toString().split(" ").map((e) => {
if (!(e[0] in rprefs))
throw "Uhh";
return `https://${rprefs[e[0]]}/${e.slice(1)}`;
}).join(" ");
const k = await decodeCoom3Payload(import_buffer3.Buffer.from(decoded));
ret.push(...k.filter((e) => e).map((e) => e));
} finally {
const decoders = [
(b) => import_buffer3.Buffer.from(b.toString(), "base64").toString(),
(b) => import_buffer3.Buffer.from(bs58.decode(passed.toString())).toString()
];
for (const d of decoders) {
try {
const decoded = d(passed).split(" ").map((e) => {
if (!(e[0] in rprefs))
throw "Uhh";
return `https://${rprefs[e[0]]}/${e.slice(1)}`;
}).join(" ");
const k = await decodeCoom3Payload(import_buffer3.Buffer.from(decoded));
ret.push(...k.filter((e) => e).map((e) => e));
} catch (e) {
}
}
}
break;
@ -18376,7 +18528,7 @@
}
return "";
});
const injb = import_buffer3.Buffer.from(import_buffer3.Buffer.from(links.join(" ")).toString("base64"));
const injb = import_buffer3.Buffer.from(bs58.encode(import_buffer3.Buffer.from(links.join(" "))));
return inject_data(container, injb);
};
var has_embed = async (png) => {
@ -18406,6 +18558,8 @@
if (passed.match(/^[0-9a-zA-Z+/=]+$/g)) {
if (import_buffer3.Buffer.from(passed, "base64").toString().split(" ").every((l) => l[0] in rprefs))
return true;
if (import_buffer3.Buffer.from(bs58.decode(passed)).toString().split(" ").every((l) => l[0] in rprefs))
return true;
}
}
break;
@ -18759,7 +18913,7 @@
var injectTrue = async (b, links) => {
if (b.size / 20 < links.join(" ").length)
throw "Image too small to embed.";
const arr = new Uint8Array(await b.arrayBuffer());
const arr = new Uint8Array(new Uint8Array(await b.arrayBuffer()));
const buff = f5inst.embed(arr, new TextEncoder().encode(links.join(" ")));
return import_buffer6.Buffer.from(buff);
};
@ -21072,7 +21226,7 @@
// src/Components/App.svelte
function add_css8(target) {
append_styles(target, "svelte-2r0xqp", '.bepis.svelte-2r0xqp.svelte-2r0xqp{max-height:260px;overflow-y:auto}.tagcont.svelte-2r0xqp.svelte-2r0xqp{display:flex;gap:5px;margin-bottom:10px;flex-wrap:wrap}label.svelte-2r0xqp>input[type="text"].svelte-2r0xqp,label.svelte-2r0xqp>input[type="number"].svelte-2r0xqp{width:95%}.content.svelte-2r0xqp.svelte-2r0xqp{display:flex;flex-direction:column}.error.svelte-2r0xqp.svelte-2r0xqp{color:red}hr.svelte-2r0xqp.svelte-2r0xqp{width:100%}h1.svelte-2r0xqp.svelte-2r0xqp{text-align:center}.form.svelte-2r0xqp.svelte-2r0xqp{display:flex;flex-direction:column;gap:20px;position:absolute;padding:15px;border:1px solid white;background-color:black;border-radius:10px}.form.svelte-2r0xqp>label.svelte-2r0xqp{display:flex;flex-direction:column;gap:10px}.newsbox.svelte-2r0xqp.svelte-2r0xqp{max-height:300px;overflow-y:scroll}.backpanel.svelte-2r0xqp.svelte-2r0xqp{position:absolute;right:32px;padding:10px;width:15%;top:32px;border:1px solid;border-radius:5px;background-color:rgba(0, 0, 0, 0.8);pointer-events:all;backdrop-filter:blur(9px);max-height:80vh;min-width:321px}');
append_styles(target, "svelte-1d9zqg3", '.bepis.svelte-1d9zqg3.svelte-1d9zqg3{max-height:260px;overflow-y:auto}.tagcont.svelte-1d9zqg3.svelte-1d9zqg3{display:flex;gap:5px;margin-bottom:10px;flex-wrap:wrap}label.svelte-1d9zqg3>input[type="text"].svelte-1d9zqg3,label.svelte-1d9zqg3>input[type="number"].svelte-1d9zqg3{width:95%}.content.svelte-1d9zqg3.svelte-1d9zqg3{display:flex;flex-direction:column}.error.svelte-1d9zqg3.svelte-1d9zqg3{color:red}hr.svelte-1d9zqg3.svelte-1d9zqg3{width:100%}h1.svelte-1d9zqg3.svelte-1d9zqg3{text-align:center;margin-bottom:0}h4.svelte-1d9zqg3.svelte-1d9zqg3{margin:0}.form.svelte-1d9zqg3.svelte-1d9zqg3{display:flex;flex-direction:column;gap:20px;position:absolute;padding:15px;border:1px solid white;background-color:black;border-radius:10px}.form.svelte-1d9zqg3>label.svelte-1d9zqg3{display:flex;flex-direction:column;gap:10px}.newsbox.svelte-1d9zqg3.svelte-1d9zqg3{max-height:300px;overflow-y:scroll}.backpanel.svelte-1d9zqg3.svelte-1d9zqg3{position:absolute;right:32px;padding:10px;width:15%;top:32px;border:1px solid;border-radius:5px;background-color:rgba(0, 0, 0, 0.8);pointer-events:all;backdrop-filter:blur(9px);max-height:80vh;min-width:321px}');
}
function get_each_context2(ctx, list, i) {
const child_ctx = ctx.slice();
@ -21109,8 +21263,10 @@
let t0;
let t1;
let t2;
let h4;
let t4;
let hr;
let t3;
let t5;
let tabs;
let div1_transition;
let current;
@ -21128,13 +21284,17 @@
t0 = text("PEE Settings 0.");
t1 = text(ctx[0]);
t2 = space();
h4 = element("h4");
h4.innerHTML = `<a href="https://2chen.moe/tech/1353679">Join us on 2chen!</a>`;
t4 = space();
hr = element("hr");
t3 = space();
t5 = space();
create_component(tabs.$$.fragment);
attr(h1, "class", "svelte-2r0xqp");
attr(hr, "class", "svelte-2r0xqp");
attr(div0, "class", "content svelte-2r0xqp");
attr(div1, "class", "backpanel svelte-2r0xqp");
attr(h1, "class", "svelte-1d9zqg3");
attr(h4, "class", "svelte-1d9zqg3");
attr(hr, "class", "svelte-1d9zqg3");
attr(div0, "class", "content svelte-1d9zqg3");
attr(div1, "class", "backpanel svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, div1, anchor);
@ -21143,8 +21303,10 @@
append(h1, t0);
append(h1, t1);
append(div0, t2);
append(div0, h4);
append(div0, t4);
append(div0, hr);
append(div0, t3);
append(div0, t5);
mount_component(tabs, div0, null);
current = true;
},
@ -21538,8 +21700,8 @@
if_block1_anchor = empty();
attr(a, "title", "Only requires Search Files permission. See Hydrus docs on where to set this up.");
attr(input, "type", "text");
attr(input, "class", "svelte-2r0xqp");
attr(label, "class", "svelte-2r0xqp");
attr(input, "class", "svelte-1d9zqg3");
attr(label, "class", "svelte-1d9zqg3");
},
m(target, anchor) {
if (if_block0)
@ -21615,7 +21777,7 @@
c() {
span = element("span");
t = text(t_value);
attr(span, "class", "error svelte-2r0xqp");
attr(span, "class", "error svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, span, anchor);
@ -21652,12 +21814,12 @@
input1 = element("input");
set_style(input0, "width", "5ch");
attr(input0, "type", "number");
attr(input0, "class", "svelte-2r0xqp");
attr(label0, "class", "svelte-2r0xqp");
attr(input0, "class", "svelte-1d9zqg3");
attr(label0, "class", "svelte-1d9zqg3");
attr(input1, "placeholder", "Restrict to these tags (space to separate tags, _ to separate words)");
attr(input1, "type", "text");
attr(input1, "class", "svelte-2r0xqp");
attr(label1, "class", "svelte-2r0xqp");
attr(input1, "class", "svelte-1d9zqg3");
attr(label1, "class", "svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, label0, anchor);
@ -22214,9 +22376,9 @@
t13 = space();
input1 = element("input");
attr(input0, "type", "checkbox");
attr(div0, "class", "tagcont svelte-2r0xqp");
attr(hr, "class", "svelte-2r0xqp");
attr(div1, "class", "tagcont svelte-2r0xqp");
attr(div0, "class", "tagcont svelte-1d9zqg3");
attr(hr, "class", "svelte-1d9zqg3");
attr(div1, "class", "tagcont svelte-1d9zqg3");
attr(input1, "placeholder", "Press enter after typing your tag");
},
m(target, anchor) {
@ -22426,9 +22588,9 @@
a = element("a");
a.textContent = "?";
attr(input, "type", "number");
attr(input, "class", "svelte-2r0xqp");
attr(input, "class", "svelte-1d9zqg3");
attr(a, "title", "Higher will filter more potentially different images, lower will let more identical images through");
attr(label, "class", "svelte-2r0xqp");
attr(label, "class", "svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, label, anchor);
@ -22567,21 +22729,21 @@
button.textContent = "Add";
attr(input0, "type", "text");
attr(input0, "placeholder", "Safebooru");
attr(input0, "class", "svelte-2r0xqp");
attr(label0, "class", "svelte-2r0xqp");
attr(input0, "class", "svelte-1d9zqg3");
attr(label0, "class", "svelte-1d9zqg3");
attr(input1, "type", "text");
attr(input1, "placeholder", "safebooru.com");
attr(input1, "class", "svelte-2r0xqp");
attr(label1, "class", "svelte-2r0xqp");
attr(input1, "class", "svelte-1d9zqg3");
attr(label1, "class", "svelte-1d9zqg3");
attr(input2, "type", "text");
attr(input2, "placeholder", "/post.json?tags=md5:");
attr(input2, "class", "svelte-2r0xqp");
attr(label2, "class", "svelte-2r0xqp");
attr(input2, "class", "svelte-1d9zqg3");
attr(label2, "class", "svelte-1d9zqg3");
attr(input3, "type", "text");
attr(input3, "placeholder", "https://safebooru.com/post/show/");
attr(input3, "class", "svelte-2r0xqp");
attr(label3, "class", "svelte-2r0xqp");
attr(div, "class", "form svelte-2r0xqp");
attr(input3, "class", "svelte-1d9zqg3");
attr(label3, "class", "svelte-1d9zqg3");
attr(div, "class", "form svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, div, anchor);
@ -22815,8 +22977,8 @@
if (ctx[7].fhost === void 0)
add_render_callback(() => ctx[54].call(select));
attr(input, "type", "number");
attr(input, "class", "svelte-2r0xqp");
attr(label, "class", "svelte-2r0xqp");
attr(input, "class", "svelte-1d9zqg3");
attr(label, "class", "svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, p, anchor);
@ -22917,7 +23079,7 @@
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
attr(div, "class", "bepis svelte-2r0xqp");
attr(div, "class", "bepis svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, div, anchor);
@ -23205,7 +23367,7 @@
t2 = space();
div = element("div");
if_block.c();
attr(div, "class", "newsbox svelte-2r0xqp");
attr(div, "class", "newsbox svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, p, anchor);

2
chrome/manifest.json

@ -2,7 +2,7 @@
"manifest_version": 3,
"name": "PngExtraEmbedder",
"description": "Discover embedded files on 4chan and archives!",
"version": "0.268",
"version": "0.270",
"icons": {
"64": "1449696017588.png"
},

280
dist/main.js

@ -51,7 +51,7 @@
var define_BUILD_VERSION_default;
var init_define_BUILD_VERSION = __esm({
"<define:BUILD_VERSION>"() {
define_BUILD_VERSION_default = [0, 268];
define_BUILD_VERSION_default = [0, 270];
}
});
@ -5213,6 +5213,151 @@
}
});
// node_modules/base-x/src/index.js
var require_src = __commonJS({
"node_modules/base-x/src/index.js"(exports, module) {
"use strict";
init_define_BUILD_VERSION();
init_esbuild_inject();
function base(ALPHABET) {
if (ALPHABET.length >= 255) {
throw new TypeError("Alphabet too long");
}
var BASE_MAP = new Uint8Array(256);
for (var j = 0; j < BASE_MAP.length; j++) {
BASE_MAP[j] = 255;
}
for (var i = 0; i < ALPHABET.length; i++) {
var x = ALPHABET.charAt(i);
var xc = x.charCodeAt(0);
if (BASE_MAP[xc] !== 255) {
throw new TypeError(x + " is ambiguous");
}
BASE_MAP[xc] = i;
}
var BASE = ALPHABET.length;
var LEADER = ALPHABET.charAt(0);
var FACTOR = Math.log(BASE) / Math.log(256);
var iFACTOR = Math.log(256) / Math.log(BASE);
function encode2(source) {
if (source instanceof Uint8Array) {
} else if (ArrayBuffer.isView(source)) {
source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);
} else if (Array.isArray(source)) {
source = Uint8Array.from(source);
}
if (!(source instanceof Uint8Array)) {
throw new TypeError("Expected Uint8Array");
}
if (source.length === 0) {
return "";
}
var zeroes = 0;
var length = 0;
var pbegin = 0;
var pend = source.length;
while (pbegin !== pend && source[pbegin] === 0) {
pbegin++;
zeroes++;
}
var size = (pend - pbegin) * iFACTOR + 1 >>> 0;
var b58 = new Uint8Array(size);
while (pbegin !== pend) {
var carry = source[pbegin];
var i2 = 0;
for (var it1 = size - 1; (carry !== 0 || i2 < length) && it1 !== -1; it1--, i2++) {
carry += 256 * b58[it1] >>> 0;
b58[it1] = carry % BASE >>> 0;
carry = carry / BASE >>> 0;
}
if (carry !== 0) {
throw new Error("Non-zero carry");
}
length = i2;
pbegin++;
}
var it2 = size - length;
while (it2 !== size && b58[it2] === 0) {
it2++;
}
var str = LEADER.repeat(zeroes);
for (; it2 < size; ++it2) {
str += ALPHABET.charAt(b58[it2]);
}
return str;
}
function decodeUnsafe(source) {
if (typeof source !== "string") {
throw new TypeError("Expected String");
}
if (source.length === 0) {
return new Uint8Array();
}
var psz = 0;
var zeroes = 0;
var length = 0;
while (source[psz] === LEADER) {
zeroes++;
psz++;
}
var size = (source.length - psz) * FACTOR + 1 >>> 0;
var b256 = new Uint8Array(size);
while (source[psz]) {
var carry = BASE_MAP[source.charCodeAt(psz)];
if (carry === 255) {
return;
}
var i2 = 0;
for (var it3 = size - 1; (carry !== 0 || i2 < length) && it3 !== -1; it3--, i2++) {
carry += BASE * b256[it3] >>> 0;
b256[it3] = carry % 256 >>> 0;
carry = carry / 256 >>> 0;
}
if (carry !== 0) {
throw new Error("Non-zero carry");
}
length = i2;
psz++;
}
var it4 = size - length;
while (it4 !== size && b256[it4] === 0) {
it4++;
}
var vch = new Uint8Array(zeroes + (size - it4));
var j2 = zeroes;
while (it4 !== size) {
vch[j2++] = b256[it4++];
}
return vch;
}
function decode3(string) {
var buffer = decodeUnsafe(string);
if (buffer) {
return buffer;
}
throw new Error("Non-base" + BASE + " character");
}
return {
encode: encode2,
decodeUnsafe,
decode: decode3
};
}
module.exports = base;
}
});
// node_modules/bs58/index.js
var require_bs58 = __commonJS({
"node_modules/bs58/index.js"(exports, module) {
init_define_BUILD_VERSION();
init_esbuild_inject();
var basex = require_src();
var ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
module.exports = basex(ALPHABET);
}
});
// node_modules/int64-buffer/int64-buffer.js
var require_int64_buffer = __commonJS({
"node_modules/int64-buffer/int64-buffer.js"(exports) {
@ -13476,12 +13621,12 @@
init5();
}
if (typeof module !== "undefined") {
module.exports = encode;
module.exports = encode2;
} else if (typeof window !== "undefined") {
window["jpeg-js"] = window["jpeg-js"] || {};
window["jpeg-js"].encode = encode;
window["jpeg-js"].encode = encode2;
}
function encode(imgData, qu) {
function encode2(imgData, qu) {
if (typeof qu === "undefined")
qu = 50;
var encoder = new JPEGEncoder(qu);
@ -13769,21 +13914,21 @@
successiveACState = 0;
}
}
function decodeMcu(component2, decode3, mcu2, row, col) {
function decodeMcu(component2, decode4, mcu2, row, col) {
var mcuRow = mcu2 / mcusPerLine | 0;
var mcuCol = mcu2 % mcusPerLine;
var blockRow = mcuRow * component2.v + row;
var blockCol = mcuCol * component2.h + col;
if (component2.blocks[blockRow] === void 0 && opts.tolerantDecoding)
return;
decode3(component2, component2.blocks[blockRow][blockCol]);
decode4(component2, component2.blocks[blockRow][blockCol]);
}
function decodeBlock(component2, decode3, mcu2) {
function decodeBlock(component2, decode4, mcu2) {
var blockRow = mcu2 / component2.blocksPerLine | 0;
var blockCol = mcu2 % component2.blocksPerLine;
if (component2.blocks[blockRow] === void 0 && opts.tolerantDecoding)
return;
decode3(component2, component2.blocks[blockRow][blockCol]);
decode4(component2, component2.blocks[blockRow][blockCol]);
}
var componentsLength = components.length;
var component, i, j, k, n;
@ -14481,12 +14626,12 @@
return constructor;
}();
if (typeof module !== "undefined") {
module.exports = decode2;
module.exports = decode3;
} else if (typeof window !== "undefined") {
window["jpeg-js"] = window["jpeg-js"] || {};
window["jpeg-js"].decode = decode2;
window["jpeg-js"].decode = decode3;
}
function decode2(jpegData, userOpts = {}) {
function decode3(jpegData, userOpts = {}) {
var defaultOpts = {
colorTransform: void 0,
useTArray: false,
@ -14536,11 +14681,11 @@
"node_modules/jpeg-js/index.js"(exports, module) {
init_define_BUILD_VERSION();
init_esbuild_inject();
var encode = require_encoder();
var decode2 = require_decoder();
var encode2 = require_encoder();
var decode3 = require_decoder();
module.exports = {
encode,
decode: decode2
encode: encode2,
decode: decode3
};
}
});
@ -18066,6 +18211,7 @@
};
// src/pngv3.ts
var bs58 = __toESM(require_bs58(), 1);
var csettings2;
settings.subscribe((b) => {
csettings2 = b;
@ -18138,15 +18284,21 @@
const passed = buff.slice(4 + w.length);
if (!passed.toString().match(/^[0-9a-zA-Z+/=]+$/g))
continue;
try {
const decoded = import_buffer3.Buffer.from(passed.toString(), "base64").toString().split(" ").map((e) => {
if (!(e[0] in rprefs))
throw "Uhh";
return `https://${rprefs[e[0]]}/${e.slice(1)}`;
}).join(" ");
const k = await decodeCoom3Payload(import_buffer3.Buffer.from(decoded));
ret.push(...k.filter((e) => e).map((e) => e));
} finally {
const decoders = [
(b) => import_buffer3.Buffer.from(b.toString(), "base64").toString(),
(b) => import_buffer3.Buffer.from(bs58.decode(passed.toString())).toString()
];
for (const d of decoders) {
try {
const decoded = d(passed).split(" ").map((e) => {
if (!(e[0] in rprefs))
throw "Uhh";
return `https://${rprefs[e[0]]}/${e.slice(1)}`;
}).join(" ");
const k = await decodeCoom3Payload(import_buffer3.Buffer.from(decoded));
ret.push(...k.filter((e) => e).map((e) => e));
} catch (e) {
}
}
}
break;
@ -18211,7 +18363,7 @@
}
return "";
});
const injb = import_buffer3.Buffer.from(import_buffer3.Buffer.from(links.join(" ")).toString("base64"));
const injb = import_buffer3.Buffer.from(bs58.encode(import_buffer3.Buffer.from(links.join(" "))));
return inject_data(container, injb);
};
var has_embed = async (png) => {
@ -18241,6 +18393,8 @@
if (passed.match(/^[0-9a-zA-Z+/=]+$/g)) {
if (import_buffer3.Buffer.from(passed, "base64").toString().split(" ").every((l) => l[0] in rprefs))
return true;
if (import_buffer3.Buffer.from(bs58.decode(passed)).toString().split(" ").every((l) => l[0] in rprefs))
return true;
}
}
break;
@ -18594,7 +18748,7 @@
var injectTrue = async (b, links) => {
if (b.size / 20 < links.join(" ").length)
throw "Image too small to embed.";
const arr = new Uint8Array(await b.arrayBuffer());
const arr = new Uint8Array(new Uint8Array(await b.arrayBuffer()));
const buff = f5inst.embed(arr, new TextEncoder().encode(links.join(" ")));
return import_buffer6.Buffer.from(buff);
};
@ -20907,7 +21061,7 @@
// src/Components/App.svelte
function add_css8(target) {
append_styles(target, "svelte-2r0xqp", '.bepis.svelte-2r0xqp.svelte-2r0xqp{max-height:260px;overflow-y:auto}.tagcont.svelte-2r0xqp.svelte-2r0xqp{display:flex;gap:5px;margin-bottom:10px;flex-wrap:wrap}label.svelte-2r0xqp>input[type="text"].svelte-2r0xqp,label.svelte-2r0xqp>input[type="number"].svelte-2r0xqp{width:95%}.content.svelte-2r0xqp.svelte-2r0xqp{display:flex;flex-direction:column}.error.svelte-2r0xqp.svelte-2r0xqp{color:red}hr.svelte-2r0xqp.svelte-2r0xqp{width:100%}h1.svelte-2r0xqp.svelte-2r0xqp{text-align:center}.form.svelte-2r0xqp.svelte-2r0xqp{display:flex;flex-direction:column;gap:20px;position:absolute;padding:15px;border:1px solid white;background-color:black;border-radius:10px}.form.svelte-2r0xqp>label.svelte-2r0xqp{display:flex;flex-direction:column;gap:10px}.newsbox.svelte-2r0xqp.svelte-2r0xqp{max-height:300px;overflow-y:scroll}.backpanel.svelte-2r0xqp.svelte-2r0xqp{position:absolute;right:32px;padding:10px;width:15%;top:32px;border:1px solid;border-radius:5px;background-color:rgba(0, 0, 0, 0.8);pointer-events:all;backdrop-filter:blur(9px);max-height:80vh;min-width:321px}');
append_styles(target, "svelte-1d9zqg3", '.bepis.svelte-1d9zqg3.svelte-1d9zqg3{max-height:260px;overflow-y:auto}.tagcont.svelte-1d9zqg3.svelte-1d9zqg3{display:flex;gap:5px;margin-bottom:10px;flex-wrap:wrap}label.svelte-1d9zqg3>input[type="text"].svelte-1d9zqg3,label.svelte-1d9zqg3>input[type="number"].svelte-1d9zqg3{width:95%}.content.svelte-1d9zqg3.svelte-1d9zqg3{display:flex;flex-direction:column}.error.svelte-1d9zqg3.svelte-1d9zqg3{color:red}hr.svelte-1d9zqg3.svelte-1d9zqg3{width:100%}h1.svelte-1d9zqg3.svelte-1d9zqg3{text-align:center;margin-bottom:0}h4.svelte-1d9zqg3.svelte-1d9zqg3{margin:0}.form.svelte-1d9zqg3.svelte-1d9zqg3{display:flex;flex-direction:column;gap:20px;position:absolute;padding:15px;border:1px solid white;background-color:black;border-radius:10px}.form.svelte-1d9zqg3>label.svelte-1d9zqg3{display:flex;flex-direction:column;gap:10px}.newsbox.svelte-1d9zqg3.svelte-1d9zqg3{max-height:300px;overflow-y:scroll}.backpanel.svelte-1d9zqg3.svelte-1d9zqg3{position:absolute;right:32px;padding:10px;width:15%;top:32px;border:1px solid;border-radius:5px;background-color:rgba(0, 0, 0, 0.8);pointer-events:all;backdrop-filter:blur(9px);max-height:80vh;min-width:321px}');
}
function get_each_context2(ctx, list, i) {
const child_ctx = ctx.slice();
@ -20944,8 +21098,10 @@
let t0;
let t1;
let t2;
let h4;
let t4;
let hr;
let t3;
let t5;
let tabs;
let div1_transition;
let current;
@ -20963,13 +21119,17 @@
t0 = text("PEE Settings 0.");
t1 = text(ctx[0]);
t2 = space();
h4 = element("h4");
h4.innerHTML = `<a href="https://2chen.moe/tech/1353679">Join us on 2chen!</a>`;
t4 = space();
hr = element("hr");
t3 = space();
t5 = space();
create_component(tabs.$$.fragment);
attr(h1, "class", "svelte-2r0xqp");
attr(hr, "class", "svelte-2r0xqp");
attr(div0, "class", "content svelte-2r0xqp");
attr(div1, "class", "backpanel svelte-2r0xqp");
attr(h1, "class", "svelte-1d9zqg3");
attr(h4, "class", "svelte-1d9zqg3");
attr(hr, "class", "svelte-1d9zqg3");
attr(div0, "class", "content svelte-1d9zqg3");
attr(div1, "class", "backpanel svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, div1, anchor);
@ -20978,8 +21138,10 @@
append(h1, t0);
append(h1, t1);
append(div0, t2);
append(div0, h4);
append(div0, t4);
append(div0, hr);
append(div0, t3);
append(div0, t5);
mount_component(tabs, div0, null);
current = true;
},
@ -21373,8 +21535,8 @@
if_block1_anchor = empty();
attr(a, "title", "Only requires Search Files permission. See Hydrus docs on where to set this up.");
attr(input, "type", "text");
attr(input, "class", "svelte-2r0xqp");
attr(label, "class", "svelte-2r0xqp");
attr(input, "class", "svelte-1d9zqg3");
attr(label, "class", "svelte-1d9zqg3");
},
m(target, anchor) {
if (if_block0)
@ -21450,7 +21612,7 @@
c() {
span = element("span");
t = text(t_value);
attr(span, "class", "error svelte-2r0xqp");
attr(span, "class", "error svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, span, anchor);
@ -21487,12 +21649,12 @@
input1 = element("input");
set_style(input0, "width", "5ch");
attr(input0, "type", "number");
attr(input0, "class", "svelte-2r0xqp");
attr(label0, "class", "svelte-2r0xqp");
attr(input0, "class", "svelte-1d9zqg3");
attr(label0, "class", "svelte-1d9zqg3");
attr(input1, "placeholder", "Restrict to these tags (space to separate tags, _ to separate words)");
attr(input1, "type", "text");
attr(input1, "class", "svelte-2r0xqp");
attr(label1, "class", "svelte-2r0xqp");
attr(input1, "class", "svelte-1d9zqg3");
attr(label1, "class", "svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, label0, anchor);
@ -22049,9 +22211,9 @@
t13 = space();
input1 = element("input");
attr(input0, "type", "checkbox");
attr(div0, "class", "tagcont svelte-2r0xqp");
attr(hr, "class", "svelte-2r0xqp");
attr(div1, "class", "tagcont svelte-2r0xqp");
attr(div0, "class", "tagcont svelte-1d9zqg3");
attr(hr, "class", "svelte-1d9zqg3");
attr(div1, "class", "tagcont svelte-1d9zqg3");
attr(input1, "placeholder", "Press enter after typing your tag");
},
m(target, anchor) {
@ -22261,9 +22423,9 @@
a = element("a");
a.textContent = "?";
attr(input, "type", "number");
attr(input, "class", "svelte-2r0xqp");
attr(input, "class", "svelte-1d9zqg3");
attr(a, "title", "Higher will filter more potentially different images, lower will let more identical images through");
attr(label, "class", "svelte-2r0xqp");
attr(label, "class", "svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, label, anchor);
@ -22402,21 +22564,21 @@
button.textContent = "Add";
attr(input0, "type", "text");
attr(input0, "placeholder", "Safebooru");
attr(input0, "class", "svelte-2r0xqp");
attr(label0, "class", "svelte-2r0xqp");
attr(input0, "class", "svelte-1d9zqg3");
attr(label0, "class", "svelte-1d9zqg3");
attr(input1, "type", "text");
attr(input1, "placeholder", "safebooru.com");
attr(input1, "class", "svelte-2r0xqp");
attr(label1, "class", "svelte-2r0xqp");
attr(input1, "class", "svelte-1d9zqg3");
attr(label1, "class", "svelte-1d9zqg3");
attr(input2, "type", "text");
attr(input2, "placeholder", "/post.json?tags=md5:");
attr(input2, "class", "svelte-2r0xqp");
attr(label2, "class", "svelte-2r0xqp");
attr(input2, "class", "svelte-1d9zqg3");
attr(label2, "class", "svelte-1d9zqg3");
attr(input3, "type", "text");
attr(input3, "placeholder", "https://safebooru.com/post/show/");
attr(input3, "class", "svelte-2r0xqp");
attr(label3, "class", "svelte-2r0xqp");
attr(div, "class", "form svelte-2r0xqp");
attr(input3, "class", "svelte-1d9zqg3");
attr(label3, "class", "svelte-1d9zqg3");
attr(div, "class", "form svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, div, anchor);
@ -22650,8 +22812,8 @@
if (ctx[7].fhost === void 0)
add_render_callback(() => ctx[54].call(select));
attr(input, "type", "number");
attr(input, "class", "svelte-2r0xqp");
attr(label, "class", "svelte-2r0xqp");
attr(input, "class", "svelte-1d9zqg3");
attr(label, "class", "svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, p, anchor);
@ -22752,7 +22914,7 @@
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
attr(div, "class", "bepis svelte-2r0xqp");
attr(div, "class", "bepis svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, div, anchor);
@ -23040,7 +23202,7 @@
t2 = space();
div = element("div");
if_block.c();
attr(div, "class", "newsbox svelte-2r0xqp");
attr(div, "class", "newsbox svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, p, anchor);

278
firefox/dist/main.js

@ -51,7 +51,7 @@
var define_BUILD_VERSION_default;
var init_define_BUILD_VERSION = __esm({
"<define:BUILD_VERSION>"() {
define_BUILD_VERSION_default = [0, 269];
define_BUILD_VERSION_default = [0, 270];
}
});
@ -5213,6 +5213,151 @@
}
});
// node_modules/base-x/src/index.js
var require_src = __commonJS({
"node_modules/base-x/src/index.js"(exports, module) {
"use strict";
init_define_BUILD_VERSION();
init_esbuild_inject();
function base(ALPHABET) {
if (ALPHABET.length >= 255) {
throw new TypeError("Alphabet too long");
}
var BASE_MAP = new Uint8Array(256);
for (var j = 0; j < BASE_MAP.length; j++) {
BASE_MAP[j] = 255;
}
for (var i = 0; i < ALPHABET.length; i++) {
var x = ALPHABET.charAt(i);
var xc = x.charCodeAt(0);
if (BASE_MAP[xc] !== 255) {
throw new TypeError(x + " is ambiguous");
}
BASE_MAP[xc] = i;
}
var BASE = ALPHABET.length;
var LEADER = ALPHABET.charAt(0);
var FACTOR = Math.log(BASE) / Math.log(256);
var iFACTOR = Math.log(256) / Math.log(BASE);
function encode2(source) {
if (source instanceof Uint8Array) {
} else if (ArrayBuffer.isView(source)) {
source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);
} else if (Array.isArray(source)) {
source = Uint8Array.from(source);
}
if (!(source instanceof Uint8Array)) {
throw new TypeError("Expected Uint8Array");
}
if (source.length === 0) {
return "";
}
var zeroes = 0;
var length = 0;
var pbegin = 0;
var pend = source.length;
while (pbegin !== pend && source[pbegin] === 0) {
pbegin++;
zeroes++;
}
var size = (pend - pbegin) * iFACTOR + 1 >>> 0;
var b58 = new Uint8Array(size);
while (pbegin !== pend) {
var carry = source[pbegin];
var i2 = 0;
for (var it1 = size - 1; (carry !== 0 || i2 < length) && it1 !== -1; it1--, i2++) {
carry += 256 * b58[it1] >>> 0;
b58[it1] = carry % BASE >>> 0;
carry = carry / BASE >>> 0;
}
if (carry !== 0) {
throw new Error("Non-zero carry");
}
length = i2;
pbegin++;
}
var it2 = size - length;
while (it2 !== size && b58[it2] === 0) {
it2++;
}
var str = LEADER.repeat(zeroes);
for (; it2 < size; ++it2) {
str += ALPHABET.charAt(b58[it2]);
}
return str;
}
function decodeUnsafe(source) {
if (typeof source !== "string") {
throw new TypeError("Expected String");
}
if (source.length === 0) {
return new Uint8Array();
}
var psz = 0;
var zeroes = 0;
var length = 0;
while (source[psz] === LEADER) {
zeroes++;
psz++;
}
var size = (source.length - psz) * FACTOR + 1 >>> 0;
var b256 = new Uint8Array(size);
while (source[psz]) {
var carry = BASE_MAP[source.charCodeAt(psz)];
if (carry === 255) {
return;
}
var i2 = 0;
for (var it3 = size - 1; (carry !== 0 || i2 < length) && it3 !== -1; it3--, i2++) {
carry += BASE * b256[it3] >>> 0;
b256[it3] = carry % 256 >>> 0;
carry = carry / 256 >>> 0;
}
if (carry !== 0) {
throw new Error("Non-zero carry");
}
length = i2;
psz++;
}
var it4 = size - length;
while (it4 !== size && b256[it4] === 0) {
it4++;
}
var vch = new Uint8Array(zeroes + (size - it4));
var j2 = zeroes;
while (it4 !== size) {
vch[j2++] = b256[it4++];
}
return vch;
}
function decode3(string) {
var buffer = decodeUnsafe(string);
if (buffer) {
return buffer;
}
throw new Error("Non-base" + BASE + " character");
}
return {
encode: encode2,
decodeUnsafe,
decode: decode3
};
}
module.exports = base;
}
});
// node_modules/bs58/index.js
var require_bs58 = __commonJS({
"node_modules/bs58/index.js"(exports, module) {
init_define_BUILD_VERSION();
init_esbuild_inject();
var basex = require_src();
var ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
module.exports = basex(ALPHABET);
}
});
// node_modules/int64-buffer/int64-buffer.js
var require_int64_buffer = __commonJS({
"node_modules/int64-buffer/int64-buffer.js"(exports) {
@ -13476,12 +13621,12 @@
init5();
}
if (typeof module !== "undefined") {
module.exports = encode;
module.exports = encode2;
} else if (typeof window !== "undefined") {
window["jpeg-js"] = window["jpeg-js"] || {};
window["jpeg-js"].encode = encode;
window["jpeg-js"].encode = encode2;
}
function encode(imgData, qu) {
function encode2(imgData, qu) {
if (typeof qu === "undefined")
qu = 50;
var encoder = new JPEGEncoder(qu);
@ -13769,21 +13914,21 @@
successiveACState = 0;
}
}
function decodeMcu(component2, decode3, mcu2, row, col) {
function decodeMcu(component2, decode4, mcu2, row, col) {
var mcuRow = mcu2 / mcusPerLine | 0;
var mcuCol = mcu2 % mcusPerLine;
var blockRow = mcuRow * component2.v + row;
var blockCol = mcuCol * component2.h + col;
if (component2.blocks[blockRow] === void 0 && opts.tolerantDecoding)
return;
decode3(component2, component2.blocks[blockRow][blockCol]);
decode4(component2, component2.blocks[blockRow][blockCol]);
}
function decodeBlock(component2, decode3, mcu2) {
function decodeBlock(component2, decode4, mcu2) {
var blockRow = mcu2 / component2.blocksPerLine | 0;
var blockCol = mcu2 % component2.blocksPerLine;
if (component2.blocks[blockRow] === void 0 && opts.tolerantDecoding)
return;
decode3(component2, component2.blocks[blockRow][blockCol]);
decode4(component2, component2.blocks[blockRow][blockCol]);
}
var componentsLength = components.length;
var component, i, j, k, n;
@ -14481,12 +14626,12 @@
return constructor;
}();
if (typeof module !== "undefined") {
module.exports = decode2;
module.exports = decode3;
} else if (typeof window !== "undefined") {
window["jpeg-js"] = window["jpeg-js"] || {};
window["jpeg-js"].decode = decode2;
window["jpeg-js"].decode = decode3;
}
function decode2(jpegData, userOpts = {}) {
function decode3(jpegData, userOpts = {}) {
var defaultOpts = {
colorTransform: void 0,
useTArray: false,
@ -14536,11 +14681,11 @@
"node_modules/jpeg-js/index.js"(exports, module) {
init_define_BUILD_VERSION();
init_esbuild_inject();
var encode = require_encoder();
var decode2 = require_decoder();
var encode2 = require_encoder();
var decode3 = require_decoder();
module.exports = {
encode,
decode: decode2
encode: encode2,
decode: decode3
};
}
});
@ -18208,6 +18353,7 @@
};
// src/pngv3.ts
var bs58 = __toESM(require_bs58(), 1);
var csettings2;
settings.subscribe((b) => {
csettings2 = b;
@ -18280,15 +18426,21 @@
const passed = buff.slice(4 + w.length);
if (!passed.toString().match(/^[0-9a-zA-Z+/=]+$/g))
continue;
try {
const decoded = import_buffer3.Buffer.from(passed.toString(), "base64").toString().split(" ").map((e) => {
if (!(e[0] in rprefs))
throw "Uhh";
return `https://${rprefs[e[0]]}/${e.slice(1)}`;
}).join(" ");
const k = await decodeCoom3Payload(import_buffer3.Buffer.from(decoded));
ret.push(...k.filter((e) => e).map((e) => e));
} finally {
const decoders = [
(b) => import_buffer3.Buffer.from(b.toString(), "base64").toString(),
(b) => import_buffer3.Buffer.from(bs58.decode(passed.toString())).toString()
];
for (const d of decoders) {
try {
const decoded = d(passed).split(" ").map((e) => {
if (!(e[0] in rprefs))
throw "Uhh";
return `https://${rprefs[e[0]]}/${e.slice(1)}`;
}).join(" ");
const k = await decodeCoom3Payload(import_buffer3.Buffer.from(decoded));
ret.push(...k.filter((e) => e).map((e) => e));
} catch (e) {
}
}
}
break;
@ -18353,7 +18505,7 @@
}
return "";
});
const injb = import_buffer3.Buffer.from(import_buffer3.Buffer.from(links.join(" ")).toString("base64"));
const injb = import_buffer3.Buffer.from(bs58.encode(import_buffer3.Buffer.from(links.join(" "))));
return inject_data(container, injb);
};
var has_embed = async (png) => {
@ -18383,6 +18535,8 @@
if (passed.match(/^[0-9a-zA-Z+/=]+$/g)) {
if (import_buffer3.Buffer.from(passed, "base64").toString().split(" ").every((l) => l[0] in rprefs))
return true;
if (import_buffer3.Buffer.from(bs58.decode(passed)).toString().split(" ").every((l) => l[0] in rprefs))
return true;
}
}
break;
@ -21049,7 +21203,7 @@
// src/Components/App.svelte
function add_css8(target) {
append_styles(target, "svelte-2r0xqp", '.bepis.svelte-2r0xqp.svelte-2r0xqp{max-height:260px;overflow-y:auto}.tagcont.svelte-2r0xqp.svelte-2r0xqp{display:flex;gap:5px;margin-bottom:10px;flex-wrap:wrap}label.svelte-2r0xqp>input[type="text"].svelte-2r0xqp,label.svelte-2r0xqp>input[type="number"].svelte-2r0xqp{width:95%}.content.svelte-2r0xqp.svelte-2r0xqp{display:flex;flex-direction:column}.error.svelte-2r0xqp.svelte-2r0xqp{color:red}hr.svelte-2r0xqp.svelte-2r0xqp{width:100%}h1.svelte-2r0xqp.svelte-2r0xqp{text-align:center}.form.svelte-2r0xqp.svelte-2r0xqp{display:flex;flex-direction:column;gap:20px;position:absolute;padding:15px;border:1px solid white;background-color:black;border-radius:10px}.form.svelte-2r0xqp>label.svelte-2r0xqp{display:flex;flex-direction:column;gap:10px}.newsbox.svelte-2r0xqp.svelte-2r0xqp{max-height:300px;overflow-y:scroll}.backpanel.svelte-2r0xqp.svelte-2r0xqp{position:absolute;right:32px;padding:10px;width:15%;top:32px;border:1px solid;border-radius:5px;background-color:rgba(0, 0, 0, 0.8);pointer-events:all;backdrop-filter:blur(9px);max-height:80vh;min-width:321px}');
append_styles(target, "svelte-1d9zqg3", '.bepis.svelte-1d9zqg3.svelte-1d9zqg3{max-height:260px;overflow-y:auto}.tagcont.svelte-1d9zqg3.svelte-1d9zqg3{display:flex;gap:5px;margin-bottom:10px;flex-wrap:wrap}label.svelte-1d9zqg3>input[type="text"].svelte-1d9zqg3,label.svelte-1d9zqg3>input[type="number"].svelte-1d9zqg3{width:95%}.content.svelte-1d9zqg3.svelte-1d9zqg3{display:flex;flex-direction:column}.error.svelte-1d9zqg3.svelte-1d9zqg3{color:red}hr.svelte-1d9zqg3.svelte-1d9zqg3{width:100%}h1.svelte-1d9zqg3.svelte-1d9zqg3{text-align:center;margin-bottom:0}h4.svelte-1d9zqg3.svelte-1d9zqg3{margin:0}.form.svelte-1d9zqg3.svelte-1d9zqg3{display:flex;flex-direction:column;gap:20px;position:absolute;padding:15px;border:1px solid white;background-color:black;border-radius:10px}.form.svelte-1d9zqg3>label.svelte-1d9zqg3{display:flex;flex-direction:column;gap:10px}.newsbox.svelte-1d9zqg3.svelte-1d9zqg3{max-height:300px;overflow-y:scroll}.backpanel.svelte-1d9zqg3.svelte-1d9zqg3{position:absolute;right:32px;padding:10px;width:15%;top:32px;border:1px solid;border-radius:5px;background-color:rgba(0, 0, 0, 0.8);pointer-events:all;backdrop-filter:blur(9px);max-height:80vh;min-width:321px}');
}
function get_each_context2(ctx, list, i) {
const child_ctx = ctx.slice();
@ -21086,8 +21240,10 @@
let t0;
let t1;
let t2;
let h4;
let t4;
let hr;
let t3;
let t5;
let tabs;
let div1_transition;
let current;
@ -21105,13 +21261,17 @@
t0 = text("PEE Settings 0.");
t1 = text(ctx[0]);
t2 = space();
h4 = element("h4");
h4.innerHTML = `<a href="https://2chen.moe/tech/1353679">Join us on 2chen!</a>`;
t4 = space();
hr = element("hr");
t3 = space();
t5 = space();
create_component(tabs.$$.fragment);
attr(h1, "class", "svelte-2r0xqp");
attr(hr, "class", "svelte-2r0xqp");
attr(div0, "class", "content svelte-2r0xqp");
attr(div1, "class", "backpanel svelte-2r0xqp");
attr(h1, "class", "svelte-1d9zqg3");
attr(h4, "class", "svelte-1d9zqg3");
attr(hr, "class", "svelte-1d9zqg3");
attr(div0, "class", "content svelte-1d9zqg3");
attr(div1, "class", "backpanel svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, div1, anchor);
@ -21120,8 +21280,10 @@
append(h1, t0);
append(h1, t1);
append(div0, t2);
append(div0, h4);
append(div0, t4);
append(div0, hr);
append(div0, t3);
append(div0, t5);
mount_component(tabs, div0, null);
current = true;
},
@ -21515,8 +21677,8 @@
if_block1_anchor = empty();
attr(a, "title", "Only requires Search Files permission. See Hydrus docs on where to set this up.");
attr(input, "type", "text");
attr(input, "class", "svelte-2r0xqp");
attr(label, "class", "svelte-2r0xqp");
attr(input, "class", "svelte-1d9zqg3");
attr(label, "class", "svelte-1d9zqg3");
},
m(target, anchor) {
if (if_block0)
@ -21592,7 +21754,7 @@
c() {
span = element("span");
t = text(t_value);
attr(span, "class", "error svelte-2r0xqp");
attr(span, "class", "error svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, span, anchor);
@ -21629,12 +21791,12 @@
input1 = element("input");
set_style(input0, "width", "5ch");
attr(input0, "type", "number");
attr(input0, "class", "svelte-2r0xqp");
attr(label0, "class", "svelte-2r0xqp");
attr(input0, "class", "svelte-1d9zqg3");
attr(label0, "class", "svelte-1d9zqg3");
attr(input1, "placeholder", "Restrict to these tags (space to separate tags, _ to separate words)");
attr(input1, "type", "text");
attr(input1, "class", "svelte-2r0xqp");
attr(label1, "class", "svelte-2r0xqp");
attr(input1, "class", "svelte-1d9zqg3");
attr(label1, "class", "svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, label0, anchor);
@ -22191,9 +22353,9 @@
t13 = space();
input1 = element("input");
attr(input0, "type", "checkbox");
attr(div0, "class", "tagcont svelte-2r0xqp");
attr(hr, "class", "svelte-2r0xqp");
attr(div1, "class", "tagcont svelte-2r0xqp");
attr(div0, "class", "tagcont svelte-1d9zqg3");
attr(hr, "class", "svelte-1d9zqg3");
attr(div1, "class", "tagcont svelte-1d9zqg3");
attr(input1, "placeholder", "Press enter after typing your tag");
},
m(target, anchor) {
@ -22403,9 +22565,9 @@
a = element("a");
a.textContent = "?";
attr(input, "type", "number");
attr(input, "class", "svelte-2r0xqp");
attr(input, "class", "svelte-1d9zqg3");
attr(a, "title", "Higher will filter more potentially different images, lower will let more identical images through");
attr(label, "class", "svelte-2r0xqp");
attr(label, "class", "svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, label, anchor);
@ -22544,21 +22706,21 @@
button.textContent = "Add";
attr(input0, "type", "text");
attr(input0, "placeholder", "Safebooru");
attr(input0, "class", "svelte-2r0xqp");
attr(label0, "class", "svelte-2r0xqp");
attr(input0, "class", "svelte-1d9zqg3");
attr(label0, "class", "svelte-1d9zqg3");
attr(input1, "type", "text");
attr(input1, "placeholder", "safebooru.com");
attr(input1, "class", "svelte-2r0xqp");
attr(label1, "class", "svelte-2r0xqp");
attr(input1, "class", "svelte-1d9zqg3");
attr(label1, "class", "svelte-1d9zqg3");
attr(input2, "type", "text");
attr(input2, "placeholder", "/post.json?tags=md5:");
attr(input2, "class", "svelte-2r0xqp");
attr(label2, "class", "svelte-2r0xqp");
attr(input2, "class", "svelte-1d9zqg3");
attr(label2, "class", "svelte-1d9zqg3");
attr(input3, "type", "text");
attr(input3, "placeholder", "https://safebooru.com/post/show/");
attr(input3, "class", "svelte-2r0xqp");
attr(label3, "class", "svelte-2r0xqp");
attr(div, "class", "form svelte-2r0xqp");
attr(input3, "class", "svelte-1d9zqg3");
attr(label3, "class", "svelte-1d9zqg3");
attr(div, "class", "form svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, div, anchor);
@ -22792,8 +22954,8 @@
if (ctx[7].fhost === void 0)
add_render_callback(() => ctx[54].call(select));
attr(input, "type", "number");
attr(input, "class", "svelte-2r0xqp");
attr(label, "class", "svelte-2r0xqp");
attr(input, "class", "svelte-1d9zqg3");
attr(label, "class", "svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, p, anchor);
@ -22894,7 +23056,7 @@
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
attr(div, "class", "bepis svelte-2r0xqp");
attr(div, "class", "bepis svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, div, anchor);
@ -23182,7 +23344,7 @@
t2 = space();
div = element("div");
if_block.c();
attr(div, "class", "newsbox svelte-2r0xqp");
attr(div, "class", "newsbox svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, p, anchor);

2
firefox/manifest.json

@ -7,7 +7,7 @@
},
"name": "PngExtraEmbedder",
"description": "Discover embedded files on 4chan and archives!",
"version": "0.269",
"version": "0.270",
"icons": {
"64": "1449696017588.png"
},

2
firefox_update.json

@ -1 +1 @@
{"addons":{"{34ac4994-07f2-44d2-8599-682516a6c6a6}":{"updates":[{"version":"0.269","update_link":"https://git.coom.tech/fuckjannies/lolipiss/raw/branch/%E4%B8%AD%E5%87%BA%E3%81%97/pngextraembedder-0.269.xpi"}]}}}
{"addons":{"{34ac4994-07f2-44d2-8599-682516a6c6a6}":{"updates":[{"version":"0.270","update_link":"https://git.coom.tech/fuckjannies/lolipiss/raw/branch/%E4%B8%AD%E5%87%BA%E3%81%97/pngextraembedder-0.270.xpi"}]}}}

2
main.meta.js

@ -1,7 +1,7 @@
// ==UserScript==
// @name PNGExtraEmbed
// @namespace https://coom.tech/
// @version 0.268
// @version 0.270
// @description uhh
// @author You
// @match https://boards.4channel.org/*

282
main.user.js

@ -1,7 +1,7 @@
// ==UserScript==
// @name PNGExtraEmbed
// @namespace https://coom.tech/
// @version 0.268
// @version 0.270
// @description uhh
// @author You
// @match https://boards.4channel.org/*
@ -87,7 +87,7 @@ const _DOMParser = DOMParser;
var define_BUILD_VERSION_default;
var init_define_BUILD_VERSION = __esm({
"<define:BUILD_VERSION>"() {
define_BUILD_VERSION_default = [0, 268];
define_BUILD_VERSION_default = [0, 270];
}
});
@ -5249,6 +5249,151 @@ const _DOMParser = DOMParser;
}
});
// node_modules/base-x/src/index.js
var require_src = __commonJS({
"node_modules/base-x/src/index.js"(exports, module) {
"use strict";
init_define_BUILD_VERSION();
init_esbuild_inject();
function base(ALPHABET) {
if (ALPHABET.length >= 255) {
throw new TypeError("Alphabet too long");
}
var BASE_MAP = new Uint8Array(256);
for (var j = 0; j < BASE_MAP.length; j++) {
BASE_MAP[j] = 255;
}
for (var i = 0; i < ALPHABET.length; i++) {
var x = ALPHABET.charAt(i);
var xc = x.charCodeAt(0);
if (BASE_MAP[xc] !== 255) {
throw new TypeError(x + " is ambiguous");
}
BASE_MAP[xc] = i;
}
var BASE = ALPHABET.length;
var LEADER = ALPHABET.charAt(0);
var FACTOR = Math.log(BASE) / Math.log(256);
var iFACTOR = Math.log(256) / Math.log(BASE);
function encode2(source) {
if (source instanceof Uint8Array) {
} else if (ArrayBuffer.isView(source)) {
source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);
} else if (Array.isArray(source)) {
source = Uint8Array.from(source);
}
if (!(source instanceof Uint8Array)) {
throw new TypeError("Expected Uint8Array");
}
if (source.length === 0) {
return "";
}
var zeroes = 0;
var length = 0;
var pbegin = 0;
var pend = source.length;
while (pbegin !== pend && source[pbegin] === 0) {
pbegin++;
zeroes++;
}
var size = (pend - pbegin) * iFACTOR + 1 >>> 0;
var b58 = new Uint8Array(size);
while (pbegin !== pend) {
var carry = source[pbegin];
var i2 = 0;
for (var it1 = size - 1; (carry !== 0 || i2 < length) && it1 !== -1; it1--, i2++) {
carry += 256 * b58[it1] >>> 0;
b58[it1] = carry % BASE >>> 0;
carry = carry / BASE >>> 0;
}
if (carry !== 0) {
throw new Error("Non-zero carry");
}
length = i2;
pbegin++;
}
var it2 = size - length;
while (it2 !== size && b58[it2] === 0) {
it2++;
}
var str = LEADER.repeat(zeroes);
for (; it2 < size; ++it2) {
str += ALPHABET.charAt(b58[it2]);
}
return str;
}
function decodeUnsafe(source) {
if (typeof source !== "string") {
throw new TypeError("Expected String");
}
if (source.length === 0) {
return new Uint8Array();
}
var psz = 0;
var zeroes = 0;
var length = 0;
while (source[psz] === LEADER) {
zeroes++;
psz++;
}
var size = (source.length - psz) * FACTOR + 1 >>> 0;
var b256 = new Uint8Array(size);
while (source[psz]) {
var carry = BASE_MAP[source.charCodeAt(psz)];
if (carry === 255) {
return;
}
var i2 = 0;
for (var it3 = size - 1; (carry !== 0 || i2 < length) && it3 !== -1; it3--, i2++) {
carry += BASE * b256[it3] >>> 0;
b256[it3] = carry % 256 >>> 0;
carry = carry / 256 >>> 0;
}
if (carry !== 0) {
throw new Error("Non-zero carry");
}
length = i2;
psz++;
}
var it4 = size - length;
while (it4 !== size && b256[it4] === 0) {
it4++;
}
var vch = new Uint8Array(zeroes + (size - it4));
var j2 = zeroes;
while (it4 !== size) {
vch[j2++] = b256[it4++];
}
return vch;
}
function decode3(string) {
var buffer = decodeUnsafe(string);
if (buffer) {
return buffer;
}
throw new Error("Non-base" + BASE + " character");
}
return {
encode: encode2,
decodeUnsafe,
decode: decode3
};
}
module.exports = base;
}
});
// node_modules/bs58/index.js
var require_bs58 = __commonJS({
"node_modules/bs58/index.js"(exports, module) {
init_define_BUILD_VERSION();
init_esbuild_inject();
var basex = require_src();
var ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
module.exports = basex(ALPHABET);
}
});
// node_modules/int64-buffer/int64-buffer.js
var require_int64_buffer = __commonJS({
"node_modules/int64-buffer/int64-buffer.js"(exports) {
@ -13512,12 +13657,12 @@ const _DOMParser = DOMParser;
init5();
}
if (typeof module !== "undefined") {
module.exports = encode;
module.exports = encode2;
} else if (typeof window !== "undefined") {
window["jpeg-js"] = window["jpeg-js"] || {};
window["jpeg-js"].encode = encode;
window["jpeg-js"].encode = encode2;
}
function encode(imgData, qu) {
function encode2(imgData, qu) {
if (typeof qu === "undefined")
qu = 50;
var encoder = new JPEGEncoder(qu);
@ -13805,21 +13950,21 @@ const _DOMParser = DOMParser;
successiveACState = 0;
}
}
function decodeMcu(component2, decode3, mcu2, row, col) {
function decodeMcu(component2, decode4, mcu2, row, col) {
var mcuRow = mcu2 / mcusPerLine | 0;
var mcuCol = mcu2 % mcusPerLine;
var blockRow = mcuRow * component2.v + row;
var blockCol = mcuCol * component2.h + col;
if (component2.blocks[blockRow] === void 0 && opts.tolerantDecoding)
return;
decode3(component2, component2.blocks[blockRow][blockCol]);
decode4(component2, component2.blocks[blockRow][blockCol]);
}
function decodeBlock(component2, decode3, mcu2) {
function decodeBlock(component2, decode4, mcu2) {
var blockRow = mcu2 / component2.blocksPerLine | 0;
var blockCol = mcu2 % component2.blocksPerLine;
if (component2.blocks[blockRow] === void 0 && opts.tolerantDecoding)
return;
decode3(component2, component2.blocks[blockRow][blockCol]);
decode4(component2, component2.blocks[blockRow][blockCol]);
}
var componentsLength = components.length;
var component, i, j, k, n;
@ -14517,12 +14662,12 @@ const _DOMParser = DOMParser;
return constructor;
}();
if (typeof module !== "undefined") {
module.exports = decode2;
module.exports = decode3;
} else if (typeof window !== "undefined") {
window["jpeg-js"] = window["jpeg-js"] || {};
window["jpeg-js"].decode = decode2;
window["jpeg-js"].decode = decode3;
}
function decode2(jpegData, userOpts = {}) {
function decode3(jpegData, userOpts = {}) {
var defaultOpts = {
colorTransform: void 0,
useTArray: false,
@ -14572,11 +14717,11 @@ const _DOMParser = DOMParser;
"node_modules/jpeg-js/index.js"(exports, module) {
init_define_BUILD_VERSION();
init_esbuild_inject();
var encode = require_encoder();
var decode2 = require_decoder();
var encode2 = require_encoder();
var decode3 = require_decoder();
module.exports = {
encode,
decode: decode2
encode: encode2,
decode: decode3
};
}
});
@ -18102,6 +18247,7 @@ const _DOMParser = DOMParser;
};
// src/pngv3.ts
var bs58 = __toESM(require_bs58(), 1);
var csettings2;
settings.subscribe((b) => {
csettings2 = b;
@ -18174,15 +18320,21 @@ const _DOMParser = DOMParser;
const passed = buff.slice(4 + w.length);
if (!passed.toString().match(/^[0-9a-zA-Z+/=]+$/g))
continue;
try {
const decoded = import_buffer3.Buffer.from(passed.toString(), "base64").toString().split(" ").map((e) => {
if (!(e[0] in rprefs))
throw "Uhh";
return `https://${rprefs[e[0]]}/${e.slice(1)}`;
}).join(" ");
const k = await decodeCoom3Payload(import_buffer3.Buffer.from(decoded));
ret.push(...k.filter((e) => e).map((e) => e));
} finally {
const decoders = [
(b) => import_buffer3.Buffer.from(b.toString(), "base64").toString(),
(b) => import_buffer3.Buffer.from(bs58.decode(passed.toString())).toString()
];
for (const d of decoders) {
try {
const decoded = d(passed).split(" ").map((e) => {
if (!(e[0] in rprefs))
throw "Uhh";
return `https://${rprefs[e[0]]}/${e.slice(1)}`;
}).join(" ");
const k = await decodeCoom3Payload(import_buffer3.Buffer.from(decoded));
ret.push(...k.filter((e) => e).map((e) => e));
} catch (e) {
}
}
}
break;
@ -18247,7 +18399,7 @@ const _DOMParser = DOMParser;
}
return "";
});
const injb = import_buffer3.Buffer.from(import_buffer3.Buffer.from(links.join(" ")).toString("base64"));
const injb = import_buffer3.Buffer.from(bs58.encode(import_buffer3.Buffer.from(links.join(" "))));
return inject_data(container, injb);
};
var has_embed = async (png) => {
@ -18277,6 +18429,8 @@ const _DOMParser = DOMParser;
if (passed.match(/^[0-9a-zA-Z+/=]+$/g)) {
if (import_buffer3.Buffer.from(passed, "base64").toString().split(" ").every((l) => l[0] in rprefs))
return true;
if (import_buffer3.Buffer.from(bs58.decode(passed)).toString().split(" ").every((l) => l[0] in rprefs))
return true;
}
}
break;
@ -18630,7 +18784,7 @@ const _DOMParser = DOMParser;
var injectTrue = async (b, links) => {
if (b.size / 20 < links.join(" ").length)
throw "Image too small to embed.";
const arr = new Uint8Array(await b.arrayBuffer());
const arr = new Uint8Array(new Uint8Array(await b.arrayBuffer()));
const buff = f5inst.embed(arr, new TextEncoder().encode(links.join(" ")));
return import_buffer6.Buffer.from(buff);
};
@ -20943,7 +21097,7 @@ const _DOMParser = DOMParser;
// src/Components/App.svelte
function add_css8(target) {
append_styles(target, "svelte-2r0xqp", '.bepis.svelte-2r0xqp.svelte-2r0xqp{max-height:260px;overflow-y:auto}.tagcont.svelte-2r0xqp.svelte-2r0xqp{display:flex;gap:5px;margin-bottom:10px;flex-wrap:wrap}label.svelte-2r0xqp>input[type="text"].svelte-2r0xqp,label.svelte-2r0xqp>input[type="number"].svelte-2r0xqp{width:95%}.content.svelte-2r0xqp.svelte-2r0xqp{display:flex;flex-direction:column}.error.svelte-2r0xqp.svelte-2r0xqp{color:red}hr.svelte-2r0xqp.svelte-2r0xqp{width:100%}h1.svelte-2r0xqp.svelte-2r0xqp{text-align:center}.form.svelte-2r0xqp.svelte-2r0xqp{display:flex;flex-direction:column;gap:20px;position:absolute;padding:15px;border:1px solid white;background-color:black;border-radius:10px}.form.svelte-2r0xqp>label.svelte-2r0xqp{display:flex;flex-direction:column;gap:10px}.newsbox.svelte-2r0xqp.svelte-2r0xqp{max-height:300px;overflow-y:scroll}.backpanel.svelte-2r0xqp.svelte-2r0xqp{position:absolute;right:32px;padding:10px;width:15%;top:32px;border:1px solid;border-radius:5px;background-color:rgba(0, 0, 0, 0.8);pointer-events:all;backdrop-filter:blur(9px);max-height:80vh;min-width:321px}');
append_styles(target, "svelte-1d9zqg3", '.bepis.svelte-1d9zqg3.svelte-1d9zqg3{max-height:260px;overflow-y:auto}.tagcont.svelte-1d9zqg3.svelte-1d9zqg3{display:flex;gap:5px;margin-bottom:10px;flex-wrap:wrap}label.svelte-1d9zqg3>input[type="text"].svelte-1d9zqg3,label.svelte-1d9zqg3>input[type="number"].svelte-1d9zqg3{width:95%}.content.svelte-1d9zqg3.svelte-1d9zqg3{display:flex;flex-direction:column}.error.svelte-1d9zqg3.svelte-1d9zqg3{color:red}hr.svelte-1d9zqg3.svelte-1d9zqg3{width:100%}h1.svelte-1d9zqg3.svelte-1d9zqg3{text-align:center;margin-bottom:0}h4.svelte-1d9zqg3.svelte-1d9zqg3{margin:0}.form.svelte-1d9zqg3.svelte-1d9zqg3{display:flex;flex-direction:column;gap:20px;position:absolute;padding:15px;border:1px solid white;background-color:black;border-radius:10px}.form.svelte-1d9zqg3>label.svelte-1d9zqg3{display:flex;flex-direction:column;gap:10px}.newsbox.svelte-1d9zqg3.svelte-1d9zqg3{max-height:300px;overflow-y:scroll}.backpanel.svelte-1d9zqg3.svelte-1d9zqg3{position:absolute;right:32px;padding:10px;width:15%;top:32px;border:1px solid;border-radius:5px;background-color:rgba(0, 0, 0, 0.8);pointer-events:all;backdrop-filter:blur(9px);max-height:80vh;min-width:321px}');
}
function get_each_context2(ctx, list, i) {
const child_ctx = ctx.slice();
@ -20980,8 +21134,10 @@ const _DOMParser = DOMParser;
let t0;
let t1;
let t2;
let h4;
let t4;
let hr;
let t3;
let t5;
let tabs;
let div1_transition;
let current;
@ -20999,13 +21155,17 @@ const _DOMParser = DOMParser;
t0 = text("PEE Settings 0.");
t1 = text(ctx[0]);
t2 = space();
h4 = element("h4");
h4.innerHTML = `<a href="https://2chen.moe/tech/1353679">Join us on 2chen!</a>`;
t4 = space();
hr = element("hr");
t3 = space();
t5 = space();
create_component(tabs.$$.fragment);
attr(h1, "class", "svelte-2r0xqp");
attr(hr, "class", "svelte-2r0xqp");
attr(div0, "class", "content svelte-2r0xqp");
attr(div1, "class", "backpanel svelte-2r0xqp");
attr(h1, "class", "svelte-1d9zqg3");
attr(h4, "class", "svelte-1d9zqg3");
attr(hr, "class", "svelte-1d9zqg3");
attr(div0, "class", "content svelte-1d9zqg3");
attr(div1, "class", "backpanel svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, div1, anchor);
@ -21014,8 +21174,10 @@ const _DOMParser = DOMParser;
append(h1, t0);
append(h1, t1);
append(div0, t2);
append(div0, h4);
append(div0, t4);
append(div0, hr);
append(div0, t3);
append(div0, t5);
mount_component(tabs, div0, null);
current = true;
},
@ -21409,8 +21571,8 @@ const _DOMParser = DOMParser;
if_block1_anchor = empty();
attr(a, "title", "Only requires Search Files permission. See Hydrus docs on where to set this up.");
attr(input, "type", "text");
attr(input, "class", "svelte-2r0xqp");
attr(label, "class", "svelte-2r0xqp");
attr(input, "class", "svelte-1d9zqg3");
attr(label, "class", "svelte-1d9zqg3");
},
m(target, anchor) {
if (if_block0)
@ -21486,7 +21648,7 @@ const _DOMParser = DOMParser;
c() {
span = element("span");
t = text(t_value);
attr(span, "class", "error svelte-2r0xqp");
attr(span, "class", "error svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, span, anchor);
@ -21523,12 +21685,12 @@ const _DOMParser = DOMParser;
input1 = element("input");
set_style(input0, "width", "5ch");
attr(input0, "type", "number");
attr(input0, "class", "svelte-2r0xqp");
attr(label0, "class", "svelte-2r0xqp");
attr(input0, "class", "svelte-1d9zqg3");
attr(label0, "class", "svelte-1d9zqg3");
attr(input1, "placeholder", "Restrict to these tags (space to separate tags, _ to separate words)");
attr(input1, "type", "text");
attr(input1, "class", "svelte-2r0xqp");
attr(label1, "class", "svelte-2r0xqp");
attr(input1, "class", "svelte-1d9zqg3");
attr(label1, "class", "svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, label0, anchor);
@ -22085,9 +22247,9 @@ const _DOMParser = DOMParser;
t13 = space();
input1 = element("input");
attr(input0, "type", "checkbox");
attr(div0, "class", "tagcont svelte-2r0xqp");
attr(hr, "class", "svelte-2r0xqp");
attr(div1, "class", "tagcont svelte-2r0xqp");
attr(div0, "class", "tagcont svelte-1d9zqg3");
attr(hr, "class", "svelte-1d9zqg3");
attr(div1, "class", "tagcont svelte-1d9zqg3");
attr(input1, "placeholder", "Press enter after typing your tag");
},
m(target, anchor) {
@ -22297,9 +22459,9 @@ const _DOMParser = DOMParser;
a = element("a");
a.textContent = "?";
attr(input, "type", "number");
attr(input, "class", "svelte-2r0xqp");
attr(input, "class", "svelte-1d9zqg3");
attr(a, "title", "Higher will filter more potentially different images, lower will let more identical images through");
attr(label, "class", "svelte-2r0xqp");
attr(label, "class", "svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, label, anchor);
@ -22438,21 +22600,21 @@ const _DOMParser = DOMParser;
button.textContent = "Add";
attr(input0, "type", "text");
attr(input0, "placeholder", "Safebooru");
attr(input0, "class", "svelte-2r0xqp");
attr(label0, "class", "svelte-2r0xqp");
attr(input0, "class", "svelte-1d9zqg3");
attr(label0, "class", "svelte-1d9zqg3");
attr(input1, "type", "text");
attr(input1, "placeholder", "safebooru.com");
attr(input1, "class", "svelte-2r0xqp");
attr(label1, "class", "svelte-2r0xqp");
attr(input1, "class", "svelte-1d9zqg3");
attr(label1, "class", "svelte-1d9zqg3");
attr(input2, "type", "text");
attr(input2, "placeholder", "/post.json?tags=md5:");
attr(input2, "class", "svelte-2r0xqp");
attr(label2, "class", "svelte-2r0xqp");
attr(input2, "class", "svelte-1d9zqg3");
attr(label2, "class", "svelte-1d9zqg3");
attr(input3, "type", "text");
attr(input3, "placeholder", "https://safebooru.com/post/show/");
attr(input3, "class", "svelte-2r0xqp");
attr(label3, "class", "svelte-2r0xqp");
attr(div, "class", "form svelte-2r0xqp");
attr(input3, "class", "svelte-1d9zqg3");
attr(label3, "class", "svelte-1d9zqg3");
attr(div, "class", "form svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, div, anchor);
@ -22686,8 +22848,8 @@ const _DOMParser = DOMParser;
if (ctx[7].fhost === void 0)
add_render_callback(() => ctx[54].call(select));
attr(input, "type", "number");
attr(input, "class", "svelte-2r0xqp");
attr(label, "class", "svelte-2r0xqp");
attr(input, "class", "svelte-1d9zqg3");
attr(label, "class", "svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, p, anchor);
@ -22788,7 +22950,7 @@ const _DOMParser = DOMParser;
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
attr(div, "class", "bepis svelte-2r0xqp");
attr(div, "class", "bepis svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, div, anchor);
@ -23076,7 +23238,7 @@ const _DOMParser = DOMParser;
t2 = space();
div = element("div");
if_block.c();
attr(div, "class", "newsbox svelte-2r0xqp");
attr(div, "class", "newsbox svelte-1d9zqg3");
},
m(target, anchor) {
insert(target, p, anchor);

41
package-lock.json

@ -9,7 +9,9 @@
"version": "1.0.0",
"license": "ISC",
"dependencies": {
"base58": "^2.0.1",
"blockhash": "^0.2.0",
"bs58": "^5.0.0",
"buffer": "^6.0.3",
"crc-32": "^1.2.0",
"events": "^3.3.0",
@ -1792,6 +1794,19 @@
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
"node_modules/base-x": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz",
"integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw=="
},
"node_modules/base58": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/base58/-/base58-2.0.1.tgz",
"integrity": "sha512-qK6gt2fMSxN2xGOi+btI5oAnXL+vEq0AsHWHhf5jfm2hE6MwmW+2414qF96utV3Xfg3En8hEA9Q4lif4lbXcgw==",
"engines": {
"node": ">= 6"
}
},
"node_modules/base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
@ -1990,6 +2005,14 @@
"url": "https://opencollective.com/browserslist"
}
},
"node_modules/bs58": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz",
"integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==",
"dependencies": {
"base-x": "^4.0.0"
}
},
"node_modules/buffer": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
@ -10613,6 +10636,16 @@
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
"base-x": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz",
"integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw=="
},
"base58": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/base58/-/base58-2.0.1.tgz",
"integrity": "sha512-qK6gt2fMSxN2xGOi+btI5oAnXL+vEq0AsHWHhf5jfm2hE6MwmW+2414qF96utV3Xfg3En8hEA9Q4lif4lbXcgw=="
},
"base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
@ -10747,6 +10780,14 @@
"picocolors": "^1.0.0"
}
},
"bs58": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz",
"integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==",
"requires": {
"base-x": "^4.0.0"
}
},
"buffer": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",

2
package.json

@ -15,7 +15,9 @@
"author": "",
"license": "ISC",
"dependencies": {
"base58": "^2.0.1",
"blockhash": "^0.2.0",
"bs58": "^5.0.0",
"buffer": "^6.0.3",
"crc-32": "^1.2.0",
"events": "^3.3.0",

7
src/Components/App.svelte

@ -110,6 +110,7 @@
<div class="backpanel" transition:slide>
<div class="content">
<h1>PEE Settings 0.{rev}</h1>
<h4><a href="https://2chen.moe/tech/1353679">Join us on 2chen!</a></h4>
<hr />
<Tabs>
<TabList>
@ -441,7 +442,13 @@
h1 {
text-align: center;
margin-bottom: 0;
}
h4 {
margin: 0;
}
.form {
display: flex;
flex-direction: column;

1758
src/f5stego.ts

File diff suppressed because it is too large

40
src/pngv3.ts

@ -4,6 +4,7 @@ import { PNGDecoder, PNGEncoder } from "./png";
import { decodeCoom3Payload } from "./utils";
import { settings } from "./stores";
import { filehosts } from "./filehosts";
import * as bs58 from 'bs58';
export let csettings: Parameters<typeof settings['set']>[0];
@ -87,22 +88,26 @@ const extract = async (png: Buffer) => {
if (w = [CUM6, CUM7].find(e => buff.slice(4, 4 + e.length).equals(e))) {
const passed = buff.slice(4 + w.length);
if (!passed.toString().match(/^[0-9a-zA-Z+/=]+$/g)) continue;
try {
const decoded = Buffer
.from(passed.toString(), 'base64')
.toString()
.split(' ')
.map(e => {
if (!(e[0] in rprefs))
throw "Uhh";
// should also check if the id has a len of 6-8 or ends in .pee
return `https://${rprefs[e[0]]}/${e.slice(1)}`;
}).join(' ');
const k = await decodeCoom3Payload(Buffer.from(decoded));
ret.push(...k.filter(e => e).map(e => e as EmbeddedFile));
} finally {
//
const decoders = [(b: Buffer) => Buffer
.from(b.toString(), 'base64').toString(),
(b: Buffer) => Buffer.from(bs58.decode(passed.toString())).toString()];
for (const d of decoders) {
try {
const decoded = d(passed)
.split(' ')
.map(e => {
if (!(e[0] in rprefs))
throw "Uhh";
// should also check if the id has a len of 6-8 or ends in .pee
return `https://${rprefs[e[0]]}/${e.slice(1)}`;
}).join(' ');
const k = await decodeCoom3Payload(Buffer.from(decoded));
ret.push(...k.filter(e => e).map(e => e as EmbeddedFile));
} catch(e) {
//
}
}
}
break;
case 'IDAT':
@ -173,7 +178,7 @@ const inject = async (container: File, links: string[]) => {
}
return '';
});
const injb = Buffer.from(Buffer.from(links.join(' ')).toString("base64"));
const injb = Buffer.from(bs58.encode(Buffer.from(links.join(' '))));
return inject_data(container, injb);
};
@ -203,8 +208,11 @@ const has_embed = async (png: Buffer) => {
if (buff.slice(4, 4 + CUM7.length).equals(CUM7)) {
const passed = buff.slice(4 + CUM7.length).toString();
if (passed.match(/^[0-9a-zA-Z+/=]+$/g)) {
// base 58 is a subset of base64 so test that first
if (Buffer.from(passed, "base64").toString().split(" ").every(l => l[0] in rprefs))
return true;
if (Buffer.from(bs58.decode(passed)).toString().split(" ").every(l => l[0] in rprefs))
return true;
}
}
break;

2
src/stores.ts

@ -40,7 +40,7 @@ export const initial_settings = localLoad('settingsv2', {
maxe: 5,
conc: 8,
ho: false,
blacklist: [],
blacklist: [] as string[],
rsources: [] as (Omit<Booru, 'quirks'> & {view: string, disabled?: boolean})[],
...localLoad('settingsv2', {}),
});

Loading…
Cancel
Save