From 1165c19c8ea7c38a30f94b34e70d9b844292bf86 Mon Sep 17 00:00:00 2001 From: Brooke Vibber Date: Fri, 23 Aug 2024 20:52:21 -0700 Subject: [PATCH] clone from dither4 --- Makefile | 19 + atari-asm-xex.cfg | 26 + dither-image.js | 1092 ++++++++++++++++++++++ mono8.s | 159 ++++ package-lock.json | 2267 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 10 + rickroll.jpg | Bin 0 -> 236886 bytes 7 files changed, 3573 insertions(+) create mode 100644 Makefile create mode 100644 atari-asm-xex.cfg create mode 100644 dither-image.js create mode 100644 mono8.s create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 rickroll.jpg diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..648b2eb --- /dev/null +++ b/Makefile @@ -0,0 +1,19 @@ +all : rickroll.xex + +# reminder: $< is input +# $@ is output + +%.s : %.jpg dither-image.js + node dither-image.js $< $@ + +%.o : %.s + ca65 -v -t atari -o $@ $< + +%.xex : %.o mono8.o atari-asm-xex.cfg + ld65 -v -C ./atari-asm-xex.cfg -o $@ mono8.o $< + +clean : + rm -f *.xex + rm -f *.o + rm -f *.s.png + rm -f rickroll.s diff --git a/atari-asm-xex.cfg b/atari-asm-xex.cfg new file mode 100644 index 0000000..9727725 --- /dev/null +++ b/atari-asm-xex.cfg @@ -0,0 +1,26 @@ +FEATURES { + STARTADDRESS: default = $2E00; +} +SYMBOLS { + __STARTADDRESS__: type = export, value = %S; +} +MEMORY { + ZP: file = "", define = yes, start = $0082, size = $007E; + MAIN: file = %O, define = yes, start = %S, size = $BC20 - %S; +} +FILES { + %O: format = atari; +} +FORMATS { + atari: runad = start; +} +SEGMENTS { + ZEROPAGE: load = ZP, type = zp, optional = yes; + EXTZP: load = ZP, type = zp, optional = yes; # to enable modules to be able to link to C and assembler programs + CODE: load = MAIN, type = rw, define = yes; + RODATA: load = MAIN, type = ro optional = yes; + DATA: load = MAIN, type = rw optional = yes; + BSS: load = MAIN, type = bss, optional = yes, define = yes; + AUDIO: load = MAIN, type = ro, optional = yes, define = yes; + BUFFERS: load = MAIN, type = ro, optional = yes, define = yes, align = 4096; +} diff --git a/dither-image.js b/dither-image.js new file mode 100644 index 0000000..93fddd9 --- /dev/null +++ b/dither-image.js @@ -0,0 +1,1092 @@ +import { + writeFileSync +} from 'fs'; + +import Jimp from 'Jimp'; + + +function repeat(val, n) { + let arr = []; + for (let i = 0; i < n; i++) { + arr.push(val); + } + return arr; +} + +function zeroes(n) { + return repeat(0, n); +} + +function toLinear(val) { + // use a 2.4 gamma approximation + // this is BT.1886 compatible + // and simpler than sRGB + let unit = val / 255; + unit **= 2.4; + return unit * 255; +} + +function fromLinear(val) { + let unit = val / 255; + unit **= (1 / 2.4); + return unit * 255; +} + +function fromSRGB(val) { + val /= 255; + if (val <= 0.04045) { + val /= 12.92; + } else { + val = ((val + 0.055) / 1.055) ** 2.4; + } + val *= 255; + return val; +} + +function toSRGB(val) { + val /= 255; + if (val <= 0.0031308) { + val *= 12.92; + } else { + val = (val * 1.055) ** (1.0 / 2.4) - 0.055; + } + val *= 255; + return val; +} + +class RGB { + constructor(r, g, b) { + this.r = r; + this.g = g; + this.b = b; + } + + clone() { + return new RGB(this.r, this.g, this.b); + } + + static fromHex(val) { + let r = (val >>> 16) & 0xff; + let g = (val >>> 8) & 0xff; + let b = val & 0xff; + return new RGB(r,g,b); + } + + static fromGTIA(val) { + // This seems off from what Atari800 does + // https://forums.atariage.com/topic/107853-need-the-256-colors/page/2/#comment-1312467 + let cr = (val >> 4) & 15; + let lm = val & 15; + let crlv = cr ? 50 : 0; + + /* + let phase = ((cr - 1) * 25 - 58) * (2 * Math.PI / 360); + + let y = 255 * (lm + 1) / 16; + let i = crlv * Math.cos(phase); + let q = crlv * Math.sin(phase); + + let r = y + 0.956 * i + 0.621 * q; + let g = y - 0.272 * i - 0.647 * q; + let b = y - 1.107 * i + 1.704 * q; + */ + + // PAL + let phase = ((cr - 1) * 25.7 - 15) * (2 * Math.PI / 360); + + let y = 255 * (lm + 1) / 16; + let i = crlv * Math.cos(phase); + let q = crlv * Math.sin(phase); + + let r = y + 0.956 * i + 0.621 * q; + let g = y - 0.272 * i - 0.647 * q; + let b = y - 1.107 * i + 1.704 * q; + + return new RGB(r, g, b).clamp().fromSRGB(); + } + + map(callback) { + return new RGB( + callback(this.r), + callback(this.g), + callback(this.b) + ); + } + + fromNTSC() { + return this.map(toLinear); + } + + toNTSC() { + return this.map(fromLinear); + } + + fromSRGB() { + return this.map(fromSRGB); + } + + toSRGB() { + return this.map(toSRGB); + } + + clamp() { + return this.map((val) => { + if (val < 0) return 0; + if (val > 255) return 255; + return val; + }); + } + + inc(other) { + this.r += other.r; + this.g += other.g; + this.b += other.b; + return this; + } + + add(other) { + return new RGB( + this.r + other.r, + this.g + other.g, + this.b + other.b + ); + } + + difference(other) { + return new RGB( + this.r - other.r, + this.g - other.g, + this.b - other.b + ); + } + + multiply(scalar) { + return new RGB( + this.r * scalar, + this.g * scalar, + this.b * scalar, + ); + } + + divide(scalar) { + return new RGB( + this.r / scalar, + this.g / scalar, + this.b / scalar, + ); + } + + magnitude() { + return Math.sqrt(this.magnitude2()); + } + + magnitude2() { + return this.r * this.r + + this.g * this.g + + this.b * this.b; + } + + sum() { + return this.r + this.g + this.b; + } + + lumaScale() { + return new RGB( + this.r * 0.299, + this.g * 0.586, + this.b * 0.114 + ); + } + + luma() { + return this.lumaScale().sum(); + } +} + +/* +// snarfed from https://lospec.com/palette-list/atari-8-bit-family-gtia +// which was calculated with Retrospecs App's Atari 800 emulator +let atariRGB = [ + 0x000000, + 0x111111, + 0x222222, + 0x333333, + 0x444444, + 0x555555, + 0x666666, + 0x777777, + 0x888888, + 0x999999, + 0xaaaaaa, + 0xbbbbbb, + 0xcccccc, + 0xdddddd, + 0xeeeeee, + 0xffffff, + 0x190700, + 0x2a1800, + 0x3b2900, + 0x4c3a00, + 0x5d4b00, + 0x6e5c00, + 0x7f6d00, + 0x907e09, + 0xa18f1a, + 0xb3a02b, + 0xc3b13c, + 0xd4c24d, + 0xe5d35e, + 0xf7e46f, + 0xfff582, + 0xffff96, + 0x310000, + 0x3f0000, + 0x531700, + 0x642800, + 0x753900, + 0x864a00, + 0x975b0a, + 0xa86c1b, + 0xb97d2c, + 0xca8e3d, + 0xdb9f4e, + 0xecb05f, + 0xfdc170, + 0xffd285, + 0xffe39c, + 0xfff4b2, + 0x420404, + 0x4f0000, + 0x600800, + 0x711900, + 0x822a0d, + 0x933b1e, + 0xa44c2f, + 0xb55d40, + 0xc66e51, + 0xd77f62, + 0xe89073, + 0xf9a183, + 0xffb298, + 0xffc3ae, + 0xffd4c4, + 0xffe5da, + 0x410103, + 0x50000f, + 0x61001b, + 0x720f2b, + 0x83203c, + 0x94314d, + 0xa5425e, + 0xb6536f, + 0xc76480, + 0xd87591, + 0xe986a2, + 0xfa97b3, + 0xffa8c8, + 0xffb9de, + 0xffcaef, + 0xfbdcf6, + 0x330035, + 0x440041, + 0x55004c, + 0x660c5c, + 0x771d6d, + 0x882e7e, + 0x993f8f, + 0xaa50a0, + 0xbb61b1, + 0xcc72c2, + 0xdd83d3, + 0xee94e4, + 0xffa5e4, + 0xffb6e9, + 0xffc7ee, + 0xffd8f3, + 0x1d005c, + 0x2e0068, + 0x400074, + 0x511084, + 0x622195, + 0x7332a6, + 0x8443b7, + 0x9554c8, + 0xa665d9, + 0xb776ea, + 0xc887eb, + 0xd998eb, + 0xe9a9ec, + 0xfbbaeb, + 0xffcbef, + 0xffdff9, + 0x020071, + 0x13007d, + 0x240b8c, + 0x351c9d, + 0x462dae, + 0x573ebf, + 0x684fd0, + 0x7960e1, + 0x8a71f2, + 0x9b82f7, + 0xac93f7, + 0xbda4f7, + 0xceb5f7, + 0xdfc6f7, + 0xf0d7f7, + 0xffe8f8, + 0x000068, + 0x000a7c, + 0x081b90, + 0x192ca1, + 0x2a3db2, + 0x3b4ec3, + 0x4c5fd4, + 0x5d70e5, + 0x6e81f6, + 0x7f92ff, + 0x90a3ff, + 0xa1b4ff, + 0xb2c5ff, + 0xc3d6ff, + 0xd4e7ff, + 0xe5f8ff, + 0x000a4d, + 0x001b63, + 0x002c79, + 0x023d8f, + 0x134ea0, + 0x245fb1, + 0x3570c2, + 0x4681d3, + 0x5792e4, + 0x68a3f5, + 0x79b4ff, + 0x8ac5ff, + 0x9bd6ff, + 0xace7ff, + 0xbdf8ff, + 0xceffff, + 0x001a26, + 0x002b3c, + 0x003c52, + 0x004d68, + 0x065e7c, + 0x176f8d, + 0x28809e, + 0x3991af, + 0x4aa2c0, + 0x5bb3d1, + 0x6cc4e2, + 0x7dd5f3, + 0x8ee6ff, + 0x9ff7ff, + 0xb0ffff, + 0xc1ffff, + 0x01250a, + 0x023610, + 0x004622, + 0x005738, + 0x05684d, + 0x16795e, + 0x278a6f, + 0x389b80, + 0x49ac91, + 0x5abda2, + 0x6bceb3, + 0x7cdfc4, + 0x8df0d5, + 0x9effe5, + 0xaffff1, + 0xc0fffd, + 0x04260d, + 0x043811, + 0x054713, + 0x005a1b, + 0x106b1b, + 0x217c2c, + 0x328d3d, + 0x439e4e, + 0x54af5f, + 0x65c070, + 0x76d181, + 0x87e292, + 0x98f3a3, + 0xa9ffb3, + 0xbaffbf, + 0xcbffcb, + 0x00230a, + 0x003510, + 0x044613, + 0x155613, + 0x266713, + 0x377813, + 0x488914, + 0x599a25, + 0x6aab36, + 0x7bbc47, + 0x8ccd58, + 0x9dde69, + 0xaeef7a, + 0xbfff8b, + 0xd0ff97, + 0xe1ffa3, + 0x001707, + 0x0e2808, + 0x1f3908, + 0x304a08, + 0x415b08, + 0x526c08, + 0x637d08, + 0x748e0d, + 0x859f1e, + 0x96b02f, + 0xa7c140, + 0xb8d251, + 0xc9e362, + 0xdaf473, + 0xebff82, + 0xfcff8e, + 0x1b0701, + 0x2c1801, + 0x3c2900, + 0x4d3b00, + 0x5f4c00, + 0x705e00, + 0x816f00, + 0x938009, + 0xa4921a, + 0xb2a02b, + 0xc7b43d, + 0xd8c64e, + 0xead760, + 0xf6e46f, + 0xfffa84, + 0xffff99, +].map((hex) => RGB.fromHex(hex).fromNTSC()); +//].map((hex) => RGB.fromHex(hex)); +*/ + +let atariRGB = []; +for (let i = 0; i < 256; i++) { + atariRGB[i] = RGB.fromGTIA(i); +} + + + +/** + * Dither RGB input data with a target palette size. + * If the number of used colors exceeds `n`, the + * palette will be reduced until it fits. + * @param {RGB[]} input source scanline data, in linear RGB + * @param {number[]} palette - current working palette, as Atari 8-bit color values (low nybble luminance, high nybble hue) + * @param {number} n - target color count + * @param {number} y + * @returns {{output: number[], palette: number[], error: RGB[]}} + */ +function decimate(input, palette, n) { + + let width = input.length; + + let inputPixel = (x, error) => { + let rgb = input[x].clone(); + if (error) { + rgb = rgb.add(error.cur[x]); + } + return rgb.clamp(); + }; + + // Apply dithering with given palette and collect color usage stats + let dither = (palette) => { + let error = { + cur: [], + next: [], + }; + for (let i = 0; i < width; i++) { + error.cur[i] = new RGB(0, 0, 0); + error.next[i] = new RGB(0, 0, 0); + } + + let output = zeroes(width); + let popularity = zeroes(palette.length); + let distance2 = 0; + + let nextError = new RGB(0, 0, 0); + + // Try dithering with this palette. + for (let x = 0; x < width; x++) { + let rgb = inputPixel(x, error); + + // find the closest possible color + // @todo consider doing the difference scoring in luminance and hue spaces + let shortest = Infinity; + let pick = 1; + + for (let i = 0; i < palette.length; i++) { + let diff = rgb.difference(atariRGB[palette[i]]); + let dist = diff.magnitude(); + if (dist < shortest) { + nextError = diff; + shortest = dist; + pick = i; + } + } + + output[x] = pick; + popularity[pick]++; + + let share = (n) => nextError.multiply(n / 16); + + error.cur[x + 1]?.inc(share(7)); + error.next[x - 1]?.inc(share(3)); + error.next[x ]?.inc(share(5)); + error.next[x + 1]?.inc(share(1)); + } + return { + output, + palette, + distance2, + popularity, + error: error.next + }; + }; + + + let decimated = palette.slice(); + + // force to grayscale + //decimated = [0, 5, 10, 15]; + + // force to rgb + //decimated = [0, 0x36, 0xb6, 0x86]; + + // force to rWb + //decimated = [0, 0x36, 0x0f, 0x86]; + + let reserved = [0]; // black + //reserved = [0, 15]; // black, white + //reserved = [0, 5, 10, 15]; // grayscale + //reserved = [0, 0x48, 0x78, 15]; // vaporwave + //reserved = [0, 0x3c, 0x78, 15]; // red/blue/white + + /* + if (( y & 1 ) === 0) { + reserved = [0, 0x3c, 0x1e, 15]; // red/yellow/white + } else { + reserved = [0, 0x76, 0x9e, 0xb8]; // blue/cyan/green + } + */ + + let keepers = zeroes(256); + for (let i of reserved) { + keepers[i & 0xfe] = 1; // drop that 0 luminance bit! + } + + // Median cut! + // https://en.wikipedia.org/wiki/Median_cut + //let buckets = [input.slice()]; + + // preface the reserved bits + let buckets = reserved.slice().map((c) => [atariRGB[c]]).concat([input.slice()]); + if (input.length != 160) { + throw new Error('xxx bad input size'); + } + + /* + let buckets = [input.slice()]; + if (reserved.length > 0) { + let pxPerReserved = input.length; + for (let c of reserved) { + for (let i = 0; i < pxPerReserved; i++) { + buckets[0].unshift(atariRGB[c]); + } + } + console.log(buckets[0].length, 'xxx'); + } + */ + + let magicSort = (picker) => (a, b) => { + let bychannel = picker(b) - picker(a); + if (bychannel) return bychannel; + + let byluma = b.luma() - a.luma(); + return byluma; + }; + let medianCut = (bucket, range) => { + if (bucket.length < 2) { + throw new Error('short bucket'); + } + //console.log('medianCut', bucket, range); + // Sort by the channel with the greatest range, + // then cut the bucket in two at the median. + if (range.g >= range.r && range.g >= range.b) { + //bucket.sort((a, b) => b.g - a.g); + bucket.sort(magicSort((rgb) => rgb.g)); + } else if (range.r >= range.g && range.r >= range.b) { + //bucket.sort((a, b) => b.r - a.r); + bucket.sort(magicSort((rgb) => rgb.r)); + } else if (range.b >= range.g && range.b >= range.r) { + //bucket.sort((a, b) => b.b - a.b); + bucket.sort(magicSort((rgb) => rgb.b)); + } + let half = bucket.length >> 1; + //console.log('cutting', half, bucket.length); + let [bottom, top] = [bucket.slice(0, half), bucket.slice(half)]; + //console.log({bottom, top}); + return [bottom, top]; + //return [bucket.slice(0, half), bucket.slice(half)]; + }; + while (buckets.length < n) { + // Find the bucket with the greatest range in any channel + let ranges = buckets.map((bucket) => { + if (bucket.length == 0) { + throw new Error('xxx empty bucket'); + } + let red = bucket.map((rgb) => rgb.r); + let green = bucket.map((rgb) => rgb.g); + let blue = bucket.map((rgb) => rgb.b); + return new RGB( + Math.max(...red) - Math.min(...red), + Math.max(...green) - Math.min(...green), + Math.max(...blue) - Math.min(...blue) + ); + }); + let topRanges = ranges.map((rgb) => Math.max(rgb.r, rgb.g, rgb.b)); + //let greatest = Math.max(...topRanges); + //let index = topRanges.indexOf(greatest); + let greatest = 0; + let index = -1; + for (let i = 0; i < topRanges.length; i++) { + //if (topRanges[i] >= greatest) { + if (topRanges[i] > greatest) { + greatest = topRanges[i]; + index = i; + } + } + if (index == -1) { + // We just ran out of colors! Pad the buckets. + //while (buckets.length < n) { + // buckets.push([new RGB(0, 0, 0)]); + //} + break; + } + let [lo, hi] = medianCut(buckets[index], ranges[index]); + buckets.splice(index, 1, lo, hi); + } + + if (buckets.length > n) { + throw new Error('xxx too many colors assigned'); + } + decimated = buckets.map((bucket) => { + // Average the RGB colors in this chunk + let rgb = bucket + .reduce((acc, rgb) => acc.inc(rgb), new RGB(0, 0, 0)) + .divide(bucket.length); + + // Scale the average to the brightest + let avg_luma = rgb.luma(); + let lumas = bucket.map((rgb) => rgb.luma()); + let brightest = Math.max(...lumas); + if (avg_luma > 0) { + rgb = rgb.multiply(brightest / avg_luma).clamp(); + } + + // this also works pretty ok + // but i think keeping luma is better + // + /* + // 1) take the brightest luma + // 2) take the most saturated chroma + // 3) profit! + let lumas = bucket.map((rgb) => rgb.luma()); + let brightest = Math.max(...lumas); + let saturations = bucket.map((rgb) => Math.max(rgb.r, rgb.g, rgb.b) - Math.min(rgb.r, rgb.g, rgb.b)); + let saturation = Math.max(...saturations); + let saturatedIndex = saturations.indexOf(saturation); + let rgb = bucket[saturatedIndex]; + let luma = rgb.luma(); + if (luma > 0) { + rgb = rgb.multiply(brightest / luma).clamp(); + } + */ + + // pick the luma-brightest color in the bucket + // kinda nice but really aggressive with the colors + /* + let lumas = bucket.map((rgb) => rgb.luma()); + let luma = Math.max(...lumas); + let rgb = bucket[lumas.indexOf(luma)]; + */ + + // Take the channel-brightest color in the bucket + // bad + //let rgb = bucket[bucket.length - 1]; + + // Take the luma-brightest color in the bucket + // wrong? bad + //let rgb = bucket.slice().sort((a, b) => b.luma() - a.luma())[bucket.length - 1]; + + // Take the median color in the bucket + // bad + //let rgb = bucket[bucket.length >> 1]; + + // Combine the brightest of each channel + // this is kinda good + /* + let rgb = new RGB( + Math.max(...bucket.map((rgb) => rgb.r)), + Math.max(...bucket.map((rgb) => rgb.g)), + Math.max(...bucket.map((rgb) => rgb.b)) + ); + */ + + // combine the median of each channel + // sux + /* + let rgb = new RGB( + bucket.map((rgb) => rgb.r).sort((a, b) => b - a)[bucket.length >> 1], + bucket.map((rgb) => rgb.g).sort((a, b) => b - a)[bucket.length >> 1], + bucket.map((rgb) => rgb.b).sort((a, b) => b - a)[bucket.length >> 1] + ); + */ + + // Take the luma-median color in the bucket + //let rgb = bucket.slice().sort((a, b) => b.luma() - a.luma())[bucket.length >> 1]; + + // Take the brightest-channel median + //let rgb = bucket.slice() + // .sort((a, b) => Math.max(b.r, b.g, b.b) - Math.max(a.r, b.g, b.b))[bucket.length >> 1]; + + // And map into the Atari palette + let dists = palette.map((i) => rgb.difference(atariRGB[i]).magnitude()); + let closest = Math.min(...dists); + let index = dists.indexOf(closest); + return palette[index]; + }); + decimated.sort((a, b) => a - b); + + // Palette fits + return dither(decimated); +} + +/** + * Read an image file into a buffer + * @param {string} src + * @returns {{width: number, height: number, rgba: Uint8Array}} + */ +async function loadImage(src) { + let image = await Jimp.read(src); + + let width = image.bitmap.width; + let height = image.bitmap.height; + + let aspect = width / height; + let dar = 2 / 1.2; + if (aspect > ((320 / 1.2) / 192)) { + // wide + width = 160; + height = Math.round((width * image.bitmap.height / image.bitmap.width) * dar); + if (height & 1) { + height++; + } + } else { + // tall + height = 192; + width = Math.round((height * image.bitmap.width / image.bitmap.height) / dar); + if (width & 1) { + width++; + } + } + image = image.resize(width, height); + + let rgba = image.bitmap.data.slice(); + return { + width, + height, + rgba, + }; +} + +function imageToLinearRGB(rgba) { + let input = []; + for (let i = 0; i < rgba.length; i += 4) { + input.push(new RGB( + rgba[i + 0], + rgba[i + 1], + rgba[i + 2] + ).fromSRGB()); + } + return input; +} + +/** + * Read an image file, squish to 160px if necessary, + * and dither to 4 colors per scan line. + * + * @param {string} source path to source image file + * @returns {{width: number, height: number, lines: {palette: Array, output: Uint8Array}[]}} + */ +async function convert(source) { + + let { + width, + height, + rgba + } = await loadImage(source); + + if (width > 160) { + throw new Error(`expected <160px width, got ${width} pixels`); + } + + if (height > 192) { + throw new Error(`expected <192px height, got ${height} pixels`); + } + + if (rgba.length != width * 4 * height) { + console.log(` + width: ${width} + height: ${height} + rgba.length: ${rgba.length}`) + throw new Error('inconsistent data size'); + } + + let input = imageToLinearRGB(rgba); + + if (input.length != width * height) { + console.log(` + width: ${width} + height: ${height} + rgba.length: ${input.length}`) + throw new Error('inconsistent data size on input'); + } + + // Start with all colors usable with regular CTIA modes + // (not the 16-luminance special mode on GTIA) + let allColors = []; + for (let i = 0; i < 256; i += 2) { + allColors.push(i); + } + + let left = [], right = []; + let padding = 0; + if (width < 160) { + padding = 160 - width; + + let black = new RGB(0, 0, 0); + left = repeat(black, padding >> 1); + right = repeat(black, padding + 1 >> 1); + } + + let lines = []; + for (let y = 0; y < height; y++) { + let inputLine = input + .slice(y * width, (y + 1) * width); + + if (padding) { + inputLine = left.concat(inputLine, right); + } + if (y > 0) { + let error = lines[y - 1].error; + inputLine = inputLine.map((rgb, x) => rgb.add(error[x]).clamp()); + } + let line = decimate(inputLine, allColors, 4, y); + lines.push(line); + } + return { + width: width + padding, + height, + lines + }; +} + + +function indexedToBitmap(width, nbits, src, dest) { + let nbytes = width * nbits / 8; + let x = 0; + for (let i = 0; i < nbytes; i++) { + let a = 0; + for (let b = 0; b < 8; b += nbits) { + a <<= nbits; + a |= src[x++]; + } + dest[i] = a; + } +} + +function byte2byte(arr) { + let lines = []; + for (let i=0; i < arr.length; i++) { + lines.push(`.byte ${arr[i]}`); + } + return lines.join('\n'); +} + +//let [even, odd] = [0, 1].map((bit) => (arr) => arr.filter((_item, index) => (index & 1) === bit)); +function even(arr) { + return arr.filter((_item, index) => !(index & 1)); +} +function odd(arr) { + return arr.filter((_item, index) => (index & 1)); +} + +function genAssembly(width, height, nbits, lines) { + let stride = width * nbits / 8; + let half = stride * height / 2; + let frame = { + palette1: new Uint8Array(height), + palette2: new Uint8Array(height), + palette3: new Uint8Array(height), + bitmap: new Uint8Array(stride * height), + }; + for (let y = 0; y < height; y++) { + let base = 0; + frame.palette1[y] = lines[y + base].palette[1]; + frame.palette2[y] = lines[y + base].palette[2]; + frame.palette3[y] = lines[y + base].palette[3]; + indexedToBitmap( + width, + nbits, + lines[y + base].output, + frame.bitmap.subarray(y * stride, (y + 1) * stride) + ); + } + + return `.data +.export frame1_top +.export frame1_bottom + +.export frame1_palette1_even +.export frame1_palette1_odd +.export frame1_palette2_even +.export frame1_palette2_odd +.export frame1_palette3_even +.export frame1_palette3_odd + +.export displaylist + +.segment "BUFFERS" + +.align 4096 +frame1_top: +${byte2byte(frame.bitmap.slice(0, half))} + +.align 4096 +frame1_bottom: +${byte2byte(frame.bitmap.slice(half))} + +.align 128 +frame1_palette1_even: +${byte2byte(even(frame.palette1))} + +.align 128 +frame1_palette1_odd: +${byte2byte(odd(frame.palette1))} + +.align 128 +frame1_palette2_even: +${byte2byte(even(frame.palette2))} + +.align 128 +frame1_palette2_odd: +${byte2byte(odd(frame.palette2))} + +.align 128 +frame1_palette3_even: +${byte2byte(even(frame.palette3))} + +.align 128 +frame1_palette3_odd: +${byte2byte(odd(frame.palette3))} + + + + +.align 1024 +displaylist: + ; 24 lines overscan + .repeat 2 + .byte $70 ; 8 blank lines + .endrep + ; include a DLI to mark us as frame 0 + .byte $f0 ; 8 blank lines + + ; ${height} lines graphics + ; ANTIC mode e (160px 2bpp, 1 scan line per line) + .byte $4e + .addr frame1_top + .repeat ${height / 2 - 1} + .byte $0e + .endrep + .byte $4e + .addr frame1_bottom + .repeat ${height / 2 - 1} + .byte $0e + .endrep + + .byte $41 ; jump and blank + .addr displaylist +`; +} + +/** + * Double width and save as an image file + * @param {number} width + * @param {number} height + * @param {{output: number[], palette: number[]}} lines + * @param {string} dest + */ +async function saveImage(width, height, lines, dest) { + let width2 = width * 2; + let stride = width2 * 4; + let rgba = new Uint8Array(stride * height); + + for (let y = 0; y < height; y++) { + let {output, palette} = lines[y]; + for (let x = 0; x < width2; x++) { + let i = x >> 1; + if (i >= width) { + throw new Error('i >= width'); + } + //let rgb = atariRGB[palette[output[i]]].fromLinear(); + let rgb = atariRGB[palette[output[i]]].toSRGB(); + + rgba[y * stride + x * 4 + 0] = rgb.r; + rgba[y * stride + x * 4 + 1] = rgb.g; + rgba[y * stride + x * 4 + 2] = rgb.b; + rgba[y * stride + x * 4 + 3] = 255; + } + } + + let image = await new Promise((resolve, reject) => { + new Jimp({ + data: rgba, + width: width2, + height, + }, (err, image) => { + if (err) reject(err); + resolve(image); + }); + }); + await image.resize(Math.round(width2 * 2 / 1.2), height * 2); + await image.writeAsync(dest); +} + +async function main() { + if (process.argv.length < 3) { + console.error("Usage: node dither-image.js source-image.jpg dest-asm.s"); + process.exit(1); + } + + let nbits = 2; + + let {width, height, lines} = await convert(process.argv[2], nbits); + + let asm = genAssembly(width, height, nbits, lines); + writeFileSync(process.argv[3], asm, "utf-8"); + + await saveImage(width, height, lines, `${process.argv[3]}.png`); + + process.exit(0); +} + +main(); \ No newline at end of file diff --git a/mono8.s b/mono8.s new file mode 100644 index 0000000..fd4c0ec --- /dev/null +++ b/mono8.s @@ -0,0 +1,159 @@ +SAVMSC = $58 +VDSLST = $200 +VDSLSTL = $200 +VDSLSTH = $201 +COLPF0 = $D016 +COLPF1 = $D017 +COLPF2 = $D018 +COLPF3 = $D019 +COLBK = $D01A + +AUDC1 = $D201 +DMACTL = $D400 +DLISTL = $D402 +DLISTH = $D403 +WSYNC = $D40A +VCOUNT = $D40B +NMIEN = $D40E + +temp1l = $80 +temp1h = $81 +temp1 = temp1l +temp2l = $82 +temp2h = $83 +temp2 = temp2l +sample_ptrl = $84 +sample_ptrh = $85 +sample_ptr = sample_ptrl +scanline = $86 +frame_counter = $89 + +;height = 160 +height = 192 +bytes_per_line = 40 +pages_per_frame = 32 +lines_per_frame = 262 +;scanline_offset = 31 + (40 - 24) / 2 +scanline_offset = 30 +scanline_max = (lines_per_frame - scanline_offset) / 2 + +.data + +.import frame1_top +.import frame1_bottom +.import frame1_palette1_even +.import frame1_palette1_odd +.import frame1_palette2_even +.import frame1_palette2_odd +.import frame1_palette3_even +.import frame1_palette3_odd +.import displaylist + +.code + +.export start + +.proc start + ; Disable display DMA + lda #$00 + sta DMACTL + + ; Disable VBI and DLI but allow Reset + lda #$20 + sta NMIEN + + ; Set up the display list + lda #.lobyte(displaylist) + sta DLISTL + lda #.hibyte(displaylist) + sta DLISTH + + ; Set up the DLI handler + lda #.lobyte(dli_handler) + sta VDSLSTL + lda #.hibyte(dli_handler) + sta VDSLSTH + + ; Disable VBI but allow Reset and DLI + lda #$a0 + sta NMIEN + + ; Manually wait for first scan line +wait_vblank: + sta WSYNC + lda VCOUNT + bne wait_vblank + + ; Re-enable display DMA + lda #$22 + sta DMACTL + +wait_start: + ; Wait for the vblank + ; Resynchronize the scanline counter +wait_loop: + ldy VCOUNT ; 4 cycles + bne wait_loop ; 2 cycles + + .macro inner_scanline frame_offset, line_offset + ; Y should be VCOUNT at entry + ; it'll fire on unused lines, but harmlessly + ;ldy scanline ; 3 cyc + ;inc scanline ; 5 cyc + + ; 23-26 cycles before break + ; Leisurely memory fetches + lda frame1_palette1_even + frame_offset + line_offset - scanline_offset / 2,y ; 4/5 @FIXME alternate + pha ; 3 + ldx frame1_palette2_even + frame_offset + line_offset - scanline_offset / 2,y ; 4/5 + lda frame1_palette3_even + frame_offset + line_offset - scanline_offset / 2,y ; 4/5 + tay ; 2 + pla ; 3 + ; Wait for horizontal blank + sta WSYNC ; 4 + + ; 12 cycles after break + ; Update color registers as fast as possible + sta COLPF0 ; 4 + stx COLPF1 ; 4 + sty COLPF2 ; 4 + .endmacro + + .macro run_frame frame_offset + .scope + ; each scanline is 228 color clocks + ; that's 114 CPU cycles + ; minus 41-43 for DMA leaves 71-73 clock cycles per line + + each_scanline_pair: + sty scanline ; 3 cycles + inner_scanline frame_offset, 0 ; 23-26 cycles before break, 12 cycles after + + ldy scanline ; 3 cycles + inner_scanline frame_offset, 128 ; 23-26 cycles before break, 12 cycles after + + ; pair cleanup: 6 cycles + ldy VCOUNT ; 4 cycles + bne each_scanline_pair ; 2 cycles + + ; frame cleanup: 11 cycles + lda frame_counter ; 3 cycles + eor #1 ; 2 cycles + sta frame_counter ; 3 cycles + ;jmp wait_start ; 3 cycles + jmp each_frame ; 3 cycles + .endscope + .endmacro + +each_frame: +run_frame1: + run_frame 0 + +.endproc + + +.proc dli_handler + lda #0 + sta frame_counter + rti +.endproc diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..b9171ac --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2267 @@ +{ + "name": "mono8", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "jimp": "^0.16.2", + "wavefile": "^11.0.0" + }, + "devDependencies": { + "eslint": "^8.36.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.4.tgz", + "integrity": "sha512-DSgLeL/FNcpXuzav5wfYvHCGvynXkJbn3Zvc3823AEe9nPwW9IK4UoCSS5yGymmQzN0pCPvivtgS6/8U2kkm1w==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime/node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@jimp/bmp": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.13.tgz", + "integrity": "sha512-9edAxu7N2FX7vzkdl5Jo1BbACfycUtBQX+XBMcHA2bk62P8R0otgkHg798frgAk/WxQIzwxqOH6wMiCwrlAzdQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "bmp-js": "^0.1.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/core": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.13.tgz", + "integrity": "sha512-qXpA1tzTnlkTku9yqtuRtS/wVntvE6f3m3GNxdTdtmc+O+Wcg9Xo2ABPMh7Nc0AHbMKzwvwgB2JnjZmlmJEObg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "exif-parser": "^0.1.12", + "file-type": "^16.5.4", + "load-bmfont": "^1.3.1", + "mkdirp": "^0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" + } + }, + "node_modules/@jimp/custom": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.13.tgz", + "integrity": "sha512-LTATglVUPGkPf15zX1wTMlZ0+AU7cGEGF6ekVF1crA8eHUWsGjrYTB+Ht4E3HTrCok8weQG+K01rJndCp/l4XA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/core": "^0.16.13" + } + }, + "node_modules/@jimp/gif": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.13.tgz", + "integrity": "sha512-yFAMZGv3o+YcjXilMWWwS/bv1iSqykFahFMSO169uVMtfQVfa90kt4/kDwrXNR6Q9i6VHpFiGZMlF2UnHClBvg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "gifwrap": "^0.9.2", + "omggif": "^1.0.9" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/jpeg": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.13.tgz", + "integrity": "sha512-BJHlDxzTlCqP2ThqP8J0eDrbBfod7npWCbJAcfkKqdQuFk0zBPaZ6KKaQKyKxmWJ87Z6ohANZoMKEbtvrwz1AA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "jpeg-js": "^0.4.2" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-blit": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.13.tgz", + "integrity": "sha512-8Z1k96ZFxlhK2bgrY1JNWNwvaBeI/bciLM0yDOni2+aZwfIIiC7Y6PeWHTAvjHNjphz+XCt01WQmOYWCn0ML6g==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-blur": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.13.tgz", + "integrity": "sha512-PvLrfa8vkej3qinlebyhLpksJgCF5aiysDMSVhOZqwH5nQLLtDE9WYbnsofGw4r0VVpyw3H/ANCIzYTyCtP9Cg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-circle": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.13.tgz", + "integrity": "sha512-RNave7EFgZrb5V5EpdvJGAEHMnDAJuwv05hKscNfIYxf0kR3KhViBTDy+MoTnMlIvaKFULfwIgaZWzyhuINMzA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-color": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.13.tgz", + "integrity": "sha512-xW+9BtEvoIkkH/Wde9ql4nAFbYLkVINhpgAE7VcBUsuuB34WUbcBl/taOuUYQrPEFQJ4jfXiAJZ2H/rvKjCVnQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "tinycolor2": "^1.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-contain": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.13.tgz", + "integrity": "sha512-QayTXw4tXMwU6q6acNTQrTTFTXpNRBe+MgTGMDU0lk+23PjlFCO/9sacflelG8lsp7vNHhAxFeHptDMAksEYzg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5", + "@jimp/plugin-scale": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-cover": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.13.tgz", + "integrity": "sha512-BSsP71GTNaqWRcvkbWuIVH+zK7b3TSNebbhDkFK0fVaUTzHuKMS/mgY4hDZIEVt7Rf5FjadAYtsujHN9w0iSYA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-crop": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5", + "@jimp/plugin-scale": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-crop": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.13.tgz", + "integrity": "sha512-WEl2tPVYwzYL8OKme6Go2xqiWgKsgxlMwyHabdAU4tXaRwOCnOI7v4021gCcBb9zn/oWwguHuKHmK30Fw2Z/PA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-displace": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.13.tgz", + "integrity": "sha512-qt9WKq8vWrcjySa9DyQ0x/RBMHQeiVjdVSY1SJsMjssPUf0pS74qorcuAkGi89biN3YoGUgPkpqECnAWnYwgGA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-dither": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.13.tgz", + "integrity": "sha512-5/N3yJggbWQTlGZHQYJPmQXEwR52qaXjEzkp1yRBbtdaekXE3BG/suo0fqeoV/csf8ooI78sJzYmIrxNoWVtgQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-fisheye": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.13.tgz", + "integrity": "sha512-2rZmTdFbT/cF9lEZIkXCYO0TsT114Q27AX5IAo0Sju6jVQbvIk1dFUTnwLDadTo8wkJlFzGqMQ24Cs8cHWOliA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-flip": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.13.tgz", + "integrity": "sha512-EmcgAA74FTc5u7Z+hUO/sRjWwfPPLuOQP5O64x5g4j0T12Bd29IgsYZxoutZo/rb3579+JNa/3wsSEmyVv1EpA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-rotate": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-gaussian": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.13.tgz", + "integrity": "sha512-A1XKfGQD0iDdIiKqFYi8nZMv4dDVYdxbrmgR7y/CzUHhSYdcmoljLIIsZZM3Iks/Wa353W3vtvkWLuDbQbch1w==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-invert": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.13.tgz", + "integrity": "sha512-xFMrIn7czEZbdbMzZWuaZFnlLGJDVJ82y5vlsKsXRTG2kcxRsMPXvZRWHV57nSs1YFsNqXSbrC8B98n0E32njQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-mask": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.13.tgz", + "integrity": "sha512-wLRYKVBXql2GAYgt6FkTnCfE+q5NomM7Dlh0oIPGAoMBWDyTx0eYutRK6PlUrRK2yMHuroAJCglICTbxqGzowQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-normalize": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.13.tgz", + "integrity": "sha512-3tfad0n9soRna4IfW9NzQdQ2Z3ijkmo21DREHbE6CGcMIxOSvfRdSvf1qQPApxjTSo8LTU4MCi/fidx/NZ0GqQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-print": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.13.tgz", + "integrity": "sha512-0m6i3p01PGRkGAK9r53hDYrkyMq+tlhLOIbsSTmZyh6HLshUKlTB7eXskF5OpVd5ZUHoltlNc6R+ggvKIzxRFw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "load-bmfont": "^1.4.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-resize": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.13.tgz", + "integrity": "sha512-qoqtN8LDknm3fJm9nuPygJv30O3vGhSBD2TxrsCnhtOsxKAqVPJtFVdGd/qVuZ8nqQANQmTlfqTiK9mVWQ7MiQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-rotate": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.13.tgz", + "integrity": "sha512-Ev+Jjmj1nHYw897z9C3R9dYsPv7S2/nxdgfFb/h8hOwK0Ovd1k/+yYS46A0uj/JCKK0pQk8wOslYBkPwdnLorw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5", + "@jimp/plugin-crop": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-scale": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.13.tgz", + "integrity": "sha512-05POQaEJVucjTiSGMoH68ZiELc7QqpIpuQlZ2JBbhCV+WCbPFUBcGSmE7w4Jd0E2GvCho/NoMODLwgcVGQA97A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-shadow": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.13.tgz", + "integrity": "sha512-nmu5VSZ9hsB1JchTKhnnCY+paRBnwzSyK5fhkhtQHHoFD5ArBQ/5wU8y6tCr7k/GQhhGq1OrixsECeMjPoc8Zw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blur": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-threshold": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.13.tgz", + "integrity": "sha512-+3zArBH0OE3Rhjm4HyAokMsZlIq5gpQec33CncyoSwxtRBM2WAhUVmCUKuBo+Lr/2/4ISoY4BWpHKhMLDix6cA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-color": ">=0.8.0", + "@jimp/plugin-resize": ">=0.8.0" + } + }, + "node_modules/@jimp/plugins": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.13.tgz", + "integrity": "sha512-CJLdqODEhEVs4MgWCxpWL5l95sCBlkuSLz65cxEm56X5akIsn4LOlwnKoSEZioYcZUBvHhCheH67AyPTudfnQQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/plugin-blit": "^0.16.13", + "@jimp/plugin-blur": "^0.16.13", + "@jimp/plugin-circle": "^0.16.13", + "@jimp/plugin-color": "^0.16.13", + "@jimp/plugin-contain": "^0.16.13", + "@jimp/plugin-cover": "^0.16.13", + "@jimp/plugin-crop": "^0.16.13", + "@jimp/plugin-displace": "^0.16.13", + "@jimp/plugin-dither": "^0.16.13", + "@jimp/plugin-fisheye": "^0.16.13", + "@jimp/plugin-flip": "^0.16.13", + "@jimp/plugin-gaussian": "^0.16.13", + "@jimp/plugin-invert": "^0.16.13", + "@jimp/plugin-mask": "^0.16.13", + "@jimp/plugin-normalize": "^0.16.13", + "@jimp/plugin-print": "^0.16.13", + "@jimp/plugin-resize": "^0.16.13", + "@jimp/plugin-rotate": "^0.16.13", + "@jimp/plugin-scale": "^0.16.13", + "@jimp/plugin-shadow": "^0.16.13", + "@jimp/plugin-threshold": "^0.16.13", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/png": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.13.tgz", + "integrity": "sha512-8cGqINvbWJf1G0Her9zbq9I80roEX0A+U45xFby3tDWfzn+Zz8XKDF1Nv9VUwVx0N3zpcG1RPs9hfheG4Cq2kg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.16.13", + "pngjs": "^3.3.3" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/tiff": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.13.tgz", + "integrity": "sha512-oJY8d9u95SwW00VPHuCNxPap6Q1+E/xM5QThb9Hu+P6EGuu6lIeLaNBMmFZyblwFbwrH+WBOZlvIzDhi4Dm/6Q==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "utif": "^2.0.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/types": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.13.tgz", + "integrity": "sha512-mC0yVNUobFDjoYLg4hoUwzMKgNlxynzwt3cDXzumGvRJ7Kb8qQGOWJQjQFo5OxmGExqzPphkirdbBF88RVLBCg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/bmp": "^0.16.13", + "@jimp/gif": "^0.16.13", + "@jimp/jpeg": "^0.16.13", + "@jimp/png": "^0.16.13", + "@jimp/tiff": "^0.16.13", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/utils": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.13.tgz", + "integrity": "sha512-VyCpkZzFTHXtKgVO35iKN0sYR10psGpV6SkcSeV4oF7eSYlR8Bl6aQLCzVeFjvESF7mxTmIiI3/XrMobVrtxDA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "16.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", + "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==", + "license": "MIT" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-base": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bmp-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==", + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/centra": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/centra/-/centra-2.7.0.tgz", + "integrity": "sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-type": { + "version": "16.5.4", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", + "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", + "license": "MIT", + "dependencies": { + "readable-web-to-node-stream": "^3.0.0", + "strtok3": "^6.2.4", + "token-types": "^4.1.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/gifwrap": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", + "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", + "license": "MIT", + "dependencies": { + "image-q": "^4.0.0", + "omggif": "^1.0.10" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "license": "MIT", + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-q": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", + "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", + "license": "MIT", + "dependencies": { + "@types/node": "16.9.1" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", + "license": "MIT" + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/jimp": { + "version": "0.16.13", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.13.tgz", + "integrity": "sha512-Bxz8q7V4rnCky9A0ktTNGA9SkNFVWRHodddI/DaAWZJzF7sVUlFYKQ60y9JGqrKpi48ECA/TnfMzzc5C70VByA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/custom": "^0.16.13", + "@jimp/plugins": "^0.16.13", + "@jimp/types": "^0.16.13", + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/jpeg-js": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", + "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==", + "license": "BSD-3-Clause" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/load-bmfont": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.2.tgz", + "integrity": "sha512-qElWkmjW9Oq1F9EI5Gt7aD9zcdHb9spJCW1L/dmPf7KzCCEJxq8nhHz5eCgI9aMf7vrG/wyaCqdsI+Iy9ZTlog==", + "license": "MIT", + "dependencies": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^3.7.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + } + }, + "node_modules/load-bmfont/node_modules/phin": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/phin/-/phin-3.7.1.tgz", + "integrity": "sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==", + "license": "MIT", + "dependencies": { + "centra": "^2.7.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/omggif": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", + "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==", + "license": "MIT" + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==", + "license": "MIT" + }, + "node_modules/parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==", + "license": "MIT" + }, + "node_modules/parse-bmfont-xml": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.6.tgz", + "integrity": "sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==", + "license": "MIT", + "dependencies": { + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.5.0" + } + }, + "node_modules/parse-headers": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==", + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/peek-readable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", + "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/phin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "license": "MIT" + }, + "node_modules/pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", + "license": "ISC", + "dependencies": { + "pngjs": "^3.0.0" + }, + "bin": { + "pixelmatch": "bin/pixelmatch" + } + }, + "node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readable-web-to-node-stream": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", + "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", + "license": "MIT", + "dependencies": { + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "license": "MIT" + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strtok3": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", + "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", + "license": "MIT", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^4.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/timm": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", + "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==", + "license": "MIT" + }, + "node_modules/tinycolor2": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", + "license": "MIT" + }, + "node_modules/token-types": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", + "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", + "license": "MIT", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/utif": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", + "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", + "license": "MIT", + "dependencies": { + "pako": "^1.0.5" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/wavefile": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/wavefile/-/wavefile-11.0.0.tgz", + "integrity": "sha512-/OBiAALgWU24IG7sC84cDO/KfFuvajWc5Uec0oV2zrpOOZZDgGdOwHwgEzOrwh8jkubBk7PtZfQBIcI1OaE5Ng==", + "license": "MIT", + "bin": { + "wavefile": "bin/wavefile.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "license": "MIT", + "dependencies": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==", + "license": "MIT" + }, + "node_modules/xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..38ecf37 --- /dev/null +++ b/package.json @@ -0,0 +1,10 @@ +{ + "type": "module", + "dependencies": { + "jimp": "^0.16.2", + "wavefile": "^11.0.0" + }, + "devDependencies": { + "eslint": "^8.36.0" + } +} diff --git a/rickroll.jpg b/rickroll.jpg new file mode 100644 index 0000000000000000000000000000000000000000..931e14eac0101cbbe58b9006185bc8a429681548 GIT binary patch literal 236886 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

mE?#rW#)_*{#ZG0 z$YB`jm$J9dv&j3rsz8-En%rDur}cq}qEKP*5Uic<%Yg~+sGE+0SF$U4@!!;={^Gjb z9eaWn&e0-QRqnSATi7)%u`Cn9Otck!k$2`V4Cq3gnVNp3Mk^G=nF43KKz`>|F=^8s zCF{Cc?M|*FneOPV3LYbGhOq_qvH=Zs54cKwZrDXW2K9Y-^e3n~`uZ`wu_-R952(L? zO)KSkg2SiEq~tH^n87Hkf{sHx7TsWz4g(XA1n+wmW0W`~%V8^&Y)K_C#rer@8RYA>X4+v21v$9f1 zCR^;qgzepf4KiEYqhd9DHRg5S6?C9sL{9GAbjTCfiCo?U&%g^hq7}SRtFCt0%cVbP zskUD5wCCo#Y;Y}LI=*P)Wuro0(?4j(&|CBIR~w*j9V87p82BI=`mkKQ0Z~G`xmXyJ zu-EZ6S4-91myliTk|Kvdt4fmNeMG;ld|}*&9a=O9Ss%EDCqmPRe>?K%)D7o-1b?7X zS4OYrIj1T@lQLLWEGz2IJ8UU^|EMXHyQKEpC(Y!{U%-*!x3ST}XDjBmL8*cw3AXrT02$xlzod3RXC2n`6wH-cV) zu_I@ae(x$?pY#<3!#M{O9Dlc<>QtsXW-Ed;68n0w%+vi?Q80CS654@b?nAW=CbIN# z@6kKCt{jt_m#W1Ix`N7{?yqsH>drqX*U>bdZAb3)&uNKqpQ{{uf%;Wn7u6R=z-V4$ zUsR1%5wGC2tL+-5A&gA@+-4bvVo}ySw5kXv%s4S(qvUgPAvu3SJVK40lWrz>%NT}+ zGIiO;AR|A16YIuKQUM)B_&P*UK~05#IY^e5EQA0hD2TUj%JN)fg>Kf2krXLz%Y31F+tFDamUvyui+Dal`Da zY6DhQb3*-RN4ah$bz?9Zo7IRN-#@=Vy|K{wc6$WsuMkjt4QO+eJ zzkij8nAB1quNict?DyfJS^LvGw_5_B>r%&2TEZxF!d6jVgwWkwIYrcGu6;&NS+KX%tt* zIp)g0#+T(?YTcOt3y2GaLRRK^*5(*F4Ob+{ZE0y2jqrN5aB4)2R(zfJ^kzWCc#J(> z2-RER6wGjZMFZCNKmNn)qtP-^UBtquR#q;Ew~ZPm)rG#V%y6MlmZenJ3|2ZK*Xm=RAsLm7L2GUHr*Be3AuHb2&W zAKV;4uWso2LOa8$-P&M$P4Pn2HqV7=Dt{g#EvD^O%vp^`+T3(g^|ty!(JwPtFJDWa zYg3x0#1&j77nR&yj#JKROmVK?oME~fXB#FGt|?M}lQ;Z8TiN(6-w~fLG7l>k!XgJX zbY&0uv3OI)!LdY$>^s+K`E?*=Io>)NBKB1>Sy$U3g7&5B#D3Z77a`Is%y}Hz_pLVP zR}}Y}rEbd(&Da-}!Y6;Y)+E>j+C(-Ds8L{laupSu*F?N;g$>QXOFhI)Q~U$I_{@noROUPx zPWs1ye~&opkpyVk>J5atBIa8NL8Lws!lVh{tFnMzlI@b|=K2L@L%!unEiSi>IV&Pd3?L%*0bHG zq}Ie_Xm+no0>-7eSuxP*nZ!>Xa{cNUpySeU7P zO*2?HG6;%)Q{;N{cX{Ar1&G82prTRa+JLg_h^ci%%j|}Xxe9qifr_ z^5VE8z0+!AOi$T_yug9^OG)vJ(Qup92qkJ;JWDasb(>L>tiQ$HqJ+46nVJpA2K0F` zJ~`GMe4JS64`BCuH&fC$=dgp)Jc5mC0&z{OW(u5S0k=1dhIbDE%0Dt4+fR zO&svLs|UV{Es)yOtGIiBl(1erCy5mL@4mD!(_Q{jrz3Ps>pQm`BRH@DNFbAvj%5j5 zh>q5rLvvvrC^z^Tu5{4TG<9{m@DB&2ZPPC<=Q2~HZIA=bnp;!&b@7xZc3VDa_=1dX ze#Qg2!p(+|{Ip6}L0#Jds|U~Y54>f5ejUl34tBLCK@vPlHEk|tSV`wG*~$21rZ*Hf zQ+maq5QNS@5cUw$H6$vZj%KTwwMhNqVd0(aer_p!X1b=d0sy>o16WZG869pHN59B`3#9 zUC9%8*bvXoDL>sbnEzo91*KoH0}<0oEQxN{dpD%{r+sl+5Eg*_QS&FB2&Dj9&#q96P?di6rDTzUi$$HkNi;vhPpIFb>Lk0IG$_v56 zH;?3~djdfg=(pG|s++%L`dJg$yp>5FLdOg7!3e|fLivcl*e3c0KgE(&r&}M$U!XtW zKH;&KSmz{Ik+j8RY?|{oQ_hkwo*I!h{^EC#Hxgx2q|6w-K*3iKs=w0f(z$**I%@o0 zQ-2X>VifUAd0XwC>!+3hN|4h~uEdfE65ea~86VsqI%v3&c-UU(#fy@PNcVtNheir& zSyI5v1_5{Ls0f-v#Zkk;HwSbSyd%f$-01I`Xh+l*b|^=i^ot?wMxN8(z%#R(l+Nrx zI%QL+Hjp^vx=Nlirz72}D5IZERc0&hwQPh`Pc{EW*evdmpCW#T;T$ZFE_qB(nxX#H zj{7!U^8I@qjb{rKQ^E(Na1|Gp;2+o5a3b~>Vbr{i&(*e0w2Ty?(>*_pe5628g>`KI zw)}^NhhbD_^g_T0Nlzdfk^u0ksu@0%G!LNe(^eMCQR@}KjBI0Gk+iL_DXERQJr>jI z)AdqMxw@*F;|4s<#!aw&8p}_p#)wQ<+p^xhxq>vYlTrvjmd|Q6oVx}a&c1g6H1Jou zBm2Qr&@5n}(ly{gSf8Y`=+nB1FeV|kTI7H`dt|hum;D-ba~7eG*>s2KQ~o1>b;dl6 zG&mE4aQo4XJ^UsZ-r;w3bw6PuF&l>8fp6CYLL`P4B>Gr6s=2UR0gY6?QVQulc-0?>9H%opkS3**wh5GB&Ac z7o{a3YY;2D8awBs6#)g$)LUXRG%)_DrKx@UGXoDWd+D}Y}EU4Wc;vG3uBPV0FYd z_R~QLwj?V3f9x0_&q9QqeVQMBH0a=ut`D89(ttP$L*AfDTfXCLLo5w5GU}#ij$QtFrnEkmb|l9!6Yv*8eLSE+w*l%xU#~qMfJ28R|DnxE|C|d) zyy38*BP#md-jT(HqaUp`kX1aw4cnZKkx_gQUzZHTolYAb1w+?)v@g518adp7q1_X@ zp&Vw?@$?9V2%Ux?9)vEna37p1HgC4ptU-d!tA6CCq#AQ1L_DYYWqCAv;f3%&ffx}G>#I$>)bY|*3q_00IQ5%dq?0fQ2_cDZBjaY(d#+iDv<8d z3U8ICr7a`i$(3ExeXjvYx zb5w>Cf!V0L6iofLx!;WjN%zZ@^QSyra{ro+_2pO!+LLW`Yk`r~;ri!!v>i}eBucYR4CZU~}Ml$==5{)|y(0QTo z9~vudMeKPDsx|RbO6iV$ozl8?afEvzL4Nup4?xClXbiy@aZ73(#_+m^@JasTWR>$UMUQR^F<)zOG9W}LUEL-I> z?W?sMrQ6-Kw{t@li--<@VU)iq|H_+^MxQ6~v!Wf4?k95bAd#xkz*h)vo%PDzkQssd zmmAcR_bv?fS-Ie~j)Hds@2Ae2$MuGM3s#Q{SJ3me>4z&<6qW|B`b`nBm?kk!ltR*( zfnmVw#}3Fw+^_P=(ZHLw%h}S!TS#nS5i)!s{a)J zS7wp>zx_W^69?Bd;O0NHztx4OjRaOPHM$fKwFQWoURVlA3{zE(aqdb`zAV3EH+~C8k zD;q5(D8Jb+sHZH`v$2r#A;L28BxgR}z2f)E{$&aBv&S@o7{DB;)RQPXVnGBjq<>8| z`1>5D+fG;IB*b&6L-kQQx6^TL4!=b;r38%BjVWb=$|H2%P_-Bb$DwldE4k@DcUdjh z6;(yX#>7Z%D|LNT7*U|asSKF=-HY}ptJmE4?R4yF6e`+`m?lP1T%;YqRF8epK6AIw zV=SEIJFS&c;(lH2u^$vPTD$d8Ol99>-K#u{$?kMe$6jCkfwXS)5+MK$y zxi?VBhcEHUc5GYqLJYLcfFCsiA`uQ<`q8+?%dPbek}+;Z)~Lie zn|0ia(LekzhK*pg3-_9OZ=(Gm25l{VUvmV^X-OnD^Pwn$W8x6&0D+)blHp66j$e|a zT$_;tsd7zGS&%pgO^0-z+i-LfqTg~5LG1^N%(91qeh?LXa;r$8jy)ZYBCz?}=Z1*? z3YU-tiJEWMYd?^!O4@q7A)fs z4U;4IC8O#K4D*W}8q!T}0G|`Mk(liO&oSH2biZcIU;{PtG#5MKyF4{{eJZ`EQaByo zn5snhpY8&bs6tt+IAQ=dwztS(+?9`0;-SVS-+}}wEG#~IY9S76x{zqqVy$oTjm|3> z$2P6jX*qqY*4&5%q%w&-0wo9Vf|>)rvboi!$ckXaI`caUP?%CK7 zeSsyVuaS9oILd(|S6?&Y7rF8dJ7gqAw$kNO;|yJwCMgHkk}`Iv+UEFK>W9E|hZ_@E z<3u0|kl!O0#9ganrrTyvswE}^+y=A>Ce-E+JN7?|?A7bkdkT0xzwTA*Q8fGYbB8o$gF(3gJt(jp2Ln4R3NH3eQbay91Q?i3eiehT5N~?R1RDpDBAiMGxoWABSC0-X+|bGm3+yUR7^+ExOqDGm819?wXS{sPDf(3m>355R?tubXQAjDR@}6nIUo z2Vm1asAm>G6~w1kxO&pIyavZlf497x~O&_=n5xeyq^a6NI=@AtOqc`B~dD8fO} z_$$k7r!D>KM}f2T-PY_#extZ7Xv3Y;c+kyGh)FjZ48w*oANnFf+ zDejT_HPwwy)(*2TAAQ}RjjC+z;OW04`(r#j`C?sowD z7M`)&FBS?3?zTEJ9ZdI*l+HtEKVLX1ZZ`@%eeha0KFeCIerCy#N)DjB?cKQEeeU$F zSmNBWFl|EU-wylGD<{lHdrIcqg0~j;ZnZD;TYmqhd;ZZ$5WsyK$ziwkZuI>3j*|bw z!jaV@BfRs+Gw~|*)6~hY>TFahq8n;6y2jMrsh+bYBqgJ>TZiOhM^RzkC>DBmG`qz3 zA&v%sDKQfnwZ&_5oq;w$gSv6Pp~`O42~-#pwXUC-fRN$%$KA}SJ;y!B&$TZH$i@Bi zC&#Bhe(DYqL5&32C>+USLJWoI3B`3)d#43b5yDjvo=L}ZT?H8d+hu7#R{i>G^9ex@ zRkH=d(4lXb-2j%crG+FoFZS@6KtduziV#-nO#A*PVny8mpGDjOVi$c(T}a_-z4sPb(H0-~x63D=VjYkN$k{1q)&O^Ojs&VR7+DRm0g8@{5e^uX0&VM-#AZw-MHWx# z>t4Vkg>;_v^x& z22>Q50*m_<8+}i@$!x=JDk7F3QU$%53npXRj=erl?WGP%WhIl(T0z0UKr?Udi`LRL zH*PlVuD{atSy%cInznB*=Ee|v#z7?9afpW#QO#fnBAo|!=$&gO?#zSSSJV}2OnBeB zeDQ1}zPva!hc4W;kZ%_HC>|HN#o&NlVWWG(YXyYi4-1K?3g|MYXL;}mn|k@O3K2E- zX5@}Lb|lkpl-&G-XX!{nxqmfM&zIj-DDRNU5@J1_jOh-$1Jrui7k_)SqO4*)+c4s$ zBYX<1*M+yJ34LCk83bK+%@953|NeKB!Th$z9dKtI|iH`5!hm^Xj_BRO7B~ zz`&AM!pWBSPB22FN?egy-%(&KB}~g8_T=*O8>U?Z%J8c(2|4cr}mdrfTT;OPuR{$6-o&Z3sC%8Ne>m zw)36g#CL7c|EzyWBj)@b_aZ`)!v`Ah#?_SF1>{m zd-!M}eD4EN_1ubK8k|U7hBspT4*AlAN#lO6)tKr^(GvnIl6eyW$qJjpxOz@*b|^*7 z6_$Nb%!EuVGv9$eWNLX=&ss3YwIU6J;Kj)lD3FnE(ruh#gbVi0%lAEdUw_#$eKYVr zy@pP>F>>emYH6Pnrn2A*?jy7o^k-U;`AU5s?W2+r!QYOixPBPE&Yp%A_VZ6(v z-SmGdEgOJ&%nRtUEHAZ!nO*;>>NY#hcU{KWF4ie~Zi3amYYE%C*7kl#(P9V197@u* z*0l+tQT>B_^0F@)kfIvQ-s(YgbzNOoy)O_5-u7VhDqdVVny#{aLxAb^Tz|}s@G)a~ z3;He6Z)QhFS(ia!*v>80({>M8JSw3Jk6&6xQ#6aUlhU4T8-z33O-pUQ4h6*$IMXqn z_2$=r?%^ z+ScrkMzP-L#j&DJW!lj#V@q`#)ZqP)IC(!T0+goZ3$Fem=I30*4q;6UK zECR3>%l<>lOIZF7O%ZB$&e`c4xRF0nyAgn*shPb)#qWmf(jO(O_MoEwp#=s+Jk|a* zdZ5B($?xF55BWbK)%*XIfNwTP0cW4PJm=p3zsojQhUaT+h=1CH)RHP!aLHolC0T0Y z6Hi!2>ksA>5g)$M@y;+`ei!sl#@7hF`B%%ei^dD${9_*_H(Nty9Bgz6pdZtprn8UX_3xRqZ?r~IJ#rh$kEN`?E5|Ech30( zwq4hD?Y{5#>-Bs-9+NXWg1vy7!gzZ$_mazv!X1buqaZ(5+&atp=cH83CgOGN@FxDDPRL>p?y*A|=Zfx_YRuB4p*>%#Wb>swrZBU|{FRP;Ritj6i0jo= zxrmIjRP_rK+xRkwGqsjV+N!8VMcSQ~ZO|uAjzl;rZrsfQ?W2~AehU*F7Z@;G@)_-X zONcp!k_Tx8{+c&RrR_p^YZ&A&h~EPS?2dY^ukM85YU60c(~w}|0ncSiPL~tg#&r64 z6r!xwCxI6!r3P#Fwl9ApCsE=vM$`^49UHLidG|mnMPrzwxXVQX#HW$?-0fdl z-?Ns?VUOO&#+&PDX}uvrX7&S#*pXQrj%ZmR-9t`f*yi;ZMGdO9%GFye+P7oleej*` z!}{vK9ptIV2aQFCEj8LkOSRSEjKi*@kUv?-56-VOo3jnO+onti2|*wClzyy}FTuJ^ z4fhPv4bo{kOY20}q1{LO#(6`EJs-I?-h5G4SM^&!6HC3ED_Xn^cQD!aHr;mSHe)%&Y!MLPvH(K6^VJd6+ zN72D>B?HI3Zb*E6adCbFS?6iN94nw(@_7(VMO?3W16eO2h(vV`^*>kKJ`Q1`Li>)v z1aJP0P5pKQ#suUW+Rq9&(j32=JID$^0vND;F6z6P`w0i_q7EU4nPEI+w|3E(cd<$DMQ(LVa-1%wvBw z@8p9w+s%<1X2oXJhf!ta<+oo9n@j%5J z@Im%MqeEj6@+X43=C==QxFEakqws^4LCxBDrN;LVi%}Lp*DW))t=VqPps>m7F+6+} z;Wr(3nzR-Db4;3Y&oD%&KmC%V9{0}}nM-~uxRNq5)p8$QGpLMqoCkeY||6{lI7B3-$=Fr&Y`#pt^```Lt z+a}Fj zCpcyN;$a9M#wGH9nJ8TnGqk4#o&qQG!}jScAOuoe`cb`e57}JL}=H3X|%_XO-`jj6M(Nn`29|eMKOG)$UMD@f?86vxFlj{;nLf#9;=;qsy zoy1LE?fW2fxwYrR)!mT(g-r|H$JcuIzY^tcg9Q40e8;~bH%zl_oYHkea6tOs>psC= zY+JK;@>R^1rKno|t)Xsj0)$Y2m>}$0H(Fmta7>JW_>M4>|94Q(#=z`GJHtBx5@(W; zI@+rwyeMq@>`j-}uC<~7|LAaYg6ZfH6bx16+mrQvK|{L-D!WwuY_SR_RxMwAt4qme zbu`zqr`@D*P#EPpaeIH)+9FeUY1EZHlVcm;7x1F=ibT(93U!xdiYvg1eN z0^B7sn}Hl`7UOX(;H_SS-3^?TqDe4ny?Yc^PQe0cBr9&p@S+ms$wUq%QA>JwvMM0`@g$NdPB zOBQRwihC>T{^0f$OGi!n03en5e|R3FGp%o|5__NF_5L&cZry+GiRT5_q$B<8F{60D z0{>9^gOecU_D{QO-_FTLwv$aLxj~IFzmo4TKki}&0VpK15%CuldMjNIXl=)n8_~bm zcqUFURkA2N%D=%irVBdz$?mZm6GPmzS-a)N{>GzTco#>KxHBjS&vCKeN)3F;16S*+ z-WYevcVNO9lt=zb8)Vg)HA&&vsrID`mWtf8em1x`w2-@qV`1Z~c9V8{Gtyznbk>>* z;o%@vGmKVwXRQ39{bkt_onR0wX<$mY?z6$Si~PnJ4a(4{z=KTY2H~?jL4P#Cbbe5v znIg_kGGyF{_Z73lfv9tnbb^(-=hp|L@*`E|QW;By2hi-a5o2n;Wm^GY700Kfx^JpX zmvNn~b#rIo9$wx+kjXwkx{raloPhvg!zVaQ|1gPQ7yMbVnw|h#^5X!fxRpI1lC7{y ze=jq1W*|3o4WL zhZprYx7Xg66`@PBKleLUcl1rUIw>d~V>ITM<@8F_*3Y{OlYV2MIZ7YN1Uomx#1=h# z-12Dm65QQR&gwb+pzz`+#Z=oZ_O4qlAw=q{`z09Df*Ut@1aL!+^cyX5`ahGqg2T)I zhJ{N&iw2F^R-;1NXJ7UMt|f>LKVeDn?OdsaE3(y20{%P?guYt4!tWKGsz`AGRQfT1 z5lT6pk3A*0mGc%F78i)Sqq~xfNnsM8HUe*@rJ8VEKBO9G>}!RK8rzeCOH(8F#-FZW zZV&f3K)e&El{~~v3^(PT`-_VpwtCrG&5LJiR5pFf5(A5DEK@YSXkA#eO{!e3oeX^! z$uoMKCnH`kqh@{;slm=PuqKlMF7FMH0y)G`Y=FrMz7e{-1uR1b_8hI^4})L{rAC5l z(3wpB?k>y5){pb*Y$1G_`%1RQzsgeMpmKx5^(hkJeuCMB`cyGNzsmdhCAiI>%-@!l z&}Fzsx@Xoj82khgjw&rx*P0h@uzHoJOMukB``qyu@+#Wk&5`qAOn%Pr4WDs#3sqrs z9rsroS%OWM@9YmMPUppba`LFw{^L68e9+836iJ_YE-KK(y>;-3B=FLqr|8vjM#4^<)Kr8P;u zKeZ9ZH`$Yf|Qhu7d#O`i5*eLJHyB1q~((=NMz>Z%&49(+kuwreQXP zEzqjAh=z7bgAemR6Sm2M#V%7~U8AKwuQ)tQ`hId>QzV^eB_8+4ccj>#GA8^0I)(TT zkNoeyn(S`CrqK2CU~gJW0g(-50&apE2^=HNp*I->JWW#)#Z?&7Fd$EsGHSBHnh`}Vc zQcUCd6PgG3xSZ^Dm#%nBe7+}vZnQ0N3w~%+zNcRz9*>#2HstSD_2K2qwpZDFFQ zPxAkL@WURodrGb3ZntCqlu_KNOf6rlx|@Z2-eQnuhsUS#`vI@oXT~&T0Y`-s|349! z*^j83=5xo!P;m;^O|MC--T&~6bKqYUdji9-eS*6(;UtTMC+D$>@5@39ZB^*l$CplM??a83xDC^j22?>s)iACxkkG${);t4sSNp(2DksFQrB4!%Ede3sa47Gy9@#s?h zm93`6=#+gP8H`j9CtOwO1?nC@B=Ax|Hw@5hRgNN|R zaTqRLI^0$~sul@wS*j30Ds8xZ$c(DoR?3K(JR6@N^>e+}0R{0T#4A;u!*)Y2b#8bY zyXb@8h7ie^w8d5P;&`C)-cE$*P(9`&))&WDt`rp@>Sv!pnG03;6VpOLH$VSm5&7kE zx5cF!G@bWIlZ~Z%SGd@oe@X?rE*Q5_vu>fjIauosl7pNam8QtM3+-7Z%5Bu%lX>*^ z1`Vw{zxu(B2Nq^-SngoK!nH&9Kd+vn%MD*N+5DL_M$j|K0ATBh_`{w}rYW5M29X2^ zuj0=Zpxa-gsPc#Pbt;fH;R<<@v~iI@C3Y1y#&BPgUE@-7D>r{|lX3S}(4GfN94M;+ zTcbFFpI1Dyy)Itxc<`yZWNWGKCuv#F*j2nR5hOxRT#D`uiN~n3(&*1$%?x)ng=T(z zQ@LVQ9mssIA9hcRdeM4Lx33>!Hi^2;AviGZD=P81PF;n?9uLZW*{fjU8n*DcIdxdW z{=KYO^rv*1dsy@rx~frM)Islp|HKHoLSAWy1-p_IbEEwkoAcd=?KrZyor^-TPthrIzcy$;6bw#}#q$!_8y%C6&rfhhe!zL zTpr|i@$aAS26*B(beuN5a3I()<xGqR?Rh)3n{&RkJG8iWt-~? z*%V?-7-4;38)$)%4&_X?y{fCW1+PL3mgtR8=e&*peQ7E=k<+C0MBh`&EO~zX*Be>t z$=xhjLVPvnPdNeZbk(CAh_05h!7dA(>n0{u-DwAnw1H49+N*;G7R;Mm z&CToJz;X=uA}vSZej76CY=7%|7jrMXsK1kZ&5~J#&GGgg4w}+8E?-ylcj~MO!_7#K z52?mttWwzTmOE#MIJCeCs7v)O%K1=FR*0D2MTI-Ei6PtCTXPJTICG@iMDO_k7uOog zy?wvmql8(C;SuF;^Ts9HDFxW90;*rabO;|3r_sJ&<|)tAeNY2iIjAsXXMGm12-)j2dep5Ry&3PI!njodcsIuO~a|3Vn(I~UML7laMZzz=46~+Elzk8^jq_a zfReJi{FQ0v*gvgS*ZmjB_Yp&Zvv^!V3pLWJ)? zoQvCO7R&tGgnl;p?n^I^E+QR~$w_h_W6T*mDn{*Im)N9>Kes-UYwpQKM#g?{xF$yZ zK)!BImUcLWXTNKEdl|H}=j1`J#?y@OGYb!5y)@JL%;XWwP59)jB8JRY@wf&#RDJfy z!)UUWHC250mz2^8qugZq=U!3pnQG zj|c#CxjKu?>J{A@~H?LRrd$iFf6JpG^J)L@!)TuiZ_hIC`*6q&q10Z_#!F zj={*_xf&&0?+o{NG#&X`BcL^rW|Rrm9kggFHC3zXeZ$=)XZkUOqC7~`C(T4%J0a^R zI{B)!zgG|OW4RlmZi>UcoELNFdab9@)DQP>HVihbq?rkc`%ehIDEki&v=zrOIhD!U zZDnwZM!4Si*YxzzRI6J!5f@4+A>;W55%LdDE2@Ey7YAe<+%t54-EswzjZCPJ`hit= z99ex4FMTqy&uy(qLQmoPmqxanEz&PUz3+A9BnUssVR=QTp(}U1`iQT;NXcP`8^Sje z@_&z*fEOxvQrN{V)x0h%OeHDtX}N$SDZ~YXYH{ys7lb`!47u0cu2W}K%xYLS2cLq8 z^)?IQH%DH^mhjaHPW|>Mh_;Qi-&(r2HYrk9GOHb|bn~0u)@h?cTYD-qmIZz&T7OYN zoUq^HW{+~(u|xVwsJitVZ-@Tlu)}7A@Zl&~o`L2$p>vO{he519cc2G5ssjU}Q~I&- z&ICt5j{8Y(!ES{g+>%@Nx1N*S%ton(?K+t#E{HEue|WwU6djzY9l?c7+dBIJuois{!7Le;bzDrg`o zH*M;Zlv1q;s#MX_MGa3X-}spbP7wLQy{?v<)L#&dlWgebM#yb3<6O!|MJrxNC6D^5 zPD3WNd``go&=fPWyG>*8G96Pkk3!YB`I|P%OKbV_1)GA$@UcZgUPm;`LkILY4t?6y z-X$eDbT8^ z_=g`@6-x67Jq~z}ZNVPn5czs@5~J9((>eb0@Mygx$;p;#(IT9TGR?SZbz^Hr_aP^l4t* z!eA$q#0Uc+rti>T?RH-CW*-&mQzQT7tuF4bS2{5E;%eN&F_zSM7Bi0os`?C~qT z!4is+NbyliGupCX5ahJ{(NP|GyP%X3Zni1BwMk~+J-zSz#`l^yRdM_IXd(Y0HKqZ- z?%q>iE80PSv(00SoAuY>oO}?pA|WF#coZ;Em=j2$r|Q;=HK$O~$uenyZp!!gW@R1y zHig0s)@_fnad9u01UapQa?K^8wjYlr6sZ)5jCS;V{^%#g#%*b8TNG^w*(EN1O&lVM zCP*7GJmqgI^mTTplKs&tE5W7^v5!b~=H!u%INi)i!}9J+M;+5Q%VtWHRrZm{#x<-} zlrN1iQ1pQ*Yyt&xsik}0gAt#uTTn>}r<={Le26#w-KE1Um1)X0ssnh!5|4c95RAvQ zS^5v%qxMnP#;#eg(4qnHLRd5DT6@y1UQdr!!X5SM{ySf$*Tr?egA|D#w47)fTrlyN zmX_IjtX|zK{4%d{_07 za6St${yE(Ji77JOFl$TnyrM{<|GebdWO0b@O9`C$Xs-FK#rOBd6e_wi%PLew9XJ6? zOkHb6p&(J`pfe4>4C#Cc!cLndaW}nm#TP$u@R-hbz0q zW!yf&ZP}{+&pE83-J^XaH!ryBdnNFUcRm;+FdXz^`UKAKA71<5KOh1df0OYMhdzmu z{QV#9z9@D5_D{(FuHT4O=%}%(9XM4$%KxeYfbTJ9aNLR2hW>L>r;rHpHk=i=m*W9X zyKwx6=b*PYDkOSOB~dX&IDc9o`aTJR1pJeylBLyU+?BLS8rcr!xU;=Va_&w~kjb#w z2Ib#){N88w)6M*c1>Yz-N02rVRHgKroVs-;P;Y#}_9ZTmy+@JhgC z5DAIWF+_5R+cBp6rSPcQq>{ z@r=!SkJGl%S@$q&qc2ta61|c?@l#40f*~2tocSxrq1ADW$)SOz*%6ZgL*$P<%3Ys+WA7*z>DWA6Nt9_NCuDc{bh&Lk4XMSDt9N!uF=R#d*VGP@B8nY?HUF{uT+4ccP8W^4aey?r?QR~jYKhg>` z7aKjv(7lncUnOTqK-JXV=l}ye3YUyZ{=+L}xB-h65!pCa#C8u69G3_0&p>Ej`hnB_ zT4{(*P$%`*f0>*r7;vrHUY<`*-DAfEKHPuD?jr{fBH^iT^{(43;1a|69 z-H*tvQ*4+9rKHDEU!w-aqa>x3dieeR1b)#RAzEYaDf(JASsP_MfZ8u95=RiG(e4;=3OaU8%2+@yE_+)X#Q)z2Yx2|7)LyNXZsqIT50!%{Sr{o#&pui>{*oCWX6{@ z>58bU12X@I_o~6w{-|nuHC;=M^9&dvBxFi?^ayeN>;Vosevz~?{g?VkGJ!I}1Zgg! zJ=LC3>P&6M8R~*JYJW3*?tPb&hh0CKwby#uO7H@WF&n)#N+|Saxeg1ttg6si50*Bi zn&t*PqmRq5N<$s_%SaSni_j8WLbrnPZVj;)-}e8czR^&MS!*p(-WNP(@GWrzVPlXF zS3&ysWdk*jb-&nUOG2rsqb`dLz&z=b}|^5eOc&^`FTlO0iT+-0y{O>4X0 z5wQ63G7@CS;Cd+rBhFI}I1g4)Qf7Z*KKqX%1z1o_#%bS4SnDok#$T zSSa~>X28x|TBWhCb6AF6?0I9pUGkC#>d%Vz9jH%S7OhN1JX_fOQZxA54S0(h**;hK z7jBoY&`3m5KLZZrWEh{AikTdj+`SCH`E=>t%~Rbv}^Sf2Wj~ft~q}b*Ywic*{EUp56^$9)o8W8i#9;ndCO!((KSomToN%>IY(#7gN>Rv zmjVRM8fFgCw9FDJu6x3nrrPZpJ#req=$T9SO`W&iNNnq!u)=+5keouqBU5cOKHSJp zpZPizOnrwvyI}W&l0k*fKk{v8iaV*t1qmEUTq$b`86VJgR2+6M1I3}M$}_R^^^9(d z!Nezv^vEniZ0xF$ha#iA%oj3Wv-o=!jO3e1(qzqtZVQ~C&}*=xup9pfr>SKrh&5<2 zfc~ylw|09U?nEv2p;O>YFa9W4{pbtlwodZy2mRC$7LB>my^|F16=DiiENk|OX@@ELZrL?S zOwMIDlXzZ(|7p)$^<{?z*HeF=*Sjp53xI$Kp3U5WRs)sx`M%3NMiaKRUtY6JNxn2Q zX;@gYpcTJ>#|y;1+S%1&r+F#k4Npc+UCcdC_)+us7pT{dc-!Mb&%ApMr+NKqs#=`f z3$mYlH!Cs{K7!yF5%Qd0NiA#O7OB+sb@=-#btpDgg~Bi} zr{W+WKemS7LVbFw4CA+;SHC^r=Eh_2Y;GZs)!$X;)P!SmOAFTo@G%GH!YtbZsk+xl zIXn!magkYY)_-{F@nQA0cc3MQeJh`C2oYdC_{r%^8NY4v2VvRKX~5~D{K**O3Q_PG z@R8anN-D+Y&zG1y4I|o<6H>hvQK&+Wtc+kW1$G~2f)UXD=0pRZDuR35?)WFu%lsgX zA-4OMhcxt^y2wOWnNS-?^A}@jOXGoP#>_vvDANLuH^TszUIvi7KhhdYH+jj8}xE`6jlxIiIUHwkcEK`8nrV9+nK z+vkrnTl~Sbo<|UT!|o0Hr{7aw1L$VC$fGmg)}#7LMhTN>(12(@!3Bb-;rGUBZt8$RVGrJ! ziSPWA%_BrOVWqQ0eoaKjF2=Y#<8eK`74DETD|6EsZz@InL{tY=JAz9OCpwd1RPZ%g z#dIEDGTRj98wfpa@j$nF_=6nS4W6q!S<((f z;!*=73K!**bhW#i0!u$v5-F|jd+uJQMi?>jq!kwJ3YC5RvYe@|vDvtrJSP{^7ceI3 zI;JzYy8q1d7iOLbwuTE1diBR7%{8%3R3vhKSq``3juaD{#wI5lXW&sB7Xl+iKVt~R zaYm#HA@xaT+5xMTwN_|1wL8yMy!6MouX5I(fD~L@R4`yDt{>M$V)L?#>Us+P&9gMx z_?r=96PV0yO>EX?D0W%+wDg=aE0DZA;0f_cDNd~(y?V&HzrZt|FH6|yvyP7&*_Zm3 zno*c_)vu3jrt?d!(tJ;s8pyB5&e(L0@aQ-SD7U6UqF}emuN!g3q#Aw)%zt>RFKV9# zbQ~GqjYd{3H*R5cuU$EoFpC2EBt=;#cV7LN-`x4Tvc;C#BN?*aCuc5 zsr`p1mc{;uD}v=aDN{?$E@r;vr_w8CHi-|rg{`l{pUx>4tcO{O|zGjQr@ zbhgC@^+hk)Z8*_AD+snZmkhJ7e##dE&V_n`@2%bZk4&9Q zX6#8u1#Sy=f{u}=I?jVTLpyNV3{pEcS+ zz{~s1uQ+=FTD?f>|Fge2{b^gfOV8BqxS&Pfzo`z!_2*VM8KQ2$=RPiNMCtck)u;dA zRcK64W5xc%b2N=P;e)RN4LX>8+8k_RutfF>dzRk)z+#M_p=hh6R9%_-zi zfnoiPKvVekBei$tPWb05QG-66+N1U()is}g2#I@^7t8DL`6<5OONtt9xZ%GG=J3Q0 zeR$bpN#b>nh0A<;)cGLQEjLD|%~%;1f#xbtIu{VLqY^#T^10U2n%Jf%+$e>{!th5g&^9ZUvy*;`q)BXzWR&AOuQZ|q!@BA3-Rv!>ms1taBGX; zw~631?h#EZP>}oM6!rXTvVL*PI<7)K{EUAiY*nf6B8KuD*$C!J`d9m(x~J{0CE2jV z=uj%^Ar;0H&;Kfx@#(Wz$IiVi0{DWzPl-gRbDt*?NHI8zf!0-N9a z@%f@$3eyTHiKZQVs|T4OX$miI-l8mtyO zuir2$FebHWuq<|*Y*g!m&Ew$@$K%JPg5E#mDcK0v7)$BtGaR!cto1q>JbN4jzkfSV zF#2In$@i29V68m!0q2?Si*t`?!0v{^Ofx2u=R7Lo;==NsU9;>Y zvUt%9emXpIA6NaRi>1PEm);Xi6-0Mw;H0QcfOw8)qm(OtI_(a>upi(G!Q>x&XwY>W z?Beeu8*WR@Y-R*RlvPCI2<$v%-?X1L>FV${XzULA|Ms%Pn z*P8g=ri~M~wwByVlEZW!xFVHWsUw*LdIOur+-Ht&ngvgu0NjQwrBKbYEg+DaR6eKV zQ}+=ve8{g8LCWUiwNzIR8Argl@ui>ZOIb4~iBhf>9zU~9QpsBV?WzQ45pf|E-GU~( z6?{V%AIlA2{_@pEa&?(A;3}BrQJj||z7&^~T5Ot@vfjERedhPYTL})C)hqNm16aTi zQlFp@pXqxF|L{-R_PoB{a80TT{xjxI9@SJXxpckw0k^fSEc253Z00~{6!DvKiNR*D0YCBTMB`QM% zjocLHvz5}iO!QD1=d;W}!{rDPZUbyU%;Bd{4u$ogK**E)&TTBL+t!WkwItSB#p(he|16{W_ zVB=!f=;i7rEaXVvyGcOTDWavSq(W}BJ*JE4K9R4fiEg&V0al@m!u)%|+}H8Zh@#~S zB0C}+lb`7ljlO#|zL&fNCC5!H7D4YW*_^v~iw6#*Pl6GqgDcCIuaRAMdK-oYR0Xb4 zQvxiGaSrn&V(u(g6WME{z3-k1CD}3Ls9#76q;B0>PZ)RUt$>a$px2Ao$XlxDRp8gC z1$=UOjlaNggr5p-PjT4sj&!72+0lAK`}cz;3+=wk|L}^`+*;$&7v0M>hkutTS9@Y7 z(%VjG`j8m2Tr)f=%g5$E&bP*mBwq%)^MmGm5`vyx`pwAyHtf=8z{5iWGhMG=k-43` zzO^od`wdqzGA>3YZUCrlXi6U}6cmy-9rtP`5 zX=4>etJ<^s+DBMe+APS z@OMpAi;`?v3P70m&*|hh4Z?K}{?#Q`)7uub+79RMMg9JFuh@Xhl%~$<% zDik(dEX{J8V4Wg?D`pO1~J#DP0cY^91AA8vt@;{qqMsdlcfNk$-!o)WtlmH%4Qr+D`Ht61$Q++ z5vR8gQBYS(;5Sl;SRh_0*4Y-JVO*>-{L}RWE!HYUjFGA->*%Aw({o(x$*eq%G}|!N zFNfspuC%cR`36m;J+!j`$#1(}fzeroB(i+SxKzMR^o{xso%1<=dS$S;S#%al%NMjp z0{R0X+Ke)-l;!mHi+rNVcl_SDzC@I~$oy%=+NP2A2vHC$?${^-$v}7Mpj;!_w?X!^ zyXv-hv)AJGO%ttEtTwBz`u-!pR%pUqrhD8Yoy0EL8#G`%e{+wn*xREOE9+rG`8K0w zo-!&+42RD#9|qbtJ3!b-#av~3_6Gjh9ZnF}LM(bY_MFi1*y8Z2-O#IP;k(q)mJczO z37pdOav&|)L0w%Fghwt@#cgn0 z;BI1<;0ZfqqlQu&}5zjEby5 z0J}5(34X66Orju+A)6yneJarzVUi(cZX@ohZq!(N-*RM{77+o^%MV-qKAkYXpyOgY zF3(NQqXDF@&S01ry9^l;!UqE&X_}4I{QZ5s!q+-S7?e@$s0OBKC|+=Ud~9m{;!*Fj zrs7sw*wCsI%0+BqYK~(;i1}o$xV1Cxcf3vlIX(fx;cMn8_l_h(Hhs=b8%%Corb%}j z8Z@t$5b3#9h^fkc|3LUbe%uByxgtgF%i{EqxkSmH z8*FNU@)#}w;)RMuBoR{xOdipH$#>z1nagkCJAULP{RFAwMrF7pKjA4{;*RmAig93D zYAQwyi!*smC{`HYcbo%$GuUC*Gan#yo3ImQk@i`cJ$~YJ!&&b2r{%v8^t5eSxkRWC zab773lTK!__q;qNt?}XO4R!3yIEEoO;6l{H?5$?P@awErtAza-ylcJ9prI{~_9u=> ztdKfrE8^eOKVHOhy3MRSH;%*e{IV8yqHC?M1hcbDzH8}Xvjul!Y;iosnQhUf#V6u5 zaht8EB@;SFd=7rbI6%&WF`eZa`T2n+{xpXLm9O3eqnkIE z^bb>SraHts8}_DSPZOL$19t1C4CP__?P z!j4o|eZa1V8J7;eJ_hf`AgOZSR1l*1mapbvyWcmK+xJ#{yy6;yx01f1YH=;RxJ zV>co-&`8UNj&;>)I10>VZB#e^>G~FKQ$HdJ} z+Y7b0ND;`uP^mpA!tF8qJr=a~V;K4Vg z|ElnQuCM`K7i^NEZrlFSiBcQWv%hA*(ZaG3V z-&>AT*9u|es=lx19>;!WpO&;)hhC*BY1)C%XL?*r(s6Z>nFccf{$NF#%fjGYg0!Xo zffoe(O{e#x1pR}@sP4RvrTZFZ>!va$S7*R6%z{t`8Rqo}nUo)Nz}cyuYS(LB|56fN z`jn%>zZFKzX^sbY^Qz5c3{GX0Zyum=meP$Md<@o2j358@J$ZOD_1w#mwtwHaW$ooW zx8KxodDka7bR3Ao0791BQS?eT%jEY(aZH&QQ#fGZ4P&G6TB+iOFtXg*aQ2agtKk>? zIH;PGa8H(f3fa#b&D*ZS#NOH>VN#XVBxCmdCIP~MX0?{#SU{rs!4Lp5$F zy#_CzvU{HqD0SyKxSxuulO>F^U87g%fn*CSj-s0WhO{umAA>knKLtLLDY{A3VXr-T zL{NZN?8v0Z;3TfWLUo%PLtIbxJJ#DO2#{U>xjSckw!B())8+>UY<)Fig0QqVpL&Cz z-{}5a61F&EH{edaEA~KI_`Jf)!aIaz*t^=Wl$*>_)#ho3DO9hI*YOdm|0HRAA_fd8 z92#2m(__$6Q5$p3T5A&HdSjb=qHdu-qW%-3FwHyC!OS-PT$Xf;bW0#qVxp44egDIh z4GkkSA`d=>SocW!&{~pTVl3|=4mU>GX$fpCOBqj_K^V)pg*@{|ZfFODc!?K_#pIps zUs8YC$9=c^N?z_iclUM6!aH#B-|2FOs47d6mmX4E`?4CbljuHbD91di@GC%JpTC zZxOyHV8YywlkPM=HqX_BlkQ(4SE6T+&tEXAYXO%LpRb#I?eGpx7@B!DQupciqfr#% z*-`#i#)iHMBRSoMrmL${xO%i|q|M^!gNg?tuxC_ArA&vR(rkw#BRSbg=c?ezP&Z%xig0ud8f+LDs`1TWN!(J^`7E!L@=KNwxQ_8B00fi=tG5 z2djyk331u^dZEdXS{o@9-Py6Bbm?+ODmn52m*B1z(X;22JFD+AhUpC7q;AD?$+KcX z2iddj=a8wOS3B7L*Uj`UGGammfT8C3#q5!o)nnZ+l1dY9Mnef;zl~Y~}Dv8

4;F46W!)|ECT0=WPwZtbO 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