decord/source/1879_decodeImage.js
2026-07-24 07:16:23 +00:00

4288 lines
149 KiB
JavaScript

// Module ID: 1879
// Function ID: 20897
// Name: decodeImage
// Dependencies: []
// Module 1879 (decodeImage)
let tmp = (() => {
function decodeImage(data, width, height, tabs) {
let ctype;
let depth;
const result = width * height;
const rounded = Math.ceil(width * _getBPP(tabs) / 8);
const uint8Array = new Uint8Array(4 * result);
const uint32Array = new Uint32Array(uint8Array.buffer);
({ ctype, depth } = tabs);
const readUshort = obj.readUshort;
const timestamp = Date.now();
if (6 == ctype) {
if (8 == depth) {
let num61 = 0;
if (0 < tmp69) {
do {
uint8Array[num61] = data[num61];
let sum = num61 + 1;
uint8Array[sum] = data[sum];
let sum1 = num61 + 2;
uint8Array[sum1] = data[sum1];
let sum2 = num61 + 3;
uint8Array[sum2] = data[sum2];
num61 = num61 + 4;
} while (num61 < tmp69);
}
}
if (16 == depth) {
let num64 = 0;
if (0 < tmp69) {
do {
uint8Array[num64] = data[num64 << 1];
num64 = num64 + 1;
} while (num64 < tmp69);
}
}
} else if (2 == ctype) {
let tRNS = tabs.tabs.tRNS;
if (null == tRNS) {
if (8 == depth) {
let num55 = 0;
if (0 < result) {
do {
let result1 = 3 * num55;
uint32Array[num55] = -16777216 | data[result1 + 2] << 16 | data[result1 + 1] << 8 | data[result1];
num55 = num55 + 1;
} while (num55 < result);
}
}
if (16 == depth) {
let num57 = 0;
if (0 < result) {
do {
let result2 = 6 * num57;
uint32Array[num57] = -16777216 | data[result2 + 4] << 16 | data[result2 + 2] << 8 | data[result2];
num57 = num57 + 1;
} while (num57 < result);
}
}
} else {
const first = tRNS[0];
if (8 == depth) {
let num48 = 0;
if (0 < result) {
do {
let result3 = 3 * num48;
let sum3 = result3 + 2;
let sum4 = result3 + 1;
uint32Array[num48] = -16777216 | data[sum3] << 16 | data[sum4] << 8 | data[result3];
let tmp61 = data[result3] == first;
let tmp57 = num48 << 2;
if (tmp61) {
tmp61 = data[sum4] == tmp76;
}
if (tmp61) {
tmp61 = data[sum3] == tmp77;
}
if (tmp61) {
uint8Array[tmp57 + 3] = 0;
}
num48 = num48 + 1;
} while (num48 < result);
}
}
if (16 == depth) {
let num50 = 0;
if (0 < result) {
do {
let result4 = 6 * num50;
let sum5 = result4 + 4;
let sum6 = result4 + 2;
uint32Array[num50] = -16777216 | data[sum5] << 16 | data[sum6] << 8 | data[result4];
let tmp62 = num50 << 2;
let tmp66 = readUshort(data, result4) == first && readUshort(data, sum6) == tmp76 && readUshort(data, sum5) == tmp77;
if (tmp66) {
uint8Array[tmp62 + 3] = 0;
}
num50 = num50 + 1;
} while (num50 < result);
}
}
}
} else if (3 == ctype) {
const PLTE = tabs.tabs.PLTE;
tRNS = tabs.tabs.tRNS;
let num30 = 0;
if (tRNS) {
num30 = tRNS.length;
}
let tmp26;
let tmp27;
if (1 == depth) {
let num34 = 0;
if (0 < height) {
do {
let num35 = 0;
if (0 < width) {
do {
let tmp32 = tmp31 + num35 << 2;
let tmp33 = data[tmp30 + (num35 >> 3)] >> 7 - (7 & num35) & 1;
let result5 = 3 * tmp33;
uint8Array[tmp32] = PLTE[result5];
uint8Array[tmp32 + 1] = PLTE[result5 + 1];
uint8Array[tmp32 + 2] = PLTE[result5 + 2];
let num36 = 255;
if (tmp33 < num30) {
num36 = tRNS[tmp33];
}
uint8Array[tmp32 + 3] = num36;
num35 = num35 + 1;
let tmp28 = tmp32;
let tmp29 = tmp33;
} while (num35 < width);
}
num34 = num34 + 1;
tmp26 = tmp28;
tmp27 = tmp29;
} while (num34 < height);
}
}
if (2 == depth) {
let tmp42 = tmp26;
let num39 = 0;
let tmp43 = tmp27;
if (0 < height) {
do {
let num37 = 0;
if (0 < width) {
do {
let tmp39 = tmp38 + num37 << 2;
let tmp40 = data[tmp37 + (num37 >> 2)] >> 6 - ((3 & num37) << 1) & 3;
let result6 = 3 * tmp40;
uint8Array[tmp39] = PLTE[result6];
uint8Array[tmp39 + 1] = PLTE[result6 + 1];
uint8Array[tmp39 + 2] = PLTE[result6 + 2];
let num38 = 255;
if (tmp40 < num30) {
num38 = tRNS[tmp40];
}
uint8Array[tmp39 + 3] = num38;
num37 = num37 + 1;
tmp42 = tmp39;
tmp43 = tmp40;
} while (num37 < width);
}
num39 = num39 + 1;
let tmp44 = tmp42;
let tmp45 = tmp43;
} while (num39 < height);
}
}
if (4 == depth) {
for (let num42 = 0; num42 < height; num42 = num42 + 1) {
let num40 = 0;
if (0 < width) {
do {
let tmp48 = tmp47 + num40 << 2;
let tmp49 = data[tmp46 + (num40 >> 1)] >> 4 - ((1 & num40) << 2) & 15;
let result7 = 3 * tmp49;
uint8Array[tmp48] = PLTE[result7];
uint8Array[tmp48 + 1] = PLTE[result7 + 1];
uint8Array[tmp48 + 2] = PLTE[result7 + 2];
let num41 = 255;
if (tmp49 < num30) {
num41 = tRNS[tmp49];
}
uint8Array[tmp48 + 3] = num41;
num40 = num40 + 1;
let tmp51 = tmp48;
let tmp52 = tmp49;
} while (num40 < width);
}
}
}
if (8 == depth) {
let num44 = 0;
if (0 < result) {
do {
let tmp53 = num44 << 2;
let tmp54 = data[num44];
let result8 = 3 * tmp54;
uint8Array[tmp53] = PLTE[result8];
uint8Array[tmp53 + 1] = PLTE[result8 + 1];
uint8Array[tmp53 + 2] = PLTE[result8 + 2];
let num43 = 255;
if (tmp54 < num30) {
num43 = tRNS[tmp54];
}
uint8Array[tmp53 + 3] = num43;
num44 = num44 + 1;
} while (num44 < result);
}
}
} else if (4 == ctype) {
if (8 == depth) {
let num26 = 0;
if (0 < result) {
do {
let tmp20 = num26 << 2;
let tmp21 = num26 << 1;
let tmp22 = data[tmp21];
uint8Array[tmp20] = tmp22;
uint8Array[tmp20 + 1] = tmp22;
uint8Array[tmp20 + 2] = tmp22;
uint8Array[tmp20 + 3] = data[tmp21 + 1];
num26 = num26 + 1;
} while (num26 < result);
}
}
if (16 == depth) {
let num28 = 0;
if (0 < result) {
do {
let tmp23 = num28 << 2;
let tmp24 = num28 << 2;
let tmp25 = data[tmp24];
uint8Array[tmp23] = tmp25;
uint8Array[tmp23 + 1] = tmp25;
uint8Array[tmp23 + 2] = tmp25;
uint8Array[tmp23 + 3] = data[tmp24 + 2];
num28 = num28 + 1;
} while (num28 < result);
}
}
} else if (0 == ctype) {
let num = -1;
if (tabs.tabs.tRNS) {
num = tabs.tabs.tRNS;
}
let num10 = 0;
if (0 < height) {
do {
let result9 = num10 * rounded;
let result10 = num10 * width;
if (1 == depth) {
let num22 = 0;
let tmp9 = tmp6;
let num23 = 0;
if (0 < width) {
do {
let result11 = 255 * (data[result9 + (num22 >>> 3)] >>> 7 - (7 & num22) & 1);
let num24 = 255;
if (result11 === 255 * num) {
num24 = 0;
}
uint32Array[result10 + num22] = num24 << 24 | result11 << 16 | result11 << 8 | result11;
num22 = num22 + 1;
tmp9 = result11;
let tmp19 = num22;
} while (num22 < width);
}
} else if (2 == depth) {
let num19 = 0;
tmp9 = tmp6;
let num20 = 0;
if (0 < width) {
do {
let result12 = 85 * (data[result9 + (num19 >>> 2)] >>> 6 - ((3 & num19) << 1) & 3);
let num21 = 255;
if (result12 === 85 * num) {
num21 = 0;
}
uint32Array[result10 + num19] = num21 << 24 | result12 << 16 | result12 << 8 | result12;
num19 = num19 + 1;
tmp9 = result12;
let tmp17 = num19;
} while (num19 < width);
}
} else if (4 == depth) {
let num16 = 0;
tmp9 = tmp6;
let num17 = 0;
if (0 < width) {
do {
let result13 = 17 * (data[result9 + (num16 >>> 1)] >>> 4 - ((1 & num16) << 2) & 15);
let num18 = 255;
if (result13 === 17 * num) {
num18 = 0;
}
uint32Array[result10 + num16] = num18 << 24 | result13 << 16 | result13 << 8 | result13;
num16 = num16 + 1;
tmp9 = result13;
let tmp15 = num16;
} while (num16 < width);
}
} else if (8 == depth) {
let num13 = 0;
tmp9 = tmp6;
let num14 = 0;
if (0 < width) {
do {
let tmp12 = data[result9 + num13];
let num15 = 255;
if (tmp12 == num) {
num15 = 0;
}
uint32Array[result10 + num13] = num15 << 24 | tmp12 << 16 | tmp12 << 8 | tmp12;
num13 = num13 + 1;
tmp9 = tmp12;
let tmp13 = num13;
} while (num13 < width);
}
} else {
tmp9 = tmp6;
if (16 == depth) {
let num12 = 0;
tmp9 = tmp6;
let num68 = 0;
if (0 < width) {
do {
let tmp10 = data[result9 + (num12 << 1)];
let num11 = 255;
if (readUshort(data, result9 + (num12 << 1)) == num) {
num11 = 0;
}
uint32Array[result10 + num12] = num11 << 24 | tmp10 << 16 | tmp10 << 8 | tmp10;
num12 = num12 + 1;
tmp9 = tmp10;
let tmp11 = num12;
} while (num12 < width);
}
}
}
num10 = num10 + 1;
tmp6 = tmp9;
} while (num10 < height);
}
}
return uint8Array;
}
function _decompress(size, arr4, width, height) {
const timestamp = Date.now();
const uint8Array = new Uint8Array((Math.ceil(width * _getBPP(size) / 8) + 1 + size.interlace) * height);
if (size.tabs.CgBI) {
let tmp4 = callback(arr4, uint8Array);
} else {
tmp4 = _inflate(arr4, uint8Array);
}
const timestamp1 = Date.now();
if (0 == size.interlace) {
_filterZero(tmp4, size, 0, width, height);
let tmp38 = tmp4;
} else {
tmp38 = tmp4;
if (1 == size.interlace) {
({ width, height } = size);
const tmp46 = _getBPP(size);
const _Math2 = Math;
const rounded = Math.ceil(width * tmp46 / 8);
const _Uint8Array = Uint8Array;
const uint8Array1 = new Uint8Array(height * rounded);
const items = [0, 0, 4, 0, 2, 0, 1];
const items1 = [0, 4, 0, 2, 0, 1, 0];
let num9 = 0;
let num8 = 0;
do {
let tmp7 = [8, 8, 8, 4, 4, 2, 2][num8];
let tmp8 = tmp53[num8];
let sum = items[num8];
let num = 0;
let num2 = 0;
while (sum < height) {
sum = sum + tmp7;
num = num + 1;
num2 = num;
}
let sum1 = items1[num8];
let num3 = 0;
let num4 = 0;
while (sum1 < width) {
sum1 = sum1 + tmp8;
num3 = num3 + 1;
num4 = num3;
}
let _Math = Math;
let rounded1 = Math.ceil(num4 * tmp46 / 8);
let tmp12 = _filterZero;
let tmp13 = tmp4;
let tmp14 = size;
let tmp15 = num9;
let tmp16 = num4;
let tmp17 = num2;
let tmp18 = _filterZero(tmp4, size, num9, num4, num2);
let sum8 = items[num8];
let num5 = 0;
let tmp20 = tmp22;
let tmp21 = tmp23;
while (sum8 < height) {
let sum7 = items1[num8];
let sum6 = num9 + num5 * rounded1 << 3;
let tmp26 = tmp20;
let num6 = tmp21;
let tmp27 = sum6;
let tmp28 = tmp20;
let tmp29 = tmp21;
let tmp30 = sum7;
if (sum7 < width) {
do {
if (1 == tmp46) {
let sum2 = sum8 * rounded + (sum7 >> 3);
uint8Array1[sum2] = uint8Array1[sum2] | (tmp4[sum6 >> 3] >> 7 - (7 & sum6) & 1) << 7 - (7 & sum7);
}
if (2 == tmp46) {
let sum3 = sum8 * rounded + (sum7 >> 2);
uint8Array1[sum3] = uint8Array1[sum3] | (tmp4[sum6 >> 3] >> 6 - (7 & sum6) & 3) << 6 - ((3 & sum7) << 1);
}
if (4 == tmp46) {
let sum4 = sum8 * rounded + (sum7 >> 1);
uint8Array1[sum4] = uint8Array1[sum4] | (tmp4[sum6 >> 3] >> 4 - (7 & sum6) & 15) << 4 - ((1 & sum7) << 2);
}
if (tmp46 >= 8) {
let sum5 = sum8 * rounded + sum7 * tmp47;
let num7 = 0;
tmp26 = sum5;
num6 = 0;
if (0 < tmp47) {
do {
uint8Array1[sum5 + num7] = tmp4[(sum6 >> 3) + num7];
num7 = num7 + 1;
tmp26 = sum5;
num6 = num7;
} while (num7 < tmp47);
}
}
sum6 = sum6 + tmp46;
sum7 = sum7 + tmp8;
tmp27 = sum6;
tmp28 = tmp26;
tmp29 = num6;
tmp30 = sum7;
} while (sum7 < width);
}
num5 = num5 + 1;
sum8 = sum8 + tmp7;
let tmp35 = tmp30;
let tmp36 = tmp27;
tmp20 = tmp28;
tmp21 = tmp29;
tmp22 = tmp28;
tmp23 = tmp29;
}
let sum9 = num9;
if (num4 * num2 != 0) {
sum9 = num9 + num2 * (1 + rounded1);
}
num8 = num8 + 1;
num9 = sum9;
tmp38 = uint8Array1;
} while (num8 < 7);
}
}
return tmp38;
}
function _inflate(arr3, uint8Array) {
uint8Array = new Uint8Array(arr3.buffer, 2, arr3.length - 6);
return callback(uint8Array, uint8Array);
}
function _getBPP(depth) {
return [1, null, 3, 1, 2, null, 4][depth.ctype] * depth.depth;
}
function _filterZero(arg0, depth) {
const tmp = _getBPP(depth);
const rounded = Math.ceil(arg3 * tmp / 8);
const rounded1 = Math.ceil(tmp / 8);
if (arg0[arg2] > 1) {
arg0[arg2] = [0, 0, 1][tmp4 - 2];
}
if (3 == arg0[arg2]) {
let sum = rounded1;
if (rounded1 < rounded) {
do {
arg0[sum + 1] = arg0[sum + 1] + (arg0[sum + 1 - rounded1] >>> 1) & 255;
sum = sum + 1;
} while (sum < rounded);
}
}
for (let num3 = 0; num3 < arg4; num3 = num3 + 1) {
let sum1 = arg2 + num3 * rounded;
let sum2 = sum1 + num3 + 1;
let tmp8 = arg0[sum2 - 1];
if (0 == tmp8) {
for (let num11 = 0; num11 < rounded; num11 = num11 + 1) {
arg0[sum1 + num11] = arg0[sum2 + num11];
}
} else if (1 == tmp8) {
let num9 = 0;
let num10 = 0;
if (0 < rounded1) {
do {
arg0[sum1 + num9] = arg0[sum2 + num9];
num9 = num9 + 1;
num10 = num9;
} while (num9 < rounded1);
}
if (num10 < rounded) {
do {
arg0[sum1 + num10] = arg0[sum2 + num10] + arg0[sum1 + num10 - rounded1];
num10 = num10 + 1;
} while (num10 < rounded);
}
} else if (2 == tmp8) {
for (let num8 = 0; num8 < rounded; num8 = num8 + 1) {
arg0[sum1 + num8] = arg0[sum2 + num8] + arg0[sum1 + num8 - rounded];
}
} else if (3 == tmp8) {
let num6 = 0;
let num7 = 0;
if (0 < rounded1) {
do {
arg0[sum1 + num6] = arg0[sum2 + num6] + (arg0[sum1 + num6 - rounded] >>> 1);
num6 = num6 + 1;
num7 = num6;
} while (num6 < rounded1);
}
if (num7 < rounded) {
do {
arg0[sum1 + num7] = arg0[sum2 + num7] + (arg0[sum1 + num7 - rounded] + arg0[sum1 + num7 - rounded1] >>> 1);
num7 = num7 + 1;
} while (num7 < rounded);
}
} else {
let num4 = 0;
let num5 = 0;
if (0 < rounded1) {
do {
let tmp10 = _paeth;
let sum3 = sum1 + num4;
arg0[sum3] = arg0[sum2 + num4] + _paeth(0, arg0[sum1 + num4 - rounded], 0);
num4 = num4 + 1;
num5 = num4;
} while (num4 < rounded1);
}
if (num5 < rounded) {
do {
let tmp12 = _paeth;
let sum4 = sum1 + num5;
arg0[sum4] = arg0[sum2 + num5] + _paeth(arg0[sum1 + num5 - rounded1], arg0[sum1 + num5 - rounded], arg0[sum1 + num5 - rounded1 - rounded]);
num5 = num5 + 1;
} while (num5 < rounded);
}
}
}
return arg0;
}
function _paeth(arg0, arg1, arg2) {
let tmp = arg0;
let tmp2 = arg2;
const diff = arg0 + arg1 - arg2;
const diff1 = diff - arg0;
const diff2 = diff - arg1;
const diff3 = diff - arg2;
if (diff1 * diff1 > diff2 * diff2) {
if (diff2 * diff2 <= diff3 * diff3) {
tmp2 = arg1;
}
tmp = tmp2;
}
return tmp;
}
function _IHDR(arr3, sum2, arg2) {
arg2.width = obj.readUint(arr3, sum2);
const sum = sum2 + 4;
arg2.height = obj.readUint(arr3, sum);
const sum1 = sum + 4;
arg2.depth = arr3[sum1];
sum2 = sum1 + 1;
arg2.ctype = arr3[sum2];
const sum3 = sum2 + 1;
arg2.compress = arr3[sum3];
const sum4 = sum3 + 1;
arg2.filter = arr3[sum4];
arg2.interlace = arr3[sum4 + 1];
}
function _copyTile(arg0, width2, height2, arg3, width, height, arg6, arg7, arg8) {
const bound = Math.min(width2, width);
const bound1 = Math.min(height2, height);
for (let num = 0; num < bound1; num = num + 1) {
let tmp13 = tmp3;
let tmp14 = tmp4;
let tmp15 = tmp5;
let tmp16 = tmp6;
let tmp17 = tmp7;
let tmp18 = tmp8;
let tmp19 = tmp9;
let tmp20 = tmp10;
let tmp21 = tmp11;
let tmp22 = tmp12;
let num2 = 0;
if (0 < bound) {
while (true) {
if (arg6 >= 0) {
if (arg7 >= 0) {
let tmp23 = num * width2 + num2 << 2;
let tmp24 = (arg7 + num) * width + arg6 + num2 << 2;
if (0 == arg8) {
arg3[tmp24] = arg0[tmp23];
arg3[tmp24 + 1] = arg0[tmp23 + 1];
arg3[tmp24 + 2] = arg0[tmp23 + 2];
arg3[tmp24 + 3] = arg0[tmp23 + 3];
let tmp25 = tmp13;
let tmp26 = tmp14;
let tmp27 = tmp15;
let tmp28 = tmp16;
let tmp29 = tmp17;
let tmp30 = tmp18;
let tmp31 = tmp19;
let tmp32 = tmp20;
let tmp33 = tmp21;
let tmp34 = tmp22;
} else if (1 == arg8) {
let result = 0.00392156862745098 * arg0[tmp23 + 3];
let result1 = arg0[tmp23] * result;
let result2 = arg0[tmp23 + 1] * result;
let result3 = arg0[tmp23 + 2] * result;
let sum = tmp24 + 3;
let result4 = 0.00392156862745098 * arg3[sum];
let result5 = arg3[tmp24] * result4;
let sum1 = tmp24 + 1;
let result6 = arg3[sum1] * result4;
let sum2 = tmp24 + 2;
let result7 = arg3[sum2] * result4;
let diff = 1 - result;
let sum3 = result + result4 * diff;
let num3 = 0;
if (0 !== sum3) {
num3 = 1 / sum3;
}
arg3[sum] = 255 * sum3;
arg3[tmp24] = (result1 + result5 * diff) * num3;
arg3[sum1] = (result2 + result6 * diff) * num3;
arg3[sum2] = (result3 + result7 * diff) * num3;
tmp25 = result;
tmp26 = result1;
tmp27 = result2;
tmp28 = result3;
tmp29 = result4;
tmp30 = result5;
tmp31 = result6;
tmp32 = result7;
tmp33 = diff;
tmp34 = sum3;
} else if (2 == arg8) {
let tmp35 = arg0[tmp23 + 3];
let tmp36 = arg0[tmp23];
let tmp37 = arg0[tmp23 + 1];
let tmp38 = arg0[tmp23 + 2];
let sum4 = tmp24 + 3;
let tmp40 = arg3[sum4];
let tmp41 = arg3[tmp24];
let sum5 = tmp24 + 1;
let tmp43 = arg3[sum5];
let sum6 = tmp24 + 2;
let tmp45 = arg3[sum6];
if (tmp35 == tmp40) {
if (tmp36 == tmp41) {
if (tmp37 == tmp43) {
if (tmp38 == tmp45) {
arg3[tmp24] = 0;
arg3[sum5] = 0;
arg3[sum6] = 0;
arg3[sum4] = 0;
tmp25 = tmp35;
tmp26 = tmp36;
tmp27 = tmp37;
tmp28 = tmp38;
tmp29 = tmp40;
tmp30 = tmp41;
tmp31 = tmp43;
tmp32 = tmp45;
tmp33 = tmp21;
tmp34 = tmp22;
}
}
}
}
arg3[tmp24] = tmp36;
arg3[sum5] = tmp37;
arg3[sum6] = tmp38;
arg3[sum4] = tmp35;
tmp25 = tmp35;
tmp26 = tmp36;
tmp27 = tmp37;
tmp28 = tmp38;
tmp29 = tmp40;
tmp30 = tmp41;
tmp31 = tmp43;
tmp32 = tmp45;
tmp33 = tmp21;
tmp34 = tmp22;
} else {
tmp25 = tmp13;
tmp26 = tmp14;
tmp27 = tmp15;
tmp28 = tmp16;
tmp29 = tmp17;
tmp30 = tmp18;
tmp31 = tmp19;
tmp32 = tmp20;
tmp33 = tmp21;
tmp34 = tmp22;
if (3 == arg8) {
let tmp61 = arg0[tmp23 + 3];
let tmp62 = arg0[tmp23];
let tmp63 = arg0[tmp23 + 1];
let tmp64 = arg0[tmp23 + 2];
let tmp65 = arg3[tmp24 + 3];
let tmp66 = arg3[tmp24];
let tmp67 = arg3[tmp24 + 1];
let tmp68 = arg3[tmp24 + 2];
if (tmp61 == tmp65) {
if (tmp62 == tmp66) {
if (tmp63 == tmp67) {
tmp25 = tmp61;
tmp26 = tmp62;
tmp27 = tmp63;
tmp28 = tmp64;
tmp29 = tmp65;
tmp30 = tmp66;
tmp31 = tmp67;
tmp32 = tmp68;
tmp33 = tmp21;
tmp34 = tmp22;
}
}
}
tmp26 = tmp62;
tmp27 = tmp63;
tmp28 = tmp64;
tmp29 = tmp65;
tmp30 = tmp66;
tmp31 = tmp67;
tmp32 = tmp68;
tmp33 = tmp21;
tmp34 = tmp22;
tmp25 = tmp61;
if (tmp61 < 220) {
tmp25 = tmp61;
tmp26 = tmp62;
tmp27 = tmp63;
tmp28 = tmp64;
tmp29 = tmp65;
tmp30 = tmp66;
tmp31 = tmp67;
tmp32 = tmp68;
tmp33 = tmp21;
tmp34 = tmp22;
if (tmp65 > 20) {
let flag = false;
return false;
}
}
}
}
num2 = num2 + 1;
tmp13 = tmp25;
tmp14 = tmp26;
tmp15 = tmp27;
tmp16 = tmp28;
tmp17 = tmp29;
tmp18 = tmp30;
tmp19 = tmp31;
tmp20 = tmp32;
tmp21 = tmp33;
tmp22 = tmp34;
let tmp59 = tmp23;
let tmp60 = tmp24;
tmp3 = tmp25;
tmp4 = tmp26;
tmp5 = tmp27;
tmp6 = tmp28;
tmp7 = tmp29;
tmp8 = tmp30;
tmp9 = tmp31;
tmp10 = tmp32;
tmp11 = tmp33;
tmp12 = tmp34;
if (num2 >= bound) {
break;
}
}
}
tmp23 = (-arg7 + num) * width2 - arg6 + num2 << 2;
tmp24 = num * width + num2 << 2;
}
}
}
return true;
}
let obj = {
nextZero(arr3, sum2) {
let tmp4;
let tmp = sum2;
let tmp2 = sum2;
if (0 != arr3[sum2]) {
do {
let sum = tmp + 1;
tmp = sum;
tmp2 = sum;
tmp4 = arr3[sum];
} while (0 != tmp4);
}
return tmp2;
},
readUshort(arr3, sum2) {
return arr3[sum2] << 8 | arr3[sum2 + 1];
},
writeUshort(uint8Array, sum40, arg2) {
uint8Array[sum40] = arg2 >> 8 & 255;
uint8Array[sum40 + 1] = 255 & arg2;
},
readUint(arr3, sum2) {
return 16777216 * arr3[sum2] + (arr3[sum2 + 1] << 16 | arr3[sum2 + 2] << 8 | arr3[sum2 + 3]);
},
writeUint(uint8Array, writeUintResult16, height) {
uint8Array[writeUintResult16] = height >> 24 & 255;
uint8Array[writeUintResult16 + 1] = height >> 16 & 255;
uint8Array[writeUintResult16 + 2] = height >> 8 & 255;
uint8Array[writeUintResult16 + 3] = 255 & height;
},
readASCII(arr3, sum2, sum) {
let num = 0;
let str = "";
let str2 = "";
if (0 < sum) {
do {
let _String = String;
str = `${String.fromCharCode(arr3[sum2 + num])}`;
num = num + 1;
str2 = str;
} while (num < sum);
}
return str2;
},
writeASCII(uint8Array, writeUintResult16, IEND) {
let length;
let num = 0;
if (0 < IEND.length) {
do {
let sum = writeUintResult16 + num;
uint8Array[sum] = IEND.charCodeAt(num);
num = num + 1;
length = IEND.length;
} while (num < length);
}
},
readBytes(arr3, sum2, uint) {
const items = [];
for (let num = 0; num < uint; num = num + 1) {
let arr = items.push(arr3[sum2 + num]);
}
return items;
},
pad(arg0) {
let text = arg0;
if (arg0.length < 2) {
text = `0${arg0}`;
}
return text;
},
readUTF8(arr3, sum, length) {
let str = "";
let num = 0;
if (0 < length) {
do {
let tmp = str;
let tmp2 = obj;
let tmp4 = arr3;
let tmp5 = sum;
let str2 = arr3[sum + num];
str = `${"%" + tmp3(str2.toString(16))}`;
num = num + 1;
let tmp6 = length;
} while (num < length);
}
return decodeURIComponent(str);
}
};
let closure_1 = (() => {
function C(arg0, arg1) {
const v = obj.v;
for (let num = 0; num <= arg1; num = num + 1) {
v[num] = 0;
}
for (let num2 = 1; num2 < length; num2 = num2 + 2) {
let tmp = arg0[num2];
v[tmp] = v[tmp] + 1;
}
const m = obj.m;
v[0] = 0;
let num3 = 0;
for (let num4 = 1; num4 <= arg1; num4 = num4 + 1) {
num3 = num3 + v[num4 - 1] << 1;
m[num4] = num3;
}
for (let num5 = 0; num5 < length; num5 = num5 + 2) {
let tmp2 = arg0[num5 + 1];
if (0 != tmp2) {
arg0[num5] = m[tmp2];
m[tmp2] = m[tmp2] + 1;
}
}
}
function t(arg0, arg1, arg2) {
for (let num = 0; num < length; num = num + 2) {
let sum = num + 1;
if (0 != arg0[sum]) {
let tmp3 = arg0[sum];
let tmp4 = num >> 1 << 4 | tmp3;
let diff = arg1 - tmp3;
let tmp6 = arg0[num] << diff;
let sum1 = tmp6 + (1 << diff);
let sum2 = tmp6;
let tmp9 = tmp4;
let tmp10 = tmp6;
let tmp11 = sum1;
if (tmp6 != sum1) {
do {
arg2[tmp[sum2] >>> 15 - arg1] = tmp4;
sum2 = sum2 + 1;
let tmp12 = tmp4;
let tmp13 = sum1;
let tmp14 = sum2;
} while (sum2 != sum1);
}
}
}
}
function g(arg0, arg1) {
let length;
let num = 0;
if (0 < arg0.length) {
do {
arg0[num] = tmp[arg0[num] << arg1 - arg0[num + 1]] >>> tmp2;
num = num + 2;
length = arg0.length;
} while (num < length);
}
}
function F(arg0, arg1, arg2) {
return (arg0[arg1 >>> 3] | arg0[1 + (arg1 >>> 3)] << 8) >>> (7 & arg1) & (1 << arg2) - 1;
}
function s(arg0, arg1, arg2) {
return (arg0[arg1 >>> 3] | arg0[1 + (arg1 >>> 3)] << 8 | arg0[2 + (arg1 >>> 3)] << 16) >>> (7 & arg1) & (1 << arg2) - 1;
}
function w(arg0, arg1) {
return (arg0[arg1 >>> 3] | arg0[1 + (arg1 >>> 3)] << 8 | arg0[2 + (arg1 >>> 3)] << 16) >>> (7 & arg1);
}
function H(arg0, arg1) {
if (arg1 <= arg0.length) {
return arg0;
} else {
const _Uint8Array = Uint8Array;
const _Math = Math;
const uint8Array = new Uint8Array(Math.max(length << 1, arg1));
const result = uint8Array.set(arg0, 0);
return uint8Array;
}
}
function B(arg0, arg1, arg2, arg3, arg4, arg5) {
let sum1;
let tmp = arg4;
let num = 0;
let tmp5 = arg4;
if (0 < arg2) {
do {
let tmp6 = w;
let tmp7 = arg0[w(undefined, arg3, tmp) & arg1];
let sum = tmp + (15 & tmp7);
let tmp9 = tmp7 >>> 4;
if (tmp9 <= 15) {
arg5[num] = tmp9;
sum1 = num + 1;
let tmp16 = sum;
let tmp17 = tmp2;
let tmp18 = tmp3;
let tmp19 = tmp4;
} else {
if (16 === tmp9) {
let tmp13 = F;
let num3 = 3 + F(arg3, sum, 2);
let sum2 = sum + 2;
let num2 = arg5[num - 1];
} else if (17 === tmp9) {
let tmp12 = F;
num3 = 3 + F(arg3, sum, 3);
sum2 = sum + 3;
num2 = 0;
} else {
sum2 = sum;
num2 = 0;
num3 = 0;
if (18 === tmp9) {
let tmp11 = F;
num3 = 11 + F(arg3, sum, 7);
sum2 = sum + 7;
num2 = 0;
}
}
let sum3 = num + num3;
let sum4 = num;
tmp16 = sum2;
tmp17 = num2;
tmp18 = num3;
tmp19 = sum3;
sum1 = num;
if (num < sum3) {
do {
arg5[sum4] = num2;
sum4 = sum4 + 1;
tmp16 = sum2;
tmp17 = num2;
tmp18 = num3;
sum1 = sum4;
tmp19 = sum3;
} while (sum4 < sum3);
}
}
tmp = tmp16;
num = sum1;
tmp2 = tmp17;
tmp3 = tmp18;
tmp4 = tmp19;
tmp5 = tmp16;
} while (sum1 < arg2);
}
return tmp5;
}
function d(arg0, arg1, arg2, arg3) {
let num = 0;
let num2 = 0;
let num3 = 0;
let num4 = 0;
if (0 < arg2) {
do {
let tmp2 = arg0[num2 + arg1];
arg3[num2 << 1] = 0;
arg3[1 + (num2 << 1)] = tmp2;
if (tmp2 > num) {
num = tmp2;
}
num2 = num2 + 1;
num3 = num;
num4 = num2;
} while (num2 < arg2);
}
if (num4 < arg3.length >>> 1) {
do {
arg3[num4 << 1] = 0;
arg3[1 + (num4 << 1)] = 0;
num4 = num4 + 1;
} while (num4 < tmp);
}
return num3;
}
let obj = {};
const uint16Array = new Uint16Array(16);
obj.m = uint16Array;
const uint16Array1 = new Uint16Array(16);
obj.v = uint16Array1;
obj.d = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];
obj.o = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 999, 999, 999];
obj.z = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0, 0];
const uint16Array2 = new Uint16Array(32);
obj.B = uint16Array2;
obj.p = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 65535, 65535];
obj.w = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 0, 0];
const uint32Array = new Uint32Array(32);
obj.h = uint32Array;
const uint16Array3 = new Uint16Array(512);
obj.g = uint16Array3;
obj.s = [];
const uint16Array4 = new Uint16Array(32);
obj.A = uint16Array4;
obj.t = [];
const uint16Array5 = new Uint16Array(32768);
obj.k = uint16Array5;
obj.c = [];
obj.a = [];
const uint16Array6 = new Uint16Array(32768);
obj.n = uint16Array6;
obj.e = [];
const uint16Array7 = new Uint16Array(512);
obj.C = uint16Array7;
obj.b = [];
const uint16Array8 = new Uint16Array(32768);
obj.i = uint16Array8;
const uint32Array1 = new Uint32Array(286);
obj.r = uint32Array1;
const uint32Array2 = new Uint32Array(30);
obj.f = uint32Array2;
const uint32Array3 = new Uint32Array(19);
obj.l = uint32Array3;
const uint32Array4 = new Uint32Array(15000);
obj.u = uint32Array4;
const uint16Array9 = new Uint16Array(65536);
obj.q = uint16Array9;
const uint16Array10 = new Uint16Array(32768);
obj.j = uint16Array10;
(() => {
let num2;
class A {
constructor(arg0, arg1, arg2) {
tmp = +arg1;
diff = tmp - 1;
if (0 != tmp) {
do {
arr = arg0.push(0, arg2);
tmp4 = +diff;
diff = tmp4 - 1;
} while (0 != tmp4);
}
return;
}
}
let num = 0;
do {
let tmp = (2863311530 & num) >>> 1 | (1431655765 & num) << 1;
let tmp2 = (3435973836 & tmp) >>> 2 | (858993459 & tmp) << 2;
let tmp3 = (4042322160 & tmp2) >>> 4 | (252645135 & tmp2) << 4;
let tmp4 = (4278255360 & tmp3) >>> 8 | (16711935 & tmp3) << 8;
let tmp5 = obj;
obj.i[num] = (tmp4 >>> 16 | tmp4 << 16) >>> 17;
num = num + 1;
num2 = 0;
} while (num < 32768);
do {
let tmp6 = obj;
let tmp7 = obj;
let tmp8 = obj;
obj.B[num2] = obj.o[num2] << 3 | obj.z[num2];
let tmp9 = obj;
let tmp10 = obj;
let tmp11 = obj;
obj.h[num2] = obj.p[num2] << 4 | obj.w[num2];
num2 = num2 + 1;
} while (num2 < 32);
A(obj.s, 144, 8);
A(obj.s, 112, 9);
A(obj.s, 24, 7);
A(obj.s, 8, 8);
C(obj.s, 9);
t(obj.s, 9, obj.g);
g(obj.s, 9);
A(obj.t, 32, 5);
C(obj.t, 5);
t(obj.t, 5, obj.A);
g(obj.t, 5);
A(obj.b, 19, 0);
A(obj.c, 286, 0);
A(obj.e, 30, 0);
A(obj.a, 320, 0);
})();
return function v(buffer) {
let arr;
let sum5;
let tmp14;
let _Uint8Array = arg1;
_Uint8Array = Uint8Array;
if (3 == buffer[0]) {
if (0 == buffer[1]) {
if (!_Uint8Array) {
const prototype3 = _Uint8Array.prototype;
_Uint8Array = new.target;
_Uint8Array = new.target;
_Uint8Array = new _Uint8Array(0);
}
return _Uint8Array;
}
}
let _Uint8Array1 = _Uint8Array;
if (null == _Uint8Array) {
const prototype = _Uint8Array.prototype;
_Uint8Array1 = new _Uint8Array(buffer.length >>> 2 << 3);
}
let num3 = 0;
let num4 = 0;
let num5 = 0;
let num6 = 0;
let num7 = 0;
let num8 = 0;
let num9 = 0;
do {
let tmp13 = s;
tmp14 = s(buffer, num9, 1);
let tmp15 = s(buffer, num9 + 1, 2);
let sum = num9 + 3;
if (0 !== tmp15) {
let tmp41 = _Uint8Array1;
if (tmp2) {
let tmp42 = H;
tmp41 = H(_Uint8Array1, num8 + 131072);
}
if (1 === tmp15) {
let tmp43 = obj;
let g = obj.g;
let tmp44 = obj;
let A = obj.A;
num6 = 511;
num7 = 31;
}
let tmp45 = tmp41;
let sum2 = num8;
let tmp47 = sum;
let tmp48 = tmp8;
let tmp49 = tmp9;
let tmp50 = tmp10;
if (2 === tmp15) {
_Uint8Array = F;
_Uint8Array = F(buffer, sum, 5) + 257;
_Uint8Array = F(buffer, sum + 5, 5) + 1;
_Uint8Array = F(buffer, sum + 10, 4) + 4;
_Uint8Array = sum + 14;
let num10 = 0;
do {
let tmp51 = obj;
obj.b[num10] = 0;
let tmp52 = obj;
obj.b[num10 + 1] = 0;
num10 = num10 + 2;
} while (num10 < 38);
let num11 = 1;
let num12 = 0;
let num13 = 1;
let num14 = 0;
if (0 < _Uint8Array) {
do {
let tmp53 = F;
let tmp54 = F(buffer, _Uint8Array + 3 * num12, 3);
let tmp55 = obj;
let tmp56 = obj;
obj.b[1 + (obj.d[num12] << 1)] = tmp54;
if (tmp54 > num11) {
num11 = tmp54;
}
num12 = num12 + 1;
num13 = num11;
tmp8 = tmp54;
num14 = num12;
} while (num12 < _Uint8Array);
}
let tmp57 = C;
let tmp58 = obj;
let tmp59 = C(obj.b, num13);
let tmp60 = t;
let tmp61 = obj;
let tmp62 = obj;
let tmp63 = t(obj.b, num13, obj.C);
let tmp64 = obj;
let k = obj.k;
let tmp65 = obj;
let n = obj.n;
let tmp66 = B;
let tmp67 = obj;
let tmp68 = obj;
let tmp69 = buffer;
tmp47 = B(obj.C, (1 << num13) - 1, _Uint8Array + _Uint8Array, buffer, _Uint8Array + 3 * _Uint8Array, obj.a);
let tmp70 = d;
let tmp71 = obj;
let tmp72 = obj;
let num15 = 0;
let tmp73 = _Uint8Array;
let tmp74 = d(obj.a, 0, _Uint8Array, obj.c);
num6 = (1 << tmp74) - 1;
let tmp75 = obj;
let tmp76 = obj;
let tmp77 = _Uint8Array;
let tmp78 = _Uint8Array;
let tmp79 = d(obj.a, _Uint8Array, _Uint8Array, obj.e);
num7 = (1 << tmp79) - 1;
let tmp80 = obj;
let tmp81 = C(obj.c, tmp74);
let tmp82 = obj;
let tmp83 = t(obj.c, tmp74, k);
let tmp84 = obj;
let tmp85 = C(obj.e, tmp79);
let tmp86 = obj;
let tmp87 = t(obj.e, tmp79, n);
let tmp6 = num13;
let tmp7 = num14;
tmp48 = tmp8;
tmp45 = tmp41;
g = k;
A = n;
num3 = _Uint8Array;
num4 = _Uint8Array;
num5 = _Uint8Array;
sum2 = num8;
tmp49 = tmp9;
tmp50 = tmp10;
}
while (true) {
let tmp88 = w;
let tmp89 = g[w(undefined, buffer, tmp47) & num6];
let sum1 = tmp47 + (15 & tmp89);
let tmp91 = tmp89 >>> 4;
let tmp92 = tmp45;
_Uint8Array = sum2;
_Uint8Array = tmp49;
_Uint8Array = tmp50;
if (tmp91 >>> 8 === 0) {
_Uint8Array = +sum2;
sum2 = _Uint8Array + 1;
tmp45[_Uint8Array] = tmp91;
tmp47 = sum1;
continue;
} else {
arr = tmp45;
let tmp28 = g;
let tmp29 = A;
let tmp30 = num3;
let tmp31 = num4;
let tmp32 = num5;
let tmp33 = num6;
let tmp34 = num7;
sum5 = sum2;
num9 = sum1;
let tmp35 = tmp6;
let tmp36 = tmp7;
let tmp37 = tmp48;
let tmp38 = tmp49;
let tmp39 = tmp50;
let sum4 = tmp11;
let tmp40 = tmp12;
_Uint8Array = tmp91;
if (256 === tmp91) {
break;
} else {
_Uint8Array = sum2 + tmp91 - 254;
_Uint8Array = sum1;
if (tmp91 > 264) {
_Uint8Array = obj;
_Uint8Array = obj.B[tmp91 - 257];
_Uint8Array = F;
_Uint8Array = sum2 + (_Uint8Array >>> 3);
_Uint8Array = _Uint8Array + F(buffer, sum1, 7 & _Uint8Array);
_Uint8Array = sum1 + (7 & _Uint8Array);
}
_Uint8Array = w;
_Uint8Array = A[w(undefined, buffer, _Uint8Array) & num7];
_Uint8Array = _Uint8Array + (15 & _Uint8Array);
_Uint8Array = obj;
_Uint8Array = obj.h[_Uint8Array >>> 4];
_Uint8Array = s;
_Uint8Array = _Uint8Array >>> 4;
_Uint8Array = _Uint8Array + s(buffer, _Uint8Array, 15 & _Uint8Array);
_Uint8Array = _Uint8Array + (15 & _Uint8Array);
_Uint8Array = tmp45;
if (tmp2) {
_Uint8Array = H;
_Uint8Array = H(tmp45, sum2 + 131072);
}
tmp45 = _Uint8Array;
sum2 = _Uint8Array;
tmp47 = _Uint8Array;
tmp49 = _Uint8Array;
tmp50 = _Uint8Array;
if (_Uint8Array >= _Uint8Array) {
continue;
} else {
do {
_Uint8Array = +_Uint8Array;
_Uint8Array = _Uint8Array + 1;
_Uint8Array[_Uint8Array] = _Uint8Array[_Uint8Array - _Uint8Array];
_Uint8Array = +_Uint8Array;
_Uint8Array = _Uint8Array + 1;
_Uint8Array[_Uint8Array] = _Uint8Array[_Uint8Array - _Uint8Array];
_Uint8Array = +_Uint8Array;
_Uint8Array = _Uint8Array + 1;
_Uint8Array[_Uint8Array] = _Uint8Array[_Uint8Array - _Uint8Array];
_Uint8Array = +_Uint8Array;
_Uint8Array = _Uint8Array + 1;
_Uint8Array[_Uint8Array] = _Uint8Array[_Uint8Array - _Uint8Array];
tmp45 = _Uint8Array;
g = tmp93;
A = tmp94;
num3 = tmp95;
num4 = tmp96;
num5 = tmp97;
num6 = tmp98;
num7 = tmp99;
sum2 = _Uint8Array;
tmp47 = _Uint8Array;
tmp6 = _Uint8Array;
tmp7 = _Uint8Array;
tmp48 = _Uint8Array;
tmp50 = _Uint8Array;
tmp49 = _Uint8Array;
} while (_Uint8Array < _Uint8Array);
continue;
}
continue;
}
}
}
} else {
_Uint8Array = 7 & sum;
let sum3 = sum;
if (_Uint8Array) {
sum3 = sum + (8 - _Uint8Array);
}
sum4 = 4 + (sum3 >>> 3);
let tmp19 = buffer[sum4 - 4] | buffer[sum4 - 3] << 8;
obj = _Uint8Array1;
if (tmp2) {
let tmp20 = H;
obj = H(_Uint8Array1, num8 + tmp19);
}
let prototype2 = _Uint8Array.prototype;
let tmp21 = new.target;
let tmp22 = new.target;
let tmp23 = tmp19;
let _Uint8Array2 = new _Uint8Array(buffer.buffer, buffer.byteOffset + sum4, tmp19);
let tmp25 = _Uint8Array2;
let result = obj.set(_Uint8Array2, num8);
num9 = sum4 + tmp19 << 3;
sum5 = num8 + tmp19;
arr = obj;
tmp28 = g;
tmp29 = A;
tmp30 = num3;
tmp31 = num4;
tmp32 = num5;
tmp33 = num6;
tmp34 = num7;
tmp35 = tmp6;
tmp36 = tmp7;
tmp37 = tmp8;
tmp38 = tmp9;
tmp39 = tmp10;
tmp40 = tmp19;
}
g = tmp28;
A = tmp29;
num3 = tmp30;
num4 = tmp31;
num5 = tmp32;
num6 = tmp33;
num7 = tmp34;
tmp6 = tmp35;
tmp7 = tmp36;
tmp8 = tmp37;
tmp9 = tmp38;
tmp10 = tmp39;
tmp11 = sum4;
tmp12 = tmp40;
_Uint8Array1 = arr;
num8 = sum5;
} while (0 === tmp14);
_Uint8Array = arr;
if (arr.length != sum5) {
_Uint8Array = arr.slice(0, sum5);
}
return _Uint8Array;
};
})();
obj = {
decode(arg0) {
let obj;
let readUint;
let readUshort;
const uint8Array = new Uint8Array(arg0);
let sum = uint8Array;
const arr3 = uint8Array;
let num = 8;
({ readUshort, readUint } = obj);
const size = { tabs: {}, frames: [] };
const uint8Array1 = new Uint8Array(uint8Array.length);
let num2 = 0;
while (arr3[num2] == [137, 80, 78, 71, 13, 10, 26, 10][num2]) {
sum = num2 + 1;
num2 = sum;
if (sum < 8) {
continue;
} else {
let tmp6 = num;
let tmp7 = sum;
let num3 = 4;
let num4 = 1;
let num5 = 2;
let tmp8 = null;
let num6 = 1000;
let num7 = 24;
let num8 = 25;
let num9 = 12;
let num10 = 16;
let num11 = 22;
let num12 = 20;
let num13 = 100;
let str = "tEXt";
let num14 = 3;
let num15 = 100000;
let num16 = 6;
let str2 = "IEND";
let str3 = "bKGD";
let str4 = "sRGB";
let str5 = "gAMA";
let str6 = "tRNS";
let str7 = "hIST";
let str8 = "PLTE";
let str9 = "iTXt";
let str10 = "zTXt";
let str11 = "cHRM";
let str12 = "pHYs";
let str13 = "fdAT";
let str14 = "fcTL";
let str15 = "acTL";
let str16 = "IDAT";
let str17 = "CgBI";
let str18 = "iCCP";
let str19 = "IHDR";
let num17 = 0;
let num18 = 0;
let num19 = 0;
if (num < arr3.length) {
while (true) {
let tmp15 = tmp2;
let tmp16 = sum;
let tmp17 = num;
let uint = obj.readUint(arr3, num);
let sum1 = num + 4;
let tmp20 = sum1;
let aSCII = obj.readASCII(arr3, sum1, 4);
let tmp22 = aSCII;
let sum2 = sum1 + 4;
if ("IHDR" == aSCII) {
sum = _IHDR;
sum = sum2;
sum = size;
sum = _IHDR(arr3, sum2, tmp3);
let uint8Array2 = arr4;
let sum3 = num17;
let sum4 = num18;
let num20 = sum;
let tmp28 = tmp9;
let tmp29 = tmp10;
let tmp30 = tmp11;
let tmp31 = tmp12;
let tmp32 = tmp13;
let tmp33 = tmp14;
} else {
sum = aSCII;
if ("iCCP" == tmp22) {
sum = sum2;
sum = sum2;
if (0 != arr3[sum2]) {
do {
sum = sum + 1;
sum = arr3[sum];
} while (0 != sum);
}
sum = tmp2;
sum = sum2;
sum = obj.readASCII(arr3, sum2, sum - sum2);
sum = arr3[sum + 1];
sum = uint;
sum = arr3.slice(sum + 2, sum2 + uint);
sum = null;
sum = _inflate;
sum = _inflate(sum);
sum = size;
sum = aSCII;
tmp3.tabs[tmp22] = sum;
uint8Array2 = arr4;
sum3 = num17;
sum4 = num18;
num20 = sum;
tmp28 = tmp9;
tmp29 = tmp10;
tmp30 = tmp11;
tmp31 = tmp12;
tmp32 = tmp13;
tmp33 = tmp14;
} else {
sum = aSCII;
if ("CgBI" == tmp22) {
sum = size;
sum = aSCII;
sum = sum2;
tmp3.tabs[tmp22] = arr3.slice(sum2, sum2 + 4);
uint8Array2 = arr4;
sum3 = num17;
sum4 = num18;
num20 = sum;
tmp28 = tmp9;
tmp29 = tmp10;
tmp30 = tmp11;
tmp31 = tmp12;
tmp32 = tmp13;
tmp33 = tmp14;
} else {
sum = aSCII;
if ("IDAT" == tmp22) {
sum = uint;
let num27 = 0;
let num28 = 0;
if (0 < uint) {
do {
sum = sum2;
uint8Array1[num17 + num27] = arr3[sum2 + num27];
num27 = num27 + 1;
sum = uint;
num28 = num27;
} while (num27 < uint);
}
sum = uint;
sum3 = num17 + uint;
num20 = num28;
uint8Array2 = arr4;
sum4 = num18;
tmp28 = tmp9;
tmp29 = tmp10;
tmp30 = tmp11;
tmp31 = tmp12;
tmp32 = tmp13;
tmp33 = tmp14;
} else {
sum = aSCII;
if ("acTL" == tmp22) {
sum = size;
sum = aSCII;
obj = {};
sum = sum2;
obj.num_frames = readUint(arr3, sum2);
obj.num_plays = readUint(arr3, sum2 + 4);
tmp3.tabs[tmp22] = obj;
let _Uint8Array = Uint8Array;
sum = new.target;
sum = new.target;
uint8Array2 = new Uint8Array(arr3.length);
sum3 = num17;
sum4 = num18;
num20 = sum;
tmp28 = tmp9;
tmp29 = tmp10;
tmp30 = tmp11;
tmp31 = tmp12;
tmp32 = tmp13;
tmp33 = tmp14;
} else {
sum = aSCII;
if ("fcTL" == tmp22) {
let num25 = num18;
if (0 != num18) {
sum = size;
sum = tmp3.frames[tmp3.frames.length - 1];
sum = _decompress;
sum = tmp3;
sum.data = _decompress(size, arr4.slice(0, num18), sum.rect.width, sum.rect.height);
num25 = 0;
}
obj = {};
sum = sum2;
obj.x = readUint(arr3, sum2 + 12);
obj.y = readUint(arr3, sum2 + 16);
obj.width = readUint(arr3, sum2 + 4);
obj.height = readUint(arr3, sum2 + 8);
sum = readUshort(arr3, sum2 + 22);
let obj1 = { rect: obj };
let num26 = 100;
sum = readUshort(arr3, sum2 + 20);
if (0 != sum) {
num26 = sum;
}
sum = sum / num26;
obj1.delay = 1000 * sum;
sum = sum2;
obj1.dispose = arr3[sum2 + 24];
obj1.blend = arr3[sum2 + 25];
sum = size;
let frames = tmp3.frames;
sum = frames.push(obj1);
uint8Array2 = arr4;
sum3 = num17;
sum4 = num25;
num20 = sum;
tmp28 = sum;
tmp29 = tmp10;
tmp30 = tmp11;
tmp31 = tmp12;
tmp32 = tmp13;
tmp33 = tmp14;
} else {
sum = aSCII;
if ("fdAT" == tmp22) {
sum = uint;
let num23 = 0;
let num24 = 0;
if (0 < uint - 4) {
do {
sum = sum2;
arr4[num18 + num23] = arr3[sum2 + num23 + 4];
num23 = num23 + 1;
sum = uint;
num24 = num23;
sum = uint - 4;
} while (num23 < sum);
}
sum = uint;
sum4 = num18 + (uint - 4);
num20 = num24;
uint8Array2 = arr4;
sum3 = num17;
tmp28 = tmp9;
tmp29 = tmp10;
tmp30 = tmp11;
tmp31 = tmp12;
tmp32 = tmp13;
tmp33 = tmp14;
} else {
sum = aSCII;
if ("pHYs" == tmp22) {
sum = size;
sum = aSCII;
sum = tmp2;
sum = sum2;
let items = [obj.readUint(arr3, sum2), obj.readUint(arr3, sum2 + 4), arr3[sum2 + 8]];
tmp3.tabs[tmp22] = items;
uint8Array2 = arr4;
sum3 = num17;
sum4 = num18;
num20 = sum;
tmp28 = tmp9;
tmp29 = tmp10;
tmp30 = tmp11;
tmp31 = tmp12;
tmp32 = tmp13;
tmp33 = tmp14;
} else {
sum = aSCII;
if ("cHRM" == tmp22) {
sum = size;
sum = aSCII;
tmp3.tabs[tmp22] = [];
let num22 = 0;
do {
sum = size;
sum = aSCII;
let arr11 = tmp3.tabs[tmp22];
sum = tmp2;
sum = sum2;
sum = arr11.push(obj.readUint(arr3, sum2 + 4 * num22));
num22 = num22 + 1;
uint8Array2 = arr4;
sum3 = num17;
sum4 = num18;
tmp28 = tmp9;
tmp29 = tmp10;
tmp30 = tmp11;
tmp31 = tmp12;
tmp32 = tmp13;
tmp33 = tmp14;
num20 = num22;
} while (num22 < 8);
} else {
sum = aSCII;
if ("tEXt" != tmp22) {
sum = aSCII;
if ("zTXt" != tmp22) {
sum = aSCII;
if ("iTXt" == tmp22) {
let tmp79 = size;
let tmp80 = aSCII;
if (null == tmp3.tabs[tmp22]) {
let tmp81 = size;
let tmp82 = aSCII;
tmp3.tabs[tmp22] = {};
}
let tmp83 = sum2;
let tmp84 = sum2;
let tmp85 = tmp2;
let tmp86 = sum;
let nextZeroResult = obj.nextZero(arr3, sum2);
let aSCII1 = obj.readASCII(arr3, sum2, nextZeroResult - sum2);
let sum5 = nextZeroResult + 1;
let tmp90 = sum5;
let tmp91 = arr3[sum5 + 1];
let sum6 = sum5 + 2;
let tmp93 = sum6;
let nextZeroResult1 = obj.nextZero(arr3, sum6);
let aSCII2 = obj.readASCII(arr3, sum6, nextZeroResult1 - sum6);
let sum7 = nextZeroResult1 + 1;
let tmp97 = sum7;
let nextZeroResult2 = obj.nextZero(arr3, sum7);
let uTF8 = obj.readUTF8(arr3, sum7, nextZeroResult2 - sum7);
sum = uint;
sum = nextZeroResult2 + 1;
sum = uint - (sum - sum2);
if (0 == arr3[sum5]) {
sum = tmp2;
sum = obj.readUTF8(arr3, sum, sum);
} else {
sum = _inflate;
let arr9 = _inflate(arr3.slice(sum, sum + sum));
sum = tmp2;
sum = obj.readUTF8(arr9, 0, arr9.length);
}
sum = size;
sum = aSCII;
tmp3.tabs[tmp22][aSCII1] = sum;
tmp32 = sum;
uint8Array2 = arr4;
sum3 = num17;
sum4 = num18;
num20 = sum;
tmp28 = tmp9;
tmp29 = nextZeroResult2;
tmp30 = aSCII1;
tmp31 = sum;
tmp33 = tmp14;
} else {
sum = aSCII;
if ("PLTE" == tmp22) {
let tmp73 = size;
let tmp74 = aSCII;
let tmp75 = tmp2;
let tmp76 = sum;
let tmp77 = sum2;
let tmp78 = uint;
tmp3.tabs[tmp22] = obj.readBytes(arr3, sum2, uint);
uint8Array2 = arr4;
sum3 = num17;
sum4 = num18;
num20 = sum;
tmp28 = tmp9;
tmp29 = tmp10;
tmp30 = tmp11;
tmp31 = tmp12;
tmp32 = tmp13;
tmp33 = tmp14;
} else {
sum = aSCII;
if ("hIST" == tmp22) {
let tmp65 = size;
let result = tmp3.tabs.PLTE.length / 3;
let tmp67 = aSCII;
tmp3.tabs[tmp22] = [];
let num21 = 0;
uint8Array2 = arr4;
sum3 = num17;
sum4 = num18;
num20 = 0;
tmp28 = tmp9;
tmp29 = tmp10;
tmp30 = tmp11;
tmp31 = tmp12;
tmp32 = tmp13;
tmp33 = result;
if (0 < result) {
do {
let tmp68 = size;
let tmp69 = aSCII;
let arr8 = tmp3.tabs[tmp22];
let tmp70 = sum;
let tmp71 = sum2;
let arr = arr8.push(readUshort(arr3, sum2 + 2 * num21));
num21 = num21 + 1;
uint8Array2 = arr4;
sum3 = num17;
sum4 = num18;
tmp28 = tmp9;
tmp29 = tmp10;
tmp30 = tmp11;
tmp31 = tmp12;
tmp32 = tmp13;
tmp33 = result;
num20 = num21;
} while (num21 < result);
}
} else {
sum = aSCII;
if ("tRNS" == tmp22) {
let tmp54 = size;
if (3 == tmp3.ctype) {
let tmp59 = size;
let tmp60 = aSCII;
let tmp61 = tmp2;
let tmp62 = sum;
let tmp63 = sum2;
let tmp64 = uint;
tmp3.tabs[tmp22] = obj.readBytes(arr3, sum2, uint);
uint8Array2 = arr4;
sum3 = num17;
sum4 = num18;
num20 = sum;
tmp28 = tmp9;
tmp29 = tmp10;
tmp30 = tmp11;
tmp31 = tmp12;
tmp32 = tmp13;
tmp33 = tmp14;
} else {
sum = size;
if (0 == tmp3.ctype) {
let tmp55 = size;
let tmp56 = aSCII;
let tmp57 = sum;
let tmp58 = sum2;
tmp3.tabs[tmp22] = readUshort(arr3, sum2);
uint8Array2 = arr4;
sum3 = num17;
sum4 = num18;
num20 = sum;
tmp28 = tmp9;
tmp29 = tmp10;
tmp30 = tmp11;
tmp31 = tmp12;
tmp32 = tmp13;
tmp33 = tmp14;
} else {
sum = size;
uint8Array2 = arr4;
sum3 = num17;
sum4 = num18;
num20 = sum;
tmp28 = tmp9;
tmp29 = tmp10;
tmp30 = tmp11;
tmp31 = tmp12;
tmp32 = tmp13;
tmp33 = tmp14;
if (2 == tmp3.ctype) {
sum = size;
sum = aSCII;
sum = sum2;
let items1 = [readUshort(arr3, sum2), readUshort(arr3, sum2 + 2), readUshort(arr3, sum2 + 4)];
tmp3.tabs[tmp22] = items1;
uint8Array2 = arr4;
sum3 = num17;
sum4 = num18;
num20 = sum;
tmp28 = tmp9;
tmp29 = tmp10;
tmp30 = tmp11;
tmp31 = tmp12;
tmp32 = tmp13;
tmp33 = tmp14;
}
}
}
} else {
sum = aSCII;
if ("gAMA" == tmp22) {
let tmp49 = size;
let tmp50 = aSCII;
let tmp51 = tmp2;
let tmp52 = sum;
let tmp53 = sum2;
tmp3.tabs[tmp22] = obj.readUint(arr3, sum2) / 100000;
uint8Array2 = arr4;
sum3 = num17;
sum4 = num18;
num20 = sum;
tmp28 = tmp9;
tmp29 = tmp10;
tmp30 = tmp11;
tmp31 = tmp12;
tmp32 = tmp13;
tmp33 = tmp14;
} else {
sum = aSCII;
if ("sRGB" == tmp22) {
let tmp45 = size;
let tmp46 = aSCII;
let tmp47 = sum;
let tmp48 = sum2;
tmp3.tabs[tmp22] = arr3[sum2];
uint8Array2 = arr4;
sum3 = num17;
sum4 = num18;
num20 = sum;
tmp28 = tmp9;
tmp29 = tmp10;
tmp30 = tmp11;
tmp31 = tmp12;
tmp32 = tmp13;
tmp33 = tmp14;
} else {
sum = aSCII;
if ("bKGD" == tmp22) {
let tmp34 = size;
if (0 != tmp3.ctype) {
sum = size;
if (4 != tmp3.ctype) {
sum = size;
if (2 != tmp3.ctype) {
let tmp35 = size;
if (6 != tmp3.ctype) {
let tmp36 = size;
uint8Array2 = arr4;
sum3 = num17;
sum4 = num18;
num20 = sum;
tmp28 = tmp9;
tmp29 = tmp10;
tmp30 = tmp11;
tmp31 = tmp12;
tmp32 = tmp13;
tmp33 = tmp14;
if (3 == tmp3.ctype) {
sum = size;
sum = aSCII;
sum = sum2;
tmp3.tabs[tmp22] = arr3[sum2];
uint8Array2 = arr4;
sum3 = num17;
sum4 = num18;
num20 = sum;
tmp28 = tmp9;
tmp29 = tmp10;
tmp30 = tmp11;
tmp31 = tmp12;
tmp32 = tmp13;
tmp33 = tmp14;
}
}
}
let tmp37 = size;
let tmp38 = aSCII;
let tmp39 = sum;
let tmp40 = sum2;
let items2 = [readUshort(arr3, sum2), readUshort(arr3, sum2 + 2), readUshort(arr3, sum2 + 4)];
tmp3.tabs[tmp22] = items2;
uint8Array2 = arr4;
sum3 = num17;
sum4 = num18;
num20 = sum;
tmp28 = tmp9;
tmp29 = tmp10;
tmp30 = tmp11;
tmp31 = tmp12;
tmp32 = tmp13;
tmp33 = tmp14;
}
}
let tmp41 = size;
let tmp42 = aSCII;
let tmp43 = sum;
let tmp44 = sum2;
let items3 = [readUshort(arr3, sum2)];
tmp3.tabs[tmp22] = items3;
uint8Array2 = arr4;
sum3 = num17;
sum4 = num18;
num20 = sum;
tmp28 = tmp9;
tmp29 = tmp10;
tmp30 = tmp11;
tmp31 = tmp12;
tmp32 = tmp13;
tmp33 = tmp14;
} else {
let tmp24 = aSCII;
uint8Array2 = arr4;
sum3 = num17;
sum4 = num18;
num20 = sum;
tmp28 = tmp9;
tmp29 = tmp10;
tmp30 = tmp11;
tmp31 = tmp12;
tmp32 = tmp13;
tmp33 = tmp14;
let arr5 = arr4;
num19 = num18;
if ("IEND" == tmp22) {
break;
}
}
break;
}
break;
}
}
}
}
}
}
}
sum = size;
sum = aSCII;
if (null == tmp3.tabs[tmp22]) {
sum = size;
sum = aSCII;
tmp3.tabs[tmp22] = {};
}
sum = tmp2;
sum = sum2;
sum = obj.nextZero(arr3, sum2);
sum = obj.readASCII(arr3, sum2, sum - sum2);
sum = uint;
sum = sum2 + uint - sum - 1;
sum = aSCII;
if ("tEXt" == tmp22) {
sum = tmp2;
sum = obj.readASCII(arr3, sum + 1, sum);
} else {
sum = _inflate;
let arr10 = _inflate(arr3.slice(sum + 2, sum + 2 + sum));
sum = tmp2;
sum = obj.readUTF8(arr10, 0, arr10.length);
}
sum = size;
sum = aSCII;
tmp3.tabs[tmp22][sum] = sum;
tmp32 = sum;
uint8Array2 = arr4;
sum3 = num17;
sum4 = num18;
num20 = sum;
tmp28 = tmp9;
tmp29 = sum;
tmp30 = sum;
tmp31 = sum;
tmp33 = tmp14;
}
}
}
}
}
}
}
}
}
sum = sum2;
sum = uint;
sum = sum2 + uint;
sum = tmp2;
sum = obj.readUint(arr3, sum);
sum = sum + 4;
num = sum;
arr4 = uint8Array2;
num17 = sum3;
num18 = sum4;
sum = num20;
tmp9 = tmp28;
tmp10 = tmp29;
tmp11 = tmp30;
tmp12 = tmp31;
tmp13 = tmp32;
tmp14 = tmp33;
arr5 = uint8Array2;
num19 = sum4;
if (sum >= arr3.length) {
break;
}
}
}
if (0 != num19) {
sum = size;
sum = tmp3.frames[tmp3.frames.length - 1];
sum = _decompress;
sum = tmp3;
sum.data = _decompress(size, arr5.slice(0, num19), sum.rect.width, sum.rect.height);
}
sum = _decompress;
sum = size;
sum = uint8Array1;
size.data = _decompress(tmp3, tmp5, size.width, size.height);
delete arr.compress;
delete arr.interlace;
delete arr.filter;
return size;
}
}
throw "The input is not a PNG file!";
},
toRGBA8(img) {
let height;
let width;
({ width, height } = img);
if (null == img.tabs.acTL) {
const items = [decodeImage(img.data, width, height, img).buffer];
return items;
} else {
const items1 = [];
if (null == img.frames[0].data) {
img.frames[0].data = img.data;
}
const result = width * height * 4;
const _Uint8Array = Uint8Array;
const uint8Array = new Uint8Array(result);
const _Uint8Array2 = Uint8Array;
const uint8Array1 = new Uint8Array(result);
const _Uint8Array3 = Uint8Array;
const uint8Array2 = new Uint8Array(result);
let num4 = 0;
if (0 < img.frames.length) {
do {
let tmp18 = img.frames[num4];
let x = tmp18.rect.x;
let y = tmp18.rect.y;
let width2 = tmp18.rect.width;
let height2 = tmp18.rect.height;
let tmp19 = decodeImage;
let tmp20 = width2;
let tmp21 = height2;
let tmp22 = img;
let tmp23 = decodeImage(tmp18.data, width2, height2, img);
if (0 != num4) {
let num6 = 0;
let num5 = 0;
if (0 < result) {
do {
uint8Array2[num6] = uint8Array[num6];
num6 = num6 + 1;
num5 = num6;
} while (num6 < result);
}
}
if (0 == tmp18.blend) {
let tmp34 = _copyTile;
let tmp35 = tmp23;
let tmp36 = width2;
let tmp37 = height2;
let tmp38 = uint8Array;
let tmp39 = width;
let tmp40 = height;
let tmp41 = x;
let tmp42 = y;
let num8 = 0;
let tmp43 = _copyTile(tmp23, width2, height2, tmp7, width, height, x, y, 0);
} else if (1 == tmp18.blend) {
let tmp24 = _copyTile;
let tmp25 = tmp23;
let tmp26 = width2;
let tmp27 = height2;
let tmp28 = uint8Array;
let tmp29 = width;
let tmp30 = height;
let tmp31 = x;
let tmp32 = y;
let num7 = 1;
let tmp33 = _copyTile(tmp23, width2, height2, tmp7, width, height, x, y, 1);
}
let buffer = uint8Array.buffer;
let arr = items1.push(buffer.slice(0));
let num9 = num5;
if (0 != tmp18.dispose) {
if (1 == tmp18.dispose) {
let tmp45 = _copyTile;
let tmp46 = uint8Array1;
let tmp47 = width2;
let tmp48 = height2;
let tmp49 = uint8Array;
let tmp50 = width;
let tmp51 = height;
let tmp52 = x;
let tmp53 = y;
let num11 = 0;
let tmp54 = _copyTile(tmp12, width2, height2, tmp7, width, height, x, y, 0);
num9 = num5;
} else {
num9 = num5;
if (2 == tmp18.dispose) {
let num10 = 0;
num9 = 0;
if (0 < result) {
do {
uint8Array[num10] = uint8Array2[num10];
num10 = num10 + 1;
num9 = num10;
} while (num10 < result);
}
}
}
}
num4 = num4 + 1;
num5 = num9;
} while (num4 < img.frames.length);
}
return items1;
}
},
_paeth,
_copyTile,
_bin: obj
};
return obj;
})();
let closure_0 = tmp;
(() => {
let closure_0;
let closure_1;
let closure_2;
function addErr(items5, arg1, arg2, arg3) {
arg1[arg2] = arg1[arg2] + (items5[0] * arg3 >> 4);
const sum = arg2 + 1;
arg1[sum] = arg1[sum] + (items5[1] * arg3 >> 4);
const sum1 = arg2 + 2;
arg1[sum1] = arg1[sum1] + (items5[2] * arg3 >> 4);
const sum2 = arg2 + 3;
arg1[sum2] = arg1[sum2] + (items5[3] * arg3 >> 4);
}
function N(arg0) {
return Math.max(0, Math.min(255, arg0));
}
function D(arg0, arg1) {
const diff = arg0[0] - arg1[0];
const diff1 = arg0[1] - arg1[1];
const diff2 = arg0[2] - arg1[2];
const diff3 = arg0[3] - arg1[3];
return diff * diff + diff1 * diff1 + diff2 * diff2 + diff3 * diff3;
}
function dither(img, width, height, items1, first, first2) {
let length2;
let num = arg6;
if (null == arg6) {
num = 1;
}
const items = [];
for (let num2 = 0; num2 < length; num2 = num2 + 1) {
let tmp = items1[num2];
items1 = [tmp >>> 0 & 255, tmp >>> 8 & 255, tmp >>> 16 & 255, tmp >>> 24 & 255];
let arr = items.push(items1);
}
let num3 = 0;
if (0 < items1.length) {
do {
let num4 = 4294967295;
let num5 = 0;
let num6 = 0;
let num7 = 4294967295;
let num8 = 0;
let num9 = 0;
if (0 < length) {
do {
let tmp5 = D;
let tmp6 = D(items[num3], items[num6]);
let tmp7 = num6 != num3 && tmp6 < num4;
if (tmp7) {
num4 = tmp6;
num5 = num6;
}
num6 = num6 + 1;
num7 = num4;
num8 = num5;
let tmp3 = tmp6;
num9 = num6;
} while (num6 < length);
}
let _Math = Math;
let result = Math.sqrt(num7) / 2;
[][num3] = ~~result * result;
num3 = num3 + 1;
let tmp9 = num8;
let tmp10 = num9;
let tmp4 = tmp3;
} while (num3 < length);
}
const uint32Array = new Uint32Array(first.buffer);
const int16Array = new Int16Array(width * height * 4);
const items2 = [0, 8, 2, 10, 12, 4, 14, 6, 3, 11, 1, 9, 15, 7, 13, 5];
let num10 = 0;
if (0 < items2.length) {
do {
items2[num10] = 255 * ((items2[num10] + 0.5) / 16 - 0.5);
num10 = num10 + 1;
let tmp14 = num10;
length2 = items2.length;
} while (num10 < length2);
}
for (let num11 = 0; num11 < height; num11 = num11 + 1) {
let tmp16 = tmp4;
let tmp17 = tmp15;
let num12 = 0;
if (0 < width) {
do {
let result1 = 4 * (num11 * width + num12);
if (2 != num) {
let tmp21 = N;
let items3 = [N(img[result1] + int16Array[result1]), , , ];
let sum = result1 + 1;
items3[1] = N(img[sum] + int16Array[sum]);
let sum1 = result1 + 2;
items3[2] = N(img[sum1] + int16Array[sum1]);
let sum2 = result1 + 3;
items3[3] = N(img[sum2] + int16Array[sum2]);
let tmp19 = tmp16;
let items4 = items3;
} else {
tmp19 = items2[4 * (3 & num11) + (3 & num12)];
let tmp20 = N;
items4 = [N(img[result1] + tmp19), N(img[result1 + 1] + tmp19), N(img[result1 + 2] + tmp19), N(img[result1 + 3] + tmp19)];
}
let num13 = 0;
let num14 = 0;
let num15 = 16777215;
let num16 = 0;
let num17 = 0;
let num18 = 16777215;
if (0 < length) {
do {
let tmp25 = D;
let tmp26 = D(items4, items[num14]);
if (tmp26 < num15) {
num13 = num14;
num15 = tmp26;
}
num14 = num14 + 1;
num16 = num13;
num18 = num15;
tmp17 = tmp26;
num17 = num14;
} while (num14 < length);
}
let tmp27 = items[num16];
let items5 = [items4[0] - tmp27[0], items4[1] - tmp27[1], items4[2] - tmp27[2], items4[3] - tmp27[3]];
let tmp28 = tmp17;
if (1 == num) {
if (num12 != width - 1) {
let tmp29 = addErr;
let tmp30 = items5;
let tmp31 = int16Array;
let num19 = 7;
let tmp32 = addErr(items5, tmp13, result1 + 4, 7);
}
if (num11 != height - 1) {
if (0 != num12) {
let tmp33 = addErr;
let tmp34 = items5;
let tmp35 = int16Array;
let num20 = 3;
let tmp36 = addErr(items5, tmp13, result1 + 4 * width - 4, 3);
}
let tmp37 = addErr;
let tmp38 = items5;
let tmp39 = int16Array;
let num21 = 5;
let tmp40 = addErr(items5, tmp13, result1 + 4 * width, 5);
if (num12 != width - 1) {
let tmp41 = addErr;
let tmp42 = items5;
let tmp43 = int16Array;
let num22 = 1;
let tmp44 = addErr(items5, tmp13, result1 + 4 * width + 4, 1);
}
}
}
let tmp45 = result1 >> 2;
first2[tmp45] = num16;
uint32Array[tmp45] = items1[num16];
num12 = num12 + 1;
tmp16 = tmp19;
let tmp46 = result1;
let tmp47 = num16;
let tmp48 = num17;
tmp4 = tmp19;
let tmp49 = items4;
let tmp50 = num18;
tmp15 = tmp17;
let tmp51 = items5;
} while (num12 < width);
}
}
}
function _main(frames, height, height) {
let obj = arg4;
if (null == arg4) {
obj = {};
}
crc = crc.crc;
const writeUint = closure_1.writeUint;
const writeUshort = closure_1.writeUshort;
const writeASCII = closure_1.writeASCII;
let writeUintResult16 = frames.frames.length > 1;
let num = 0;
if (writeUintResult16) {
num = 20;
}
const sum = 33 + num;
let sum1 = sum;
if (null != obj.sRGB) {
sum1 = sum + 13;
}
let sum2 = sum1;
if (null != obj.pHYs) {
sum2 = sum1 + 21;
}
let sum3 = sum2;
if (null != obj.iCCP) {
const deflateResult = globalThis.pako.deflate(obj.iCCP);
sum3 = sum2 + (21 + deflateResult.length + 4);
}
let flag = false;
let sum4 = sum3;
if (3 == frames.ctype) {
let flag2 = false;
let num8 = 0;
let flag3 = false;
if (0 < frames.plte.length) {
do {
if (frames.plte[num8] >>> 24 !== 255) {
flag2 = true;
}
num8 = num8 + 1;
flag3 = flag2;
} while (num8 < length);
}
let num9 = 0;
const result = 3 * length;
if (flag3) {
num9 = 8 + length + 4;
}
sum4 = sum3 + (8 + result + 4 + num9);
flag = flag3;
}
let tmp9 = sum4;
let num14 = 0;
let tmp10 = sum4;
if (0 < frames.frames.length) {
do {
let sum5 = tmp9;
if (writeUintResult16) {
sum5 = tmp9 + 38;
}
let sum6 = sum5 + (frames.frames[num14].cimg.length + 12);
let sum7 = sum6;
if (0 != num14) {
sum7 = sum6 + 4;
}
num14 = num14 + 1;
tmp9 = sum7;
tmp10 = sum7;
} while (num14 < frames.frames.length);
}
const uint8Array = new Uint8Array(tmp10 + 12);
let num15 = 0;
do {
uint8Array[num15] = [137, 80, 78, 71, 13, 10, 26, 10][num15];
num15 = num15 + 1;
} while (num15 < 8);
writeUint(uint8Array, 8, 13);
writeASCII(uint8Array, 12, "IHDR");
writeUint(uint8Array, 16, height);
writeUint(uint8Array, 20, height);
uint8Array[24] = frames.depth;
uint8Array[25] = frames.ctype;
uint8Array[26] = 0;
uint8Array[27] = 0;
uint8Array[28] = 0;
writeUint(uint8Array, 29, crc(uint8Array, 12, 17));
let num16 = 33;
if (null != obj.sRGB) {
writeUint(uint8Array, 33, 1);
writeASCII(uint8Array, 37, "sRGB");
uint8Array[41] = obj.sRGB;
writeUint(uint8Array, 42, crc(uint8Array, 37, 5));
num16 = 46;
}
let sum14 = num16;
if (null != obj.iCCP) {
const sum8 = 13 + arr.length;
writeUint(uint8Array, num16, sum8);
const sum9 = num16 + 4;
writeASCII(uint8Array, sum9, "iCCP");
const sum10 = sum9 + 4;
writeASCII(uint8Array, sum10, "ICC profile");
const sum11 = sum10 + 11 + 2;
const result1 = uint8Array.set(arr, sum11);
const sum12 = sum11 + arr.length;
const sum13 = sum8 + 4;
writeUint(uint8Array, sum12, crc(uint8Array, sum12 - sum13, sum13));
sum14 = sum12 + 4;
}
let sum20 = sum14;
if (null != obj.pHYs) {
writeUint(uint8Array, sum14, 9);
const sum15 = sum14 + 4;
writeASCII(uint8Array, sum15, "pHYs");
const sum16 = sum15 + 4;
writeUint(uint8Array, sum16, obj.pHYs[0]);
const sum17 = sum16 + 4;
writeUint(uint8Array, sum17, obj.pHYs[1]);
const sum18 = sum17 + 4;
uint8Array[sum18] = obj.pHYs[2];
const sum19 = sum18 + 1;
writeUint(uint8Array, sum19, crc(uint8Array, sum19 - 13, 13));
sum20 = sum19 + 4;
}
let sum25 = sum20;
if (writeUintResult16) {
writeUint(uint8Array, sum20, 8);
const sum21 = sum20 + 4;
writeASCII(uint8Array, sum21, "acTL");
const sum22 = sum21 + 4;
writeUint(uint8Array, sum22, frames.frames.length);
const sum23 = sum22 + 4;
let num25 = 0;
if (null != obj.loop) {
num25 = obj.loop;
}
writeUint(uint8Array, sum23, num25);
const sum24 = sum23 + 4;
writeUint(uint8Array, sum24, crc(uint8Array, sum24 - 12, 12));
sum25 = sum24 + 4;
}
let sum32 = sum25;
if (3 == frames.ctype) {
writeUintResult16 = writeUint(uint8Array, sum25, 3 * length3);
writeUintResult16 = sum25 + 4;
writeUintResult16 = writeASCII(uint8Array, writeUintResult16, "PLTE");
writeUintResult16 = writeUintResult16 + 4;
for (let num26 = 0; num26 < length3; num26 = num26 + 1) {
let tmp56 = frames.plte[num26];
let sum26 = writeUintResult16 + 3 * num26;
uint8Array[sum26] = 255 & tmp56;
uint8Array[sum26 + 1] = tmp56 >>> 8 & 255;
uint8Array[sum26 + 2] = tmp56 >>> 16 & 255;
}
const sum27 = writeUintResult16 + 3 * length3;
writeUint(uint8Array, sum27, crc(uint8Array, sum27 - 3 * frames.plte.length - 4, 3 * frames.plte.length + 4));
const sum28 = sum27 + 4;
sum32 = sum28;
if (flag) {
writeUint(uint8Array, sum28, length3);
const sum29 = sum28 + 4;
writeASCII(uint8Array, sum29, "tRNS");
const sum30 = sum29 + 4;
for (let num27 = 0; num27 < length3; num27 = num27 + 1) {
uint8Array[sum30 + num27] = frames.plte[num27] >>> 24 & 255;
}
const sum31 = sum30 + length3;
writeUint(uint8Array, sum31, crc(uint8Array, sum31 - length3 - 4, length3 + 4));
sum32 = sum31 + 4;
}
}
let sum49 = sum32;
let num28 = 0;
let num29 = 0;
let tmp68 = sum32;
if (0 < frames.frames.length) {
do {
let tmp69 = frames.frames[num28];
let sum45 = sum49;
let sum35 = num29;
if (writeUintResult16) {
let writeUintResult20 = writeUint(uint8Array, sum49, 26);
let sum33 = sum49 + 4;
let writeASCIIResult7 = writeASCII(uint8Array, sum33, "fcTL");
let sum34 = sum33 + 4;
let tmp76 = +num29;
sum35 = tmp76 + 1;
let writeUintResult21 = writeUint(uint8Array, sum34, tmp76);
let sum36 = sum34 + 4;
let writeUintResult22 = writeUint(uint8Array, sum36, tmp69.rect.width);
let sum37 = sum36 + 4;
let writeUintResult23 = writeUint(uint8Array, sum37, tmp69.rect.height);
let sum38 = sum37 + 4;
let writeUintResult24 = writeUint(uint8Array, sum38, tmp69.rect.x);
let sum39 = sum38 + 4;
let writeUintResult25 = writeUint(uint8Array, sum39, tmp69.rect.y);
let sum40 = sum39 + 4;
let writeUshortResult = writeUshort(uint8Array, sum40, arg3[num28]);
let sum41 = sum40 + 2;
let writeUshortResult1 = writeUshort(uint8Array, sum41, 1000);
let sum42 = sum41 + 2;
uint8Array[sum42] = tmp69.dispose;
let sum43 = sum42 + 1;
uint8Array[sum43] = tmp69.blend;
let sum44 = sum43 + 1;
let writeUintResult26 = writeUint(uint8Array, sum44, crc(uint8Array, sum44 - 30, 30));
sum45 = sum44 + 4;
}
let cimg = tmp69.cimg;
let length2 = cimg.length;
let tmp94 = 0 == num28;
let num30 = 4;
if (tmp94) {
num30 = 0;
}
let writeUintResult27 = writeUint(uint8Array, sum45, length2 + num30);
let sum46 = sum45 + 4;
let str7 = "fdAT";
if (tmp94) {
str7 = "IDAT";
}
let writeASCIIResult8 = writeASCII(uint8Array, sum46, str7);
let sum47 = sum46 + 4;
let sum48 = sum47;
num29 = sum35;
if (0 != num28) {
writeUintResult16 = +sum35;
num29 = writeUintResult16 + 1;
writeUintResult16 = writeUint(uint8Array, sum47, writeUintResult16);
sum48 = sum47 + 4;
}
writeUintResult16 = uint8Array.set(cimg, sum48);
writeUintResult16 = sum48 + length2;
writeUintResult16 = writeUint(uint8Array, writeUintResult16, crc(uint8Array, sum46, writeUintResult16 - sum46));
sum49 = writeUintResult16 + 4;
num28 = num28 + 1;
tmp68 = sum49;
} while (num28 < frames.frames.length);
}
writeUintResult16 = writeUint(uint8Array, tmp68, 0);
writeUintResult16 = tmp68 + 4;
writeUintResult16 = writeASCII(uint8Array, writeUintResult16, "IEND");
writeUintResult16 = writeUintResult16 + 4;
writeUintResult16 = writeUint(uint8Array, writeUintResult16, crc(uint8Array, writeUintResult16 - 4, 4));
return uint8Array.buffer;
}
function compressPNG(frames) {
let length;
let num = 0;
if (0 < frames.frames.length) {
do {
let tmp = frames.frames[num];
let width = tmp.rect.width;
let height = tmp.rect.height;
let _Uint8Array = Uint8Array;
let tmp2 = new.target;
let tmp3 = new.target;
let uint8Array = new Uint8Array(height * tmp.bpl + height);
let tmp5 = uint8Array;
let tmp6 = _filterZero;
let tmp7 = height;
let tmp8 = arg1;
let tmp9 = arg2;
tmp.cimg = _filterZero(tmp.img, height, tmp.bpp, tmp.bpl, uint8Array, arg1, arg2);
num = num + 1;
length = frames.frames.length;
} while (num < length);
}
}
function compress(arg0, arg1, arg2, arg3, first) {
let length2;
let length5;
let length6;
let length8;
first = first[0];
let num = 255;
let num2 = 0;
let num3 = 255;
if (0 < arg0.length) {
do {
let _Uint8Array = Uint8Array;
let tmp6 = new.target;
let tmp7 = new.target;
let uint8Array = new Uint8Array(arg0[num2]);
let tmp8 = uint8Array;
let length = uint8Array.length;
let tmp9 = num;
let num5 = 0;
let tmp10 = num;
let num6 = 0;
if (0 < length) {
do {
tmp9 = tmp9 & uint8Array[num5 + 3];
num5 = num5 + 4;
tmp10 = tmp9;
num6 = num5;
} while (num5 < length);
}
num2 = num2 + 1;
num = tmp10;
let num4 = num6;
num3 = tmp10;
} while (num2 < arg0.length);
}
const items = [];
let num7 = 0;
if (0 < arg0.length) {
do {
let _Uint8Array2 = Uint8Array;
let tmp21 = new.target;
let tmp22 = new.target;
let uint8Array1 = new Uint8Array(arg0[num7]);
let tmp23 = uint8Array1;
let _Uint32Array = Uint32Array;
let tmp24 = new.target;
let tmp25 = new.target;
let uint32Array = new Uint32Array(uint8Array1.buffer);
let tmp27 = uint32Array;
let num8 = 0;
if (first) {
num8 = 1;
}
if (0 != num7) {
if (!tmp3) {
if (!first) {
if (1 != num7) {
let num11 = 2;
}
let num12 = 0;
let num13 = 0;
let sum1 = arg1;
let sum2 = arg2;
let num14 = 0;
let num15 = 1000000000;
let num16 = 0;
let tmp42 = tmp18;
let tmp43 = tmp20;
let num17 = 0;
let num18 = 0;
let tmp44 = arg1;
let tmp45 = arg2;
let num19 = 0;
let num20 = 1000000000;
let num21 = 0;
let tmp46 = tmp18;
let tmp47 = tmp20;
if (0 < num11) {
do {
let _Uint8Array3 = Uint8Array;
let tmp48 = new.target;
let uint8Array2 = new Uint8Array(arg0[num7 - 1 - num16]);
let _Uint32Array2 = Uint32Array;
let tmp50 = new.target;
let tmp51 = new.target;
let uint32Array1 = new Uint32Array(arg0[num7 - 1 - num16]);
let tmp53 = uint32Array1;
let tmp54 = tmp43;
let tmp55 = arg1;
let tmp56 = arg2;
let num22 = -1;
let num23 = -1;
let num24 = 0;
let num25 = arg1;
let num26 = arg2;
let num27 = -1;
let num28 = -1;
let num29 = 0;
let tmp57 = tmp43;
if (0 < arg2) {
do {
let tmp58 = tmp55;
let tmp59 = tmp56;
let tmp60 = num22;
let tmp61 = num23;
let num30 = 0;
let tmp62 = tmp55;
let tmp63 = tmp56;
let tmp64 = num22;
let tmp65 = num23;
let num31 = 0;
if (0 < arg1) {
do {
let sum = num24 * arg1 + num30;
let tmp67 = tmp58;
let tmp68 = tmp59;
let tmp69 = tmp60;
let tmp70 = tmp61;
if (uint32Array[sum] != uint32Array1[sum]) {
let tmp71 = tmp58;
if (num30 < tmp58) {
tmp71 = num30;
}
let tmp72 = tmp60;
if (num30 > tmp60) {
tmp72 = num30;
}
let tmp73 = tmp59;
if (num24 < tmp59) {
tmp73 = num24;
}
let tmp74 = tmp61;
if (num24 > tmp61) {
tmp74 = num24;
}
tmp70 = tmp74;
tmp67 = tmp71;
tmp68 = tmp73;
tmp69 = tmp72;
}
num30 = num30 + 1;
tmp58 = tmp67;
tmp59 = tmp68;
tmp60 = tmp69;
tmp61 = tmp70;
tmp62 = tmp67;
tmp63 = tmp68;
tmp64 = tmp69;
tmp65 = tmp70;
tmp54 = sum;
num31 = num30;
} while (num30 < arg1);
}
num24 = num24 + 1;
tmp55 = tmp62;
tmp56 = tmp63;
num22 = tmp64;
num23 = tmp65;
tmp42 = num31;
num25 = tmp62;
num26 = tmp63;
num27 = tmp64;
num28 = tmp65;
tmp57 = tmp54;
num29 = num24;
} while (num24 < arg2);
}
let tmp75 = tmp42;
if (-1 == num27) {
num25 = 0;
num26 = 0;
num27 = 0;
num28 = 0;
}
let tmp76 = num25;
let tmp77 = num26;
if (tmp2) {
let diff = num25;
if (!(1 & ~num25)) {
diff = num25 - 1;
}
let diff1 = num26;
if (!(1 & ~num26)) {
diff1 = num26 - 1;
}
tmp77 = diff1;
tmp76 = diff;
}
let result = (num27 - tmp76 + 1) * (num28 - tmp77 + 1);
if (result < num15) {
sum1 = num27 - tmp76 + 1;
sum2 = num28 - tmp77 + 1;
num12 = tmp76;
num13 = tmp77;
num14 = num16;
num15 = result;
}
num16 = num16 + 1;
tmp43 = tmp57;
num17 = num12;
num18 = num13;
tmp44 = sum1;
tmp45 = sum2;
num19 = num14;
num20 = num15;
let tmp12 = uint32Array1;
let tmp13 = tmp76;
let tmp14 = tmp77;
let tmp15 = num27;
let tmp16 = num28;
let tmp17 = num29;
tmp46 = tmp42;
let tmp19 = result;
tmp47 = tmp57;
num21 = num16;
} while (num16 < num11);
}
let _Uint8Array4 = Uint8Array;
let tmp81 = new.target;
let tmp82 = new.target;
let uint8Array3 = new Uint8Array(arg0[num7 - 1 - num19]);
let tmp84 = uint8Array3;
if (1 == num19) {
items[num7 - 1].dispose = 2;
}
let _Uint8Array5 = Uint8Array;
let tmp85 = new.target;
let tmp86 = new.target;
let uint8Array4 = new Uint8Array(tmp44 * tmp45 * 4);
let tmp88 = uint8Array4;
let tmp89 = callback;
let tmp90 = uint8Array3;
let tmp91 = arg1;
let tmp92 = arg2;
let tmp93 = uint8Array4;
let tmp94 = tmp44;
let tmp95 = tmp45;
let num32 = 0;
let tmp96 = callback(tmp84, arg1, arg2, uint8Array4, tmp44, tmp45, -num17, -num18, 0);
let tmp97 = callback;
let tmp98 = uint8Array1;
let tmp99 = arg1;
first = arg2;
first = uint8Array4;
first = tmp44;
first = tmp45;
let num33 = 3;
let num34 = 0;
if (callback(tmp23, arg1, arg2, uint8Array4, tmp44, tmp45, -num17, -num18, 3)) {
num34 = 1;
}
if (1 === num34) {
first = _prepareDiff;
let obj = { x: num17, y: num18, width: tmp44, height: tmp45 };
first = uint8Array1;
first = arg1;
first = arg2;
first = uint8Array4;
first = obj;
first = _prepareDiff(tmp23, arg1, arg2, tmp88, obj);
let substr = uint8Array4;
let num9 = num17;
let num10 = num18;
let tmp29 = tmp44;
let tmp30 = tmp45;
num8 = num34;
first = num11;
first = num19;
first = num20;
first = num21;
first = uint8Array3;
let tmp31 = tmp12;
let tmp32 = tmp13;
let tmp33 = tmp14;
let tmp34 = tmp15;
let tmp35 = tmp16;
let tmp36 = tmp17;
let tmp37 = tmp46;
let tmp38 = tmp19;
let tmp39 = tmp47;
} else {
first = callback;
first = uint8Array1;
first = arg1;
first = arg2;
first = uint8Array4;
first = tmp44;
first = tmp45;
let num35 = 0;
first = callback(tmp23, arg1, arg2, tmp88, tmp44, tmp45, -num17, -num18, 0);
substr = uint8Array4;
num9 = num17;
num10 = num18;
tmp29 = tmp44;
tmp30 = tmp45;
num8 = num34;
first = num11;
first = num19;
first = num20;
first = num21;
first = uint8Array3;
tmp31 = tmp12;
tmp32 = tmp13;
tmp33 = tmp14;
tmp34 = tmp15;
tmp35 = tmp16;
tmp36 = tmp17;
tmp37 = tmp46;
tmp38 = tmp19;
tmp39 = tmp47;
}
}
}
num11 = 1;
} else {
substr = uint8Array1.slice(0);
num9 = 0;
num10 = 0;
tmp29 = arg1;
tmp30 = arg2;
tmp31 = tmp12;
tmp32 = tmp13;
tmp33 = tmp14;
tmp34 = tmp15;
tmp35 = tmp16;
tmp36 = tmp17;
tmp37 = tmp18;
tmp38 = tmp19;
tmp39 = tmp20;
}
obj = {};
obj = { x: num9, y: num10, width: tmp29, height: tmp30 };
obj.rect = obj;
obj.img = substr;
obj.blend = num8;
obj.dispose = 0;
first = items.push(obj);
num7 = num7 + 1;
tmp12 = tmp31;
tmp13 = tmp32;
tmp14 = tmp33;
tmp15 = tmp34;
tmp16 = tmp35;
tmp17 = tmp36;
tmp18 = tmp37;
tmp19 = tmp38;
tmp20 = tmp39;
} while (num7 < arg0.length);
}
if (first) {
for (let num36 = 0; num36 < items.length; num36 = num36 + 1) {
first = items[num36];
if (1 != first.blend) {
let rect = first.rect;
let rect2 = items[num36 - 1].rect;
let _Math3 = Math;
first = Math.min(rect.x, rect2.x);
let _Math4 = Math;
first = Math.min(rect.y, rect2.y);
let obj1 = { x: first, y: first };
let _Math5 = Math;
obj1.width = Math.max(rect.x + rect.width, rect2.x + rect2.width) - first;
let _Math6 = Math;
obj1.height = Math.max(rect.y + rect.height, rect2.y + rect2.height) - first;
items[num36 - 1].dispose = 1;
if (num36 - 1 !== 0) {
first = _updateFrame;
first = arg0;
first = arg1;
first = arg2;
first = items;
first = obj1;
first = tmp2;
first = _updateFrame(arg0, arg1, arg2, items, num36 - 1, obj1, tmp2);
}
first = _updateFrame;
first = arg0;
first = arg1;
first = arg2;
first = items;
first = num36;
first = obj1;
first = tmp2;
first = _updateFrame(arg0, arg1, arg2, items, num36, obj1, tmp2);
first = obj1;
}
}
}
if (1 != arg0.length) {
let num37 = 0;
if (0 < items.length) {
do {
first = items[num37];
first = first.rect.width * first.rect.height;
num37 = num37 + 1;
length2 = items.length;
} while (num37 < length2);
}
}
const obj2 = {};
const items1 = [];
const items2 = [];
if (0 != arg3) {
const items3 = [];
let num41 = 0;
if (0 < items.length) {
do {
first = items3.push(items[num41].img.buffer);
num41 = num41 + 1;
length5 = items.length;
} while (num41 < length5);
}
let num42 = 0;
let num43 = 0;
let num44 = 0;
if (0 < items3.length) {
do {
num42 = num42 + items3[num43].byteLength;
num43 = num43 + 1;
num44 = num42;
length6 = items3.length;
} while (num43 < length6);
}
const _Uint8Array7 = Uint8Array;
first = new.target;
first = new.target;
first = num44;
first = new Uint8Array(num44);
let num45 = 0;
let num46 = 0;
if (0 < items3.length) {
do {
let _Uint8Array8 = Uint8Array;
first = new.target;
first = new.target;
let uint8Array5 = new Uint8Array(items3[num45]);
first = uint8Array5;
let length7 = uint8Array5.length;
let num47 = 0;
if (0 < length7) {
do {
let num48 = uint8Array5[num47];
let num49 = uint8Array5[num47 + 1];
let num50 = uint8Array5[num47 + 2];
first = uint8Array5[num47 + 3];
if (0 == first) {
num48 = 0;
num49 = 0;
num50 = 0;
}
first[num46 + num47] = num48;
first[num46 + num47 + 1] = num49;
first[num46 + num47 + 2] = num50;
first[num46 + num47 + 3] = first;
num47 = num47 + 4;
first = num48;
first = num49;
first = num50;
} while (num47 < length7);
}
num46 = num46 + length7;
num45 = num45 + 1;
} while (num45 < items3.length);
}
first = quantize;
first = quantize(first.buffer, arg3);
let num51 = 0;
if (0 < first.plte.length) {
do {
first = items1.push(first.plte[num51].est.rgba);
num51 = num51 + 1;
length8 = first.plte.length;
} while (num51 < length8);
}
let num52 = 0;
let num53 = 0;
num4 = 0;
if (0 < items.length) {
do {
first = items[num52];
let length9 = first.img.length;
let _Uint8Array9 = Uint8Array;
first = new.target;
first = new.target;
first = new Uint8Array(first.inds.buffer, num53 >> 2, length9 >> 2);
first = items2.push(first);
let _Uint8Array10 = Uint8Array;
first = new.target;
first = new.target;
first = num53;
first = length9;
first = new Uint8Array(first.abuf, num53, length9);
first = num53;
if (tmp5) {
first = dither;
first = items1;
first = dither(first.img, first.rect.width, first.rect.height, items1, first, first);
}
let img = first.img;
first = img.set(first);
num53 = num53 + length9;
num52 = num52 + 1;
num4 = num52;
} while (num52 < items.length);
}
} else {
first = null;
let num40 = 0;
if (0 < items.length) {
do {
first = items[num40];
let _Uint32Array3 = Uint32Array;
first = new.target;
first = new.target;
let uint32Array2 = new Uint32Array(first.img.buffer);
first = uint32Array2;
let width = first.rect.width;
let length3 = uint32Array2.length;
let _Uint8Array6 = Uint8Array;
first = new.target;
first = new.target;
first = length3;
first = new Uint8Array(length3);
first = items2.push(first);
let num38 = 0;
let num39 = 0;
if (0 < length3) {
while (true) {
first = uint32Array2[num38];
if (0 != num38) {
if (first == uint32Array2[num38 - 1]) {
first[num38] = first[num38 - 1];
num38 = num38 + 1;
num39 = num38;
if (num38 >= length3) {
break;
}
}
}
if (num38 > width) {
if (first == uint32Array2[num38 - width]) {
first[num38] = first[num38 - width];
}
}
first = obj2[first];
if (null != first) {
first[num38] = first;
} else {
let length4 = items1.length;
obj2[first] = length4;
first = items1.push(first);
first = length4;
num39 = num38;
first = length4;
if (items1.length >= 300) {
break;
}
}
break;
}
}
num40 = num40 + 1;
num4 = num39;
} while (num40 < items.length);
}
}
first = length10 <= 256 && 0 == tmp4;
let num54 = 8;
if (first) {
let num55 = 1;
if (length10 > 2) {
let num56 = 2;
if (length10 > 4) {
let num58 = 8;
if (length10 <= 16) {
num58 = 4;
}
num56 = num58;
}
num55 = num56;
}
const _Math = Math;
num54 = Math.max(num55, first[3]);
}
let num59 = 6;
let num60 = 0;
let num61 = 6;
if (0 < items.length) {
while (true) {
first = items[num60];
let x = first.rect.x;
let y = first.rect.y;
let width2 = first.rect.width;
let height = first.rect.height;
let img2 = first.img;
let _Uint32Array4 = Uint32Array;
first = new.target;
first = new Uint32Array(img2.buffer);
first = 4 * width2;
if (length10 <= 256) {
if (0 == tmp4) {
let _Math2 = Math;
first = Math.ceil(num54 * width2 / 8);
let _Uint8Array12 = Uint8Array;
first = new.target;
first = new.target;
first = new Uint8Array(first * height);
first = items2[num60];
let num66 = 0;
let num67 = first;
let num68 = 0;
if (0 < height) {
do {
first = num66 * first;
first = num66 * width2;
if (8 == num54) {
let num72 = 0;
num67 = 0;
if (0 < width2) {
do {
first[first + num72] = first[first + num72];
num72 = num72 + 1;
num67 = num72;
} while (num72 < width2);
}
} else if (4 == num54) {
let num71 = 0;
num67 = 0;
if (0 < width2) {
do {
first = first + (num71 >> 1);
first[first] = first[first] | first[first + num71] << 4 - 4 * (1 & num71);
num71 = num71 + 1;
num67 = num71;
} while (num71 < width2);
}
} else if (2 == num54) {
let num70 = 0;
num67 = 0;
if (0 < width2) {
do {
first = first + (num70 >> 2);
first[first] = first[first] | first[first + num70] << 6 - 2 * (3 & num70);
num70 = num70 + 1;
num67 = num70;
} while (num70 < width2);
}
} else if (1 == num54) {
let num69 = 0;
num67 = 0;
if (0 < width2) {
do {
first = first + (num69 >> 3);
first[first] = first[first] | first[first + num69] << 7 - (7 & num69);
num69 = num69 + 1;
num67 = num69;
} while (num69 < width2);
}
}
num66 = num66 + 1;
num4 = first;
first = num67;
num68 = num66;
} while (num66 < height);
}
first = num4;
first = num68;
let num62 = 3;
let num63 = 1;
first.img = first;
first.bpl = first;
first.bpp = num63;
num60 = num60 + 1;
num59 = num62;
num4 = first;
num61 = num62;
if (num60 >= items.length) {
break;
}
}
}
num62 = num59;
first = num4;
first = img2;
num63 = 4;
if (0 == tmp11) {
num62 = num59;
first = num4;
first = img2;
num63 = 4;
if (1 == items.length) {
let _Uint8Array11 = Uint8Array;
first = new.target;
first = new.target;
first = new Uint8Array(width2 * height * 3);
first = width2 * height;
let num64 = 0;
let num65 = 0;
if (0 < first) {
do {
first = 3 * num64;
first = 4 * num64;
first[first] = img2[first];
first[first + 1] = img2[first + 1];
first[first + 2] = img2[first + 2];
num64 = num64 + 1;
num65 = num64;
} while (num64 < first);
}
first = 3 * width2;
first = num65;
num62 = 2;
num63 = 3;
}
}
}
}
const obj3 = { ctype: num61, depth: num54, plte: items1, frames: items };
return obj3;
}
function _updateFrame(arg0, arg1, arg2, items, arg4, height, first) {
let _Uint8Array = Uint8Array;
const uint8Array = new Uint8Array(arg0[arg4 - 1]);
const uint32Array = new Uint32Array(arg0[arg4 - 1]);
_Uint8Array = null;
if (arg4 + 1 < arg0.length) {
const prototype = _Uint8Array.prototype;
_Uint8Array = new _Uint8Array(arg0[arg4 + 1]);
}
const _Uint8Array1 = new _Uint8Array(arg0[arg4]);
const uint32Array1 = new Uint32Array(_Uint8Array1.buffer);
let tmp9 = arg1;
let tmp10 = arg2;
let num = -1;
let num2 = -1;
let num3 = 0;
let num4 = arg1;
let num5 = arg2;
let num6 = -1;
let num7 = -1;
if (0 < height.height) {
do {
let tmp11 = tmp9;
let tmp12 = tmp10;
let tmp13 = num;
let tmp14 = num2;
let num8 = 0;
let tmp15 = tmp9;
let tmp16 = tmp10;
let tmp17 = num;
let tmp18 = num2;
if (0 < height.width) {
do {
let sum = height.x + num8;
let sum1 = height.y + num3;
let sum2 = sum1 * arg1 + sum;
let tmp22 = uint32Array1[sum2];
let tmp23 = 0 == tmp22;
if (!tmp23) {
let tmp24 = 0 == items[arg4 - 1].dispose && uint32Array[sum2] == tmp22;
if (tmp24) {
let tmp25 = null == _Uint8Array || 0 != _Uint8Array[4 * sum2 + 3];
tmp24 = tmp25;
}
tmp23 = tmp24;
}
let tmp26 = tmp11;
let tmp27 = tmp12;
let tmp28 = tmp13;
let tmp29 = tmp14;
if (!tmp23) {
let tmp30 = tmp11;
if (sum < tmp11) {
tmp30 = sum;
}
let tmp31 = tmp13;
if (sum > tmp13) {
tmp31 = sum;
}
let tmp32 = tmp12;
if (sum1 < tmp12) {
tmp32 = sum1;
}
let tmp33 = tmp14;
if (sum1 > tmp14) {
tmp33 = sum1;
}
tmp29 = tmp33;
tmp26 = tmp30;
tmp27 = tmp32;
tmp28 = tmp31;
}
num8 = num8 + 1;
tmp11 = tmp26;
tmp12 = tmp27;
tmp13 = tmp28;
tmp14 = tmp29;
tmp15 = tmp26;
tmp16 = tmp27;
tmp17 = tmp28;
tmp18 = tmp29;
let tmp34 = sum;
let tmp35 = sum1;
let tmp36 = sum2;
let tmp37 = tmp22;
} while (num8 < height.width);
}
num3 = num3 + 1;
tmp9 = tmp15;
tmp10 = tmp16;
num = tmp17;
num2 = tmp18;
num4 = tmp15;
num5 = tmp16;
num6 = tmp17;
num7 = tmp18;
} while (num3 < height.height);
}
if (-1 == num6) {
num4 = 0;
num5 = 0;
num6 = 0;
num7 = 0;
}
let tmp38 = num4;
let tmp39 = num5;
if (first) {
let diff = num4;
if (!(1 & ~num4)) {
diff = num4 - 1;
}
let diff1 = num5;
if (!(1 & ~num5)) {
diff1 = num5 - 1;
}
tmp39 = diff1;
tmp38 = diff;
}
const size = { x: tmp38, y: tmp39, width: num6 - tmp38 + 1, height: num7 - tmp39 + 1 };
items[arg4].rect = size;
items[arg4].blend = 1;
const uint8Array1 = new Uint8Array(size.width * size.height * 4);
items[arg4].img = uint8Array1;
if (0 == items[arg4 - 1].dispose) {
callback(uint8Array, arg1, arg2, tmp42.img, size.width, size.height, -size.x, -size.y, 0);
_prepareDiff(tmp7, arg1, arg2, tmp42.img, size);
} else {
callback(tmp7, arg1, arg2, tmp42.img, size.width, size.height, -size.x, -size.y, 0);
}
}
function _prepareDiff(arg0, arg1, arg2, img, size) {
callback(arg0, arg1, arg2, img, size.width, size.height, -size.x, -size.y, 2);
}
function _filterZero(buffer, arg1, arg2, arg3, set) {
const items = [];
let items1 = [0, 1, 2, 3, 4];
if (-1 != arg5) {
const items2 = [arg5];
items1 = items2;
} else {
let tmp = arg1 * arg3 > 500000;
if (!tmp) {
tmp = 1 == arg2;
}
if (tmp) {
items1 = [0];
}
}
if (arg6) {
const obj = { level: 0 };
const tmp2 = obj;
}
if (set.length > 10000000) {
const _window = window;
if (null != window.UZIP) {
const _window2 = window;
let pako = window.UZIP;
}
const _Date = Date;
const timestamp = Date.now();
for (let num5 = 0; num5 < items1.length; num5 = num5 + 1) {
for (let num6 = 0; num6 < arg1; num6 = num6 + 1) {
let tmp7 = _filterLine;
let tmp8 = set;
let tmp9 = buffer;
let tmp10 = num6;
let tmp11 = arg3;
let tmp12 = arg2;
let tmp13 = _filterLine(set, buffer, num6, arg3, arg2, items1[num5]);
}
let arr = items.push(pako.deflate(set, tmp2));
}
let num7 = 1000000000;
let num8 = 0;
let tmp16;
if (0 < items.length) {
do {
if (items[num8].length < num7) {
num7 = items[num8].length;
let tmp15 = num8;
}
num8 = num8 + 1;
tmp16 = tmp15;
} while (num8 < items.length);
}
return items[tmp16];
}
pako = globalThis.pako;
}
function _filterLine(set, buffer, arg2, arg3, arg4, arg5) {
const result = arg2 * arg3;
const sum = result + arg2;
set[sum] = arg5;
const sum1 = sum + 1;
if (0 == arg5) {
if (arg3 < 500) {
for (let num18 = 0; num18 < arg3; num18 = num18 + 1) {
set[sum1 + num18] = buffer[result + num18];
}
} else {
const _Uint8Array = Uint8Array;
const uint8Array = new Uint8Array(buffer.buffer, result, arg3);
const result1 = set.set(uint8Array, sum1);
}
} else if (1 == arg5) {
for (let num14 = 0; num14 < arg4; num14 = num14 + 1) {
set[sum1 + num14] = buffer[result + num14];
}
let sum2 = arg4;
if (arg4 < arg3) {
do {
set[sum1 + sum2] = buffer[result + sum2] - buffer[result + sum2 - arg4] + 256 & 255;
sum2 = sum2 + 1;
} while (sum2 < arg3);
}
} else if (0 == arg2) {
for (let num8 = 0; num8 < arg4; num8 = num8 + 1) {
set[sum1 + num8] = buffer[result + num8];
}
if (2 == arg5) {
let sum3 = arg4;
if (arg4 < arg3) {
do {
set[sum1 + sum3] = buffer[result + sum3];
sum3 = sum3 + 1;
} while (sum3 < arg3);
}
}
if (3 == arg5) {
let sum4 = arg4;
if (arg4 < arg3) {
do {
set[sum1 + sum4] = buffer[result + sum4] - (buffer[result + sum4 - arg4] >> 1) + 256 & 255;
sum4 = sum4 + 1;
} while (sum4 < arg3);
}
}
if (4 == arg5) {
let sum6 = arg4;
if (arg4 < arg3) {
do {
let tmp15 = callback2;
let sum5 = sum1 + sum6;
set[sum5] = buffer[result + sum6] - callback2(buffer[result + sum6 - arg4], 0, 0) + 256 & 255;
sum6 = sum6 + 1;
} while (sum6 < arg3);
}
}
} else {
if (2 == arg5) {
for (let num3 = 0; num3 < arg3; num3 = num3 + 1) {
set[sum1 + num3] = buffer[result + num3] + 256 - buffer[result + num3 - arg3] & 255;
}
}
if (3 == arg5) {
for (let num5 = 0; num5 < arg4; num5 = num5 + 1) {
set[sum1 + num5] = buffer[result + num5] + 256 - (buffer[result + num5 - arg3] >> 1) & 255;
}
let sum7 = arg4;
if (arg4 < arg3) {
do {
set[sum1 + sum7] = buffer[result + sum7] + 256 - (buffer[result + sum7 - arg3] + buffer[result + sum7 - arg4] >> 1) & 255;
sum7 = sum7 + 1;
} while (sum7 < arg3);
}
}
if (4 == arg5) {
for (let num7 = 0; num7 < arg4; num7 = num7 + 1) {
let tmp7 = callback2;
let sum8 = sum1 + num7;
let sum9 = buffer[result + num7] + 256;
set[sum8] = sum9 - callback2(0, buffer[result + num7 - arg3], 0) & 255;
}
let sum12 = arg4;
if (arg4 < arg3) {
do {
let tmp11 = callback2;
let sum10 = sum1 + sum12;
let sum11 = buffer[result + sum12] + 256;
set[sum10] = sum11 - callback2(buffer[result + sum12 - arg4], buffer[result + sum12 - arg3], buffer[result + sum12 - arg4 - arg3]) & 255;
sum12 = sum12 + 1;
} while (sum12 < arg3);
}
}
}
}
function quantize(arg0, arg1, arg2) {
const timestamp = Date.now();
const uint8Array = new Uint8Array(arg0);
const substr = uint8Array.slice(0);
const uint32Array = new Uint32Array(substr.buffer);
const tmp4 = getKDtree(substr, arg1);
const first = tmp4[0];
const uint32Array1 = new Uint32Array(length);
const uint8Array1 = new Uint8Array(uint32Array1.buffer);
for (let num = 0; num < length; num = num + 1) {
uint32Array1[num] = arr2[num].est.rgba;
}
const uint8Array2 = new Uint8Array(length2 >> 2);
if (tmp4[1].length <= 60) {
findNearest(uint8Array, uint8Array2, uint8Array1);
remap(uint8Array2, uint32Array, uint32Array1);
} else if (uint8Array.length < 32000000) {
for (let num6 = 0; num6 < length2; num6 = num6 + 4) {
let tmp21 = getNearest;
let tmp22 = first;
let tmp23 = getNearest(first, 0.00392156862745098 * uint8Array[num6], 0.00392156862745098 * uint8Array[num6 + 1], 0.00392156862745098 * uint8Array[num6 + 2], 0.00392156862745098 * uint8Array[num6 + 3]);
let tmp24 = num6 >> 2;
uint8Array2[tmp24] = tmp23.ind;
uint32Array[tmp24] = tmp23.est.rgba;
}
} else {
for (let num2 = 0; num2 < length2; num2 = num2 + 4) {
let result = 0.00392156862745098 * uint8Array[num2];
let result1 = 0.00392156862745098 * uint8Array[num2 + 1];
let result2 = 0.00392156862745098 * uint8Array[num2 + 2];
let result3 = 0.00392156862745098 * uint8Array[num2 + 3];
let rect = first;
let tmp13 = first;
if (first.left) {
do {
let tmp14 = planeDst;
let tmp15 = result;
let tmp16 = result1;
let tmp17 = result2;
let tmp18 = result3;
tmp19 = planeDst(rect.est, result, result1, result2, result3) <= 0 ? rect.left : rect.right;
rect = tmp19;
tmp13 = tmp19;
} while (tmp19.left);
}
let tmp20 = num2 >> 2;
uint8Array2[tmp20] = tmp13.ind;
uint32Array[tmp20] = tmp13.est.rgba;
}
}
let num7 = 0;
let num8 = 1000000000;
if (arg2) {
const tmp30 = kmeans(uint8Array, uint8Array2, uint8Array1);
while (tmp30 / num8 <= 0.997) {
num7 = num7 + 1;
let num11 = 10;
num8 = tmp30;
if (num7 >= 10) {
break;
}
}
for (let num12 = 0; num12 < length; num12 = num12 + 1) {
arr2[num12].est.rgba = uint32Array1[num12];
}
remap(uint8Array2, uint32Array, uint32Array1);
} else {
num7 = 0;
num8 = 1000000000;
}
return { abuf: substr.buffer, inds: uint8Array2, plte: tmp4[1] };
}
function remap(uint8Array2, uint32Array, uint32Array1) {
let length;
let num = 0;
if (0 < uint8Array2.length) {
do {
uint32Array[num] = uint32Array1[uint8Array2[num]];
num = num + 1;
length = uint8Array2.length;
} while (num < length);
}
}
function kmeans(uint8Array, uint8Array2, uint8Array1) {
let length;
let length2;
const uint32Array = new Uint32Array(4 * tmp);
const uint32Array1 = new Uint32Array(tmp);
let num = 0;
if (0 < uint8Array.length) {
do {
let tmp4 = uint8Array2[num >>> 2];
let result = 4 * tmp4;
uint32Array1[tmp4] = uint32Array1[tmp4] + 1;
uint32Array[result] = uint32Array[result] + uint8Array[num];
let sum = result + 1;
uint32Array[sum] = uint32Array[sum] + uint8Array[num + 1];
let sum1 = result + 2;
uint32Array[sum1] = uint32Array[sum1] + uint8Array[num + 2];
let sum2 = result + 3;
uint32Array[sum2] = uint32Array[sum2] + uint8Array[num + 3];
num = num + 4;
length = uint8Array.length;
} while (num < length);
}
let num2 = 0;
if (0 < uint8Array1.length) {
do {
let _Math = Math;
uint8Array1[num2] = Math.round(uint32Array[num2] / uint32Array1[num2 >>> 2]);
num2 = num2 + 1;
length2 = uint8Array1.length;
} while (num2 < length2);
}
return findNearest(uint8Array, uint8Array2, uint8Array1);
}
function findNearest(uint8Array, uint8Array2, uint8Array1) {
const items = [];
let num = 0;
if (0 < uint8Array1.length >>> 2) {
do {
let result = 4 * num;
let tmp10 = tmp3;
let num2 = 0;
let num3 = 1000000000;
let num4 = 0;
let num5 = 1000000000;
let num6 = 0;
let tmp11 = tmp3;
if (tmp2) {
do {
let tmp12 = num2;
let tmp13 = num3;
if (num != num4) {
let result1 = 4 * num4;
let diff = tmp6 - uint8Array1[result1];
let diff1 = tmp7 - uint8Array1[result1 + 1];
let diff2 = tmp8 - uint8Array1[result1 + 2];
let diff3 = tmp9 - uint8Array1[result1 + 3];
let sum = diff * diff + diff1 * diff1 + diff2 * diff2 + diff3 * diff3;
tmp12 = num2;
tmp10 = sum;
tmp13 = num3;
if (sum < num3) {
tmp12 = num4;
tmp13 = sum;
tmp10 = sum;
}
}
num4 = num4 + 1;
num2 = tmp12;
num3 = tmp13;
num5 = tmp13;
tmp11 = tmp10;
num6 = num4;
} while (num4 < tmp);
}
let _Math = Math;
items[num] = 0.5 * Math.sqrt(num5);
items[num] = items[num] * items[num];
num = num + 1;
let tmp20 = num6;
tmp3 = tmp11;
let tmp4 = tmp11;
} while (num < tmp);
}
let num7 = 0;
let num8 = 0;
let num9 = 0;
if (0 < uint8Array.length) {
do {
let tmp21 = uint8Array[num8];
let tmp22 = uint8Array[num8 + 1];
let tmp23 = uint8Array[num8 + 2];
let tmp24 = uint8Array[num8 + 3];
let tmp25 = num8 >>> 2;
let tmp26 = uint8Array2[tmp25];
let result2 = 4 * tmp26;
let diff4 = tmp21 - uint8Array1[result2];
let diff5 = tmp22 - uint8Array1[result2 + 1];
let diff6 = tmp23 - uint8Array1[result2 + 2];
let diff7 = tmp24 - uint8Array1[result2 + 3];
let sum1 = diff4 * diff4 + diff5 * diff5 + diff6 * diff6 + diff7 * diff7;
let tmp33 = tmp26;
let tmp34 = tmp4;
let tmp35 = sum1;
if (sum1 > items[tmp26]) {
let tmp42 = tmp26;
let tmp43 = sum1;
let num10 = 0;
tmp33 = tmp26;
tmp35 = sum1;
let num11 = 0;
tmp34 = tmp4;
if (tmp2) {
while (true) {
let result3 = 4 * num10;
let diff8 = tmp21 - uint8Array1[result3];
let diff9 = tmp22 - uint8Array1[result3 + 1];
let diff10 = tmp23 - uint8Array1[result3 + 2];
let diff11 = tmp24 - uint8Array1[result3 + 3];
let sum2 = diff8 * diff8 + diff9 * diff9 + diff10 * diff10 + diff11 * diff11;
if (sum2 >= tmp43) {
num10 = num10 + 1;
tmp33 = tmp42;
tmp35 = tmp43;
tmp34 = sum2;
let tmp45 = num10;
if (num10 >= tmp) {
break;
}
} else {
tmp42 = num10;
tmp43 = sum2;
tmp33 = num10;
tmp35 = sum2;
let tmp44 = num10;
tmp34 = sum2;
if (sum2 < items[num10]) {
break;
}
}
break;
}
}
}
uint8Array2[tmp25] = tmp33;
num7 = num7 + tmp35;
num8 = num8 + 4;
tmp4 = tmp34;
num9 = num7;
} while (num8 < uint8Array.length);
}
return num9 / (uint8Array.length >>> 2);
}
function getKDtree(substr, arg1) {
let length;
let num = arg2;
if (null == arg2) {
num = 0.0001;
}
const uint32Array = new Uint32Array(substr.buffer);
let obj = { i0: 0, i1: substr.length, bst: null, est: null, tdst: 0, left: null, right: null };
obj.bst = stats(substr, obj.i0, obj.i1);
obj.est = estats(obj.bst);
const items = [obj];
if (items.length < arg1) {
while (true) {
let num2 = 0;
let num3 = 0;
let num4 = 0;
let num5 = 0;
let num6 = 0;
if (0 < items.length) {
do {
if (items[num4].est.L > num2) {
num2 = items[num4].est.L;
num3 = num4;
}
num4 = num4 + 1;
num5 = num2;
num6 = num3;
} while (num4 < items.length);
}
if (num5 < num) {
break;
} else {
let tmp7 = items[num6];
let tmp8 = splitPixels;
let tmp9 = substr;
let tmp10 = uint32Array;
let tmp11 = splitPixels(substr, uint32Array, tmp7.i0, tmp7.i1, tmp7.est.e, tmp7.est.eMq255);
if (tmp7.i0 < tmp11) {
if (tmp7.i1 > tmp11) {
obj = { i0: tmp7.i0, i1: tmp11, bst: null, est: null, tdst: 0, left: null, right: null };
let tmp12 = stats;
obj.bst = stats(substr, obj.i0, obj.i1);
let tmp13 = estats;
obj.est = estats(obj.bst);
obj = { i0: tmp11, i1: tmp7.i1, bst: null, est: null, tdst: 0, left: null, right: null };
let obj1 = { R: [], m: [], N: tmp7.bst.N - obj.bst.N };
obj.bst = obj1;
let num7 = 0;
do {
obj.bst.R[num7] = tmp7.bst.R[num7] - obj.bst.R[num7];
num7 = num7 + 1;
let num8 = 0;
} while (num7 < 16);
do {
obj.bst.m[num8] = tmp7.bst.m[num8] - obj.bst.m[num8];
num8 = num8 + 1;
} while (num8 < 4);
let tmp4 = estats;
obj.est = estats(obj.bst);
tmp7.left = obj;
tmp7.right = obj;
items[num6] = obj;
let arr = items.push(obj);
}
let tmp2 = obj;
let tmp3 = obj;
if (items.length >= arg1) {
break;
}
}
tmp7.est.L = 0;
obj = tmp2;
obj = tmp3;
}
}
}
const sorted = items.sort((bst, bst2) => bst2.bst.N - bst.bst.N);
let num9 = 0;
if (0 < items.length) {
do {
items[num9].ind = num9;
num9 = num9 + 1;
length = items.length;
} while (num9 < length);
}
const items1 = [obj, items];
return items1;
}
function getNearest(first, result, result1, result2, result3) {
let left;
let right;
if (null == first.left) {
const q = first.est.q;
const diff = result - q[0];
const diff1 = result1 - q[1];
const diff2 = result2 - q[2];
const diff3 = result3 - q[3];
first.tdst = diff * diff + diff1 * diff1 + diff2 * diff2 + diff3 * diff3;
return first;
} else {
const tmp25 = planeDst(first.est, result, result1, result2, result3);
({ left: right, right: left } = first);
if (tmp25 > 0) {
({ right, left } = first);
}
const tmp7 = getNearest(right, result, result1, result2, result3);
if (tmp7.tdst <= tmp25 * tmp25) {
return tmp7;
} else {
const tmp14 = getNearest(left, result, result1, result2, result3);
let tmp15 = tmp7;
if (tmp14.tdst < tmp7.tdst) {
tmp15 = tmp14;
}
return tmp15;
}
}
}
function planeDst(est, result, result1, result2, result3) {
const e = est.e;
return e[0] * result + e[1] * result1 + e[2] * result2 + e[3] * result3 - est.eMq;
}
function splitPixels(substr, uint32Array, i0, i1, arg4, eMq255) {
let tmp21;
let diff = i1 - 4;
let sum1 = i0;
let tmp3 = i0;
if (i0 < diff) {
while (true) {
let tmp4 = vecDot;
let tmp5 = sum1;
let tmp6 = sum1;
if (vecDot(substr, sum1, arg4) <= eMq255) {
do {
let sum = tmp5 + 4;
let tmp8 = vecDot;
tmp5 = sum;
tmp6 = sum;
tmp9 = vecDot(substr, sum, arg4);
} while (tmp9 <= eMq255);
}
let tmp10 = vecDot;
let tmp11 = diff;
let tmp12 = diff;
if (vecDot(substr, diff, arg4) > eMq255) {
do {
let diff1 = tmp11 - 4;
let tmp14 = vecDot;
tmp11 = diff1;
tmp12 = diff1;
tmp15 = vecDot(substr, diff1, arg4);
} while (tmp15 > eMq255);
}
tmp3 = tmp6;
if (tmp6 >= tmp12) {
break;
} else {
let tmp16 = tmp12 >> 2;
uint32Array[tmp6 >> 2] = uint32Array[tmp16];
uint32Array[tmp16] = uint32Array[tmp6 >> 2];
sum1 = tmp6 + 4;
diff = tmp12 - 4;
tmp3 = sum1;
if (sum1 >= diff) {
break;
}
}
}
}
let tmp17 = tmp3;
let tmp18 = tmp3;
if (vecDot(substr, tmp3, arg4) > eMq255) {
do {
let diff2 = tmp17 - 4;
let tmp20 = vecDot;
tmp17 = diff2;
tmp18 = diff2;
tmp21 = vecDot(substr, diff2, arg4);
} while (tmp21 > eMq255);
}
return tmp18 + 4;
}
function vecDot(substr, diff, arg2) {
return substr[diff] * arg2[0] + substr[diff + 1] * arg2[1] + substr[diff + 2] * arg2[2] + substr[diff + 3] * arg2[3];
}
function stats(substr, i0, i1) {
let sum = i0;
const R = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
const m = [0, 0, 0, 0];
const N = i1 - i0 >> 2;
if (i0 < i1) {
do {
let result = 0.00392156862745098 * substr[sum];
let result1 = 0.00392156862745098 * substr[sum + 1];
let result2 = 0.00392156862745098 * substr[sum + 2];
let result3 = 0.00392156862745098 * substr[sum + 3];
m[0] = m[0] + result;
m[1] = m[1] + result1;
m[2] = m[2] + result2;
m[3] = m[3] + result3;
R[0] = R[0] + result * result;
R[1] = R[1] + result * result1;
R[2] = R[2] + result * result2;
R[3] = R[3] + result * result3;
R[5] = R[5] + result1 * result1;
R[6] = R[6] + result1 * result2;
R[7] = R[7] + result1 * result3;
R[10] = R[10] + result2 * result2;
R[11] = R[11] + result2 * result3;
R[15] = R[15] + result3 * result3;
sum = sum + 4;
} while (sum < i1);
}
R[4] = R[1];
R[8] = R[2];
R[9] = R[6];
R[12] = R[3];
R[13] = R[7];
R[14] = R[11];
return { R, m, N };
}
function estats(bst) {
let N;
let R;
let m;
({ R, m, N } = bst);
const first = m[0];
let num = 0;
if (0 != N) {
num = 1 / N;
}
const items = [R[0] - first * first * num, R[1] - first * m[1] * num, R[2] - first * m[2] * num, R[3] - first * m[3] * num, R[4] - m[1] * first * num, R[5] - m[1] * m[1] * num, R[6] - m[1] * m[2] * num, R[7] - m[1] * m[3] * num, R[8] - m[2] * first * num, R[9] - m[2] * m[1] * num, R[10] - m[2] * m[2] * num, R[11] - m[2] * m[3] * num, R[12] - m[3] * first * num, R[13] - m[3] * m[1] * num, R[14] - m[3] * m[2] * num, R[15] - m[3] * m[3] * num];
let obj = closure_4;
const items1 = [Math.random(), Math.random(), Math.random(), Math.random()];
let tmp5 = items1;
let num2 = 0;
if (0 != N) {
const multVecResult = obj.multVec(items, items1);
const _Math = Math;
const sqrtResult = Math.sqrt(obj.dot(multVecResult, multVecResult));
let smlResult = obj.sml(1 / sqrtResult, multVecResult);
let tmp9 = sqrtResult;
let num5 = 0;
const sum = num5 + 1;
tmp5 = smlResult;
num2 = tmp9;
while (sum < 16) {
let multVecResult1 = obj.multVec(items, smlResult);
let _Math2 = Math;
let sqrtResult1 = Math.sqrt(obj.dot(multVecResult1, multVecResult1));
let smlResult1 = obj.sml(1 / sqrtResult1, multVecResult1);
smlResult = smlResult1;
tmp9 = sqrtResult1;
num5 = sum;
if (0 == sum) {
continue;
} else {
let _Math3 = Math;
smlResult = smlResult1;
tmp9 = sqrtResult1;
num5 = sum;
tmp5 = smlResult1;
num2 = tmp11;
if (Math.abs(sqrtResult1 - tmp11) < 0.000000001) {
break;
}
}
continue;
}
}
const items2 = [first * num, m[1] * num, m[2] * num, m[3] * num];
obj = { Cov: items, q: items2, e: tmp5, L: num2 };
obj.eMq255 = obj.dot(obj.sml(255, items2), tmp5);
obj.eMq = obj.dot(tmp5, items2);
const tmp15 = Math.round(255 * items2[3]) << 24;
const tmp16 = Math.round(255 * items2[2]) << 16;
obj.rgba = (tmp15 | tmp16 | Math.round(255 * items2[1]) << 8 | Math.round(255 * items2[0])) >>> 0;
return obj;
}
({ _copyTile: closure_0, _bin: closure_1, _paeth: closure_2 } = closure_0);
let uint32Array = new Uint32Array(256);
let num = 0;
let tmp2 = num;
let num2 = 0;
do {
do {
let tmp3 = tmp2 >>> 1;
let tmp4 = 1 & tmp2 ? 3988292384 ^ tmp3 : tmp3;
num2 = num2 + 1;
tmp2 = tmp4;
} while (num2 < 8);
uint32Array[num] = tmp4;
num = num + 1;
} while (num < 256);
})();
export default tmp;