diff --git a/codecs/avif/Makefile b/codecs/avif/Makefile index 18082c72..ff0364d5 100644 --- a/codecs/avif/Makefile +++ b/codecs/avif/Makefile @@ -1,139 +1,84 @@ -CODEC_URL = https://github.com/AOMediaCodec/libavif/archive/v0.8.1.tar.gz +CODEC_URL = https://github.com/AOMediaCodec/libavif/archive/31d7c6d1e32cf467ac24fb8c7a76c4902a4c00db.tar.gz CODEC_PACKAGE = node_modules/libavif.tar.gz -CODEC_ENC_DIR = node_modules/libavif-enc -CODEC_ENC_BUILD_DIR := $(CODEC_ENC_DIR)/build -CODEC_ENC_OUT := $(CODEC_ENC_BUILD_DIR)/libavif.a - -CODEC_DEC_DIR = node_modules/libavif-dec -CODEC_DEC_BUILD_DIR := $(CODEC_DEC_DIR)/build -CODEC_DEC_OUT := $(CODEC_DEC_BUILD_DIR)/libavif.a - LIBAOM_URL = https://aomedia.googlesource.com/aom/+archive/v2.0.0.tar.gz LIBAOM_PACKAGE = node_modules/libaom.tar.gz -LIBAOM_ENC_DIR := $(CODEC_ENC_DIR)/ext/aom -LIBAOM_ENC_BUILD_DIR := $(LIBAOM_ENC_DIR)/build.libavif -LIBAOM_ENC_OUT := $(LIBAOM_ENC_BUILD_DIR)/libaom.a - -LIBAOM_DEC_DIR := $(CODEC_DEC_DIR)/ext/aom -LIBAOM_DEC_BUILD_DIR := $(LIBAOM_DEC_DIR)/build.libavif -LIBAOM_DEC_OUT := $(LIBAOM_DEC_BUILD_DIR)/libaom.a +export CODEC_DIR = node_modules/libavif +BUILD_DIR := node_modules/build +ENC_BUILD_DIR := $(BUILD_DIR)/enc +ENC_MT_BUILD_DIR := $(BUILD_DIR)/enc-mt +DEC_BUILD_DIR := $(BUILD_DIR)/dec +export LIBAOM_DIR = node_modules/libaom OUT_ENC_JS = enc/avif_enc.js -OUT_ENC_CPP = $(OUT_ENC_JS:.js=.cpp) -OUT_ENC_WASM = $(OUT_ENC_JS:.js=.wasm) - +OUT_ENC_MT_JS = enc/avif_enc_mt.js OUT_DEC_JS = dec/avif_dec.js -OUT_DEC_CPP = $(OUT_DEC_JS:.js=.cpp) -OUT_DEC_WASM = $(OUT_DEC_JS:.js=.wasm) -# ERROR_ON_UNDEFINED_SYMBOLS=0 is needed to seperate the encoder and decoder -EMSCRIPTEN_FLAGS = ${CXXFLAGS} \ - ${LDFLAGS} \ - --bind \ - --closure 1 \ - -s ALLOW_MEMORY_GROWTH=1 \ - -s MODULARIZE=1 \ - -s TEXTDECODER=2 \ - -s ENVIRONMENT='worker' \ - -s EXPORT_ES6=1 \ - -s ERROR_ON_UNDEFINED_SYMBOLS=0 +OUT_ENC_CPP = enc/avif_enc.cpp +OUT_DEC_CPP = dec/avif_dec.cpp -CODEC_EMCMAKE = emcmake cmake \ - -DCMAKE_BUILD_TYPE=Release \ - -DBUILD_SHARED_LIBS=0 \ - -DAVIF_CODEC_AOM=1 \ - -DAVIF_LOCAL_AOM=1 \ - ../ - -LIBAOM_FLAGS = -DCMAKE_BUILD_TYPE=Release \ - -DENABLE_CCACHE=0 \ - -DAOM_TARGET_CPU=generic \ - -DENABLE_DOCS=0 \ - -DENABLE_TESTS=0 \ - -DENABLE_EXAMPLES=0 \ - -DENABLE_TOOLS=0 \ - -DCONFIG_ACCOUNTING=1 \ - -DCONFIG_INSPECTION=0 \ - -DCONFIG_MULTITHREAD=0 \ - -DCONFIG_RUNTIME_CPU_DETECT=0 \ - -DCONFIG_WEBM_IO=0 +HELPER_MAKEFLAGS := -f helper.Makefile .PHONY: all clean -all: $(OUT_ENC_JS) $(OUT_DEC_JS) +all: $(OUT_ENC_JS) $(OUT_DEC_JS) $(OUT_ENC_MT_JS) -$(OUT_ENC_JS): $(OUT_ENC_CPP) $(LIBAOM_ENC_OUT) $(CODEC_ENC_OUT) - $(CXX) \ - -I $(CODEC_ENC_DIR)/include \ - ${EMSCRIPTEN_FLAGS} \ - -o $@ \ - $+ +$(OUT_ENC_JS): $(OUT_ENC_CPP) $(CODEC_DIR)/CMakeLists.txt $(LIBAOM_DIR)/CMakeLists.txt + $(MAKE) \ + $(HELPER_MAKEFLAGS) \ + BUILD_DIR=$(ENC_BUILD_DIR) \ + OUT_JS=$@ \ + OUT_CPP=$< \ + LIBAOM_FLAGS="\ + -DCONFIG_AV1_DECODER=0 \ + -DCONFIG_MULTITHREAD=0 \ + -DCONFIG_AV1_HIGHBITDEPTH=0 \ + " \ + LIBAVIF_FLAGS="-DAVIF_CODEC_AOM_DECODE=0" -$(OUT_DEC_JS): $(OUT_DEC_CPP) $(LIBAOM_DEC_OUT) $(CODEC_DEC_OUT) - $(CXX) \ - -I $(CODEC_DEC_DIR)/include \ - ${EMSCRIPTEN_FLAGS} \ - -o $@ \ - $+ +$(OUT_ENC_MT_JS): $(OUT_ENC_CPP) $(CODEC_DIR)/CMakeLists.txt $(LIBAOM_DIR)/CMakeLists.txt + $(MAKE) \ + $(HELPER_MAKEFLAGS) \ + BUILD_DIR=$(ENC_MT_BUILD_DIR) \ + OUT_JS=$@ \ + OUT_CPP=$< \ + LIBAOM_FLAGS="\ + -DCONFIG_AV1_DECODER=0 \ + -DCONFIG_AV1_HIGHBITDEPTH=0 \ + " \ + LIBAVIF_FLAGS="-DAVIF_CODEC_AOM_DECODE=0" \ + OUT_FLAGS="-pthread" -$(CODEC_ENC_OUT): $(CODEC_ENC_DIR)/CMakeLists.txt $(LIBAOM_ENC_OUT) - mkdir -p $(CODEC_ENC_BUILD_DIR) - cd $(CODEC_ENC_BUILD_DIR) && \ - $(CODEC_EMCMAKE) && \ - $(MAKE) - -$(CODEC_DEC_OUT): $(CODEC_DEC_DIR)/CMakeLists.txt $(LIBAOM_DEC_OUT) - mkdir -p $(CODEC_DEC_BUILD_DIR) - cd $(CODEC_DEC_BUILD_DIR) && \ - $(CODEC_EMCMAKE) && \ - $(MAKE) - -$(LIBAOM_ENC_OUT): $(LIBAOM_ENC_DIR)/CMakeLists.txt - mkdir -p $(LIBAOM_ENC_BUILD_DIR) - cd $(LIBAOM_ENC_BUILD_DIR) && \ - emcmake cmake \ - $(LIBAOM_FLAGS) \ - -DCONFIG_AV1_DECODER=0 \ - -DCONFIG_AV1_HIGHBITDEPTH=0 \ - ../ && \ - $(MAKE) - -$(LIBAOM_DEC_OUT): $(LIBAOM_DEC_DIR)/CMakeLists.txt - mkdir -p $(LIBAOM_DEC_BUILD_DIR) - cd $(LIBAOM_DEC_BUILD_DIR) && \ - emcmake cmake \ - $(LIBAOM_FLAGS) \ - -DCONFIG_AV1_ENCODER=0 \ - ../ && \ - $(MAKE) - -$(CODEC_ENC_DIR)/CMakeLists.txt: $(CODEC_ENC_DIR) -$(CODEC_DEC_DIR)/CMakeLists.txt: $(CODEC_DEC_DIR) - -$(LIBAOM_ENC_DIR)/CMakeLists.txt: $(LIBAOM_ENC_DIR) -$(LIBAOM_DEC_DIR)/CMakeLists.txt: $(LIBAOM_DEC_DIR) +$(OUT_DEC_JS): $(OUT_DEC_CPP) $(CODEC_DIR)/CMakeLists.txt $(LIBAOM_DIR)/CMakeLists.txt + $(MAKE) \ + $(HELPER_MAKEFLAGS) \ + BUILD_DIR=$(DEC_BUILD_DIR) \ + OUT_JS=$@ \ + OUT_CPP=$< \ + LIBAOM_FLAGS="\ + -DCONFIG_AV1_ENCODER=0 \ + -DCONFIG_MULTITHREAD=0 \ + " \ + LIBAVIF_FLAGS="-DAVIF_CODEC_AOM_ENCODE=0" $(CODEC_PACKAGE): - mkdir -p $(dir $@) + mkdir -p $(@D) curl -sL $(CODEC_URL) -o $@ $(LIBAOM_PACKAGE): - mkdir -p $(dir $@) + mkdir -p $(@D) curl -sL $(LIBAOM_URL) -o $@ -$(CODEC_ENC_DIR) $(CODEC_DEC_DIR): $(CODEC_PACKAGE) - mkdir -p $@ - tar xz --strip 1 -C $@ -f $(CODEC_PACKAGE) +$(CODEC_DIR)/CMakeLists.txt: $(CODEC_PACKAGE) + mkdir -p $(@D) + tar xzm --strip 1 -C $(@D) -f $(CODEC_PACKAGE) -$(LIBAOM_ENC_DIR) $(LIBAOM_DEC_DIR): $(LIBAOM_PACKAGE) - mkdir -p $@ - tar xz -C $@ -f $(LIBAOM_PACKAGE) +$(LIBAOM_DIR)/CMakeLists.txt: $(LIBAOM_PACKAGE) + mkdir -p $(@D) + tar xzm -C $(@D) -f $(LIBAOM_PACKAGE) clean: - $(RM) $(LIBAOM_PACKAGE) $(CODEC_PACKAGE) $(OUT_ENC_JS) $(OUT_ENC_WASM) $(OUT_DEC_JS) $(OUT_DEC_WASM) - $(MAKE) -C $(CODEC_ENC_BUILD_DIR) clean - $(MAKE) -C $(CODEC_DEC_BUILD_DIR) clean - $(MAKE) -C $(LIBAOM_ENC_BUILD_DIR) clean - $(MAKE) -C $(LIBAOM_DEC_BUILD_DIR) clean + $(MAKE) $(HELPER_MAKEFLAGS) BUILD_DIR=$(ENC_BUILD_DIR) OUT_JS=$(OUT_ENC_JS) clean + $(MAKE) $(HELPER_MAKEFLAGS) BUILD_DIR=$(ENC_MT_BUILD_DIR) OUT_JS=$(OUT_ENC_MT_JS) clean + $(MAKE) $(HELPER_MAKEFLAGS) BUILD_DIR=$(DEC_BUILD_DIR) OUT_JS=$(OUT_DEC_JS) clean diff --git a/codecs/avif/dec/avif_dec.cpp b/codecs/avif/dec/avif_dec.cpp index 27757b2a..2022542c 100644 --- a/codecs/avif/dec/avif_dec.cpp +++ b/codecs/avif/dec/avif_dec.cpp @@ -8,15 +8,10 @@ thread_local const val Uint8ClampedArray = val::global("Uint8ClampedArray"); thread_local const val ImageData = val::global("ImageData"); val decode(std::string avifimage) { - // point raw.data and raw.size to the contents of an .avif(s) - avifROData raw = { - .data = (uint8_t*)avifimage.c_str(), - .size = avifimage.length() - }; - avifImage* image = avifImageCreateEmpty(); avifDecoder* decoder = avifDecoderCreate(); - avifResult decodeResult = avifDecoderRead(decoder, image, &raw); + avifResult decodeResult = + avifDecoderReadMemory(decoder, image, (uint8_t*)avifimage.c_str(), avifimage.length()); // image is an independent copy of decoded data, decoder may be destroyed here avifDecoderDestroy(decoder); @@ -25,7 +20,8 @@ val decode(std::string avifimage) { if (decodeResult == AVIF_RESULT_OK) { // Convert to interleaved RGB(A)/BGR(A) using a libavif-allocated buffer. avifRGBImage rgb; - avifRGBImageSetDefaults(&rgb, image); // Defaults to AVIF_RGB_FORMAT_RGBA which is what we want. + avifRGBImageSetDefaults(&rgb, + image); // Defaults to AVIF_RGB_FORMAT_RGBA which is what we want. rgb.depth = 8; // Does not need to match image->depth. We always want 8-bit pixels. avifRGBImageAllocatePixels(&rgb); @@ -33,7 +29,9 @@ val decode(std::string avifimage) { // We want to create a *copy* of the decoded data to be owned by the JavaScript side. // For that, we perform `new Uint8Array(wasmMemBuffer, wasmPtr, wasmSize).slice()`: - result = ImageData.new_(Uint8ClampedArray.new_(typed_memory_view(rgb.rowBytes * rgb.height, rgb.pixels)), rgb.width, rgb.height); + result = ImageData.new_( + Uint8ClampedArray.new_(typed_memory_view(rgb.rowBytes * rgb.height, rgb.pixels)), rgb.width, + rgb.height); // Now we can safely free the RGB pixels: avifRGBImageFreePixels(&rgb); diff --git a/codecs/avif/enc/avif_enc.cpp b/codecs/avif/enc/avif_enc.cpp index e13e4b2d..56a2b517 100644 --- a/codecs/avif/enc/avif_enc.cpp +++ b/codecs/avif/enc/avif_enc.cpp @@ -1,4 +1,5 @@ #include +#include #include #include "avif/avif.h" @@ -50,13 +51,10 @@ val encode(std::string buffer, int width, int height, AvifOptions options) { avifImage* image = avifImageCreate(width, height, depth, format); - if ( - options.maxQuantizer == AVIF_QUANTIZER_LOSSLESS && - options.minQuantizer == AVIF_QUANTIZER_LOSSLESS && - options.minQuantizerAlpha == AVIF_QUANTIZER_LOSSLESS && - options.maxQuantizerAlpha == AVIF_QUANTIZER_LOSSLESS && - format == AVIF_PIXEL_FORMAT_YUV444 - ) { + if (options.maxQuantizer == AVIF_QUANTIZER_LOSSLESS && + options.minQuantizer == AVIF_QUANTIZER_LOSSLESS && + options.minQuantizerAlpha == AVIF_QUANTIZER_LOSSLESS && + options.maxQuantizerAlpha == AVIF_QUANTIZER_LOSSLESS && format == AVIF_PIXEL_FORMAT_YUV444) { image->matrixCoefficients = AVIF_MATRIX_COEFFICIENTS_IDENTITY; } else { image->matrixCoefficients = AVIF_MATRIX_COEFFICIENTS_BT709; @@ -71,7 +69,7 @@ val encode(std::string buffer, int width, int height, AvifOptions options) { avifImageRGBToYUV(image, &srcRGB); avifEncoder* encoder = avifEncoderCreate(); - encoder->maxThreads = 1; + encoder->maxThreads = emscripten_num_logical_cores(); encoder->minQuantizer = options.minQuantizer; encoder->maxQuantizer = options.maxQuantizer; encoder->minQuantizerAlpha = options.minQuantizerAlpha; diff --git a/codecs/avif/enc/avif_enc_mt.d.ts b/codecs/avif/enc/avif_enc_mt.d.ts new file mode 100644 index 00000000..8aa887fe --- /dev/null +++ b/codecs/avif/enc/avif_enc_mt.d.ts @@ -0,0 +1,2 @@ +export * from './avif_enc'; +export { default } from './avif_enc'; diff --git a/codecs/avif/enc/avif_enc_mt.js b/codecs/avif/enc/avif_enc_mt.js new file mode 100644 index 00000000..88a6143a --- /dev/null +++ b/codecs/avif/enc/avif_enc_mt.js @@ -0,0 +1,3268 @@ +var avif_enc_mt = (function () { + var _scriptDir = import.meta.url; + + return function (avif_enc_mt) { + avif_enc_mt = avif_enc_mt || {}; + + function f() { + m.buffer != n && p(m.buffer); + return aa; + } + function t() { + m.buffer != n && p(m.buffer); + return ba; + } + function ca() { + m.buffer != n && p(m.buffer); + return da; + } + function ea() { + m.buffer != n && p(m.buffer); + return fa; + } + function w() { + m.buffer != n && p(m.buffer); + return ha; + } + function x() { + m.buffer != n && p(m.buffer); + return ia; + } + function ja() { + m.buffer != n && p(m.buffer); + return ka; + } + function la() { + m.buffer != n && p(m.buffer); + return ma; + } + var z; + z || (z = typeof avif_enc_mt !== 'undefined' ? avif_enc_mt : {}); + var na, oa; + z.ready = new Promise(function (a, b) { + na = a; + oa = b; + }); + var pa = {}, + A; + for (A in z) z.hasOwnProperty(A) && (pa[A] = z[A]); + var D = z.ENVIRONMENT_IS_PTHREAD || !1; + D && (n = z.buffer); + var F = ''; + function qa(a) { + return z.locateFile ? z.locateFile(a, F) : F + a; + } + var ra; + F = self.location.href; + _scriptDir && (F = _scriptDir); + 0 !== F.indexOf('blob:') + ? (F = F.substr(0, F.lastIndexOf('/') + 1)) + : (F = ''); + ra = function (a) { + var b = new XMLHttpRequest(); + b.open('GET', a, !1); + b.responseType = 'arraybuffer'; + b.send(null); + return new Uint8Array(b.response); + }; + var sa = z.print || console.log.bind(console), + G = z.printErr || console.warn.bind(console); + for (A in pa) pa.hasOwnProperty(A) && (z[A] = pa[A]); + pa = null; + var ta = 0, + ua; + z.wasmBinary && (ua = z.wasmBinary); + var noExitRuntime; + z.noExitRuntime && (noExitRuntime = z.noExitRuntime); + 'object' !== typeof WebAssembly && H('no native wasm support detected'); + var m, + wa, + threadInfoStruct = 0, + selfThreadId = 0, + xa = !1; + function ya(a, b) { + a || H('Assertion failed: ' + b); + } + function za(a, b, c) { + c = b + c; + for (var d = ''; !(b >= c); ) { + var e = a[b++]; + if (!e) break; + if (e & 128) { + var g = a[b++] & 63; + if (192 == (e & 224)) d += String.fromCharCode(((e & 31) << 6) | g); + else { + var h = a[b++] & 63; + e = + 224 == (e & 240) + ? ((e & 15) << 12) | (g << 6) | h + : ((e & 7) << 18) | (g << 12) | (h << 6) | (a[b++] & 63); + 65536 > e + ? (d += String.fromCharCode(e)) + : ((e -= 65536), + (d += String.fromCharCode( + 55296 | (e >> 10), + 56320 | (e & 1023), + ))); + } + } else d += String.fromCharCode(e); + } + return d; + } + function I(a, b) { + return a ? za(t(), a, b) : ''; + } + function Aa(a, b, c, d) { + if (!(0 < d)) return 0; + var e = c; + d = c + d - 1; + for (var g = 0; g < a.length; ++g) { + var h = a.charCodeAt(g); + if (55296 <= h && 57343 >= h) { + var k = a.charCodeAt(++g); + h = (65536 + ((h & 1023) << 10)) | (k & 1023); + } + if (127 >= h) { + if (c >= d) break; + b[c++] = h; + } else { + if (2047 >= h) { + if (c + 1 >= d) break; + b[c++] = 192 | (h >> 6); + } else { + if (65535 >= h) { + if (c + 2 >= d) break; + b[c++] = 224 | (h >> 12); + } else { + if (c + 3 >= d) break; + b[c++] = 240 | (h >> 18); + b[c++] = 128 | ((h >> 12) & 63); + } + b[c++] = 128 | ((h >> 6) & 63); + } + b[c++] = 128 | (h & 63); + } + } + b[c] = 0; + return c - e; + } + function Ba(a, b, c) { + Aa(a, t(), b, c); + } + function Ca(a) { + for (var b = 0, c = 0; c < a.length; ++c) { + var d = a.charCodeAt(c); + 55296 <= d && + 57343 >= d && + (d = (65536 + ((d & 1023) << 10)) | (a.charCodeAt(++c) & 1023)); + 127 >= d ? ++b : (b = 2047 >= d ? b + 2 : 65535 >= d ? b + 3 : b + 4); + } + return b; + } + function Da(a, b) { + for (var c = 0, d = ''; ; ) { + var e = ca()[(a + 2 * c) >> 1]; + if (0 == e || c == b / 2) return d; + ++c; + d += String.fromCharCode(e); + } + } + function Ea(a, b, c) { + void 0 === c && (c = 2147483647); + if (2 > c) return 0; + c -= 2; + var d = b; + c = c < 2 * a.length ? c / 2 : a.length; + for (var e = 0; e < c; ++e) { + var g = a.charCodeAt(e); + ca()[b >> 1] = g; + b += 2; + } + ca()[b >> 1] = 0; + return b - d; + } + function Fa(a) { + return 2 * a.length; + } + function Ga(a, b) { + for (var c = 0, d = ''; !(c >= b / 4); ) { + var e = w()[(a + 4 * c) >> 2]; + if (0 == e) break; + ++c; + 65536 <= e + ? ((e -= 65536), + (d += String.fromCharCode(55296 | (e >> 10), 56320 | (e & 1023)))) + : (d += String.fromCharCode(e)); + } + return d; + } + function Ha(a, b, c) { + void 0 === c && (c = 2147483647); + if (4 > c) return 0; + var d = b; + c = d + c - 4; + for (var e = 0; e < a.length; ++e) { + var g = a.charCodeAt(e); + if (55296 <= g && 57343 >= g) { + var h = a.charCodeAt(++e); + g = (65536 + ((g & 1023) << 10)) | (h & 1023); + } + w()[b >> 2] = g; + b += 4; + if (b + 4 > c) break; + } + w()[b >> 2] = 0; + return b - d; + } + function Ia(a) { + for (var b = 0, c = 0; c < a.length; ++c) { + var d = a.charCodeAt(c); + 55296 <= d && 57343 >= d && ++c; + b += 4; + } + return b; + } + var n, aa, ba, da, fa, ha, ia, ka, ma; + function p(a) { + n = a; + z.HEAP8 = aa = new Int8Array(a); + z.HEAP16 = da = new Int16Array(a); + z.HEAP32 = ha = new Int32Array(a); + z.HEAPU8 = ba = new Uint8Array(a); + z.HEAPU16 = fa = new Uint16Array(a); + z.HEAPU32 = ia = new Uint32Array(a); + z.HEAPF32 = ka = new Float32Array(a); + z.HEAPF64 = ma = new Float64Array(a); + } + var Ja = z.INITIAL_MEMORY || 16777216; + if (D) (m = z.wasmMemory), (n = z.buffer); + else if (z.wasmMemory) m = z.wasmMemory; + else if ( + ((m = new WebAssembly.Memory({ + initial: Ja / 65536, + maximum: 32768, + shared: !0, + })), + !(m.buffer instanceof SharedArrayBuffer)) + ) + throw ( + (G( + 'requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag', + ), + Error('bad memory')) + ); + m && (n = m.buffer); + Ja = n.byteLength; + p(n); + var J, + Ka = [], + La = [], + Ma = [], + Na = []; + function Oa() { + var a = z.preRun.shift(); + Ka.unshift(a); + } + var K = 0, + Pa = null, + Qa = null; + z.preloadedImages = {}; + z.preloadedAudios = {}; + function H(a) { + if (z.onAbort) z.onAbort(a); + D && console.error('Pthread aborting at ' + Error().stack); + G(a); + xa = !0; + a = new WebAssembly.RuntimeError( + 'abort(' + a + '). Build with -s ASSERTIONS=1 for more info.', + ); + oa(a); + throw a; + } + function Ra() { + var a = Sa; + return String.prototype.startsWith + ? a.startsWith('data:application/octet-stream;base64,') + : 0 === a.indexOf('data:application/octet-stream;base64,'); + } + var Sa = 'avif_enc_mt.wasm'; + Ra() || (Sa = qa(Sa)); + function Ta() { + try { + if (ua) return new Uint8Array(ua); + if (ra) return ra(Sa); + throw 'both async and sync fetching of the wasm failed'; + } catch (a) { + H(a); + } + } + function Ua() { + return ua || 'function' !== typeof fetch + ? Promise.resolve().then(Ta) + : fetch(Sa, { credentials: 'same-origin' }) + .then(function (a) { + if (!a.ok) + throw "failed to load wasm binary file at '" + Sa + "'"; + return a.arrayBuffer(); + }) + .catch(function () { + return Ta(); + }); + } + var Va, + Wa, + Ya = { + 575941: function (a, b) { + setTimeout(function () { + Xa(a, b); + }, 0); + }, + 576019: function () { + throw 'Canceled!'; + }, + }; + function Za(a) { + for (; 0 < a.length; ) { + var b = a.shift(); + if ('function' == typeof b) b(z); + else { + var c = b.pc; + 'number' === typeof c + ? void 0 === b.sb + ? J.get(c)() + : J.get(c)(b.sb) + : c(void 0 === b.sb ? null : b.sb); + } + } + } + function $a(a, b, c) { + var d; + -1 != a.indexOf('j') + ? (d = + c && c.length + ? z['dynCall_' + a].apply(null, [b].concat(c)) + : z['dynCall_' + a].call(null, b)) + : (d = J.get(b).apply(null, c)); + return d; + } + z.dynCall = $a; + var ab = 0, + bb = 0, + cb = 0; + function db(a, b, c) { + ab = a | 0; + cb = b | 0; + bb = c | 0; + } + z.registerPthreadPtr = db; + function eb(a, b) { + if (0 >= a || a > f().length || a & 1 || 0 > b) return -28; + if (0 == b) return 0; + 2147483647 <= b && (b = Infinity); + var c = Atomics.load(w(), L.Yb >> 2), + d = 0; + if ( + c == a && + Atomics.compareExchange(w(), L.Yb >> 2, c, 0) == c && + (--b, (d = 1), 0 >= b) + ) + return 1; + a = Atomics.notify(w(), a >> 2, b); + if (0 <= a) return a + d; + throw 'Atomics.notify returned an unexpected value ' + a; + } + z._emscripten_futex_wake = eb; + function fb(a) { + if (D) + throw 'Internal Error! cleanupThread() can only ever be called from main application thread!'; + if (!a) throw 'Internal Error! Null pthread_ptr in cleanupThread!'; + w()[(a + 12) >> 2] = 0; + (a = L.fb[a]) && L.Cb(a.worker); + } + var L = { + Sc: 1, + hd: { hc: 0, ic: 0 }, + bb: [], + lb: [], + wc: function () { + for (var a = navigator.hardwareConcurrency, b = 0; b < a; ++b) L.Nb(); + }, + xc: function () { + L.$a = M(232); + for (var a = 0; 58 > a; ++a) x()[L.$a / 4 + a] = 0; + w()[(L.$a + 12) >> 2] = L.$a; + a = L.$a + 156; + w()[a >> 2] = a; + var b = M(512); + for (a = 0; 128 > a; ++a) x()[b / 4 + a] = 0; + Atomics.store(x(), (L.$a + 104) >> 2, b); + Atomics.store(x(), (L.$a + 40) >> 2, L.$a); + Atomics.store(x(), (L.$a + 44) >> 2, 42); + L.Wb(); + db(L.$a, !1, 1); + gb(L.$a); + }, + yc: function () { + L.Wb(); + na(z); + L.receiveObjectTransfer = L.Gc; + L.setThreadStatus = L.Jc; + L.threadCancel = L.Oc; + L.threadExit = L.Pc; + }, + Wb: function () { + L.Yb = hb; + }, + fb: {}, + Eb: [], + Jc: function () {}, + fc: function () { + for (; 0 < L.Eb.length; ) L.Eb.pop()(); + D && threadInfoStruct && ib(); + }, + Pc: function (a) { + var b = ab | 0; + b && + (Atomics.store(x(), (b + 4) >> 2, a), + Atomics.store(x(), (b + 0) >> 2, 1), + Atomics.store(x(), (b + 60) >> 2, 1), + Atomics.store(x(), (b + 64) >> 2, 0), + L.fc(), + eb(b + 0, 2147483647), + db(0, 0, 0), + (threadInfoStruct = 0), + D && postMessage({ cmd: 'exit' })); + }, + Oc: function () { + L.fc(); + Atomics.store(x(), (threadInfoStruct + 4) >> 2, -1); + Atomics.store(x(), (threadInfoStruct + 0) >> 2, 1); + eb(threadInfoStruct + 0, 2147483647); + threadInfoStruct = selfThreadId = 0; + db(0, 0, 0); + postMessage({ cmd: 'cancelDone' }); + }, + td: function () { + for (var a in L.fb) { + var b = L.fb[a]; + b && b.worker && L.Cb(b.worker); + } + L.fb = {}; + for (a = 0; a < L.bb.length; ++a) { + var c = L.bb[a]; + c.terminate(); + } + L.bb = []; + for (a = 0; a < L.lb.length; ++a) + (c = L.lb[a]), (b = c.ab), L.Hb(b), c.terminate(); + L.lb = []; + }, + Hb: function (a) { + if (a) { + if (a.threadInfoStruct) { + var b = w()[(a.threadInfoStruct + 104) >> 2]; + w()[(a.threadInfoStruct + 104) >> 2] = 0; + O(b); + O(a.threadInfoStruct); + } + a.threadInfoStruct = 0; + a.Fb && a.ob && O(a.ob); + a.ob = 0; + a.worker && (a.worker.ab = null); + } + }, + Cb: function (a) { + delete L.fb[a.ab.jc]; + L.bb.push(a); + L.lb.splice(L.lb.indexOf(a), 1); + L.Hb(a.ab); + a.ab = void 0; + }, + Gc: function () {}, + Xb: function (a, b) { + a.onmessage = function (c) { + var d = c.data, + e = d.cmd; + a.ab && (L.Gb = a.ab.threadInfoStruct); + if (d.targetThread && d.targetThread != (ab | 0)) { + var g = L.fb[d.sd]; + g + ? g.worker.postMessage(c.data, d.transferList) + : console.error( + 'Internal error! Worker sent a message "' + + e + + '" to target pthread ' + + d.targetThread + + ', but that thread no longer exists!', + ); + } else if ('processQueuedMainThreadWork' === e) jb(); + else if ('spawnThread' === e) kb(c.data); + else if ('cleanupThread' === e) fb(d.thread); + else if ('killThread' === e) { + c = d.thread; + if (D) + throw 'Internal Error! killThread() can only ever be called from main application thread!'; + if (!c) throw 'Internal Error! Null pthread_ptr in killThread!'; + w()[(c + 12) >> 2] = 0; + c = L.fb[c]; + c.worker.terminate(); + L.Hb(c); + L.lb.splice(L.lb.indexOf(c.worker), 1); + c.worker.ab = void 0; + } else if ('cancelThread' === e) { + c = d.thread; + if (D) + throw 'Internal Error! cancelThread() can only ever be called from main application thread!'; + if (!c) throw 'Internal Error! Null pthread_ptr in cancelThread!'; + L.fb[c].worker.postMessage({ cmd: 'cancel' }); + } else + 'loaded' === e + ? ((a.loaded = !0), b && b(a), a.vb && (a.vb(), delete a.vb)) + : 'print' === e + ? sa('Thread ' + d.threadId + ': ' + d.text) + : 'printErr' === e + ? G('Thread ' + d.threadId + ': ' + d.text) + : 'alert' === e + ? alert('Thread ' + d.threadId + ': ' + d.text) + : 'exit' === e + ? a.ab && Atomics.load(x(), (a.ab.jc + 68) >> 2) && L.Cb(a) + : 'cancelDone' === e + ? L.Cb(a) + : 'objectTransfer' !== e && + ('setimmediate' === c.data.target + ? a.postMessage(c.data) + : G('worker sent an unknown command ' + e)); + L.Gb = void 0; + }; + a.onerror = function (c) { + G( + 'pthread sent an error! ' + + c.filename + + ':' + + c.lineno + + ': ' + + c.message, + ); + }; + a.postMessage({ + cmd: 'load', + urlOrBlob: z.mainScriptUrlOrBlob || _scriptDir, + wasmMemory: m, + wasmModule: wa, + }); + }, + Nb: function () { + var a = qa('avif_enc_mt.worker.js'); + L.bb.push(new Worker(a)); + }, + qc: function () { + 0 == L.bb.length && (L.Nb(), L.Xb(L.bb[0])); + return 0 < L.bb.length ? L.bb.pop() : null; + }, + Wc: function (a) { + for (a = performance.now() + a; performance.now() < a; ); + }, + }; + z.establishStackSpace = function (a) { + P(a); + }; + z.getNoExitRuntime = function () { + return noExitRuntime; + }; + var lb; + lb = D + ? function () { + return performance.now() - z.__performance_now_clock_drift; + } + : function () { + return performance.now(); + }; + function mb(a, b) { + L.Eb.push(function () { + J.get(a)(b); + }); + } + function nb(a, b) { + for (var c = 0, d = a.length - 1; 0 <= d; d--) { + var e = a[d]; + '.' === e + ? a.splice(d, 1) + : '..' === e + ? (a.splice(d, 1), c++) + : c && (a.splice(d, 1), c--); + } + if (b) for (; c; c--) a.unshift('..'); + return a; + } + function ob(a) { + var b = '/' === a.charAt(0), + c = '/' === a.substr(-1); + (a = nb( + a.split('/').filter(function (d) { + return !!d; + }), + !b, + ).join('/')) || + b || + (a = '.'); + a && c && (a += '/'); + return (b ? '/' : '') + a; + } + function pb(a) { + var b = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/ + .exec(a) + .slice(1); + a = b[0]; + b = b[1]; + if (!a && !b) return '.'; + b && (b = b.substr(0, b.length - 1)); + return a + b; + } + function qb(a) { + if ('/' === a) return '/'; + a = ob(a); + a = a.replace(/\/$/, ''); + var b = a.lastIndexOf('/'); + return -1 === b ? a : a.substr(b + 1); + } + function rb() { + if ( + 'object' === typeof crypto && + 'function' === typeof crypto.getRandomValues + ) { + var a = new Uint8Array(1); + return function () { + crypto.getRandomValues(a); + return a[0]; + }; + } + return function () { + H('randomDevice'); + }; + } + function sb() { + for (var a = '', b = !1, c = arguments.length - 1; -1 <= c && !b; c--) { + b = 0 <= c ? arguments[c] : '/'; + if ('string' !== typeof b) + throw new TypeError('Arguments to path.resolve must be strings'); + if (!b) return ''; + a = b + '/' + a; + b = '/' === b.charAt(0); + } + a = nb( + a.split('/').filter(function (d) { + return !!d; + }), + !b, + ).join('/'); + return (b ? '/' : '') + a || '.'; + } + var tb = []; + function ub(a, b) { + tb[a] = { input: [], Za: [], pb: b }; + vb(a, wb); + } + var wb = { + open: function (a) { + var b = tb[a.node.Bb]; + if (!b) throw new Q(43); + a.Ya = b; + a.seekable = !1; + }, + close: function (a) { + a.Ya.pb.flush(a.Ya); + }, + flush: function (a) { + a.Ya.pb.flush(a.Ya); + }, + read: function (a, b, c, d) { + if (!a.Ya || !a.Ya.pb.Vb) throw new Q(60); + for (var e = 0, g = 0; g < d; g++) { + try { + var h = a.Ya.pb.Vb(a.Ya); + } catch (k) { + throw new Q(29); + } + if (void 0 === h && 0 === e) throw new Q(6); + if (null === h || void 0 === h) break; + e++; + b[c + g] = h; + } + e && (a.node.timestamp = Date.now()); + return e; + }, + write: function (a, b, c, d) { + if (!a.Ya || !a.Ya.pb.Jb) throw new Q(60); + try { + for (var e = 0; e < d; e++) a.Ya.pb.Jb(a.Ya, b[c + e]); + } catch (g) { + throw new Q(29); + } + d && (a.node.timestamp = Date.now()); + return e; + }, + }, + xb = { + Vb: function (a) { + if (!a.input.length) { + var b = null; + 'undefined' != typeof window && 'function' == typeof window.prompt + ? ((b = window.prompt('Input: ')), null !== b && (b += '\n')) + : 'function' == typeof readline && + ((b = readline()), null !== b && (b += '\n')); + if (!b) return null; + var c = Array(Ca(b) + 1); + b = Aa(b, c, 0, c.length); + c.length = b; + a.input = c; + } + return a.input.shift(); + }, + Jb: function (a, b) { + null === b || 10 === b + ? (sa(za(a.Za, 0)), (a.Za = [])) + : 0 != b && a.Za.push(b); + }, + flush: function (a) { + a.Za && 0 < a.Za.length && (sa(za(a.Za, 0)), (a.Za = [])); + }, + }, + yb = { + Jb: function (a, b) { + null === b || 10 === b + ? (G(za(a.Za, 0)), (a.Za = [])) + : 0 != b && a.Za.push(b); + }, + flush: function (a) { + a.Za && 0 < a.Za.length && (G(za(a.Za, 0)), (a.Za = [])); + }, + }, + R = { + cb: null, + ib: function () { + return R.createNode(null, '/', 16895, 0); + }, + createNode: function (a, b, c, d) { + if (24576 === (c & 61440) || 4096 === (c & 61440)) throw new Q(63); + R.cb || + (R.cb = { + dir: { + node: { + kb: R.Va.kb, + gb: R.Va.gb, + tb: R.Va.tb, + zb: R.Va.zb, + dc: R.Va.dc, + kc: R.Va.kc, + ec: R.Va.ec, + cc: R.Va.cc, + Db: R.Va.Db, + }, + stream: { nb: R.Wa.nb }, + }, + file: { + node: { kb: R.Va.kb, gb: R.Va.gb }, + stream: { + nb: R.Wa.nb, + read: R.Wa.read, + write: R.Wa.write, + Mb: R.Wa.Mb, + Zb: R.Wa.Zb, + ac: R.Wa.ac, + }, + }, + link: { + node: { kb: R.Va.kb, gb: R.Va.gb, ub: R.Va.ub }, + stream: {}, + }, + Ob: { node: { kb: R.Va.kb, gb: R.Va.gb }, stream: zb }, + }); + c = Ab(a, b, c, d); + 16384 === (c.mode & 61440) + ? ((c.Va = R.cb.dir.node), (c.Wa = R.cb.dir.stream), (c.Ua = {})) + : 32768 === (c.mode & 61440) + ? ((c.Va = R.cb.file.node), + (c.Wa = R.cb.file.stream), + (c.Xa = 0), + (c.Ua = null)) + : 40960 === (c.mode & 61440) + ? ((c.Va = R.cb.link.node), (c.Wa = R.cb.link.stream)) + : 8192 === (c.mode & 61440) && + ((c.Va = R.cb.Ob.node), (c.Wa = R.cb.Ob.stream)); + c.timestamp = Date.now(); + a && (a.Ua[b] = c); + return c; + }, + bd: function (a) { + if (a.Ua && a.Ua.subarray) { + for (var b = [], c = 0; c < a.Xa; ++c) b.push(a.Ua[c]); + return b; + } + return a.Ua; + }, + cd: function (a) { + return a.Ua + ? a.Ua.subarray + ? a.Ua.subarray(0, a.Xa) + : new Uint8Array(a.Ua) + : new Uint8Array(0); + }, + Rb: function (a, b) { + var c = a.Ua ? a.Ua.length : 0; + c >= b || + ((b = Math.max(b, (c * (1048576 > c ? 2 : 1.125)) >>> 0)), + 0 != c && (b = Math.max(b, 256)), + (c = a.Ua), + (a.Ua = new Uint8Array(b)), + 0 < a.Xa && a.Ua.set(c.subarray(0, a.Xa), 0)); + }, + Hc: function (a, b) { + if (a.Xa != b) + if (0 == b) (a.Ua = null), (a.Xa = 0); + else { + if (!a.Ua || a.Ua.subarray) { + var c = a.Ua; + a.Ua = new Uint8Array(b); + c && a.Ua.set(c.subarray(0, Math.min(b, a.Xa))); + } else if ((a.Ua || (a.Ua = []), a.Ua.length > b)) + a.Ua.length = b; + else for (; a.Ua.length < b; ) a.Ua.push(0); + a.Xa = b; + } + }, + Va: { + kb: function (a) { + var b = {}; + b.$c = 8192 === (a.mode & 61440) ? a.id : 1; + b.fd = a.id; + b.mode = a.mode; + b.md = 1; + b.uid = 0; + b.dd = 0; + b.Bb = a.Bb; + 16384 === (a.mode & 61440) + ? (b.size = 4096) + : 32768 === (a.mode & 61440) + ? (b.size = a.Xa) + : 40960 === (a.mode & 61440) + ? (b.size = a.link.length) + : (b.size = 0); + b.Uc = new Date(a.timestamp); + b.kd = new Date(a.timestamp); + b.Zc = new Date(a.timestamp); + b.mc = 4096; + b.Vc = Math.ceil(b.size / b.mc); + return b; + }, + gb: function (a, b) { + void 0 !== b.mode && (a.mode = b.mode); + void 0 !== b.timestamp && (a.timestamp = b.timestamp); + void 0 !== b.size && R.Hc(a, b.size); + }, + tb: function () { + throw Bb[44]; + }, + zb: function (a, b, c, d) { + return R.createNode(a, b, c, d); + }, + dc: function (a, b, c) { + if (16384 === (a.mode & 61440)) { + try { + var d = Cb(b, c); + } catch (g) {} + if (d) for (var e in d.Ua) throw new Q(55); + } + delete a.parent.Ua[a.name]; + a.name = c; + b.Ua[c] = a; + a.parent = b; + }, + kc: function (a, b) { + delete a.Ua[b]; + }, + ec: function (a, b) { + var c = Cb(a, b), + d; + for (d in c.Ua) throw new Q(55); + delete a.Ua[b]; + }, + cc: function (a) { + var b = ['.', '..'], + c; + for (c in a.Ua) a.Ua.hasOwnProperty(c) && b.push(c); + return b; + }, + Db: function (a, b, c) { + a = R.createNode(a, b, 41471, 0); + a.link = c; + return a; + }, + ub: function (a) { + if (40960 !== (a.mode & 61440)) throw new Q(28); + return a.link; + }, + }, + Wa: { + read: function (a, b, c, d, e) { + var g = a.node.Ua; + if (e >= a.node.Xa) return 0; + a = Math.min(a.node.Xa - e, d); + if (8 < a && g.subarray) b.set(g.subarray(e, e + a), c); + else for (d = 0; d < a; d++) b[c + d] = g[e + d]; + return a; + }, + write: function (a, b, c, d, e, g) { + b.buffer === f().buffer && (g = !1); + if (!d) return 0; + a = a.node; + a.timestamp = Date.now(); + if (b.subarray && (!a.Ua || a.Ua.subarray)) { + if (g) return (a.Ua = b.subarray(c, c + d)), (a.Xa = d); + if (0 === a.Xa && 0 === e) + return (a.Ua = b.slice(c, c + d)), (a.Xa = d); + if (e + d <= a.Xa) return a.Ua.set(b.subarray(c, c + d), e), d; + } + R.Rb(a, e + d); + if (a.Ua.subarray && b.subarray) a.Ua.set(b.subarray(c, c + d), e); + else for (g = 0; g < d; g++) a.Ua[e + g] = b[c + g]; + a.Xa = Math.max(a.Xa, e + d); + return d; + }, + nb: function (a, b, c) { + 1 === c + ? (b += a.position) + : 2 === c && 32768 === (a.node.mode & 61440) && (b += a.node.Xa); + if (0 > b) throw new Q(28); + return b; + }, + Mb: function (a, b, c) { + R.Rb(a.node, b + c); + a.node.Xa = Math.max(a.node.Xa, b + c); + }, + Zb: function (a, b, c, d, e, g) { + ya(0 === b); + if (32768 !== (a.node.mode & 61440)) throw new Q(43); + a = a.node.Ua; + if (g & 2 || a.buffer !== n) { + if (0 < d || d + c < a.length) + a.subarray + ? (a = a.subarray(d, d + c)) + : (a = Array.prototype.slice.call(a, d, d + c)); + d = !0; + g = 16384 * Math.ceil(c / 16384); + for (b = M(g); c < g; ) f()[b + c++] = 0; + c = b; + if (!c) throw new Q(48); + f().set(a, c); + } else (d = !1), (c = a.byteOffset); + return { qd: c, Tc: d }; + }, + ac: function (a, b, c, d, e) { + if (32768 !== (a.node.mode & 61440)) throw new Q(43); + if (e & 2) return 0; + R.Wa.write(a, b, 0, d, c, !1); + return 0; + }, + }, + }, + Db = null, + Eb = {}, + Fb = [], + Gb = 1, + Hb = null, + Ib = !0, + Jb = {}, + Q = null, + Bb = {}; + function Kb(a, b) { + a = sb('/', a); + b = b || {}; + if (!a) return { path: '', node: null }; + var c = { Ub: !0, Kb: 0 }, + d; + for (d in c) void 0 === b[d] && (b[d] = c[d]); + if (8 < b.Kb) throw new Q(32); + a = nb( + a.split('/').filter(function (h) { + return !!h; + }), + !1, + ); + var e = Db; + c = '/'; + for (d = 0; d < a.length; d++) { + var g = d === a.length - 1; + if (g && b.parent) break; + e = Cb(e, a[d]); + c = ob(c + '/' + a[d]); + e.Ab && (!g || (g && b.Ub)) && (e = e.Ab.root); + if (!g || b.Tb) + for (g = 0; 40960 === (e.mode & 61440); ) + if ( + ((e = Lb(c)), + (c = sb(pb(c), e)), + (e = Kb(c, { Kb: b.Kb }).node), + 40 < g++) + ) + throw new Q(32); + } + return { path: c, node: e }; + } + function Mb(a) { + for (var b; ; ) { + if (a === a.parent) + return ( + (a = a.ib.$b), + b ? ('/' !== a[a.length - 1] ? a + '/' + b : a + b) : a + ); + b = b ? a.name + '/' + b : a.name; + a = a.parent; + } + } + function Nb(a, b) { + for (var c = 0, d = 0; d < b.length; d++) + c = ((c << 5) - c + b.charCodeAt(d)) | 0; + return ((a + c) >>> 0) % Hb.length; + } + function Cb(a, b) { + var c; + if ((c = (c = Ob(a, 'x')) ? c : a.Va.tb ? 0 : 2)) throw new Q(c, a); + for (c = Hb[Nb(a.id, b)]; c; c = c.Cc) { + var d = c.name; + if (c.parent.id === a.id && d === b) return c; + } + return a.Va.tb(a, b); + } + function Ab(a, b, c, d) { + a = new Pb(a, b, c, d); + b = Nb(a.parent.id, a.name); + a.Cc = Hb[b]; + return (Hb[b] = a); + } + var Qb = { + r: 0, + rs: 1052672, + 'r+': 2, + w: 577, + wx: 705, + xw: 705, + 'w+': 578, + 'wx+': 706, + 'xw+': 706, + a: 1089, + ax: 1217, + xa: 1217, + 'a+': 1090, + 'ax+': 1218, + 'xa+': 1218, + }; + function Rb(a) { + var b = ['r', 'w', 'rw'][a & 3]; + a & 512 && (b += 'w'); + return b; + } + function Ob(a, b) { + if (Ib) return 0; + if (-1 === b.indexOf('r') || a.mode & 292) { + if ( + (-1 !== b.indexOf('w') && !(a.mode & 146)) || + (-1 !== b.indexOf('x') && !(a.mode & 73)) + ) + return 2; + } else return 2; + return 0; + } + function Sb(a, b) { + try { + return Cb(a, b), 20; + } catch (c) {} + return Ob(a, 'wx'); + } + function Tb(a) { + var b = 4096; + for (a = a || 0; a <= b; a++) if (!Fb[a]) return a; + throw new Q(33); + } + function Ub(a, b) { + Vb || ((Vb = function () {}), (Vb.prototype = {})); + var c = new Vb(), + d; + for (d in a) c[d] = a[d]; + a = c; + b = Tb(b); + a.jb = b; + return (Fb[b] = a); + } + var zb = { + open: function (a) { + a.Wa = Eb[a.node.Bb].Wa; + a.Wa.open && a.Wa.open(a); + }, + nb: function () { + throw new Q(70); + }, + }; + function vb(a, b) { + Eb[a] = { Wa: b }; + } + function Wb(a, b) { + var c = '/' === b, + d = !b; + if (c && Db) throw new Q(10); + if (!c && !d) { + var e = Kb(b, { Ub: !1 }); + b = e.path; + e = e.node; + if (e.Ab) throw new Q(10); + if (16384 !== (e.mode & 61440)) throw new Q(54); + } + b = { type: a, od: {}, $b: b, Bc: [] }; + a = a.ib(b); + a.ib = b; + b.root = a; + c ? (Db = a) : e && ((e.Ab = b), e.ib && e.ib.Bc.push(b)); + } + function Xb(a, b, c) { + var d = Kb(a, { parent: !0 }).node; + a = qb(a); + if (!a || '.' === a || '..' === a) throw new Q(28); + var e = Sb(d, a); + if (e) throw new Q(e); + if (!d.Va.zb) throw new Q(63); + return d.Va.zb(d, a, b, c); + } + function S(a) { + Xb(a, 16895, 0); + } + function Yb(a, b, c) { + 'undefined' === typeof c && ((c = b), (b = 438)); + Xb(a, b | 8192, c); + } + function Zb(a, b) { + if (!sb(a)) throw new Q(44); + var c = Kb(b, { parent: !0 }).node; + if (!c) throw new Q(44); + b = qb(b); + var d = Sb(c, b); + if (d) throw new Q(d); + if (!c.Va.Db) throw new Q(63); + c.Va.Db(c, b, a); + } + function Lb(a) { + a = Kb(a).node; + if (!a) throw new Q(44); + if (!a.Va.ub) throw new Q(28); + return sb(Mb(a.parent), a.Va.ub(a)); + } + function $b(a, b, c, d) { + if ('' === a) throw new Q(44); + if ('string' === typeof b) { + var e = Qb[b]; + if ('undefined' === typeof e) + throw Error('Unknown file open mode: ' + b); + b = e; + } + c = b & 64 ? (('undefined' === typeof c ? 438 : c) & 4095) | 32768 : 0; + if ('object' === typeof a) var g = a; + else { + a = ob(a); + try { + g = Kb(a, { Tb: !(b & 131072) }).node; + } catch (k) {} + } + e = !1; + if (b & 64) + if (g) { + if (b & 128) throw new Q(20); + } else (g = Xb(a, c, 0)), (e = !0); + if (!g) throw new Q(44); + 8192 === (g.mode & 61440) && (b &= -513); + if (b & 65536 && 16384 !== (g.mode & 61440)) throw new Q(54); + if ( + !e && + (c = g + ? 40960 === (g.mode & 61440) + ? 32 + : 16384 === (g.mode & 61440) && ('r' !== Rb(b) || b & 512) + ? 31 + : Ob(g, Rb(b)) + : 44) + ) + throw new Q(c); + if (b & 512) { + c = g; + var h; + 'string' === typeof c ? (h = Kb(c, { Tb: !0 }).node) : (h = c); + if (!h.Va.gb) throw new Q(63); + if (16384 === (h.mode & 61440)) throw new Q(31); + if (32768 !== (h.mode & 61440)) throw new Q(28); + if ((c = Ob(h, 'w'))) throw new Q(c); + h.Va.gb(h, { size: 0, timestamp: Date.now() }); + } + b &= -131713; + d = Ub( + { + node: g, + path: Mb(g), + flags: b, + seekable: !0, + position: 0, + Wa: g.Wa, + Rc: [], + error: !1, + }, + d, + ); + d.Wa.open && d.Wa.open(d); + !z.logReadFiles || + b & 1 || + (ac || (ac = {}), + a in ac || + ((ac[a] = 1), G('FS.trackingDelegate error on read file: ' + a))); + try { + Jb.onOpenFile && + ((g = 0), + 1 !== (b & 2097155) && (g |= 1), + 0 !== (b & 2097155) && (g |= 2), + Jb.onOpenFile(a, g)); + } catch (k) { + G( + "FS.trackingDelegate['onOpenFile']('" + + a + + "', flags) threw an exception: " + + k.message, + ); + } + return d; + } + function bc(a, b, c) { + if (null === a.jb) throw new Q(8); + if (!a.seekable || !a.Wa.nb) throw new Q(70); + if (0 != c && 1 != c && 2 != c) throw new Q(28); + a.position = a.Wa.nb(a, b, c); + a.Rc = []; + } + function cc() { + Q || + ((Q = function (a, b) { + this.node = b; + this.Ic = function (c) { + this.mb = c; + }; + this.Ic(a); + this.message = 'FS error'; + }), + (Q.prototype = Error()), + (Q.prototype.constructor = Q), + [44].forEach(function (a) { + Bb[a] = new Q(a); + Bb[a].stack = ''; + })); + } + var dc; + function ec(a, b) { + var c = 0; + a && (c |= 365); + b && (c |= 146); + return c; + } + function fc(a, b, c) { + a = ob('/dev/' + a); + var d = ec(!!b, !!c); + gc || (gc = 64); + var e = (gc++ << 8) | 0; + vb(e, { + open: function (g) { + g.seekable = !1; + }, + close: function () { + c && c.buffer && c.buffer.length && c(10); + }, + read: function (g, h, k, l) { + for (var q = 0, r = 0; r < l; r++) { + try { + var v = b(); + } catch (y) { + throw new Q(29); + } + if (void 0 === v && 0 === q) throw new Q(6); + if (null === v || void 0 === v) break; + q++; + h[k + r] = v; + } + q && (g.node.timestamp = Date.now()); + return q; + }, + write: function (g, h, k, l) { + for (var q = 0; q < l; q++) + try { + c(h[k + q]); + } catch (r) { + throw new Q(29); + } + l && (g.node.timestamp = Date.now()); + return q; + }, + }); + Yb(a, d, e); + } + var gc, + hc = {}, + Vb, + ac, + ic = void 0; + function jc() { + ic += 4; + return w()[(ic - 4) >> 2]; + } + function kc(a) { + a = Fb[a]; + if (!a) throw new Q(8); + return a; + } + function lc(a, b, c) { + if (D) return T(1, 1, a, b, c); + ic = c; + try { + var d = kc(a); + switch (b) { + case 0: + var e = jc(); + return 0 > e ? -28 : $b(d.path, d.flags, 0, e).jb; + case 1: + case 2: + return 0; + case 3: + return d.flags; + case 4: + return (e = jc()), (d.flags |= e), 0; + case 12: + return (e = jc()), (ca()[(e + 0) >> 1] = 2), 0; + case 13: + case 14: + return 0; + case 16: + case 8: + return -28; + case 9: + return (w()[mc() >> 2] = 28), -1; + default: + return -28; + } + } catch (g) { + return ('undefined' !== typeof hc && g instanceof Q) || H(g), -g.mb; + } + } + function nc(a, b, c) { + if (D) return T(2, 1, a, b, c); + ic = c; + try { + var d = kc(a); + switch (b) { + case 21509: + case 21505: + return d.Ya ? 0 : -59; + case 21510: + case 21511: + case 21512: + case 21506: + case 21507: + case 21508: + return d.Ya ? 0 : -59; + case 21519: + if (!d.Ya) return -59; + var e = jc(); + return (w()[e >> 2] = 0); + case 21520: + return d.Ya ? -28 : -59; + case 21531: + a = e = jc(); + if (!d.Wa.zc) throw new Q(59); + return d.Wa.zc(d, b, a); + case 21523: + return d.Ya ? 0 : -59; + case 21524: + return d.Ya ? 0 : -59; + default: + H('bad ioctl syscall ' + b); + } + } catch (g) { + return ('undefined' !== typeof hc && g instanceof Q) || H(g), -g.mb; + } + } + function oc(a, b, c) { + if (D) return T(3, 1, a, b, c); + ic = c; + try { + var d = I(a), + e = jc(); + return $b(d, b, e).jb; + } catch (g) { + return ('undefined' !== typeof hc && g instanceof Q) || H(g), -g.mb; + } + } + var pc = {}; + function qc(a) { + for (; a.length; ) { + var b = a.pop(); + a.pop()(b); + } + } + function rc(a) { + return this.fromWireType(x()[a >> 2]); + } + var sc = {}, + tc = {}, + uc = {}; + function vc(a) { + if (void 0 === a) return '_unknown'; + a = a.replace(/[^a-zA-Z0-9_]/g, '$'); + var b = a.charCodeAt(0); + return 48 <= b && 57 >= b ? '_' + a : a; + } + function wc(a, b) { + a = vc(a); + return new Function( + 'body', + 'return function ' + + a + + '() {\n "use strict"; return body.apply(this, arguments);\n};\n', + )(b); + } + function xc(a) { + var b = Error, + c = wc(a, function (d) { + this.name = a; + this.message = d; + d = Error(d).stack; + void 0 !== d && + (this.stack = + this.toString() + '\n' + d.replace(/^Error(:[^\n]*)?\n/, '')); + }); + c.prototype = Object.create(b.prototype); + c.prototype.constructor = c; + c.prototype.toString = function () { + return void 0 === this.message + ? this.name + : this.name + ': ' + this.message; + }; + return c; + } + var yc = void 0; + function zc(a, b, c) { + function d(k) { + k = c(k); + if (k.length !== a.length) + throw new yc('Mismatched type converter count'); + for (var l = 0; l < a.length; ++l) U(a[l], k[l]); + } + a.forEach(function (k) { + uc[k] = b; + }); + var e = Array(b.length), + g = [], + h = 0; + b.forEach(function (k, l) { + tc.hasOwnProperty(k) + ? (e[l] = tc[k]) + : (g.push(k), + sc.hasOwnProperty(k) || (sc[k] = []), + sc[k].push(function () { + e[l] = tc[k]; + ++h; + h === g.length && d(e); + })); + }); + 0 === g.length && d(e); + } + function Ac(a) { + switch (a) { + case 1: + return 0; + case 2: + return 1; + case 4: + return 2; + case 8: + return 3; + default: + throw new TypeError('Unknown type size: ' + a); + } + } + var Bc = void 0; + function V(a) { + for (var b = ''; t()[a]; ) b += Bc[t()[a++]]; + return b; + } + var Cc = void 0; + function W(a) { + throw new Cc(a); + } + function U(a, b, c) { + c = c || {}; + if (!('argPackAdvance' in b)) + throw new TypeError( + 'registerType registeredInstance requires argPackAdvance', + ); + var d = b.name; + a || W('type "' + d + '" must have a positive integer typeid pointer'); + if (tc.hasOwnProperty(a)) { + if (c.uc) return; + W("Cannot register type '" + d + "' twice"); + } + tc[a] = b; + delete uc[a]; + sc.hasOwnProperty(a) && + ((b = sc[a]), + delete sc[a], + b.forEach(function (e) { + e(); + })); + } + var Dc = [], + X = [ + {}, + { value: void 0 }, + { value: null }, + { value: !0 }, + { value: !1 }, + ]; + function Ec(a) { + 4 < a && 0 === --X[a].Lb && ((X[a] = void 0), Dc.push(a)); + } + function Fc(a) { + switch (a) { + case void 0: + return 1; + case null: + return 2; + case !0: + return 3; + case !1: + return 4; + default: + var b = Dc.length ? Dc.pop() : X.length; + X[b] = { Lb: 1, value: a }; + return b; + } + } + function Gc(a) { + if (null === a) return 'null'; + var b = typeof a; + return 'object' === b || 'array' === b || 'function' === b + ? a.toString() + : '' + a; + } + function Hc(a, b) { + switch (b) { + case 2: + return function (c) { + return this.fromWireType(ja()[c >> 2]); + }; + case 3: + return function (c) { + return this.fromWireType(la()[c >> 3]); + }; + default: + throw new TypeError('Unknown float type: ' + a); + } + } + function Ic(a) { + var b = Function; + if (!(b instanceof Function)) + throw new TypeError( + 'new_ called with constructor type ' + + typeof b + + ' which is not a function', + ); + var c = wc(b.name || 'unknownFunctionName', function () {}); + c.prototype = b.prototype; + c = new c(); + a = b.apply(c, a); + return a instanceof Object ? a : c; + } + function Jc(a, b) { + var c = z; + if (void 0 === c[a].eb) { + var d = c[a]; + c[a] = function () { + c[a].eb.hasOwnProperty(arguments.length) || + W( + "Function '" + + b + + "' called with an invalid number of arguments (" + + arguments.length + + ') - expects one of (' + + c[a].eb + + ')!', + ); + return c[a].eb[arguments.length].apply(this, arguments); + }; + c[a].eb = []; + c[a].eb[d.lc] = d; + } + } + function Kc(a, b, c) { + z.hasOwnProperty(a) + ? ((void 0 === c || (void 0 !== z[a].eb && void 0 !== z[a].eb[c])) && + W("Cannot register public name '" + a + "' twice"), + Jc(a, a), + z.hasOwnProperty(c) && + W( + 'Cannot register multiple overloads of a function with the same number of arguments (' + + c + + ')!', + ), + (z[a].eb[c] = b)) + : ((z[a] = b), void 0 !== c && (z[a].nd = c)); + } + function Lc(a, b) { + for (var c = [], d = 0; d < a; d++) c.push(w()[(b >> 2) + d]); + return c; + } + function Mc(a, b) { + ya( + 0 <= a.indexOf('j'), + 'getDynCaller should only be called with i64 sigs', + ); + var c = []; + return function () { + c.length = arguments.length; + for (var d = 0; d < arguments.length; d++) c[d] = arguments[d]; + return $a(a, b, c); + }; + } + function Nc(a, b) { + a = V(a); + var c = -1 != a.indexOf('j') ? Mc(a, b) : J.get(b); + 'function' !== typeof c && + W('unknown function pointer with signature ' + a + ': ' + b); + return c; + } + var Oc = void 0; + function Pc(a) { + a = Qc(a); + var b = V(a); + O(a); + return b; + } + function Rc(a, b) { + function c(g) { + e[g] || tc[g] || (uc[g] ? uc[g].forEach(c) : (d.push(g), (e[g] = !0))); + } + var d = [], + e = {}; + b.forEach(c); + throw new Oc(a + ': ' + d.map(Pc).join([', '])); + } + function Sc(a, b, c) { + switch (b) { + case 0: + return c + ? function (d) { + return f()[d]; + } + : function (d) { + return t()[d]; + }; + case 1: + return c + ? function (d) { + return ca()[d >> 1]; + } + : function (d) { + return ea()[d >> 1]; + }; + case 2: + return c + ? function (d) { + return w()[d >> 2]; + } + : function (d) { + return x()[d >> 2]; + }; + default: + throw new TypeError('Unknown integer type: ' + a); + } + } + var Tc = {}; + function Uc() { + return 'object' === typeof globalThis + ? globalThis + : Function('return this')(); + } + function Vc(a, b) { + var c = tc[a]; + void 0 === c && W(b + ' has unknown type ' + Pc(a)); + return c; + } + var Wc = {}; + function Xc(a, b, c) { + if (0 >= a || a > f().length || a & 1) return -28; + a = Atomics.wait(w(), a >> 2, b, c); + if ('timed-out' === a) return -73; + if ('not-equal' === a) return -6; + if ('ok' === a) return 0; + throw 'Atomics.wait returned an unexpected value ' + a; + } + function T(a, b) { + for ( + var c = arguments.length - 2, d = Y(), e = Yc(8 * c), g = e >> 3, h = 0; + h < c; + h++ + ) + la()[g + h] = arguments[2 + h]; + c = Zc(a, c, e, b); + P(d); + return c; + } + var $c = [], + ad = [], + bd = [ + 0, + 'undefined' !== typeof document ? document : 0, + 'undefined' !== typeof window ? window : 0, + ]; + function cd(a) { + a = 2 < a ? I(a) : a; + return ( + bd[a] || + ('undefined' !== typeof document ? document.querySelector(a) : void 0) + ); + } + function dd(a, b, c) { + var d = cd(a); + if (!d) return -4; + d.yb && ((w()[d.yb >> 2] = b), (w()[(d.yb + 4) >> 2] = c)); + if (d.bc || !d.Yc) + d.bc && (d = d.bc), + (a = !1), + d.xb && + d.xb.wb && + ((a = d.xb.wb.getParameter(2978)), + (a = + 0 === a[0] && + 0 === a[1] && + a[2] === d.width && + a[3] === d.height)), + (d.width = b), + (d.height = c), + a && d.xb.wb.viewport(0, 0, b, c); + else { + if (d.yb) { + d = w()[(d.yb + 8) >> 2]; + a = a ? I(a) : ''; + var e = Y(), + g = Yc(12), + h = 0; + if (a) { + h = Ca(a) + 1; + var k = M(h); + Ba(a, k, h); + h = k; + } + w()[g >> 2] = h; + w()[(g + 4) >> 2] = b; + w()[(g + 8) >> 2] = c; + ed(0, d, 657457152, 0, h, g); + P(e); + return 1; + } + return -4; + } + return 0; + } + function fd(a, b, c) { + return D ? T(4, 1, a, b, c) : dd(a, b, c); + } + function gd(a) { + var b = a.getExtension('ANGLE_instanced_arrays'); + b && + ((a.vertexAttribDivisor = function (c, d) { + b.vertexAttribDivisorANGLE(c, d); + }), + (a.drawArraysInstanced = function (c, d, e, g) { + b.drawArraysInstancedANGLE(c, d, e, g); + }), + (a.drawElementsInstanced = function (c, d, e, g, h) { + b.drawElementsInstancedANGLE(c, d, e, g, h); + })); + } + function hd(a) { + var b = a.getExtension('OES_vertex_array_object'); + b && + ((a.createVertexArray = function () { + return b.createVertexArrayOES(); + }), + (a.deleteVertexArray = function (c) { + b.deleteVertexArrayOES(c); + }), + (a.bindVertexArray = function (c) { + b.bindVertexArrayOES(c); + }), + (a.isVertexArray = function (c) { + return b.isVertexArrayOES(c); + })); + } + function id(a) { + var b = a.getExtension('WEBGL_draw_buffers'); + b && + (a.drawBuffers = function (c, d) { + b.drawBuffersWEBGL(c, d); + }); + } + function jd(a) { + a || (a = kd); + if (!a.vc) { + a.vc = !0; + var b = a.wb; + gd(b); + hd(b); + id(b); + b.ad = b.getExtension('EXT_disjoint_timer_query'); + b.ld = b.getExtension('WEBGL_multi_draw'); + var c = 'OES_texture_float OES_texture_half_float OES_standard_derivatives OES_vertex_array_object WEBGL_compressed_texture_s3tc WEBGL_depth_texture OES_element_index_uint EXT_texture_filter_anisotropic EXT_frag_depth WEBGL_draw_buffers ANGLE_instanced_arrays OES_texture_float_linear OES_texture_half_float_linear EXT_blend_minmax EXT_shader_texture_lod EXT_texture_norm16 WEBGL_compressed_texture_pvrtc EXT_color_buffer_half_float WEBGL_color_buffer_float EXT_sRGB WEBGL_compressed_texture_etc1 EXT_disjoint_timer_query WEBGL_compressed_texture_etc WEBGL_compressed_texture_astc EXT_color_buffer_float WEBGL_compressed_texture_s3tc_srgb EXT_disjoint_timer_query_webgl2 WEBKIT_WEBGL_compressed_texture_pvrtc'.split( + ' ', + ); + (b.getSupportedExtensions() || []).forEach(function (d) { + -1 != c.indexOf(d) && b.getExtension(d); + }); + } + } + var kd, + ld = ['default', 'low-power', 'high-performance']; + function md(a) { + if (D) return T(5, 1, a); + try { + var b = kc(a); + if (null === b.jb) throw new Q(8); + b.Ib && (b.Ib = null); + try { + b.Wa.close && b.Wa.close(b); + } catch (c) { + throw c; + } finally { + Fb[b.jb] = null; + } + b.jb = null; + return 0; + } catch (c) { + return ('undefined' !== typeof hc && c instanceof Q) || H(c), c.mb; + } + } + function nd(a, b, c, d) { + if (D) return T(6, 1, a, b, c, d); + try { + a: { + for (var e = kc(a), g = (a = 0); g < c; g++) { + var h = w()[(b + 8 * g) >> 2], + k = w()[(b + (8 * g + 4)) >> 2], + l = e, + q = f(), + r = h, + v = k, + y = void 0; + if (0 > v || 0 > y) throw new Q(28); + if (null === l.jb) throw new Q(8); + if (1 === (l.flags & 2097155)) throw new Q(8); + if (16384 === (l.node.mode & 61440)) throw new Q(31); + if (!l.Wa.read) throw new Q(28); + var B = 'undefined' !== typeof y; + if (!B) y = l.position; + else if (!l.seekable) throw new Q(70); + var u = l.Wa.read(l, q, r, v, y); + B || (l.position += u); + var N = u; + if (0 > N) { + var E = -1; + break a; + } + a += N; + if (N < k) break; + } + E = a; + } + w()[d >> 2] = E; + return 0; + } catch (C) { + return ('undefined' !== typeof hc && C instanceof Q) || H(C), C.mb; + } + } + function od(a, b, c, d, e) { + if (D) return T(7, 1, a, b, c, d, e); + try { + var g = kc(a); + a = 4294967296 * c + (b >>> 0); + if (-9007199254740992 >= a || 9007199254740992 <= a) return -61; + bc(g, a, d); + Wa = [ + g.position >>> 0, + ((Va = g.position), + 1 <= +Math.abs(Va) + ? 0 < Va + ? (Math.min(+Math.floor(Va / 4294967296), 4294967295) | 0) >>> 0 + : ~~+Math.ceil((Va - +(~~Va >>> 0)) / 4294967296) >>> 0 + : 0), + ]; + w()[e >> 2] = Wa[0]; + w()[(e + 4) >> 2] = Wa[1]; + g.Ib && 0 === a && 0 === d && (g.Ib = null); + return 0; + } catch (h) { + return ('undefined' !== typeof hc && h instanceof Q) || H(h), h.mb; + } + } + function pd(a, b, c, d) { + if (D) return T(8, 1, a, b, c, d); + try { + a: { + for (var e = kc(a), g = (a = 0); g < c; g++) { + var h = w()[(b + 8 * g) >> 2], + k = w()[(b + (8 * g + 4)) >> 2], + l = e, + q = f(), + r = h, + v = k, + y = void 0; + if (0 > v || 0 > y) throw new Q(28); + if (null === l.jb) throw new Q(8); + if (0 === (l.flags & 2097155)) throw new Q(8); + if (16384 === (l.node.mode & 61440)) throw new Q(31); + if (!l.Wa.write) throw new Q(28); + l.seekable && l.flags & 1024 && bc(l, 0, 2); + var B = 'undefined' !== typeof y; + if (!B) y = l.position; + else if (!l.seekable) throw new Q(70); + var u = l.Wa.write(l, q, r, v, y, void 0); + B || (l.position += u); + try { + if (l.path && Jb.onWriteToFile) Jb.onWriteToFile(l.path); + } catch (C) { + G( + "FS.trackingDelegate['onWriteToFile']('" + + l.path + + "') threw an exception: " + + C.message, + ); + } + var N = u; + if (0 > N) { + var E = -1; + break a; + } + a += N; + } + E = a; + } + w()[d >> 2] = E; + return 0; + } catch (C) { + return ('undefined' !== typeof hc && C instanceof Q) || H(C), C.mb; + } + } + function kb(a) { + if (D) + throw 'Internal Error! spawnThread() can only ever be called from main application thread!'; + var b = L.qc(); + if (void 0 !== b.ab) throw 'Internal error!'; + if (!a.qb) throw 'Internal error, no pthread ptr!'; + L.lb.push(b); + for (var c = M(512), d = 0; 128 > d; ++d) w()[(c + 4 * d) >> 2] = 0; + var e = a.ob + a.rb; + d = L.fb[a.qb] = { + worker: b, + ob: a.ob, + rb: a.rb, + Fb: a.Fb, + jc: a.qb, + threadInfoStruct: a.qb, + }; + var g = d.threadInfoStruct >> 2; + Atomics.store(x(), g, 0); + Atomics.store(x(), g + 1, 0); + Atomics.store(x(), g + 2, 0); + Atomics.store(x(), g + 17, a.Pb); + Atomics.store(x(), g + 26, c); + Atomics.store(x(), g + 12, 0); + Atomics.store(x(), g + 10, d.threadInfoStruct); + Atomics.store(x(), g + 11, 42); + Atomics.store(x(), g + 27, a.rb); + Atomics.store(x(), g + 21, a.rb); + Atomics.store(x(), g + 20, e); + Atomics.store(x(), g + 29, e); + Atomics.store(x(), g + 30, a.Pb); + Atomics.store(x(), g + 32, a.hc); + Atomics.store(x(), g + 33, a.ic); + c = qd() + 40; + Atomics.store(x(), g + 44, c); + b.ab = d; + var h = { + cmd: 'run', + start_routine: a.Nc, + arg: a.sb, + threadInfoStruct: a.qb, + selfThreadId: a.qb, + parentThreadId: a.Dc, + stackBase: a.ob, + stackSize: a.rb, + }; + b.vb = function () { + h.time = performance.now(); + b.postMessage(h, a.Qc); + }; + b.loaded && (b.vb(), delete b.vb); + } + function rd() { + return ab | 0; + } + z._pthread_self = rd; + function sd(a, b) { + if (!a) return G('pthread_join attempted on a null thread pointer!'), 71; + if (D && selfThreadId == a) + return G('PThread ' + a + ' is attempting to join to itself!'), 16; + if (!D && L.$a == a) + return G('Main thread ' + a + ' is attempting to join to itself!'), 16; + if (w()[(a + 12) >> 2] !== a) + return ( + G( + 'pthread_join attempted on thread ' + + a + + ', which does not point to a valid thread, or does not exist anymore!', + ), + 71 + ); + if (Atomics.load(x(), (a + 68) >> 2)) + return ( + G('Attempted to join thread ' + a + ', which was already detached!'), + 28 + ); + for (;;) { + var c = Atomics.load(x(), (a + 0) >> 2); + if (1 == c) + return ( + (c = Atomics.load(x(), (a + 4) >> 2)), + b && (w()[b >> 2] = c), + Atomics.store(x(), (a + 68) >> 2, 1), + D ? postMessage({ cmd: 'cleanupThread', thread: a }) : fb(a), + 0 + ); + if ( + D && + threadInfoStruct && + !Atomics.load(x(), (threadInfoStruct + 60) >> 2) && + 2 == Atomics.load(x(), (threadInfoStruct + 0) >> 2) + ) + throw 'Canceled!'; + D || jb(); + Xc(a + 0, c, D ? 100 : 1); + } + } + D || L.wc(); + function Pb(a, b, c, d) { + a || (a = this); + this.parent = a; + this.ib = a.ib; + this.Ab = null; + this.id = Gb++; + this.name = b; + this.mode = c; + this.Va = {}; + this.Wa = {}; + this.Bb = d; + } + Object.defineProperties(Pb.prototype, { + read: { + get: function () { + return 365 === (this.mode & 365); + }, + set: function (a) { + a ? (this.mode |= 365) : (this.mode &= -366); + }, + }, + write: { + get: function () { + return 146 === (this.mode & 146); + }, + set: function (a) { + a ? (this.mode |= 146) : (this.mode &= -147); + }, + }, + }); + cc(); + Hb = Array(4096); + Wb(R, '/'); + S('/tmp'); + S('/home'); + S('/home/web_user'); + (function () { + S('/dev'); + vb(259, { + read: function () { + return 0; + }, + write: function (b, c, d, e) { + return e; + }, + }); + Yb('/dev/null', 259); + ub(1280, xb); + ub(1536, yb); + Yb('/dev/tty', 1280); + Yb('/dev/tty1', 1536); + var a = rb(); + fc('random', a); + fc('urandom', a); + S('/dev/shm'); + S('/dev/shm/tmp'); + })(); + S('/proc'); + S('/proc/self'); + S('/proc/self/fd'); + Wb( + { + ib: function () { + var a = Ab('/proc/self', 'fd', 16895, 73); + a.Va = { + tb: function (b, c) { + var d = Fb[+c]; + if (!d) throw new Q(8); + b = { + parent: null, + ib: { $b: 'fake' }, + Va: { + ub: function () { + return d.path; + }, + }, + }; + return (b.parent = b); + }, + }; + return a; + }, + }, + '/proc/self/fd', + ); + yc = z.InternalError = xc('InternalError'); + for (var td = Array(256), ud = 0; 256 > ud; ++ud) + td[ud] = String.fromCharCode(ud); + Bc = td; + Cc = z.BindingError = xc('BindingError'); + z.count_emval_handles = function () { + for (var a = 0, b = 5; b < X.length; ++b) void 0 !== X[b] && ++a; + return a; + }; + z.get_first_emval = function () { + for (var a = 5; a < X.length; ++a) if (void 0 !== X[a]) return X[a]; + return null; + }; + Oc = z.UnboundTypeError = xc('UnboundTypeError'); + var vd = [null, lc, nc, oc, fd, md, nd, od, pd]; + D || + La.push({ + pc: function () { + wd(); + }, + }); + var Gd = { + m: function (a, b, c, d) { + H( + 'Assertion failed: ' + + I(a) + + ', at: ' + + [b ? I(b) : 'unknown filename', c, d ? I(d) : 'unknown function'], + ); + }, + fa: function (a, b) { + return mb(a, b); + }, + C: lc, + Y: nc, + Z: oc, + K: function (a) { + var b = pc[a]; + delete pc[a]; + var c = b.Ec, + d = b.Fc, + e = b.Sb, + g = e + .map(function (h) { + return h.tc; + }) + .concat( + e.map(function (h) { + return h.Lc; + }), + ); + zc([a], g, function (h) { + var k = {}; + e.forEach(function (l, q) { + var r = h[q], + v = l.rc, + y = l.sc, + B = h[q + e.length], + u = l.Kc, + N = l.Mc; + k[l.oc] = { + read: function (E) { + return r.fromWireType(v(y, E)); + }, + write: function (E, C) { + var va = []; + u(N, E, B.toWireType(va, C)); + qc(va); + }, + }; + }); + return [ + { + name: b.name, + fromWireType: function (l) { + var q = {}, + r; + for (r in k) q[r] = k[r].read(l); + d(l); + return q; + }, + toWireType: function (l, q) { + for (var r in k) + if (!(r in q)) + throw new TypeError('Missing field: "' + r + '"'); + var v = c(); + for (r in k) k[r].write(v, q[r]); + null !== l && l.push(d, v); + return v; + }, + argPackAdvance: 8, + readValueFromPointer: rc, + hb: d, + }, + ]; + }); + }, + aa: function (a, b, c, d, e) { + var g = Ac(c); + b = V(b); + U(a, { + name: b, + fromWireType: function (h) { + return !!h; + }, + toWireType: function (h, k) { + return k ? d : e; + }, + argPackAdvance: 8, + readValueFromPointer: function (h) { + if (1 === c) var k = f(); + else if (2 === c) k = ca(); + else if (4 === c) k = w(); + else throw new TypeError('Unknown boolean type size: ' + b); + return this.fromWireType(k[h >> g]); + }, + hb: null, + }); + }, + $: function (a, b) { + b = V(b); + U(a, { + name: b, + fromWireType: function (c) { + var d = X[c].value; + Ec(c); + return d; + }, + toWireType: function (c, d) { + return Fc(d); + }, + argPackAdvance: 8, + readValueFromPointer: rc, + hb: null, + }); + }, + F: function (a, b, c) { + c = Ac(c); + b = V(b); + U(a, { + name: b, + fromWireType: function (d) { + return d; + }, + toWireType: function (d, e) { + if ('number' !== typeof e && 'boolean' !== typeof e) + throw new TypeError( + 'Cannot convert "' + Gc(e) + '" to ' + this.name, + ); + return e; + }, + argPackAdvance: 8, + readValueFromPointer: Hc(b, c), + hb: null, + }); + }, + J: function (a, b, c, d, e, g) { + var h = Lc(b, c); + a = V(a); + e = Nc(d, e); + Kc( + a, + function () { + Rc('Cannot call ' + a + ' due to unbound types', h); + }, + b - 1, + ); + zc([], h, function (k) { + var l = a, + q = a; + k = [k[0], null].concat(k.slice(1)); + var r = e, + v = k.length; + 2 > v && + W( + "argTypes array size mismatch! Must at least get return value and 'this' types!", + ); + for (var y = null !== k[1] && !1, B = !1, u = 1; u < k.length; ++u) + if (null !== k[u] && void 0 === k[u].hb) { + B = !0; + break; + } + var N = 'void' !== k[0].name, + E = '', + C = ''; + for (u = 0; u < v - 2; ++u) + (E += (0 !== u ? ', ' : '') + 'arg' + u), + (C += (0 !== u ? ', ' : '') + 'arg' + u + 'Wired'); + q = + 'return function ' + + vc(q) + + '(' + + E + + ') {\nif (arguments.length !== ' + + (v - 2) + + ") {\nthrowBindingError('function " + + q + + " called with ' + arguments.length + ' arguments, expected " + + (v - 2) + + " args!');\n}\n"; + B && (q += 'var destructors = [];\n'); + var va = B ? 'destructors' : 'null'; + E = 'throwBindingError invoker fn runDestructors retType classParam'.split( + ' ', + ); + r = [W, r, g, qc, k[0], k[1]]; + y && + (q += 'var thisWired = classParam.toWireType(' + va + ', this);\n'); + for (u = 0; u < v - 2; ++u) + (q += + 'var arg' + + u + + 'Wired = argType' + + u + + '.toWireType(' + + va + + ', arg' + + u + + '); // ' + + k[u + 2].name + + '\n'), + E.push('argType' + u), + r.push(k[u + 2]); + y && (C = 'thisWired' + (0 < C.length ? ', ' : '') + C); + q += + (N ? 'var rv = ' : '') + + 'invoker(fn' + + (0 < C.length ? ', ' : '') + + C + + ');\n'; + if (B) q += 'runDestructors(destructors);\n'; + else + for (u = y ? 1 : 2; u < k.length; ++u) + (v = 1 === u ? 'thisWired' : 'arg' + (u - 2) + 'Wired'), + null !== k[u].hb && + ((q += v + '_dtor(' + v + '); // ' + k[u].name + '\n'), + E.push(v + '_dtor'), + r.push(k[u].hb)); + N && (q += 'var ret = retType.fromWireType(rv);\nreturn ret;\n'); + E.push(q + '}\n'); + k = Ic(E).apply(null, r); + u = b - 1; + if (!z.hasOwnProperty(l)) + throw new yc('Replacing nonexistant public symbol'); + void 0 !== z[l].eb && void 0 !== u + ? (z[l].eb[u] = k) + : ((z[l] = k), (z[l].lc = u)); + return []; + }); + }, + n: function (a, b, c, d, e) { + function g(q) { + return q; + } + b = V(b); + -1 === e && (e = 4294967295); + var h = Ac(c); + if (0 === d) { + var k = 32 - 8 * c; + g = function (q) { + return (q << k) >>> k; + }; + } + var l = -1 != b.indexOf('unsigned'); + U(a, { + name: b, + fromWireType: g, + toWireType: function (q, r) { + if ('number' !== typeof r && 'boolean' !== typeof r) + throw new TypeError( + 'Cannot convert "' + Gc(r) + '" to ' + this.name, + ); + if (r < d || r > e) + throw new TypeError( + 'Passing a number "' + + Gc(r) + + '" from JS side to C/C++ side to an argument of type "' + + b + + '", which is outside the valid range [' + + d + + ', ' + + e + + ']!', + ); + return l ? r >>> 0 : r | 0; + }, + argPackAdvance: 8, + readValueFromPointer: Sc(b, h, 0 !== d), + hb: null, + }); + }, + k: function (a, b, c) { + function d(g) { + g >>= 2; + var h = x(); + return new e(n, h[g + 1], h[g]); + } + var e = [ + Int8Array, + Uint8Array, + Int16Array, + Uint16Array, + Int32Array, + Uint32Array, + Float32Array, + Float64Array, + ][b]; + c = V(c); + U( + a, + { + name: c, + fromWireType: d, + argPackAdvance: 8, + readValueFromPointer: d, + }, + { uc: !0 }, + ); + }, + G: function (a, b) { + b = V(b); + var c = 'std::string' === b; + U(a, { + name: b, + fromWireType: function (d) { + var e = x()[d >> 2]; + if (c) + for (var g = d + 4, h = 0; h <= e; ++h) { + var k = d + 4 + h; + if (h == e || 0 == t()[k]) { + g = I(g, k - g); + if (void 0 === l) var l = g; + else (l += String.fromCharCode(0)), (l += g); + g = k + 1; + } + } + else { + l = Array(e); + for (h = 0; h < e; ++h) + l[h] = String.fromCharCode(t()[d + 4 + h]); + l = l.join(''); + } + O(d); + return l; + }, + toWireType: function (d, e) { + e instanceof ArrayBuffer && (e = new Uint8Array(e)); + var g = 'string' === typeof e; + g || + e instanceof Uint8Array || + e instanceof Uint8ClampedArray || + e instanceof Int8Array || + W('Cannot pass non-string to std::string'); + var h = (c && g + ? function () { + return Ca(e); + } + : function () { + return e.length; + })(), + k = M(4 + h + 1); + x()[k >> 2] = h; + if (c && g) Ba(e, k + 4, h + 1); + else if (g) + for (g = 0; g < h; ++g) { + var l = e.charCodeAt(g); + 255 < l && + (O(k), + W('String has UTF-16 code units that do not fit in 8 bits')); + t()[k + 4 + g] = l; + } + else for (g = 0; g < h; ++g) t()[k + 4 + g] = e[g]; + null !== d && d.push(O, k); + return k; + }, + argPackAdvance: 8, + readValueFromPointer: rc, + hb: function (d) { + O(d); + }, + }); + }, + x: function (a, b, c) { + c = V(c); + if (2 === b) { + var d = Da; + var e = Ea; + var g = Fa; + var h = function () { + return ea(); + }; + var k = 1; + } else + 4 === b && + ((d = Ga), + (e = Ha), + (g = Ia), + (h = function () { + return x(); + }), + (k = 2)); + U(a, { + name: c, + fromWireType: function (l) { + for ( + var q = x()[l >> 2], r = h(), v, y = l + 4, B = 0; + B <= q; + ++B + ) { + var u = l + 4 + B * b; + if (B == q || 0 == r[u >> k]) + (y = d(y, u - y)), + void 0 === v + ? (v = y) + : ((v += String.fromCharCode(0)), (v += y)), + (y = u + b); + } + O(l); + return v; + }, + toWireType: function (l, q) { + 'string' !== typeof q && + W('Cannot pass non-string to C++ string type ' + c); + var r = g(q), + v = M(4 + r + b); + x()[v >> 2] = r >> k; + e(q, v + 4, r + b); + null !== l && l.push(O, v); + return v; + }, + argPackAdvance: 8, + readValueFromPointer: rc, + hb: function (l) { + O(l); + }, + }); + }, + N: function (a, b, c, d, e, g) { + pc[a] = { name: V(b), Ec: Nc(c, d), Fc: Nc(e, g), Sb: [] }; + }, + p: function (a, b, c, d, e, g, h, k, l, q) { + pc[a].Sb.push({ + oc: V(b), + tc: c, + rc: Nc(d, e), + sc: g, + Lc: h, + Kc: Nc(k, l), + Mc: q, + }); + }, + ba: function (a, b) { + b = V(b); + U(a, { + gd: !0, + name: b, + argPackAdvance: 0, + fromWireType: function () {}, + toWireType: function () {}, + }); + }, + T: function (a, b) { + if (a == b) postMessage({ cmd: 'processQueuedMainThreadWork' }); + else if (D) postMessage({ targetThread: a, cmd: 'processThreadQueue' }); + else { + a = (a = L.fb[a]) && a.worker; + if (!a) return; + a.postMessage({ cmd: 'processThreadQueue' }); + } + return 1; + }, + w: Ec, + _: function (a) { + if (0 === a) return Fc(Uc()); + var b = Tc[a]; + a = void 0 === b ? V(a) : b; + return Fc(Uc()[a]); + }, + I: function (a) { + 4 < a && (X[a].Lb += 1); + }, + U: function (a, b, c, d) { + a || W('Cannot use deleted val. handle = ' + a); + a = X[a].value; + var e = Wc[b]; + if (!e) { + e = ''; + for (var g = 0; g < b; ++g) e += (0 !== g ? ', ' : '') + 'arg' + g; + var h = + 'return function emval_allocator_' + + b + + '(constructor, argTypes, args) {\n'; + for (g = 0; g < b; ++g) + h += + 'var argType' + + g + + " = requireRegisteredType(Module['HEAP32'][(argTypes >>> 2) + " + + g + + '], "parameter ' + + g + + '");\nvar arg' + + g + + ' = argType' + + g + + '.readValueFromPointer(args);\nargs += argType' + + g + + "['argPackAdvance'];\n"; + e = new Function( + 'requireRegisteredType', + 'Module', + '__emval_register', + h + + ('var obj = new constructor(' + + e + + ');\nreturn __emval_register(obj);\n}\n'), + )(Vc, z, Fc); + Wc[b] = e; + } + return e(a, c, d); + }, + o: function () { + H(); + }, + t: function (a, b, c) { + ad.length = 0; + var d; + for (c >>= 2; (d = t()[b++]); ) + (d = 105 > d) && c & 1 && c++, + ad.push(d ? la()[c++ >> 1] : w()[c]), + ++c; + return Ya[a].apply(null, ad); + }, + W: function () {}, + A: function () {}, + h: Xc, + i: eb, + f: lb, + v: function () { + return cb | 0; + }, + u: function () { + return bb | 0; + }, + j: function (a, b) { + Z(a, b || 1); + throw 'longjmp'; + }, + P: function (a, b, c) { + t().copyWithin(a, b, b + c); + }, + ea: function () { + return navigator.hardwareConcurrency; + }, + Q: function (a, b, c) { + $c.length = b; + c >>= 3; + for (var d = 0; d < b; d++) $c[d] = la()[c + d]; + return (0 > a ? Ya[-a - 1] : vd[a]).apply(null, $c); + }, + q: function (a) { + a >>>= 0; + var b = t().length; + if (a <= b || 2147483648 < a) return !1; + for (var c = 1; 4 >= c; c *= 2) { + var d = b * (1 + 0.2 / c); + d = Math.min(d, a + 100663296); + d = Math.max(16777216, a, d); + 0 < d % 65536 && (d += 65536 - (d % 65536)); + a: { + try { + m.grow((Math.min(2147483648, d) - n.byteLength + 65535) >>> 16); + p(m.buffer); + var e = 1; + break a; + } catch (g) {} + e = void 0; + } + if (e) return !0; + } + return !1; + }, + R: function (a, b, c) { + return cd(a) ? dd(a, b, c) : fd(a, b, c); + }, + g: function () {}, + S: function (a, b) { + var c = {}; + b >>= 2; + c.alpha = !!w()[b]; + c.depth = !!w()[b + 1]; + c.stencil = !!w()[b + 2]; + c.antialias = !!w()[b + 3]; + c.premultipliedAlpha = !!w()[b + 4]; + c.preserveDrawingBuffer = !!w()[b + 5]; + var d = w()[b + 6]; + c.powerPreference = ld[d]; + c.failIfMajorPerformanceCaveat = !!w()[b + 7]; + c.Ac = w()[b + 8]; + c.jd = w()[b + 9]; + c.Qb = w()[b + 10]; + c.nc = w()[b + 11]; + c.pd = w()[b + 12]; + c.rd = w()[b + 13]; + a = cd(a); + !a || c.nc + ? (c = 0) + : (a = a.getContext('webgl', c)) + ? ((b = M(8)), + (w()[(b + 4) >> 2] = ab | 0), + (d = { ed: b, attributes: c, version: c.Ac, wb: a }), + a.canvas && (a.canvas.xb = d), + ('undefined' === typeof c.Qb || c.Qb) && jd(d), + (c = b)) + : (c = 0); + return c; + }, + E: md, + X: nd, + L: od, + D: pd, + c: function () { + return ta | 0; + }, + O: function () { + L.xc(); + }, + z: xd, + M: yd, + y: zd, + r: Ad, + s: Bd, + l: Cd, + d: Dd, + a: m || z.wasmMemory, + V: function (a) { + var b = L.Eb.pop(); + a && b(); + }, + B: mb, + H: function (a, b, c, d) { + if ('undefined' === typeof SharedArrayBuffer) + return ( + G( + 'Current environment does not support SharedArrayBuffer, pthreads are not available!', + ), + 6 + ); + if (!a) + return G('pthread_create called with a null thread pointer!'), 28; + var e = []; + if (D && 0 === e.length) return Ed(687865856, a, b, c, d); + var g = 0, + h = 0, + k = 0, + l = 0; + if (b) { + var q = w()[b >> 2]; + q += 81920; + g = w()[(b + 8) >> 2]; + h = 0 !== w()[(b + 12) >> 2]; + if (0 === w()[(b + 16) >> 2]) { + var r = w()[(b + 20) >> 2], + v = w()[(b + 24) >> 2]; + k = b + 20; + l = b + 24; + var y = L.Gb ? L.Gb : ab | 0; + if (k || l) + if (y) + if (w()[(y + 12) >> 2] !== y) + G( + 'pthread_getschedparam attempted on thread ' + + y + + ', which does not point to a valid thread, or does not exist anymore!', + ); + else { + var B = Atomics.load(x(), (y + 108 + 20) >> 2); + y = Atomics.load(x(), (y + 108 + 24) >> 2); + k && (w()[k >> 2] = B); + l && (w()[l >> 2] = y); + } + else + G('pthread_getschedparam called with a null thread pointer!'); + k = w()[(b + 20) >> 2]; + l = w()[(b + 24) >> 2]; + w()[(b + 20) >> 2] = r; + w()[(b + 24) >> 2] = v; + } else (k = w()[(b + 20) >> 2]), (l = w()[(b + 24) >> 2]); + } else q = 2097152; + (b = 0 == g) ? (g = Fd(16, q)) : ((g -= q), ya(0 < g)); + r = M(232); + for (v = 0; 58 > v; ++v) x()[(r >> 2) + v] = 0; + w()[a >> 2] = r; + w()[(r + 12) >> 2] = r; + a = r + 156; + w()[a >> 2] = a; + c = { + ob: g, + rb: q, + Fb: b, + hc: k, + ic: l, + Pb: h, + Nc: c, + qb: r, + Dc: ab | 0, + sb: d, + Qc: e, + }; + D ? ((c.Xc = 'spawnThread'), postMessage(c, e)) : kb(c); + return 0; + }, + ca: function (a, b) { + return sd(a, b); + }, + e: rd, + b: function (a) { + ta = a | 0; + }, + da: function (a) { + var b = (Date.now() / 1e3) | 0; + a && (w()[a >> 2] = b); + return b; + }, + }; + (function () { + function a(e, g) { + z.asm = e.exports; + J = z.asm.ga; + wa = g; + if (!D) { + var h = L.bb.length; + L.bb.forEach(function (k) { + L.Xb(k, function () { + if ( + !--h && + (K--, + z.monitorRunDependencies && z.monitorRunDependencies(K), + 0 == K && (null !== Pa && (clearInterval(Pa), (Pa = null)), Qa)) + ) { + var l = Qa; + Qa = null; + l(); + } + }); + }); + } + } + function b(e) { + a(e.instance, e.module); + } + function c(e) { + return Ua() + .then(function (g) { + return WebAssembly.instantiate(g, d); + }) + .then(e, function (g) { + G('failed to asynchronously prepare wasm: ' + g); + H(g); + }); + } + var d = { a: Gd }; + D || + (ya(!D, 'addRunDependency cannot be used in a pthread worker'), + K++, + z.monitorRunDependencies && z.monitorRunDependencies(K)); + if (z.instantiateWasm) + try { + return z.instantiateWasm(d, a); + } catch (e) { + return ( + G('Module.instantiateWasm callback failed with error: ' + e), !1 + ); + } + (function () { + return ua || + 'function' !== typeof WebAssembly.instantiateStreaming || + Ra() || + 'function' !== typeof fetch + ? c(b) + : fetch(Sa, { credentials: 'same-origin' }).then(function (e) { + return WebAssembly.instantiateStreaming(e, d).then(b, function ( + g, + ) { + G('wasm streaming compile failed: ' + g); + G('falling back to ArrayBuffer instantiation'); + return c(b); + }); + }); + })().catch(oa); + return {}; + })(); + var wd = (z.___wasm_call_ctors = function () { + return (wd = z.___wasm_call_ctors = z.asm.ha).apply(null, arguments); + }), + M = (z._malloc = function () { + return (M = z._malloc = z.asm.ia).apply(null, arguments); + }), + O = (z._free = function () { + return (O = z._free = z.asm.ja).apply(null, arguments); + }), + Qc = (z.___getTypeName = function () { + return (Qc = z.___getTypeName = z.asm.ka).apply(null, arguments); + }); + z.___embind_register_native_and_builtin_types = function () { + return (z.___embind_register_native_and_builtin_types = z.asm.la).apply( + null, + arguments, + ); + }; + var qd = (z._emscripten_get_global_libc = function () { + return (qd = z._emscripten_get_global_libc = z.asm.ma).apply( + null, + arguments, + ); + }), + mc = (z.___errno_location = function () { + return (mc = z.___errno_location = z.asm.na).apply(null, arguments); + }); + z.___em_js__initPthreadsJS = function () { + return (z.___em_js__initPthreadsJS = z.asm.oa).apply(null, arguments); + }; + var Y = (z.stackSave = function () { + return (Y = z.stackSave = z.asm.pa).apply(null, arguments); + }), + P = (z.stackRestore = function () { + return (P = z.stackRestore = z.asm.qa).apply(null, arguments); + }), + Yc = (z.stackAlloc = function () { + return (Yc = z.stackAlloc = z.asm.ra).apply(null, arguments); + }), + Z = (z._setThrew = function () { + return (Z = z._setThrew = z.asm.sa).apply(null, arguments); + }), + Fd = (z._memalign = function () { + return (Fd = z._memalign = z.asm.ta).apply(null, arguments); + }); + z._emscripten_main_browser_thread_id = function () { + return (z._emscripten_main_browser_thread_id = z.asm.ua).apply( + null, + arguments, + ); + }; + var ib = (z.___pthread_tsd_run_dtors = function () { + return (ib = z.___pthread_tsd_run_dtors = z.asm.va).apply( + null, + arguments, + ); + }), + jb = (z._emscripten_main_thread_process_queued_calls = function () { + return (jb = z._emscripten_main_thread_process_queued_calls = + z.asm.wa).apply(null, arguments); + }); + z._emscripten_current_thread_process_queued_calls = function () { + return (z._emscripten_current_thread_process_queued_calls = + z.asm.xa).apply(null, arguments); + }; + var gb = (z._emscripten_register_main_browser_thread_id = function () { + return (gb = z._emscripten_register_main_browser_thread_id = + z.asm.ya).apply(null, arguments); + }), + Xa = (z._do_emscripten_dispatch_to_thread = function () { + return (Xa = z._do_emscripten_dispatch_to_thread = z.asm.za).apply( + null, + arguments, + ); + }); + z._emscripten_async_run_in_main_thread = function () { + return (z._emscripten_async_run_in_main_thread = z.asm.Aa).apply( + null, + arguments, + ); + }; + z._emscripten_sync_run_in_main_thread = function () { + return (z._emscripten_sync_run_in_main_thread = z.asm.Ba).apply( + null, + arguments, + ); + }; + z._emscripten_sync_run_in_main_thread_0 = function () { + return (z._emscripten_sync_run_in_main_thread_0 = z.asm.Ca).apply( + null, + arguments, + ); + }; + z._emscripten_sync_run_in_main_thread_1 = function () { + return (z._emscripten_sync_run_in_main_thread_1 = z.asm.Da).apply( + null, + arguments, + ); + }; + z._emscripten_sync_run_in_main_thread_2 = function () { + return (z._emscripten_sync_run_in_main_thread_2 = z.asm.Ea).apply( + null, + arguments, + ); + }; + z._emscripten_sync_run_in_main_thread_xprintf_varargs = function () { + return (z._emscripten_sync_run_in_main_thread_xprintf_varargs = + z.asm.Fa).apply(null, arguments); + }; + z._emscripten_sync_run_in_main_thread_3 = function () { + return (z._emscripten_sync_run_in_main_thread_3 = z.asm.Ga).apply( + null, + arguments, + ); + }; + var Ed = (z._emscripten_sync_run_in_main_thread_4 = function () { + return (Ed = z._emscripten_sync_run_in_main_thread_4 = z.asm.Ha).apply( + null, + arguments, + ); + }); + z._emscripten_sync_run_in_main_thread_5 = function () { + return (z._emscripten_sync_run_in_main_thread_5 = z.asm.Ia).apply( + null, + arguments, + ); + }; + z._emscripten_sync_run_in_main_thread_6 = function () { + return (z._emscripten_sync_run_in_main_thread_6 = z.asm.Ja).apply( + null, + arguments, + ); + }; + z._emscripten_sync_run_in_main_thread_7 = function () { + return (z._emscripten_sync_run_in_main_thread_7 = z.asm.Ka).apply( + null, + arguments, + ); + }; + var Zc = (z._emscripten_run_in_main_runtime_thread_js = function () { + return (Zc = z._emscripten_run_in_main_runtime_thread_js = + z.asm.La).apply(null, arguments); + }), + ed = (z.__emscripten_call_on_thread = function () { + return (ed = z.__emscripten_call_on_thread = z.asm.Ma).apply( + null, + arguments, + ); + }); + z._emscripten_tls_init = function () { + return (z._emscripten_tls_init = z.asm.Na).apply(null, arguments); + }; + z.dynCall_jiiiiiiiii = function () { + return (z.dynCall_jiiiiiiiii = z.asm.Oa).apply(null, arguments); + }; + z.dynCall_jiji = function () { + return (z.dynCall_jiji = z.asm.Pa).apply(null, arguments); + }; + z.dynCall_jiiiiiiii = function () { + return (z.dynCall_jiiiiiiii = z.asm.Qa).apply(null, arguments); + }; + z.dynCall_jiiiiii = function () { + return (z.dynCall_jiiiiii = z.asm.Ra).apply(null, arguments); + }; + z.dynCall_jiiiii = function () { + return (z.dynCall_jiiiii = z.asm.Sa).apply(null, arguments); + }; + z.dynCall_iiijii = function () { + return (z.dynCall_iiijii = z.asm.Ta).apply(null, arguments); + }; + var hb = (z._main_thread_futex = 877788); + function Bd(a, b) { + var c = Y(); + try { + J.get(a)(b); + } catch (d) { + P(c); + if (d !== d + 0 && 'longjmp' !== d) throw d; + Z(1, 0); + } + } + function Dd(a, b, c, d, e) { + var g = Y(); + try { + J.get(a)(b, c, d, e); + } catch (h) { + P(g); + if (h !== h + 0 && 'longjmp' !== h) throw h; + Z(1, 0); + } + } + function Cd(a, b, c) { + var d = Y(); + try { + J.get(a)(b, c); + } catch (e) { + P(d); + if (e !== e + 0 && 'longjmp' !== e) throw e; + Z(1, 0); + } + } + function Ad(a, b, c, d, e, g, h, k, l) { + var q = Y(); + try { + return J.get(a)(b, c, d, e, g, h, k, l); + } catch (r) { + P(q); + if (r !== r + 0 && 'longjmp' !== r) throw r; + Z(1, 0); + } + } + function xd(a, b, c) { + var d = Y(); + try { + return J.get(a)(b, c); + } catch (e) { + P(d); + if (e !== e + 0 && 'longjmp' !== e) throw e; + Z(1, 0); + } + } + function zd(a, b, c, d, e) { + var g = Y(); + try { + return J.get(a)(b, c, d, e); + } catch (h) { + P(g); + if (h !== h + 0 && 'longjmp' !== h) throw h; + Z(1, 0); + } + } + function yd(a, b, c, d) { + var e = Y(); + try { + return J.get(a)(b, c, d); + } catch (g) { + P(e); + if (g !== g + 0 && 'longjmp' !== g) throw g; + Z(1, 0); + } + } + z.PThread = L; + z.PThread = L; + z._pthread_self = rd; + z.wasmMemory = m; + z.ExitStatus = Hd; + var Id; + function Hd(a) { + this.name = 'ExitStatus'; + this.message = 'Program terminated with exit(' + a + ')'; + this.status = a; + } + Qa = function Jd() { + Id || Kd(); + Id || (Qa = Jd); + }; + function Kd() { + function a() { + if (!Id && ((Id = !0), (z.calledRun = !0), !xa)) { + z.noFSInit || + dc || + ((dc = !0), + cc(), + (z.stdin = z.stdin), + (z.stdout = z.stdout), + (z.stderr = z.stderr), + z.stdin ? fc('stdin', z.stdin) : Zb('/dev/tty', '/dev/stdin'), + z.stdout + ? fc('stdout', null, z.stdout) + : Zb('/dev/tty', '/dev/stdout'), + z.stderr + ? fc('stderr', null, z.stderr) + : Zb('/dev/tty1', '/dev/stderr'), + $b('/dev/stdin', 'r'), + $b('/dev/stdout', 'w'), + $b('/dev/stderr', 'w')); + Za(La); + D || ((Ib = !1), Za(Ma)); + na(z); + if (z.onRuntimeInitialized) z.onRuntimeInitialized(); + if (!D) { + if (z.postRun) + for ( + 'function' == typeof z.postRun && (z.postRun = [z.postRun]); + z.postRun.length; + + ) { + var b = z.postRun.shift(); + Na.unshift(b); + } + Za(Na); + } + } + } + if (!(0 < K)) { + if (!D) { + if (z.preRun) + for ( + 'function' == typeof z.preRun && (z.preRun = [z.preRun]); + z.preRun.length; + + ) + Oa(); + Za(Ka); + } + 0 < K || + (z.setStatus + ? (z.setStatus('Running...'), + setTimeout(function () { + setTimeout(function () { + z.setStatus(''); + }, 1); + a(); + }, 1)) + : a()); + } + } + z.run = Kd; + if (z.preInit) + for ( + 'function' == typeof z.preInit && (z.preInit = [z.preInit]); + 0 < z.preInit.length; + + ) + z.preInit.pop()(); + D || (noExitRuntime = !0); + D ? L.yc() : Kd(); + + return avif_enc_mt.ready; + }; +})(); +export default avif_enc_mt; diff --git a/codecs/avif/enc/avif_enc_mt.wasm b/codecs/avif/enc/avif_enc_mt.wasm new file mode 100755 index 00000000..3f0bd522 Binary files /dev/null and b/codecs/avif/enc/avif_enc_mt.wasm differ diff --git a/codecs/avif/enc/avif_enc_mt.worker.js b/codecs/avif/enc/avif_enc_mt.worker.js new file mode 100644 index 00000000..6addb120 --- /dev/null +++ b/codecs/avif/enc/avif_enc_mt.worker.js @@ -0,0 +1,103 @@ +var threadInfoStruct = 0; +var selfThreadId = 0; +var parentThreadId = 0; +var initializedJS = false; +var Module = {}; +function threadPrintErr() { + var text = Array.prototype.slice.call(arguments).join(' '); + console.error(text); +} +function threadAlert() { + var text = Array.prototype.slice.call(arguments).join(' '); + postMessage({ cmd: 'alert', text: text, threadId: selfThreadId }); +} +var err = threadPrintErr; +this.alert = threadAlert; +Module['instantiateWasm'] = function (info, receiveInstance) { + var instance = new WebAssembly.Instance(Module['wasmModule'], info); + Module['wasmModule'] = null; + receiveInstance(instance); + return instance.exports; +}; +this.onmessage = function (e) { + try { + if (e.data.cmd === 'load') { + Module['wasmModule'] = e.data.wasmModule; + Module['wasmMemory'] = e.data.wasmMemory; + Module['buffer'] = Module['wasmMemory'].buffer; + Module['ENVIRONMENT_IS_PTHREAD'] = true; + import(e.data.urlOrBlob) + .then(function (avif_enc_mt) { + return avif_enc_mt.default(Module); + }) + .then(function (instance) { + Module = instance; + postMessage({ cmd: 'loaded' }); + }); + } else if (e.data.cmd === 'objectTransfer') { + Module['PThread'].receiveObjectTransfer(e.data); + } else if (e.data.cmd === 'run') { + Module['__performance_now_clock_drift'] = performance.now() - e.data.time; + threadInfoStruct = e.data.threadInfoStruct; + Module['registerPthreadPtr']( + threadInfoStruct, + /*isMainBrowserThread=*/ 0, + /*isMainRuntimeThread=*/ 0, + ); + selfThreadId = e.data.selfThreadId; + parentThreadId = e.data.parentThreadId; + var max = e.data.stackBase; + var top = e.data.stackBase + e.data.stackSize; + Module['establishStackSpace'](top, max); + Module['_emscripten_tls_init'](); + Module['PThread'].receiveObjectTransfer(e.data); + Module['PThread'].setThreadStatus(Module['_pthread_self'](), 1); + if (!initializedJS) { + Module['___embind_register_native_and_builtin_types'](); + initializedJS = true; + } + try { + var result = Module['dynCall']('ii', e.data.start_routine, [ + e.data.arg, + ]); + if (!Module['getNoExitRuntime']()) Module['PThread'].threadExit(result); + } catch (ex) { + if (ex === 'Canceled!') { + Module['PThread'].threadCancel(); + } else if (ex != 'unwind') { + Atomics.store( + Module['HEAPU32'], + (threadInfoStruct + 4) >> /*C_STRUCTS.pthread.threadExitCode*/ 2, + ex instanceof Module['ExitStatus'] ? ex.status : -2, + ); + /*A custom entry specific to Emscripten denoting that the thread crashed.*/ Atomics.store( + Module['HEAPU32'], + (threadInfoStruct + 0) >> /*C_STRUCTS.pthread.threadStatus*/ 2, + 1, + ); + Module['_emscripten_futex_wake']( + threadInfoStruct + 0, + /*C_STRUCTS.pthread.threadStatus*/ 2147483647, + ); + if (!(ex instanceof Module['ExitStatus'])) throw ex; + } + } + } else if (e.data.cmd === 'cancel') { + if (threadInfoStruct) { + Module['PThread'].threadCancel(); + } + } else if (e.data.target === 'setimmediate') { + } else if (e.data.cmd === 'processThreadQueue') { + if (threadInfoStruct) { + Module['_emscripten_current_thread_process_queued_calls'](); + } + } else { + err('worker.js received unknown command ' + e.data.cmd); + err(e.data); + } + } catch (ex) { + err('worker.js onmessage() captured an uncaught exception: ' + ex); + if (ex && ex.stack) err(ex.stack); + throw ex; + } +}; diff --git a/codecs/avif/helper.Makefile b/codecs/avif/helper.Makefile new file mode 100644 index 00000000..f0d46da2 --- /dev/null +++ b/codecs/avif/helper.Makefile @@ -0,0 +1,75 @@ +# This is a helper Makefile for building LibAVIF + LibAOM with given params. +# +# Params that must be supplied by the caller: +# $(CODEC_DIR) +# $(LIBAOM_DIR) +# $(BUILD_DIR) +# $(OUT_JS) +# $(OUT_CPP) +# $(LIBAOM_FLAGS) +# $(LIBAVIF_FLAGS) + +CODEC_BUILD_DIR := $(BUILD_DIR)/libavif +CODEC_OUT := $(CODEC_BUILD_DIR)/libavif.a + +LIBAOM_BUILD_DIR := $(BUILD_DIR)/libaom +LIBAOM_OUT := $(LIBAOM_BUILD_DIR)/libaom.a + +OUT_WASM = $(OUT_JS:.js=.wasm) +OUT_WORKER=$(OUT_JS:.js=.worker.js) + +.PHONY: all clean + +all: $(OUT_JS) + +$(OUT_JS): $(OUT_CPP) $(LIBAOM_OUT) $(CODEC_OUT) + $(CXX) \ + -I $(CODEC_DIR)/include \ + $(CXXFLAGS) \ + $(LDFLAGS) \ + $(OUT_FLAGS) \ + --bind \ + --closure 1 \ + -s ALLOW_MEMORY_GROWTH=1 \ + -s MODULARIZE=1 \ + -s TEXTDECODER=2 \ + -s ENVIRONMENT='worker' \ + -s EXPORT_ES6=1 \ + -s EXPORT_NAME="$(basename $(@F))" \ + -o $@ \ + $+ + +$(CODEC_OUT): $(CODEC_DIR)/CMakeLists.txt $(LIBAOM_OUT) + emcmake cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_SHARED_LIBS=0 \ + -DAVIF_CODEC_AOM=1 \ + -DAOM_LIBRARY=$(LIBAOM_OUT) \ + -DAOM_INCLUDE_DIR=$(LIBAOM_DIR) \ + $(LIBAVIF_FLAGS) \ + -B $(CODEC_BUILD_DIR) \ + $(CODEC_DIR) && \ + $(MAKE) -C $(CODEC_BUILD_DIR) + +$(LIBAOM_OUT): $(LIBAOM_DIR)/CMakeLists.txt + emcmake cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DENABLE_CCACHE=0 \ + -DAOM_TARGET_CPU=generic \ + -DENABLE_DOCS=0 \ + -DENABLE_TESTS=0 \ + -DENABLE_EXAMPLES=0 \ + -DENABLE_TOOLS=0 \ + -DCONFIG_ACCOUNTING=1 \ + -DCONFIG_INSPECTION=0 \ + -DCONFIG_RUNTIME_CPU_DETECT=0 \ + -DCONFIG_WEBM_IO=0 \ + $(LIBAOM_FLAGS) \ + -B $(LIBAOM_BUILD_DIR) \ + $(LIBAOM_DIR) && \ + $(MAKE) -C $(LIBAOM_BUILD_DIR) + +clean: + $(RM) $(OUT_JS) $(OUT_WASM) $(OUT_WORKER) + $(MAKE) -C $(CODEC_BUILD_DIR) clean + $(MAKE) -C $(LIBAOM_BUILD_DIR) clean diff --git a/codecs/build-rust.sh b/codecs/build-rust.sh index 0cbe3ffa..338403c3 100755 --- a/codecs/build-rust.sh +++ b/codecs/build-rust.sh @@ -1,4 +1,10 @@ set -e -docker build -t squoosh-rust - < ../rust.Dockerfile -docker run --rm -v $PWD:/src squoosh-rust "$@" +if [ ! -z "$RUST_IMG" ] +then + # Get part after ":" (https://stackoverflow.com/a/15149278/439965). + IMG_SUFFIX=-${RUST_IMG#*:} +fi +IMG_NAME=squoosh-rust$IMG_SUFFIX +docker build -t $IMG_NAME --build-arg RUST_IMG - < ../rust.Dockerfile +docker run --rm -v $PWD:/src $IMG_NAME "$@" diff --git a/codecs/cpp.Dockerfile b/codecs/cpp.Dockerfile index ea9dc563..946f5b45 100644 --- a/codecs/cpp.Dockerfile +++ b/codecs/cpp.Dockerfile @@ -1,8 +1,8 @@ -FROM emscripten/emsdk:2.0.3 +FROM emscripten/emsdk:2.0.8 RUN apt-get update && apt-get install -qqy autoconf libtool pkg-config -ENV CFLAGS "-Os -flto" +ENV CFLAGS "-O3 -flto" ENV CXXFLAGS "${CFLAGS} -std=c++17" -ENV LDFLAGS "${CFLAGS}" +ENV LDFLAGS "${CFLAGS} -s PTHREAD_POOL_SIZE=navigator.hardwareConcurrency" # Build and cache standard libraries with these flags RUN emcc ${CXXFLAGS} --bind -xc++ /dev/null -o /dev/null WORKDIR /src diff --git a/codecs/hqx/Dockerfile b/codecs/hqx/Dockerfile deleted file mode 100644 index 1d1bf545..00000000 --- a/codecs/hqx/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -# This is intentionally an old version of Rust. Newer versions -# generate _significantly_ bigger Wasm binaries. -FROM rust:1.37 -RUN rustup target add wasm32-unknown-unknown -RUN curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh - -RUN mkdir /opt/binaryen && \ - curl -L https://github.com/WebAssembly/binaryen/releases/download/1.38.32/binaryen-1.38.32-x86-linux.tar.gz | tar -xzf - -C /opt/binaryen --strip 1 - -ENV PATH="/opt/binaryen:${PATH}" -WORKDIR /src diff --git a/codecs/hqx/build.sh b/codecs/hqx/build.sh deleted file mode 100755 index d6acc9d4..00000000 --- a/codecs/hqx/build.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -set -e - -echo "=============================================" -echo "Compiling wasm" -echo "=============================================" -( - wasm-pack build --target web -- --verbose --locked - rm pkg/.gitignore -) -echo "=============================================" -echo "Compiling wasm done" -echo "=============================================" - -echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" -echo "Did you update your docker image?" -echo "Run \`docker pull ubuntu\`" -echo "Run \`docker pull rust\`" -echo "Run \`docker build -t squoosh-hqx .\`" -echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" diff --git a/codecs/hqx/package.json b/codecs/hqx/package.json index 61f6193e..291be308 100644 --- a/codecs/hqx/package.json +++ b/codecs/hqx/package.json @@ -1,7 +1,6 @@ { "name": "hqx", "scripts": { - "build:image": "docker build -t squoosh-hqx - < Dockerfile", - "build": "docker run --rm -v $(pwd):/src squoosh-hqx ./build.sh" + "build": "RUST_IMG=rust:1.40 ../build-rust.sh" } } diff --git a/codecs/hqx/pkg/squooshhqx_bg.wasm b/codecs/hqx/pkg/squooshhqx_bg.wasm index 2213c7e9..ab28fd7e 100644 Binary files a/codecs/hqx/pkg/squooshhqx_bg.wasm and b/codecs/hqx/pkg/squooshhqx_bg.wasm differ diff --git a/codecs/imagequant/imagequant.js b/codecs/imagequant/imagequant.js index 4d40c6db..d02df407 100644 --- a/codecs/imagequant/imagequant.js +++ b/codecs/imagequant/imagequant.js @@ -6,46 +6,41 @@ var Module = (function () { var e; e || (e = typeof Module !== 'undefined' ? Module : {}); - var aa, ba; + var aa, r; e.ready = new Promise(function (a, b) { aa = a; - ba = b; + r = b; }); - var r = {}, - t; - for (t in e) e.hasOwnProperty(t) && (r[t] = e[t]); - var u = '', - ca; - u = self.location.href; - _scriptDir && (u = _scriptDir); - 0 !== u.indexOf('blob:') - ? (u = u.substr(0, u.lastIndexOf('/') + 1)) - : (u = ''); - ca = function (a) { + var t = {}, + u; + for (u in e) e.hasOwnProperty(u) && (t[u] = e[u]); + var v = '', + ba; + v = self.location.href; + _scriptDir && (v = _scriptDir); + 0 !== v.indexOf('blob:') + ? (v = v.substr(0, v.lastIndexOf('/') + 1)) + : (v = ''); + ba = function (a) { var b = new XMLHttpRequest(); b.open('GET', a, !1); b.responseType = 'arraybuffer'; b.send(null); return new Uint8Array(b.response); }; - var da = e.print || console.log.bind(console), - v = e.printErr || console.warn.bind(console); - for (t in r) r.hasOwnProperty(t) && (e[t] = r[t]); - r = null; - var w; - e.wasmBinary && (w = e.wasmBinary); + var ca = e.print || console.log.bind(console), + w = e.printErr || console.warn.bind(console); + for (u in t) t.hasOwnProperty(u) && (e[u] = t[u]); + t = null; + var y; + e.wasmBinary && (y = e.wasmBinary); var noExitRuntime; e.noExitRuntime && (noExitRuntime = e.noExitRuntime); - 'object' !== typeof WebAssembly && y('no native wasm support detected'); - var z, - A = new WebAssembly.Table({ - initial: 46, - maximum: 46, - element: 'anyfunc', - }), - ea = !1, - fa = new TextDecoder('utf8'); - function ha(a, b, c) { + 'object' !== typeof WebAssembly && z('no native wasm support detected'); + var A, + da = !1, + ea = new TextDecoder('utf8'); + function fa(a, b, c) { var d = B; if (0 < c) { c = b + c - 1; @@ -79,13 +74,13 @@ var Module = (function () { d[b] = 0; } } - var ia = new TextDecoder('utf-16le'); - function ja(a, b) { + var ha = new TextDecoder('utf-16le'); + function ia(a, b) { var c = a >> 1; for (b = c + b / 2; !(c >= b) && D[c]; ) ++c; - return ia.decode(B.subarray(a, c << 1)); + return ha.decode(B.subarray(a, c << 1)); } - function ka(a, b, c) { + function ja(a, b, c) { void 0 === c && (c = 2147483647); if (2 > c) return 0; c -= 2; @@ -95,10 +90,10 @@ var Module = (function () { E[b >> 1] = 0; return b - d; } - function la(a) { + function ka(a) { return 2 * a.length; } - function ma(a, b) { + function la(a, b) { for (var c = 0, d = ''; !(c >= b / 4); ) { var f = F[(a + 4 * c) >> 2]; if (0 == f) break; @@ -110,7 +105,7 @@ var Module = (function () { } return d; } - function na(a, b, c) { + function ma(a, b, c) { void 0 === c && (c = 2147483647); if (4 > c) return 0; var d = b; @@ -128,7 +123,7 @@ var Module = (function () { F[b >> 2] = 0; return b - d; } - function oa(a) { + function na(a) { for (var b = 0, c = 0; c < a.length; ++c) { var d = a.charCodeAt(c); 55296 <= d && 57343 >= d && ++c; @@ -136,26 +131,27 @@ var Module = (function () { } return b; } - var G, H, B, E, D, F, J, pa, qa; + var G, oa, B, E, D, F, H, pa, qa; function ra(a) { G = a; - e.HEAP8 = H = new Int8Array(a); + e.HEAP8 = oa = new Int8Array(a); e.HEAP16 = E = new Int16Array(a); e.HEAP32 = F = new Int32Array(a); e.HEAPU8 = B = new Uint8Array(a); e.HEAPU16 = D = new Uint16Array(a); - e.HEAPU32 = J = new Uint32Array(a); + e.HEAPU32 = H = new Uint32Array(a); e.HEAPF32 = pa = new Float32Array(a); e.HEAPF64 = qa = new Float64Array(a); } var sa = e.INITIAL_MEMORY || 16777216; e.wasmMemory - ? (z = e.wasmMemory) - : (z = new WebAssembly.Memory({ initial: sa / 65536, maximum: 32768 })); - z && (G = z.buffer); + ? (A = e.wasmMemory) + : (A = new WebAssembly.Memory({ initial: sa / 65536, maximum: 32768 })); + A && (G = A.buffer); sa = G.byteLength; ra(G); - var ta = [], + var J, + ta = [], ua = [], va = [], wa = []; @@ -168,14 +164,14 @@ var Module = (function () { L = null; e.preloadedImages = {}; e.preloadedAudios = {}; - function y(a) { + function z(a) { if (e.onAbort) e.onAbort(a); - v(a); - ea = !0; + w(a); + da = !0; a = new WebAssembly.RuntimeError( 'abort(' + a + '). Build with -s ASSERTIONS=1 for more info.', ); - ba(a); + r(a); throw a; } function za() { @@ -187,19 +183,19 @@ var Module = (function () { var N = 'imagequant.wasm'; if (!za()) { var Aa = N; - N = e.locateFile ? e.locateFile(Aa, u) : u + Aa; + N = e.locateFile ? e.locateFile(Aa, v) : v + Aa; } function Ba() { try { - if (w) return new Uint8Array(w); - if (ca) return ca(N); + if (y) return new Uint8Array(y); + if (ba) return ba(N); throw 'both async and sync fetching of the wasm failed'; } catch (a) { - y(a); + z(a); } } function Ca() { - return w || 'function' !== typeof fetch + return y || 'function' !== typeof fetch ? Promise.resolve().then(Ba) : fetch(N, { credentials: 'same-origin' }) .then(function (a) { @@ -210,54 +206,21 @@ var Module = (function () { return Ba(); }); } - ua.push({ - M: function () { - Da(); - }, - }); function O(a) { for (; 0 < a.length; ) { var b = a.shift(); if ('function' == typeof b) b(e); else { - var c = b.M; + var c = b.J; 'number' === typeof c - ? void 0 === b.I - ? A.get(c)() - : A.get(c)(b.I) - : c(void 0 === b.I ? null : b.I); + ? void 0 === b.G + ? J.get(c)() + : J.get(c)(b.G) + : c(void 0 === b.G ? null : b.G); } } } - function Ea(a) { - this.H = a - 16; - this.U = function (b) { - F[(this.H + 8) >> 2] = b; - }; - this.R = function (b) { - F[(this.H + 0) >> 2] = b; - }; - this.S = function () { - F[(this.H + 4) >> 2] = 0; - }; - this.P = function () { - H[(this.H + 12) >> 0] = 0; - }; - this.T = function () { - H[(this.H + 13) >> 0] = 0; - }; - this.O = function (b, c) { - this.U(b); - this.R(c); - this.S(); - this.P(); - this.T(); - }; - } - function P() { - return 0 < P.K; - } - function Fa(a) { + function Da(a) { switch (a) { case 1: return 0; @@ -271,22 +234,22 @@ var Module = (function () { throw new TypeError('Unknown type size: ' + a); } } - var Ga = void 0; - function Q(a) { - for (var b = ''; B[a]; ) b += Ga[B[a++]]; + var Ea = void 0; + function P(a) { + for (var b = ''; B[a]; ) b += Ea[B[a++]]; return b; } - var R = {}, - S = {}, - T = {}; - function Ha(a) { + var Q = {}, + R = {}, + S = {}; + function Fa(a) { if (void 0 === a) return '_unknown'; a = a.replace(/[^a-zA-Z0-9_]/g, '$'); var b = a.charCodeAt(0); return 48 <= b && 57 >= b ? '_' + a : a; } - function Ia(a, b) { - a = Ha(a); + function Ga(a, b) { + a = Fa(a); return new Function( 'body', 'return function ' + @@ -294,9 +257,9 @@ var Module = (function () { '() {\n "use strict"; return body.apply(this, arguments);\n};\n', )(b); } - function Ja(a) { + function Ha(a) { var b = Error, - c = Ia(a, function (d) { + c = Ga(a, function (d) { this.name = a; this.message = d; d = Error(d).stack; @@ -313,71 +276,71 @@ var Module = (function () { }; return c; } - var Ka = void 0; - function U(a) { - throw new Ka(a); + var Ia = void 0; + function T(a) { + throw new Ia(a); } - var La = void 0; - function Oa(a, b) { + var Ja = void 0; + function Ka(a, b) { function c(h) { h = b(h); if (h.length !== d.length) - throw new La('Mismatched type converter count'); - for (var p = 0; p < d.length; ++p) V(d[p], h[p]); + throw new Ja('Mismatched type converter count'); + for (var p = 0; p < d.length; ++p) U(d[p], h[p]); } var d = []; d.forEach(function (h) { - T[h] = a; + S[h] = a; }); var f = Array(a.length), g = [], l = 0; a.forEach(function (h, p) { - S.hasOwnProperty(h) - ? (f[p] = S[h]) + R.hasOwnProperty(h) + ? (f[p] = R[h]) : (g.push(h), - R.hasOwnProperty(h) || (R[h] = []), - R[h].push(function () { - f[p] = S[h]; + Q.hasOwnProperty(h) || (Q[h] = []), + Q[h].push(function () { + f[p] = R[h]; ++l; l === g.length && c(f); })); }); 0 === g.length && c(f); } - function V(a, b, c) { + function U(a, b, c) { c = c || {}; if (!('argPackAdvance' in b)) throw new TypeError( 'registerType registeredInstance requires argPackAdvance', ); var d = b.name; - a || U('type "' + d + '" must have a positive integer typeid pointer'); - if (S.hasOwnProperty(a)) { - if (c.N) return; - U("Cannot register type '" + d + "' twice"); + a || T('type "' + d + '" must have a positive integer typeid pointer'); + if (R.hasOwnProperty(a)) { + if (c.K) return; + T("Cannot register type '" + d + "' twice"); } - S[a] = b; - delete T[a]; - R.hasOwnProperty(a) && - ((b = R[a]), - delete R[a], + R[a] = b; + delete S[a]; + Q.hasOwnProperty(a) && + ((b = Q[a]), + delete Q[a], b.forEach(function (f) { f(); })); } - var Pa = [], - W = [ + var Na = [], + V = [ {}, { value: void 0 }, { value: null }, { value: !0 }, { value: !1 }, ]; - function Qa(a) { - 4 < a && 0 === --W[a].J && ((W[a] = void 0), Pa.push(a)); + function Oa(a) { + 4 < a && 0 === --V[a].H && ((V[a] = void 0), Na.push(a)); } - function X(a) { + function W(a) { switch (a) { case void 0: return 1; @@ -388,22 +351,22 @@ var Module = (function () { case !1: return 4; default: - var b = Pa.length ? Pa.pop() : W.length; - W[b] = { J: 1, value: a }; + var b = Na.length ? Na.pop() : V.length; + V[b] = { H: 1, value: a }; return b; } } - function Ra(a) { - return this.fromWireType(J[a >> 2]); + function Pa(a) { + return this.fromWireType(H[a >> 2]); } - function Sa(a) { + function Qa(a) { if (null === a) return 'null'; var b = typeof a; return 'object' === b || 'array' === b || 'function' === b ? a.toString() : '' + a; } - function Ta(a, b) { + function Ra(a, b) { switch (b) { case 2: return function (c) { @@ -417,7 +380,7 @@ var Module = (function () { throw new TypeError('Unknown float type: ' + a); } } - function Ua(a) { + function Sa(a) { var b = Function; if (!(b instanceof Function)) throw new TypeError( @@ -425,60 +388,60 @@ var Module = (function () { typeof b + ' which is not a function', ); - var c = Ia(b.name || 'unknownFunctionName', function () {}); + var c = Ga(b.name || 'unknownFunctionName', function () {}); c.prototype = b.prototype; c = new c(); a = b.apply(c, a); return a instanceof Object ? a : c; } - function Va(a) { + function Ta(a) { for (; a.length; ) { var b = a.pop(); a.pop()(b); } } - function Wa(a, b) { + function Ua(a, b) { var c = e; - if (void 0 === c[a].F) { + if (void 0 === c[a].D) { var d = c[a]; c[a] = function () { - c[a].F.hasOwnProperty(arguments.length) || - U( + c[a].D.hasOwnProperty(arguments.length) || + T( "Function '" + b + "' called with an invalid number of arguments (" + arguments.length + ') - expects one of (' + - c[a].F + + c[a].D + ')!', ); - return c[a].F[arguments.length].apply(this, arguments); + return c[a].D[arguments.length].apply(this, arguments); }; - c[a].F = []; - c[a].F[d.L] = d; + c[a].D = []; + c[a].D[d.I] = d; } } - function Xa(a, b, c) { + function Va(a, b, c) { e.hasOwnProperty(a) - ? ((void 0 === c || (void 0 !== e[a].F && void 0 !== e[a].F[c])) && - U("Cannot register public name '" + a + "' twice"), - Wa(a, a), + ? ((void 0 === c || (void 0 !== e[a].D && void 0 !== e[a].D[c])) && + T("Cannot register public name '" + a + "' twice"), + Ua(a, a), e.hasOwnProperty(c) && - U( + T( 'Cannot register multiple overloads of a function with the same number of arguments (' + c + ')!', ), - (e[a].F[c] = b)) - : ((e[a] = b), void 0 !== c && (e[a].W = c)); + (e[a].D[c] = b)) + : ((e[a] = b), void 0 !== c && (e[a].M = c)); } - function Ya(a, b) { + function Wa(a, b) { for (var c = [], d = 0; d < a; d++) c.push(F[(b >> 2) + d]); return c; } - function Za(a, b) { + function Xa(a, b) { 0 <= a.indexOf('j') || - y('Assertion failed: getDynCaller should only be called with i64 sigs'); + z('Assertion failed: getDynCaller should only be called with i64 sigs'); var c = []; return function () { c.length = arguments.length; @@ -489,39 +452,39 @@ var Module = (function () { c && c.length ? e['dynCall_' + a].apply(null, [b].concat(c)) : e['dynCall_' + a].call(null, b)) - : (f = A.get(b).apply(null, c)); + : (f = J.get(b).apply(null, c)); return f; }; } - function $a(a, b) { - a = Q(a); - var c = -1 != a.indexOf('j') ? Za(a, b) : A.get(b); + function Ya(a, b) { + a = P(a); + var c = -1 != a.indexOf('j') ? Xa(a, b) : J.get(b); 'function' !== typeof c && - U('unknown function pointer with signature ' + a + ': ' + b); + T('unknown function pointer with signature ' + a + ': ' + b); return c; } - var ab = void 0; - function bb(a) { - a = cb(a); - var b = Q(a); - Y(a); + var Za = void 0; + function $a(a) { + a = ab(a); + var b = P(a); + X(a); return b; } - function db(a, b) { + function bb(a, b) { function c(g) { - f[g] || S[g] || (T[g] ? T[g].forEach(c) : (d.push(g), (f[g] = !0))); + f[g] || R[g] || (S[g] ? S[g].forEach(c) : (d.push(g), (f[g] = !0))); } var d = [], f = {}; b.forEach(c); - throw new ab(a + ': ' + d.map(bb).join([', '])); + throw new Za(a + ': ' + d.map($a).join([', '])); } - function eb(a, b, c) { + function cb(a, b, c) { switch (b) { case 0: return c ? function (d) { - return H[d]; + return oa[d]; } : function (d) { return B[d]; @@ -540,52 +503,48 @@ var Module = (function () { return F[d >> 2]; } : function (d) { - return J[d >> 2]; + return H[d >> 2]; }; default: throw new TypeError('Unknown integer type: ' + a); } } - var fb = {}; - function gb() { + var db = {}; + function eb() { return 'object' === typeof globalThis ? globalThis : Function('return this')(); } - function hb(a, b) { - var c = S[a]; - void 0 === c && U(b + ' has unknown type ' + bb(a)); + function fb(a, b) { + var c = R[a]; + void 0 === c && T(b + ' has unknown type ' + $a(a)); return c; } - for (var ib = {}, jb = [null, [], []], kb = Array(256), Z = 0; 256 > Z; ++Z) - kb[Z] = String.fromCharCode(Z); - Ga = kb; - Ka = e.BindingError = Ja('BindingError'); - La = e.InternalError = Ja('InternalError'); + for (var gb = {}, hb = [null, [], []], ib = Array(256), Y = 0; 256 > Y; ++Y) + ib[Y] = String.fromCharCode(Y); + Ea = ib; + Ia = e.BindingError = Ha('BindingError'); + Ja = e.InternalError = Ha('InternalError'); e.count_emval_handles = function () { - for (var a = 0, b = 5; b < W.length; ++b) void 0 !== W[b] && ++a; + for (var a = 0, b = 5; b < V.length; ++b) void 0 !== V[b] && ++a; return a; }; e.get_first_emval = function () { - for (var a = 5; a < W.length; ++a) if (void 0 !== W[a]) return W[a]; + for (var a = 5; a < V.length; ++a) if (void 0 !== V[a]) return V[a]; return null; }; - ab = e.UnboundTypeError = Ja('UnboundTypeError'); - var mb = { - p: function (a) { - return lb(a + 16) + 16; + Za = e.UnboundTypeError = Ha('UnboundTypeError'); + ua.push({ + J: function () { + jb(); }, - y: function () {}, - o: function (a, b, c) { - new Ea(a).O(b, c); - 'uncaught_exception' in P ? P.K++ : (P.K = 1); - throw a; - }, - b: A, - w: function (a, b, c, d, f) { - var g = Fa(c); - b = Q(b); - V(a, { + }); + var lb = { + o: function () {}, + p: function (a, b, c, d, f) { + var g = Da(c); + b = P(b); + U(a, { name: b, fromWireType: function (l) { return !!l; @@ -595,36 +554,36 @@ var Module = (function () { }, argPackAdvance: 8, readValueFromPointer: function (l) { - if (1 === c) var h = H; + if (1 === c) var h = oa; else if (2 === c) h = E; else if (4 === c) h = F; else throw new TypeError('Unknown boolean type size: ' + b); return this.fromWireType(h[l >> g]); }, - G: null, + F: null, }); }, v: function (a, b) { - b = Q(b); - V(a, { + b = P(b); + U(a, { name: b, fromWireType: function (c) { - var d = W[c].value; - Qa(c); + var d = V[c].value; + Oa(c); return d; }, toWireType: function (c, d) { - return X(d); + return W(d); }, argPackAdvance: 8, - readValueFromPointer: Ra, - G: null, + readValueFromPointer: Pa, + F: null, }); }, - j: function (a, b, c) { - c = Fa(c); - b = Q(b); - V(a, { + m: function (a, b, c) { + c = Da(c); + b = P(b); + U(a, { name: b, fromWireType: function (d) { return d; @@ -632,42 +591,42 @@ var Module = (function () { toWireType: function (d, f) { if ('number' !== typeof f && 'boolean' !== typeof f) throw new TypeError( - 'Cannot convert "' + Sa(f) + '" to ' + this.name, + 'Cannot convert "' + Qa(f) + '" to ' + this.name, ); return f; }, argPackAdvance: 8, - readValueFromPointer: Ta(b, c), - G: null, + readValueFromPointer: Ra(b, c), + F: null, }); }, f: function (a, b, c, d, f, g) { - var l = Ya(b, c); - a = Q(a); - f = $a(d, f); - Xa( + var l = Wa(b, c); + a = P(a); + f = Ya(d, f); + Va( a, function () { - db('Cannot call ' + a + ' due to unbound types', l); + bb('Cannot call ' + a + ' due to unbound types', l); }, b - 1, ); - Oa(l, function (h) { + Ka(l, function (h) { var p = a, k = a; h = [h[0], null].concat(h.slice(1)); var m = f, q = h.length; 2 > q && - U( + T( "argTypes array size mismatch! Must at least get return value and 'this' types!", ); for (var x = null !== h[1] && !1, C = !1, n = 1; n < h.length; ++n) - if (null !== h[n] && void 0 === h[n].G) { + if (null !== h[n] && void 0 === h[n].F) { C = !0; break; } - var Ma = 'void' !== h[0].name, + var La = 'void' !== h[0].name, I = '', M = ''; for (n = 0; n < q - 2; ++n) @@ -675,7 +634,7 @@ var Module = (function () { (M += (0 !== n ? ', ' : '') + 'arg' + n + 'Wired'); k = 'return function ' + - Ha(k) + + Fa(k) + '(' + I + ') {\nif (arguments.length !== ' + @@ -686,13 +645,13 @@ var Module = (function () { (q - 2) + " args!');\n}\n"; C && (k += 'var destructors = [];\n'); - var Na = C ? 'destructors' : 'null'; + var Ma = C ? 'destructors' : 'null'; I = 'throwBindingError invoker fn runDestructors retType classParam'.split( ' ', ); - m = [U, m, g, Va, h[0], h[1]]; + m = [T, m, g, Ta, h[0], h[1]]; x && - (k += 'var thisWired = classParam.toWireType(' + Na + ', this);\n'); + (k += 'var thisWired = classParam.toWireType(' + Ma + ', this);\n'); for (n = 0; n < q - 2; ++n) (k += 'var arg' + @@ -700,7 +659,7 @@ var Module = (function () { 'Wired = argType' + n + '.toWireType(' + - Na + + Ma + ', arg' + n + '); // ' + @@ -710,7 +669,7 @@ var Module = (function () { m.push(h[n + 2]); x && (M = 'thisWired' + (0 < M.length ? ', ' : '') + M); k += - (Ma ? 'var rv = ' : '') + + (La ? 'var rv = ' : '') + 'invoker(fn' + (0 < M.length ? ', ' : '') + M + @@ -719,29 +678,29 @@ var Module = (function () { else for (n = x ? 1 : 2; n < h.length; ++n) (q = 1 === n ? 'thisWired' : 'arg' + (n - 2) + 'Wired'), - null !== h[n].G && + null !== h[n].F && ((k += q + '_dtor(' + q + '); // ' + h[n].name + '\n'), I.push(q + '_dtor'), - m.push(h[n].G)); - Ma && (k += 'var ret = retType.fromWireType(rv);\nreturn ret;\n'); + m.push(h[n].F)); + La && (k += 'var ret = retType.fromWireType(rv);\nreturn ret;\n'); I.push(k + '}\n'); - h = Ua(I).apply(null, m); + h = Sa(I).apply(null, m); n = b - 1; if (!e.hasOwnProperty(p)) - throw new La('Replacing nonexistant public symbol'); - void 0 !== e[p].F && void 0 !== n - ? (e[p].F[n] = h) - : ((e[p] = h), (e[p].L = n)); + throw new Ja('Replacing nonexistant public symbol'); + void 0 !== e[p].D && void 0 !== n + ? (e[p].D[n] = h) + : ((e[p] = h), (e[p].I = n)); return []; }); }, - d: function (a, b, c, d, f) { + c: function (a, b, c, d, f) { function g(k) { return k; } - b = Q(b); + b = P(b); -1 === f && (f = 4294967295); - var l = Fa(c); + var l = Da(c); if (0 === d) { var h = 32 - 8 * c; g = function (k) { @@ -749,18 +708,18 @@ var Module = (function () { }; } var p = -1 != b.indexOf('unsigned'); - V(a, { + U(a, { name: b, fromWireType: g, toWireType: function (k, m) { if ('number' !== typeof m && 'boolean' !== typeof m) throw new TypeError( - 'Cannot convert "' + Sa(m) + '" to ' + this.name, + 'Cannot convert "' + Qa(m) + '" to ' + this.name, ); if (m < d || m > f) throw new TypeError( 'Passing a number "' + - Sa(m) + + Qa(m) + '" from JS side to C/C++ side to an argument of type "' + b + '", which is outside the valid range [' + @@ -772,14 +731,14 @@ var Module = (function () { return p ? m >>> 0 : m | 0; }, argPackAdvance: 8, - readValueFromPointer: eb(b, l, 0 !== d), - G: null, + readValueFromPointer: cb(b, l, 0 !== d), + F: null, }); }, - c: function (a, b, c) { + b: function (a, b, c) { function d(g) { g >>= 2; - var l = J; + var l = H; return new f(G, l[g + 1], l[g]); } var f = [ @@ -792,8 +751,8 @@ var Module = (function () { Float32Array, Float64Array, ][b]; - c = Q(c); - V( + c = P(c); + U( a, { name: c, @@ -801,23 +760,23 @@ var Module = (function () { argPackAdvance: 8, readValueFromPointer: d, }, - { N: !0 }, + { K: !0 }, ); }, - k: function (a, b) { - b = Q(b); + i: function (a, b) { + b = P(b); var c = 'std::string' === b; - V(a, { + U(a, { name: b, fromWireType: function (d) { - var f = J[d >> 2]; + var f = H[d >> 2]; if (c) for (var g = d + 4, l = 0; l <= f; ++l) { var h = d + 4 + l; if (l == f || 0 == B[h]) { if (g) { for (var p = g + (h - g), k = g; !(k >= p) && B[k]; ) ++k; - g = fa.decode(B.subarray(g, k)); + g = ea.decode(B.subarray(g, k)); } else g = ''; if (void 0 === m) var m = g; else (m += String.fromCharCode(0)), (m += g); @@ -829,7 +788,7 @@ var Module = (function () { for (l = 0; l < f; ++l) m[l] = String.fromCharCode(B[d + 4 + l]); m = m.join(''); } - Y(d); + X(d); return m; }, toWireType: function (d, f) { @@ -839,7 +798,7 @@ var Module = (function () { f instanceof Uint8Array || f instanceof Uint8ClampedArray || f instanceof Int8Array || - U('Cannot pass non-string to std::string'); + T('Cannot pass non-string to std::string'); var l = (c && g ? function () { for (var k = 0, m = 0; m < f.length; ++m) { @@ -858,51 +817,51 @@ var Module = (function () { : function () { return f.length; })(), - h = lb(4 + l + 1); - J[h >> 2] = l; - if (c && g) ha(f, h + 4, l + 1); + h = kb(4 + l + 1); + H[h >> 2] = l; + if (c && g) fa(f, h + 4, l + 1); else if (g) for (g = 0; g < l; ++g) { var p = f.charCodeAt(g); 255 < p && - (Y(h), - U('String has UTF-16 code units that do not fit in 8 bits')); + (X(h), + T('String has UTF-16 code units that do not fit in 8 bits')); B[h + 4 + g] = p; } else for (g = 0; g < l; ++g) B[h + 4 + g] = f[g]; - null !== d && d.push(Y, h); + null !== d && d.push(X, h); return h; }, argPackAdvance: 8, - readValueFromPointer: Ra, - G: function (d) { - Y(d); + readValueFromPointer: Pa, + F: function (d) { + X(d); }, }); }, - g: function (a, b, c) { - c = Q(c); + h: function (a, b, c) { + c = P(c); if (2 === b) { - var d = ja; - var f = ka; - var g = la; + var d = ia; + var f = ja; + var g = ka; var l = function () { return D; }; var h = 1; } else 4 === b && - ((d = ma), - (f = na), - (g = oa), + ((d = la), + (f = ma), + (g = na), (l = function () { - return J; + return H; }), (h = 2)); - V(a, { + U(a, { name: c, fromWireType: function (p) { - for (var k = J[p >> 2], m = l(), q, x = p + 4, C = 0; C <= k; ++C) { + for (var k = H[p >> 2], m = l(), q, x = p + 4, C = 0; C <= k; ++C) { var n = p + 4 + C * b; if (C == k || 0 == m[n >> h]) (x = d(x, n - x)), @@ -911,50 +870,50 @@ var Module = (function () { : ((q += String.fromCharCode(0)), (q += x)), (x = n + b); } - Y(p); + X(p); return q; }, toWireType: function (p, k) { 'string' !== typeof k && - U('Cannot pass non-string to C++ string type ' + c); + T('Cannot pass non-string to C++ string type ' + c); var m = g(k), - q = lb(4 + m + b); - J[q >> 2] = m >> h; + q = kb(4 + m + b); + H[q >> 2] = m >> h; f(k, q + 4, m + b); - null !== p && p.push(Y, q); + null !== p && p.push(X, q); return q; }, argPackAdvance: 8, - readValueFromPointer: Ra, - G: function (p) { - Y(p); + readValueFromPointer: Pa, + F: function (p) { + X(p); }, }); }, - l: function (a, b) { - b = Q(b); - V(a, { - V: !0, + q: function (a, b) { + b = P(b); + U(a, { + L: !0, name: b, argPackAdvance: 0, fromWireType: function () {}, toWireType: function () {}, }); }, - t: Qa, - x: function (a) { - if (0 === a) return X(gb()); - var b = fb[a]; - a = void 0 === b ? Q(a) : b; - return X(gb()[a]); + g: Oa, + n: function (a) { + if (0 === a) return W(eb()); + var b = db[a]; + a = void 0 === b ? P(a) : b; + return W(eb()[a]); }, - m: function (a) { - 4 < a && (W[a].J += 1); + j: function (a) { + 4 < a && (V[a].H += 1); }, - n: function (a, b, c, d) { - a || U('Cannot use deleted val. handle = ' + a); - a = W[a].value; - var f = ib[b]; + k: function (a, b, c, d) { + a || T('Cannot use deleted val. handle = ' + a); + a = V[a].value; + var f = gb[b]; if (!f) { f = ''; for (var g = 0; g < b; ++g) f += (0 !== g ? ', ' : '') + 'arg' + g; @@ -985,18 +944,18 @@ var Module = (function () { ('var obj = new constructor(' + f + ');\nreturn __emval_register(obj);\n}\n'), - )(hb, e, X); - ib[b] = f; + )(fb, e, W); + gb[b] = f; } return f(a, c, d); }, - h: function () { - y(); + e: function () { + z(); }, - s: function (a, b, c) { + t: function (a, b, c) { B.copyWithin(a, b, b + c); }, - e: function (a) { + d: function (a) { a >>>= 0; var b = B.length; if (2147483648 < a) return !1; @@ -1007,8 +966,8 @@ var Module = (function () { 0 < d % 65536 && (d += 65536 - (d % 65536)); a: { try { - z.grow((Math.min(2147483648, d) - G.byteLength + 65535) >>> 16); - ra(z.buffer); + A.grow((Math.min(2147483648, d) - G.byteLength + 65535) >>> 16); + ra(A.buffer); var f = 1; break a; } catch (g) {} @@ -1021,8 +980,8 @@ var Module = (function () { u: function () { return 0; }, - q: function () {}, - i: function (a, b, c, d) { + r: function () {}, + l: function (a, b, c, d) { for (var f = 0, g = 0; g < c; g++) { for ( var l = F[(b + 8 * g) >> 2], h = F[(b + (8 * g + 4)) >> 2], p = 0; @@ -1030,13 +989,13 @@ var Module = (function () { p++ ) { var k = B[l + p], - m = jb[a]; + m = hb[a]; if (0 === k || 10 === k) { for (k = 0; m[k] && !(NaN <= k); ) ++k; - k = fa.decode( + k = ea.decode( m.subarray ? m.subarray(0, k) : new Uint8Array(m.slice(0, k)), ); - (1 === a ? da : v)(k); + (1 === a ? ca : w)(k); m.length = 0; } else m.push(k); } @@ -1045,12 +1004,13 @@ var Module = (function () { F[d >> 2] = f; return 0; }, - a: z, - r: function () {}, + a: A, + s: function () {}, }; (function () { function a(f) { e.asm = f.exports; + J = e.asm.w; K--; e.monitorRunDependencies && e.monitorRunDependencies(K); 0 == K && @@ -1066,11 +1026,11 @@ var Module = (function () { return WebAssembly.instantiate(g, d); }) .then(f, function (g) { - v('failed to asynchronously prepare wasm: ' + g); - y(g); + w('failed to asynchronously prepare wasm: ' + g); + z(g); }); } - var d = { a: mb }; + var d = { a: lb }; K++; e.monitorRunDependencies && e.monitorRunDependencies(K); if (e.instantiateWasm) @@ -1078,56 +1038,56 @@ var Module = (function () { return e.instantiateWasm(d, a); } catch (f) { return ( - v('Module.instantiateWasm callback failed with error: ' + f), !1 + w('Module.instantiateWasm callback failed with error: ' + f), !1 ); } (function () { - if ( - w || + return y || 'function' !== typeof WebAssembly.instantiateStreaming || za() || 'function' !== typeof fetch - ) - return c(b); - fetch(N, { credentials: 'same-origin' }).then(function (f) { - return WebAssembly.instantiateStreaming(f, d).then(b, function (g) { - v('wasm streaming compile failed: ' + g); - v('falling back to ArrayBuffer instantiation'); - return c(b); - }); - }); - })(); + ? c(b) + : fetch(N, { credentials: 'same-origin' }).then(function (f) { + return WebAssembly.instantiateStreaming(f, d).then(b, function ( + g, + ) { + w('wasm streaming compile failed: ' + g); + w('falling back to ArrayBuffer instantiation'); + return c(b); + }); + }); + })().catch(r); return {}; })(); - var Da = (e.___wasm_call_ctors = function () { - return (Da = e.___wasm_call_ctors = e.asm.z).apply(null, arguments); + var jb = (e.___wasm_call_ctors = function () { + return (jb = e.___wasm_call_ctors = e.asm.x).apply(null, arguments); }), - lb = (e._malloc = function () { - return (lb = e._malloc = e.asm.A).apply(null, arguments); + kb = (e._malloc = function () { + return (kb = e._malloc = e.asm.y).apply(null, arguments); }), - Y = (e._free = function () { - return (Y = e._free = e.asm.B).apply(null, arguments); + X = (e._free = function () { + return (X = e._free = e.asm.z).apply(null, arguments); }), - cb = (e.___getTypeName = function () { - return (cb = e.___getTypeName = e.asm.C).apply(null, arguments); + ab = (e.___getTypeName = function () { + return (ab = e.___getTypeName = e.asm.A).apply(null, arguments); }); e.___embind_register_native_and_builtin_types = function () { - return (e.___embind_register_native_and_builtin_types = e.asm.D).apply( + return (e.___embind_register_native_and_builtin_types = e.asm.B).apply( null, arguments, ); }; e.dynCall_jiji = function () { - return (e.dynCall_jiji = e.asm.E).apply(null, arguments); + return (e.dynCall_jiji = e.asm.C).apply(null, arguments); }; - var nb; - L = function ob() { - nb || pb(); - nb || (L = ob); + var Z; + L = function mb() { + Z || nb(); + Z || (L = mb); }; - function pb() { + function nb() { function a() { - if (!nb && ((nb = !0), (e.calledRun = !0), !ea)) { + if (!Z && ((Z = !0), (e.calledRun = !0), !da)) { O(ua); O(va); aa(e); @@ -1165,7 +1125,7 @@ var Module = (function () { : a()); } } - e.run = pb; + e.run = nb; if (e.preInit) for ( 'function' == typeof e.preInit && (e.preInit = [e.preInit]); @@ -1174,7 +1134,7 @@ var Module = (function () { ) e.preInit.pop()(); noExitRuntime = !0; - pb(); + nb(); return Module.ready; }; diff --git a/codecs/imagequant/imagequant.wasm b/codecs/imagequant/imagequant.wasm old mode 100644 new mode 100755 index 379a485c..4f633dbc Binary files a/codecs/imagequant/imagequant.wasm and b/codecs/imagequant/imagequant.wasm differ diff --git a/codecs/jxl/Makefile b/codecs/jxl/Makefile new file mode 100644 index 00000000..f4152507 --- /dev/null +++ b/codecs/jxl/Makefile @@ -0,0 +1,59 @@ +CODEC_URL = https://gitlab.com/wg1/jpeg-xl.git +CODEC_VERSION = v0.1 +CODEC_DIR = node_modules/jxl +CODEC_BUILD_DIR := $(CODEC_DIR)/build +CODEC_OUT := $(CODEC_BUILD_DIR)/lib/libjxl.a + +OUT_JS = enc/jxl_enc.js dec/jxl_dec.js +OUT_WASM = $(OUT_JS:.js=.wasm) + +.PHONY: all clean + +all: $(OUT_JS) + +%.js: %.cpp $(LIBAOM_OUT) $(CODEC_OUT) + $(CXX) \ + -I $(CODEC_DIR) \ + -I $(CODEC_DIR)/lib \ + -I $(CODEC_DIR)/lib/include \ + -I $(CODEC_BUILD_DIR)/lib/include \ + -I $(CODEC_DIR)/third_party/highway \ + -I $(CODEC_DIR)/third_party/skcms \ + -I $(CODEC_DIR)/third_party/brunsli \ + -I $(CODEC_DIR)/third_party/brunsli/c/include \ + ${CXXFLAGS} \ + ${LDFLAGS} \ + --bind \ + --closure 1 \ + -s ALLOW_MEMORY_GROWTH=1 \ + -s MODULARIZE=1 \ + -s TEXTDECODER=2 \ + -s ENVIRONMENT='worker' \ + -s EXPORT_ES6=1 \ + -s EXPORT_NAME="$(basename $(@F))" \ + -o $@ \ + $+ \ + $(CODEC_BUILD_DIR)/artifacts/libbrunslienc-static.bc \ + $(CODEC_BUILD_DIR)/artifacts/libbrunslicommon-static.bc \ + $(CODEC_BUILD_DIR)/artifacts/libbrunslidec-static.bc \ + $(CODEC_BUILD_DIR)/third_party/brotli/libbrotlidec-static.a \ + $(CODEC_BUILD_DIR)/third_party/brotli/libbrotlienc-static.a \ + $(CODEC_BUILD_DIR)/third_party/brotli/libbrotlicommon-static.a \ + $(CODEC_BUILD_DIR)/third_party/libskcms.a \ + $(CODEC_BUILD_DIR)/third_party/highway/libhwy.a + +$(CODEC_OUT): $(CODEC_DIR)/CMakeLists.txt + mkdir -p $(CODEC_BUILD_DIR) + cd $(CODEC_BUILD_DIR) && \ + emcmake cmake ../ && \ + $(MAKE) jxl-static + +$(CODEC_DIR)/CMakeLists.txt: $(CODEC_DIR) + +$(CODEC_DIR): + mkdir -p $@ + git clone $(CODEC_URL) --recursive -j`nproc` --depth 1 --branch $(CODEC_VERSION) $@ + +clean: + $(RM) $(OUT_JS) $(OUT_WASM) + $(MAKE) -C $(CODEC_BUILD_DIR) clean diff --git a/codecs/jxl/dec/jxl_dec.cpp b/codecs/jxl/dec/jxl_dec.cpp new file mode 100644 index 00000000..556d49b4 --- /dev/null +++ b/codecs/jxl/dec/jxl_dec.cpp @@ -0,0 +1,72 @@ +#include +#include + +#include +#include "lib/jxl/color_encoding_internal.h" + +#include "skcms.h" + +using namespace emscripten; + +thread_local const val Uint8ClampedArray = val::global("Uint8ClampedArray"); +thread_local const val ImageData = val::global("ImageData"); + +// R, G, B, A +#define COMPONENTS_PER_PIXEL 4 + +#define EXPECT_TRUE(a) \ + if (!(a)) { \ + return val::null(); \ + } + +#define EXPECT_EQ(a, b) EXPECT_TRUE((a) == (b)); + +val decode(std::string data) { + std::unique_ptr> + dec(JxlDecoderCreate(nullptr)); + EXPECT_EQ(JXL_DEC_SUCCESS, + JxlDecoderSubscribeEvents( + dec.get(), JXL_DEC_BASIC_INFO | JXL_DEC_COLOR_ENCODING | JXL_DEC_FULL_IMAGE)); + + auto next_in = (const uint8_t*)data.c_str(); + auto avail_in = data.size(); + EXPECT_EQ(JXL_DEC_BASIC_INFO, JxlDecoderProcessInput(dec.get(), &next_in, &avail_in)); + JxlBasicInfo info; + EXPECT_EQ(JXL_DEC_SUCCESS, JxlDecoderGetBasicInfo(dec.get(), &info)); + size_t pixel_count = info.xsize * info.ysize; + size_t component_count = pixel_count * COMPONENTS_PER_PIXEL; + + EXPECT_EQ(JXL_DEC_COLOR_ENCODING, JxlDecoderProcessInput(dec.get(), &next_in, &avail_in)); + static const JxlPixelFormat format = {COMPONENTS_PER_PIXEL, JXL_TYPE_FLOAT, JXL_LITTLE_ENDIAN, 0}; + size_t icc_size; + EXPECT_EQ(JXL_DEC_SUCCESS, JxlDecoderGetICCProfileSize(dec.get(), &format, + JXL_COLOR_PROFILE_TARGET_DATA, &icc_size)); + std::vector icc_profile(icc_size); + EXPECT_EQ(JXL_DEC_SUCCESS, + JxlDecoderGetColorAsICCProfile(dec.get(), &format, JXL_COLOR_PROFILE_TARGET_DATA, + icc_profile.data(), icc_profile.size())); + + auto float_pixels = std::make_unique(component_count); + EXPECT_EQ(JXL_DEC_SUCCESS, JxlDecoderSetImageOutBuffer(dec.get(), &format, float_pixels.get(), + component_count * sizeof(float))); + EXPECT_EQ(JXL_DEC_FULL_IMAGE, JxlDecoderProcessInput(dec.get(), &next_in, &avail_in)); + + auto byte_pixels = std::make_unique(component_count); + // Convert to sRGB. + skcms_ICCProfile jxl_profile; + EXPECT_TRUE(skcms_Parse(icc_profile.data(), icc_profile.size(), &jxl_profile)); + EXPECT_TRUE(skcms_Transform( + float_pixels.get(), skcms_PixelFormat_RGBA_ffff, + info.alpha_premultiplied ? skcms_AlphaFormat_PremulAsEncoded : skcms_AlphaFormat_Unpremul, + &jxl_profile, byte_pixels.get(), skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, + skcms_sRGB_profile(), pixel_count)); + + return ImageData.new_( + Uint8ClampedArray.new_(typed_memory_view(component_count, byte_pixels.get())), info.xsize, + info.ysize); +} + +EMSCRIPTEN_BINDINGS(my_module) { + function("decode", &decode); +} diff --git a/codecs/jxl/dec/jxl_dec.d.ts b/codecs/jxl/dec/jxl_dec.d.ts new file mode 100644 index 00000000..4751f578 --- /dev/null +++ b/codecs/jxl/dec/jxl_dec.d.ts @@ -0,0 +1,7 @@ +export interface JXLModule extends EmscriptenWasm.Module { + decode(data: BufferSource): ImageData | null; +} + +declare var moduleFactory: EmscriptenWasm.ModuleFactory; + +export default moduleFactory; diff --git a/codecs/jxl/dec/jxl_dec.js b/codecs/jxl/dec/jxl_dec.js new file mode 100644 index 00000000..17ff25e4 --- /dev/null +++ b/codecs/jxl/dec/jxl_dec.js @@ -0,0 +1,1195 @@ +var jxl_dec = (function () { + var _scriptDir = import.meta.url; + + return function (jxl_dec) { + jxl_dec = jxl_dec || {}; + + var e; + e || (e = typeof jxl_dec !== 'undefined' ? jxl_dec : {}); + var aa, ba; + e.ready = new Promise(function (a, b) { + aa = a; + ba = b; + }); + var r = {}, + t; + for (t in e) e.hasOwnProperty(t) && (r[t] = e[t]); + var ca = './this.program', + u = '', + da; + u = self.location.href; + _scriptDir && (u = _scriptDir); + 0 !== u.indexOf('blob:') + ? (u = u.substr(0, u.lastIndexOf('/') + 1)) + : (u = ''); + da = function (a) { + var b = new XMLHttpRequest(); + b.open('GET', a, !1); + b.responseType = 'arraybuffer'; + b.send(null); + return new Uint8Array(b.response); + }; + var ea = e.print || console.log.bind(console), + v = e.printErr || console.warn.bind(console); + for (t in r) r.hasOwnProperty(t) && (e[t] = r[t]); + r = null; + e.thisProgram && (ca = e.thisProgram); + var w; + e.wasmBinary && (w = e.wasmBinary); + var noExitRuntime; + e.noExitRuntime && (noExitRuntime = e.noExitRuntime); + 'object' !== typeof WebAssembly && y('no native wasm support detected'); + var z, + fa = !1, + ha = new TextDecoder('utf8'); + function ia(a, b, c) { + var d = A; + if (0 < c) { + c = b + c - 1; + for (var f = 0; f < a.length; ++f) { + var g = a.charCodeAt(f); + if (55296 <= g && 57343 >= g) { + var l = a.charCodeAt(++f); + g = (65536 + ((g & 1023) << 10)) | (l & 1023); + } + if (127 >= g) { + if (b >= c) break; + d[b++] = g; + } else { + if (2047 >= g) { + if (b + 1 >= c) break; + d[b++] = 192 | (g >> 6); + } else { + if (65535 >= g) { + if (b + 2 >= c) break; + d[b++] = 224 | (g >> 12); + } else { + if (b + 3 >= c) break; + d[b++] = 240 | (g >> 18); + d[b++] = 128 | ((g >> 12) & 63); + } + d[b++] = 128 | ((g >> 6) & 63); + } + d[b++] = 128 | (g & 63); + } + } + d[b] = 0; + } + } + var ja = new TextDecoder('utf-16le'); + function ka(a, b) { + var c = a >> 1; + for (b = c + b / 2; !(c >= b) && B[c]; ) ++c; + return ja.decode(A.subarray(a, c << 1)); + } + function la(a, b, c) { + void 0 === c && (c = 2147483647); + if (2 > c) return 0; + c -= 2; + var d = b; + c = c < 2 * a.length ? c / 2 : a.length; + for (var f = 0; f < c; ++f) (D[b >> 1] = a.charCodeAt(f)), (b += 2); + D[b >> 1] = 0; + return b - d; + } + function ma(a) { + return 2 * a.length; + } + function na(a, b) { + for (var c = 0, d = ''; !(c >= b / 4); ) { + var f = E[(a + 4 * c) >> 2]; + if (0 == f) break; + ++c; + 65536 <= f + ? ((f -= 65536), + (d += String.fromCharCode(55296 | (f >> 10), 56320 | (f & 1023)))) + : (d += String.fromCharCode(f)); + } + return d; + } + function oa(a, b, c) { + void 0 === c && (c = 2147483647); + if (4 > c) return 0; + var d = b; + c = d + c - 4; + for (var f = 0; f < a.length; ++f) { + var g = a.charCodeAt(f); + if (55296 <= g && 57343 >= g) { + var l = a.charCodeAt(++f); + g = (65536 + ((g & 1023) << 10)) | (l & 1023); + } + E[b >> 2] = g; + b += 4; + if (b + 4 > c) break; + } + E[b >> 2] = 0; + return b - d; + } + function pa(a) { + for (var b = 0, c = 0; c < a.length; ++c) { + var d = a.charCodeAt(c); + 55296 <= d && 57343 >= d && ++c; + b += 4; + } + return b; + } + var F, G, A, D, B, E, H, qa, ra; + function sa(a) { + F = a; + e.HEAP8 = G = new Int8Array(a); + e.HEAP16 = D = new Int16Array(a); + e.HEAP32 = E = new Int32Array(a); + e.HEAPU8 = A = new Uint8Array(a); + e.HEAPU16 = B = new Uint16Array(a); + e.HEAPU32 = H = new Uint32Array(a); + e.HEAPF32 = qa = new Float32Array(a); + e.HEAPF64 = ra = new Float64Array(a); + } + var ta = e.INITIAL_MEMORY || 16777216; + e.wasmMemory + ? (z = e.wasmMemory) + : (z = new WebAssembly.Memory({ initial: ta / 65536, maximum: 32768 })); + z && (F = z.buffer); + ta = F.byteLength; + sa(F); + var J, + ua = [], + va = [], + wa = [], + xa = []; + function ya() { + var a = e.preRun.shift(); + ua.unshift(a); + } + var K = 0, + za = null, + L = null; + e.preloadedImages = {}; + e.preloadedAudios = {}; + function y(a) { + if (e.onAbort) e.onAbort(a); + v(a); + fa = !0; + a = new WebAssembly.RuntimeError( + 'abort(' + a + '). Build with -s ASSERTIONS=1 for more info.', + ); + ba(a); + throw a; + } + function Aa() { + var a = N; + return String.prototype.startsWith + ? a.startsWith('data:application/octet-stream;base64,') + : 0 === a.indexOf('data:application/octet-stream;base64,'); + } + var N = 'jxl_dec.wasm'; + if (!Aa()) { + var Ba = N; + N = e.locateFile ? e.locateFile(Ba, u) : u + Ba; + } + function Ca() { + try { + if (w) return new Uint8Array(w); + if (da) return da(N); + throw 'both async and sync fetching of the wasm failed'; + } catch (a) { + y(a); + } + } + function Da() { + return w || 'function' !== typeof fetch + ? Promise.resolve().then(Ca) + : fetch(N, { credentials: 'same-origin' }) + .then(function (a) { + if (!a.ok) throw "failed to load wasm binary file at '" + N + "'"; + return a.arrayBuffer(); + }) + .catch(function () { + return Ca(); + }); + } + function O(a) { + for (; 0 < a.length; ) { + var b = a.shift(); + if ('function' == typeof b) b(e); + else { + var c = b.L; + 'number' === typeof c + ? void 0 === b.I + ? J.get(c)() + : J.get(c)(b.I) + : c(void 0 === b.I ? null : b.I); + } + } + } + function Ea(a) { + switch (a) { + case 1: + return 0; + case 2: + return 1; + case 4: + return 2; + case 8: + return 3; + default: + throw new TypeError('Unknown type size: ' + a); + } + } + var Fa = void 0; + function P(a) { + for (var b = ''; A[a]; ) b += Fa[A[a++]]; + return b; + } + var Q = {}, + R = {}, + S = {}; + function Ga(a) { + if (void 0 === a) return '_unknown'; + a = a.replace(/[^a-zA-Z0-9_]/g, '$'); + var b = a.charCodeAt(0); + return 48 <= b && 57 >= b ? '_' + a : a; + } + function Ha(a, b) { + a = Ga(a); + return new Function( + 'body', + 'return function ' + + a + + '() {\n "use strict"; return body.apply(this, arguments);\n};\n', + )(b); + } + function Ia(a) { + var b = Error, + c = Ha(a, function (d) { + this.name = a; + this.message = d; + d = Error(d).stack; + void 0 !== d && + (this.stack = + this.toString() + '\n' + d.replace(/^Error(:[^\n]*)?\n/, '')); + }); + c.prototype = Object.create(b.prototype); + c.prototype.constructor = c; + c.prototype.toString = function () { + return void 0 === this.message + ? this.name + : this.name + ': ' + this.message; + }; + return c; + } + var Ja = void 0; + function T(a) { + throw new Ja(a); + } + var Ka = void 0; + function La(a, b) { + function c(h) { + h = b(h); + if (h.length !== d.length) + throw new Ka('Mismatched type converter count'); + for (var p = 0; p < d.length; ++p) U(d[p], h[p]); + } + var d = []; + d.forEach(function (h) { + S[h] = a; + }); + var f = Array(a.length), + g = [], + l = 0; + a.forEach(function (h, p) { + R.hasOwnProperty(h) + ? (f[p] = R[h]) + : (g.push(h), + Q.hasOwnProperty(h) || (Q[h] = []), + Q[h].push(function () { + f[p] = R[h]; + ++l; + l === g.length && c(f); + })); + }); + 0 === g.length && c(f); + } + function U(a, b, c) { + c = c || {}; + if (!('argPackAdvance' in b)) + throw new TypeError( + 'registerType registeredInstance requires argPackAdvance', + ); + var d = b.name; + a || T('type "' + d + '" must have a positive integer typeid pointer'); + if (R.hasOwnProperty(a)) { + if (c.M) return; + T("Cannot register type '" + d + "' twice"); + } + R[a] = b; + delete S[a]; + Q.hasOwnProperty(a) && + ((b = Q[a]), + delete Q[a], + b.forEach(function (f) { + f(); + })); + } + var Ma = [], + V = [ + {}, + { value: void 0 }, + { value: null }, + { value: !0 }, + { value: !1 }, + ]; + function Na(a) { + 4 < a && 0 === --V[a].J && ((V[a] = void 0), Ma.push(a)); + } + function W(a) { + switch (a) { + case void 0: + return 1; + case null: + return 2; + case !0: + return 3; + case !1: + return 4; + default: + var b = Ma.length ? Ma.pop() : V.length; + V[b] = { J: 1, value: a }; + return b; + } + } + function Oa(a) { + return this.fromWireType(H[a >> 2]); + } + function Ra(a) { + if (null === a) return 'null'; + var b = typeof a; + return 'object' === b || 'array' === b || 'function' === b + ? a.toString() + : '' + a; + } + function Sa(a, b) { + switch (b) { + case 2: + return function (c) { + return this.fromWireType(qa[c >> 2]); + }; + case 3: + return function (c) { + return this.fromWireType(ra[c >> 3]); + }; + default: + throw new TypeError('Unknown float type: ' + a); + } + } + function Ta(a) { + var b = Function; + if (!(b instanceof Function)) + throw new TypeError( + 'new_ called with constructor type ' + + typeof b + + ' which is not a function', + ); + var c = Ha(b.name || 'unknownFunctionName', function () {}); + c.prototype = b.prototype; + c = new c(); + a = b.apply(c, a); + return a instanceof Object ? a : c; + } + function Ua(a) { + for (; a.length; ) { + var b = a.pop(); + a.pop()(b); + } + } + function Va(a, b) { + var c = e; + if (void 0 === c[a].G) { + var d = c[a]; + c[a] = function () { + c[a].G.hasOwnProperty(arguments.length) || + T( + "Function '" + + b + + "' called with an invalid number of arguments (" + + arguments.length + + ') - expects one of (' + + c[a].G + + ')!', + ); + return c[a].G[arguments.length].apply(this, arguments); + }; + c[a].G = []; + c[a].G[d.K] = d; + } + } + function Wa(a, b, c) { + e.hasOwnProperty(a) + ? ((void 0 === c || (void 0 !== e[a].G && void 0 !== e[a].G[c])) && + T("Cannot register public name '" + a + "' twice"), + Va(a, a), + e.hasOwnProperty(c) && + T( + 'Cannot register multiple overloads of a function with the same number of arguments (' + + c + + ')!', + ), + (e[a].G[c] = b)) + : ((e[a] = b), void 0 !== c && (e[a].O = c)); + } + function Xa(a, b) { + for (var c = [], d = 0; d < a; d++) c.push(E[(b >> 2) + d]); + return c; + } + function Ya(a, b) { + 0 <= a.indexOf('j') || + y('Assertion failed: getDynCaller should only be called with i64 sigs'); + var c = []; + return function () { + c.length = arguments.length; + for (var d = 0; d < arguments.length; d++) c[d] = arguments[d]; + var f; + -1 != a.indexOf('j') + ? (f = + c && c.length + ? e['dynCall_' + a].apply(null, [b].concat(c)) + : e['dynCall_' + a].call(null, b)) + : (f = J.get(b).apply(null, c)); + return f; + }; + } + function Za(a, b) { + a = P(a); + var c = -1 != a.indexOf('j') ? Ya(a, b) : J.get(b); + 'function' !== typeof c && + T('unknown function pointer with signature ' + a + ': ' + b); + return c; + } + var $a = void 0; + function ab(a) { + a = bb(a); + var b = P(a); + X(a); + return b; + } + function cb(a, b) { + function c(g) { + f[g] || R[g] || (S[g] ? S[g].forEach(c) : (d.push(g), (f[g] = !0))); + } + var d = [], + f = {}; + b.forEach(c); + throw new $a(a + ': ' + d.map(ab).join([', '])); + } + function db(a, b, c) { + switch (b) { + case 0: + return c + ? function (d) { + return G[d]; + } + : function (d) { + return A[d]; + }; + case 1: + return c + ? function (d) { + return D[d >> 1]; + } + : function (d) { + return B[d >> 1]; + }; + case 2: + return c + ? function (d) { + return E[d >> 2]; + } + : function (d) { + return H[d >> 2]; + }; + default: + throw new TypeError('Unknown integer type: ' + a); + } + } + var eb = {}; + function fb() { + return 'object' === typeof globalThis + ? globalThis + : Function('return this')(); + } + function gb(a, b) { + var c = R[a]; + void 0 === c && T(b + ' has unknown type ' + ab(a)); + return c; + } + var hb = {}, + ib = {}; + function jb() { + if (!kb) { + var a = { + USER: 'web_user', + LOGNAME: 'web_user', + PATH: '/', + PWD: '/', + HOME: '/home/web_user', + LANG: + ( + ('object' === typeof navigator && + navigator.languages && + navigator.languages[0]) || + 'C' + ).replace('-', '_') + '.UTF-8', + _: ca || './this.program', + }, + b; + for (b in ib) a[b] = ib[b]; + var c = []; + for (b in a) c.push(b + '=' + a[b]); + kb = c; + } + return kb; + } + for (var kb, lb = [null, [], []], mb = Array(256), Y = 0; 256 > Y; ++Y) + mb[Y] = String.fromCharCode(Y); + Fa = mb; + Ja = e.BindingError = Ia('BindingError'); + Ka = e.InternalError = Ia('InternalError'); + e.count_emval_handles = function () { + for (var a = 0, b = 5; b < V.length; ++b) void 0 !== V[b] && ++a; + return a; + }; + e.get_first_emval = function () { + for (var a = 5; a < V.length; ++a) if (void 0 !== V[a]) return V[a]; + return null; + }; + $a = e.UnboundTypeError = Ia('UnboundTypeError'); + va.push({ + L: function () { + nb(); + }, + }); + var pb = { + h: function () {}, + o: function (a, b, c, d, f) { + var g = Ea(c); + b = P(b); + U(a, { + name: b, + fromWireType: function (l) { + return !!l; + }, + toWireType: function (l, h) { + return h ? d : f; + }, + argPackAdvance: 8, + readValueFromPointer: function (l) { + if (1 === c) var h = G; + else if (2 === c) h = D; + else if (4 === c) h = E; + else throw new TypeError('Unknown boolean type size: ' + b); + return this.fromWireType(h[l >> g]); + }, + H: null, + }); + }, + x: function (a, b) { + b = P(b); + U(a, { + name: b, + fromWireType: function (c) { + var d = V[c].value; + Na(c); + return d; + }, + toWireType: function (c, d) { + return W(d); + }, + argPackAdvance: 8, + readValueFromPointer: Oa, + H: null, + }); + }, + n: function (a, b, c) { + c = Ea(c); + b = P(b); + U(a, { + name: b, + fromWireType: function (d) { + return d; + }, + toWireType: function (d, f) { + if ('number' !== typeof f && 'boolean' !== typeof f) + throw new TypeError( + 'Cannot convert "' + Ra(f) + '" to ' + this.name, + ); + return f; + }, + argPackAdvance: 8, + readValueFromPointer: Sa(b, c), + H: null, + }); + }, + q: function (a, b, c, d, f, g) { + var l = Xa(b, c); + a = P(a); + f = Za(d, f); + Wa( + a, + function () { + cb('Cannot call ' + a + ' due to unbound types', l); + }, + b - 1, + ); + La(l, function (h) { + var p = a, + k = a; + h = [h[0], null].concat(h.slice(1)); + var m = f, + q = h.length; + 2 > q && + T( + "argTypes array size mismatch! Must at least get return value and 'this' types!", + ); + for (var x = null !== h[1] && !1, C = !1, n = 1; n < h.length; ++n) + if (null !== h[n] && void 0 === h[n].H) { + C = !0; + break; + } + var Pa = 'void' !== h[0].name, + I = '', + M = ''; + for (n = 0; n < q - 2; ++n) + (I += (0 !== n ? ', ' : '') + 'arg' + n), + (M += (0 !== n ? ', ' : '') + 'arg' + n + 'Wired'); + k = + 'return function ' + + Ga(k) + + '(' + + I + + ') {\nif (arguments.length !== ' + + (q - 2) + + ") {\nthrowBindingError('function " + + k + + " called with ' + arguments.length + ' arguments, expected " + + (q - 2) + + " args!');\n}\n"; + C && (k += 'var destructors = [];\n'); + var Qa = C ? 'destructors' : 'null'; + I = 'throwBindingError invoker fn runDestructors retType classParam'.split( + ' ', + ); + m = [T, m, g, Ua, h[0], h[1]]; + x && + (k += 'var thisWired = classParam.toWireType(' + Qa + ', this);\n'); + for (n = 0; n < q - 2; ++n) + (k += + 'var arg' + + n + + 'Wired = argType' + + n + + '.toWireType(' + + Qa + + ', arg' + + n + + '); // ' + + h[n + 2].name + + '\n'), + I.push('argType' + n), + m.push(h[n + 2]); + x && (M = 'thisWired' + (0 < M.length ? ', ' : '') + M); + k += + (Pa ? 'var rv = ' : '') + + 'invoker(fn' + + (0 < M.length ? ', ' : '') + + M + + ');\n'; + if (C) k += 'runDestructors(destructors);\n'; + else + for (n = x ? 1 : 2; n < h.length; ++n) + (q = 1 === n ? 'thisWired' : 'arg' + (n - 2) + 'Wired'), + null !== h[n].H && + ((k += q + '_dtor(' + q + '); // ' + h[n].name + '\n'), + I.push(q + '_dtor'), + m.push(h[n].H)); + Pa && (k += 'var ret = retType.fromWireType(rv);\nreturn ret;\n'); + I.push(k + '}\n'); + h = Ta(I).apply(null, m); + n = b - 1; + if (!e.hasOwnProperty(p)) + throw new Ka('Replacing nonexistant public symbol'); + void 0 !== e[p].G && void 0 !== n + ? (e[p].G[n] = h) + : ((e[p] = h), (e[p].K = n)); + return []; + }); + }, + d: function (a, b, c, d, f) { + function g(k) { + return k; + } + b = P(b); + -1 === f && (f = 4294967295); + var l = Ea(c); + if (0 === d) { + var h = 32 - 8 * c; + g = function (k) { + return (k << h) >>> h; + }; + } + var p = -1 != b.indexOf('unsigned'); + U(a, { + name: b, + fromWireType: g, + toWireType: function (k, m) { + if ('number' !== typeof m && 'boolean' !== typeof m) + throw new TypeError( + 'Cannot convert "' + Ra(m) + '" to ' + this.name, + ); + if (m < d || m > f) + throw new TypeError( + 'Passing a number "' + + Ra(m) + + '" from JS side to C/C++ side to an argument of type "' + + b + + '", which is outside the valid range [' + + d + + ', ' + + f + + ']!', + ); + return p ? m >>> 0 : m | 0; + }, + argPackAdvance: 8, + readValueFromPointer: db(b, l, 0 !== d), + H: null, + }); + }, + c: function (a, b, c) { + function d(g) { + g >>= 2; + var l = H; + return new f(F, l[g + 1], l[g]); + } + var f = [ + Int8Array, + Uint8Array, + Int16Array, + Uint16Array, + Int32Array, + Uint32Array, + Float32Array, + Float64Array, + ][b]; + c = P(c); + U( + a, + { + name: c, + fromWireType: d, + argPackAdvance: 8, + readValueFromPointer: d, + }, + { M: !0 }, + ); + }, + j: function (a, b) { + b = P(b); + var c = 'std::string' === b; + U(a, { + name: b, + fromWireType: function (d) { + var f = H[d >> 2]; + if (c) + for (var g = d + 4, l = 0; l <= f; ++l) { + var h = d + 4 + l; + if (l == f || 0 == A[h]) { + if (g) { + for (var p = g + (h - g), k = g; !(k >= p) && A[k]; ) ++k; + g = ha.decode(A.subarray(g, k)); + } else g = ''; + if (void 0 === m) var m = g; + else (m += String.fromCharCode(0)), (m += g); + g = h + 1; + } + } + else { + m = Array(f); + for (l = 0; l < f; ++l) m[l] = String.fromCharCode(A[d + 4 + l]); + m = m.join(''); + } + X(d); + return m; + }, + toWireType: function (d, f) { + f instanceof ArrayBuffer && (f = new Uint8Array(f)); + var g = 'string' === typeof f; + g || + f instanceof Uint8Array || + f instanceof Uint8ClampedArray || + f instanceof Int8Array || + T('Cannot pass non-string to std::string'); + var l = (c && g + ? function () { + for (var k = 0, m = 0; m < f.length; ++m) { + var q = f.charCodeAt(m); + 55296 <= q && + 57343 >= q && + (q = + (65536 + ((q & 1023) << 10)) | + (f.charCodeAt(++m) & 1023)); + 127 >= q + ? ++k + : (k = 2047 >= q ? k + 2 : 65535 >= q ? k + 3 : k + 4); + } + return k; + } + : function () { + return f.length; + })(), + h = ob(4 + l + 1); + H[h >> 2] = l; + if (c && g) ia(f, h + 4, l + 1); + else if (g) + for (g = 0; g < l; ++g) { + var p = f.charCodeAt(g); + 255 < p && + (X(h), + T('String has UTF-16 code units that do not fit in 8 bits')); + A[h + 4 + g] = p; + } + else for (g = 0; g < l; ++g) A[h + 4 + g] = f[g]; + null !== d && d.push(X, h); + return h; + }, + argPackAdvance: 8, + readValueFromPointer: Oa, + H: function (d) { + X(d); + }, + }); + }, + i: function (a, b, c) { + c = P(c); + if (2 === b) { + var d = ka; + var f = la; + var g = ma; + var l = function () { + return B; + }; + var h = 1; + } else + 4 === b && + ((d = na), + (f = oa), + (g = pa), + (l = function () { + return H; + }), + (h = 2)); + U(a, { + name: c, + fromWireType: function (p) { + for (var k = H[p >> 2], m = l(), q, x = p + 4, C = 0; C <= k; ++C) { + var n = p + 4 + C * b; + if (C == k || 0 == m[n >> h]) + (x = d(x, n - x)), + void 0 === q + ? (q = x) + : ((q += String.fromCharCode(0)), (q += x)), + (x = n + b); + } + X(p); + return q; + }, + toWireType: function (p, k) { + 'string' !== typeof k && + T('Cannot pass non-string to C++ string type ' + c); + var m = g(k), + q = ob(4 + m + b); + H[q >> 2] = m >> h; + f(k, q + 4, m + b); + null !== p && p.push(X, q); + return q; + }, + argPackAdvance: 8, + readValueFromPointer: Oa, + H: function (p) { + X(p); + }, + }); + }, + p: function (a, b) { + b = P(b); + U(a, { + N: !0, + name: b, + argPackAdvance: 0, + fromWireType: function () {}, + toWireType: function () {}, + }); + }, + f: Na, + g: function (a) { + if (0 === a) return W(fb()); + var b = eb[a]; + a = void 0 === b ? P(a) : b; + return W(fb()[a]); + }, + k: function (a) { + 4 < a && (V[a].J += 1); + }, + l: function (a, b, c, d) { + a || T('Cannot use deleted val. handle = ' + a); + a = V[a].value; + var f = hb[b]; + if (!f) { + f = ''; + for (var g = 0; g < b; ++g) f += (0 !== g ? ', ' : '') + 'arg' + g; + var l = + 'return function emval_allocator_' + + b + + '(constructor, argTypes, args) {\n'; + for (g = 0; g < b; ++g) + l += + 'var argType' + + g + + " = requireRegisteredType(Module['HEAP32'][(argTypes >>> 2) + " + + g + + '], "parameter ' + + g + + '");\nvar arg' + + g + + ' = argType' + + g + + '.readValueFromPointer(args);\nargs += argType' + + g + + "['argPackAdvance'];\n"; + f = new Function( + 'requireRegisteredType', + 'Module', + '__emval_register', + l + + ('var obj = new constructor(' + + f + + ');\nreturn __emval_register(obj);\n}\n'), + )(gb, e, W); + hb[b] = f; + } + return f(a, c, d); + }, + b: function () { + y(); + }, + t: function (a, b, c) { + A.copyWithin(a, b, b + c); + }, + e: function (a) { + a >>>= 0; + var b = A.length; + if (2147483648 < a) return !1; + for (var c = 1; 4 >= c; c *= 2) { + var d = b * (1 + 0.2 / c); + d = Math.min(d, a + 100663296); + d = Math.max(16777216, a, d); + 0 < d % 65536 && (d += 65536 - (d % 65536)); + a: { + try { + z.grow((Math.min(2147483648, d) - F.byteLength + 65535) >>> 16); + sa(z.buffer); + var f = 1; + break a; + } catch (g) {} + f = void 0; + } + if (f) return !0; + } + return !1; + }, + u: function (a, b) { + var c = 0; + jb().forEach(function (d, f) { + var g = b + c; + f = E[(a + 4 * f) >> 2] = g; + for (g = 0; g < d.length; ++g) G[f++ >> 0] = d.charCodeAt(g); + G[f >> 0] = 0; + c += d.length + 1; + }); + return 0; + }, + v: function (a, b) { + var c = jb(); + E[a >> 2] = c.length; + var d = 0; + c.forEach(function (f) { + d += f.length + 1; + }); + E[b >> 2] = d; + return 0; + }, + w: function () { + return 0; + }, + r: function () {}, + m: function (a, b, c, d) { + for (var f = 0, g = 0; g < c; g++) { + for ( + var l = E[(b + 8 * g) >> 2], h = E[(b + (8 * g + 4)) >> 2], p = 0; + p < h; + p++ + ) { + var k = A[l + p], + m = lb[a]; + if (0 === k || 10 === k) { + for (k = 0; m[k] && !(NaN <= k); ) ++k; + k = ha.decode( + m.subarray ? m.subarray(0, k) : new Uint8Array(m.slice(0, k)), + ); + (1 === a ? ea : v)(k); + m.length = 0; + } else m.push(k); + } + f += h; + } + E[d >> 2] = f; + return 0; + }, + a: z, + s: function () {}, + }; + (function () { + function a(f) { + e.asm = f.exports; + J = e.asm.y; + K--; + e.monitorRunDependencies && e.monitorRunDependencies(K); + 0 == K && + (null !== za && (clearInterval(za), (za = null)), + L && ((f = L), (L = null), f())); + } + function b(f) { + a(f.instance); + } + function c(f) { + return Da() + .then(function (g) { + return WebAssembly.instantiate(g, d); + }) + .then(f, function (g) { + v('failed to asynchronously prepare wasm: ' + g); + y(g); + }); + } + var d = { a: pb }; + K++; + e.monitorRunDependencies && e.monitorRunDependencies(K); + if (e.instantiateWasm) + try { + return e.instantiateWasm(d, a); + } catch (f) { + return ( + v('Module.instantiateWasm callback failed with error: ' + f), !1 + ); + } + (function () { + return w || + 'function' !== typeof WebAssembly.instantiateStreaming || + Aa() || + 'function' !== typeof fetch + ? c(b) + : fetch(N, { credentials: 'same-origin' }).then(function (f) { + return WebAssembly.instantiateStreaming(f, d).then(b, function ( + g, + ) { + v('wasm streaming compile failed: ' + g); + v('falling back to ArrayBuffer instantiation'); + return c(b); + }); + }); + })().catch(ba); + return {}; + })(); + var nb = (e.___wasm_call_ctors = function () { + return (nb = e.___wasm_call_ctors = e.asm.z).apply(null, arguments); + }), + ob = (e._malloc = function () { + return (ob = e._malloc = e.asm.A).apply(null, arguments); + }), + X = (e._free = function () { + return (X = e._free = e.asm.B).apply(null, arguments); + }), + bb = (e.___getTypeName = function () { + return (bb = e.___getTypeName = e.asm.C).apply(null, arguments); + }); + e.___embind_register_native_and_builtin_types = function () { + return (e.___embind_register_native_and_builtin_types = e.asm.D).apply( + null, + arguments, + ); + }; + e.dynCall_iiji = function () { + return (e.dynCall_iiji = e.asm.E).apply(null, arguments); + }; + e.dynCall_jiji = function () { + return (e.dynCall_jiji = e.asm.F).apply(null, arguments); + }; + var Z; + L = function qb() { + Z || rb(); + Z || (L = qb); + }; + function rb() { + function a() { + if (!Z && ((Z = !0), (e.calledRun = !0), !fa)) { + O(va); + O(wa); + aa(e); + if (e.onRuntimeInitialized) e.onRuntimeInitialized(); + if (e.postRun) + for ( + 'function' == typeof e.postRun && (e.postRun = [e.postRun]); + e.postRun.length; + + ) { + var b = e.postRun.shift(); + xa.unshift(b); + } + O(xa); + } + } + if (!(0 < K)) { + if (e.preRun) + for ( + 'function' == typeof e.preRun && (e.preRun = [e.preRun]); + e.preRun.length; + + ) + ya(); + O(ua); + 0 < K || + (e.setStatus + ? (e.setStatus('Running...'), + setTimeout(function () { + setTimeout(function () { + e.setStatus(''); + }, 1); + a(); + }, 1)) + : a()); + } + } + e.run = rb; + if (e.preInit) + for ( + 'function' == typeof e.preInit && (e.preInit = [e.preInit]); + 0 < e.preInit.length; + + ) + e.preInit.pop()(); + noExitRuntime = !0; + rb(); + + return jxl_dec.ready; + }; +})(); +export default jxl_dec; diff --git a/codecs/jxl/dec/jxl_dec.wasm b/codecs/jxl/dec/jxl_dec.wasm new file mode 100755 index 00000000..6ca170e9 Binary files /dev/null and b/codecs/jxl/dec/jxl_dec.wasm differ diff --git a/codecs/jxl/enc/jxl_enc.cpp b/codecs/jxl/enc/jxl_enc.cpp new file mode 100644 index 00000000..41314c2b --- /dev/null +++ b/codecs/jxl/enc/jxl_enc.cpp @@ -0,0 +1,115 @@ +#include +#include + +#include "lib/jxl/enc_file.h" +#include "lib/jxl/external_image.h" + +using namespace emscripten; + +thread_local const val Uint8Array = val::global("Uint8Array"); + +struct JXLOptions { + // 1 = slowest + // 7 = fastest + int speed; + float quality; + bool progressive; + int epf; + int nearLossless; + bool lossyPalette; +}; + +val encode(std::string image, int width, int height, JXLOptions options) { + jxl::CompressParams cparams; + jxl::PassesEncoderState passes_enc_state; + jxl::CodecInOut io; + jxl::PaddedBytes bytes; + jxl::ImageBundle* main = &io.Main(); + + cparams.epf = options.epf; + cparams.speed_tier = static_cast(options.speed); + cparams.near_lossless = options.nearLossless; + + if (options.lossyPalette) { + cparams.lossy_palette = true; + cparams.palette_colors = 0; + cparams.options.predictor = jxl::Predictor::Zero; + } + + // Reduce memory usage of tree learning for lossless data. + // TODO(veluca93): this is a mitigation for excessive memory usage in the JXL encoder. + cparams.options.nb_repeats = 0.1; + + float quality = options.quality; + + // Quality settings roughly match libjpeg qualities. + if (quality < 7 || quality == 100) { + cparams.modular_mode = true; + // Internal modular quality to roughly match VarDCT size. + cparams.quality_pair.first = cparams.quality_pair.second = + std::min(35 + (quality - 7) * 3.0f, 100.0f); + } else { + cparams.modular_mode = false; + if (quality >= 30) { + cparams.butteraugli_distance = 0.1 + (100 - quality) * 0.09; + } else { + cparams.butteraugli_distance = 6.4 + pow(2.5, (30 - quality) / 5.0f) / 6.25f; + } + } + + if (options.progressive) { + cparams.qprogressive_mode = true; + cparams.progressive_dc = 1; + cparams.responsive = 1; + } + + if (cparams.modular_mode) { + if (cparams.quality_pair.first != 100 || cparams.quality_pair.second != 100) { + cparams.color_transform = jxl::ColorTransform::kXYB; + } else { + cparams.color_transform = jxl::ColorTransform::kNone; + } + } + + if (cparams.near_lossless) { + // Near-lossless assumes -R 0 + cparams.responsive = 0; + cparams.modular_mode = true; + } + + io.metadata.m.SetAlphaBits(8); + if (!io.metadata.size.Set(width, height)) { + return val::null(); + } + + uint8_t* inBuffer = (uint8_t*)image.c_str(); + + auto result = jxl::ConvertImage( + jxl::Span(reinterpret_cast(image.data()), image.size()), width, + height, jxl::ColorEncoding::SRGB(/*is_gray=*/false), /*has_alpha=*/true, + /*alpha_is_premultiplied=*/false, /*bits_per_alpha=*/8, /*bits_per_sample=*/8, + /*big_endian=*/false, /*flipped_y=*/false, /*pool=*/nullptr, main); + + if (!result) { + return val::null(); + } + + auto js_result = val::null(); + if (EncodeFile(cparams, &io, &passes_enc_state, &bytes)) { + js_result = Uint8Array.new_(typed_memory_view(bytes.size(), bytes.data())); + } + + return js_result; +} + +EMSCRIPTEN_BINDINGS(my_module) { + value_object("JXLOptions") + .field("speed", &JXLOptions::speed) + .field("quality", &JXLOptions::quality) + .field("progressive", &JXLOptions::progressive) + .field("nearLossless", &JXLOptions::nearLossless) + .field("lossyPalette", &JXLOptions::lossyPalette) + .field("epf", &JXLOptions::epf); + + function("encode", &encode); +} diff --git a/codecs/jxl/enc/jxl_enc.d.ts b/codecs/jxl/enc/jxl_enc.d.ts new file mode 100644 index 00000000..140019bb --- /dev/null +++ b/codecs/jxl/enc/jxl_enc.d.ts @@ -0,0 +1,21 @@ +export interface EncodeOptions { + speed: number; + quality: number; + progressive: boolean; + epf: number; + nearLossless: number; + lossyPalette: boolean; +} + +export interface JXLModule extends EmscriptenWasm.Module { + encode( + data: BufferSource, + width: number, + height: number, + options: EncodeOptions, + ): Uint8Array | null; +} + +declare var moduleFactory: EmscriptenWasm.ModuleFactory; + +export default moduleFactory; diff --git a/codecs/jxl/enc/jxl_enc.js b/codecs/jxl/enc/jxl_enc.js new file mode 100644 index 00000000..f57f3fee --- /dev/null +++ b/codecs/jxl/enc/jxl_enc.js @@ -0,0 +1,1606 @@ +var jxl_enc = (function () { + var _scriptDir = import.meta.url; + + return function (jxl_enc) { + jxl_enc = jxl_enc || {}; + + var f; + f || (f = typeof jxl_enc !== 'undefined' ? jxl_enc : {}); + var aa, ba; + f.ready = new Promise(function (a, b) { + aa = a; + ba = b; + }); + var t = {}, + w; + for (w in f) f.hasOwnProperty(w) && (t[w] = f[w]); + var ca = './this.program', + y = '', + da; + y = self.location.href; + _scriptDir && (y = _scriptDir); + 0 !== y.indexOf('blob:') + ? (y = y.substr(0, y.lastIndexOf('/') + 1)) + : (y = ''); + da = function (a) { + var b = new XMLHttpRequest(); + b.open('GET', a, !1); + b.responseType = 'arraybuffer'; + b.send(null); + return new Uint8Array(b.response); + }; + var ea = f.print || console.log.bind(console), + z = f.printErr || console.warn.bind(console); + for (w in t) t.hasOwnProperty(w) && (f[w] = t[w]); + t = null; + f.thisProgram && (ca = f.thisProgram); + var A; + f.wasmBinary && (A = f.wasmBinary); + var noExitRuntime; + f.noExitRuntime && (noExitRuntime = f.noExitRuntime); + 'object' !== typeof WebAssembly && C('no native wasm support detected'); + var D, + fa = !1, + ha = new TextDecoder('utf8'); + function ia(a, b) { + if (!a) return ''; + b = a + b; + for (var c = a; !(c >= b) && E[c]; ) ++c; + return ha.decode(E.subarray(a, c)); + } + function ja(a, b, c, d) { + if (0 < d) { + d = c + d - 1; + for (var g = 0; g < a.length; ++g) { + var h = a.charCodeAt(g); + if (55296 <= h && 57343 >= h) { + var m = a.charCodeAt(++g); + h = (65536 + ((h & 1023) << 10)) | (m & 1023); + } + if (127 >= h) { + if (c >= d) break; + b[c++] = h; + } else { + if (2047 >= h) { + if (c + 1 >= d) break; + b[c++] = 192 | (h >> 6); + } else { + if (65535 >= h) { + if (c + 2 >= d) break; + b[c++] = 224 | (h >> 12); + } else { + if (c + 3 >= d) break; + b[c++] = 240 | (h >> 18); + b[c++] = 128 | ((h >> 12) & 63); + } + b[c++] = 128 | ((h >> 6) & 63); + } + b[c++] = 128 | (h & 63); + } + } + b[c] = 0; + } + } + function ka(a) { + for (var b = 0, c = 0; c < a.length; ++c) { + var d = a.charCodeAt(c); + 55296 <= d && + 57343 >= d && + (d = (65536 + ((d & 1023) << 10)) | (a.charCodeAt(++c) & 1023)); + 127 >= d ? ++b : (b = 2047 >= d ? b + 2 : 65535 >= d ? b + 3 : b + 4); + } + return b; + } + var la = new TextDecoder('utf-16le'); + function ma(a, b) { + var c = a >> 1; + for (b = c + b / 2; !(c >= b) && F[c]; ) ++c; + return la.decode(E.subarray(a, c << 1)); + } + function na(a, b, c) { + void 0 === c && (c = 2147483647); + if (2 > c) return 0; + c -= 2; + var d = b; + c = c < 2 * a.length ? c / 2 : a.length; + for (var g = 0; g < c; ++g) (G[b >> 1] = a.charCodeAt(g)), (b += 2); + G[b >> 1] = 0; + return b - d; + } + function oa(a) { + return 2 * a.length; + } + function pa(a, b) { + for (var c = 0, d = ''; !(c >= b / 4); ) { + var g = H[(a + 4 * c) >> 2]; + if (0 == g) break; + ++c; + 65536 <= g + ? ((g -= 65536), + (d += String.fromCharCode(55296 | (g >> 10), 56320 | (g & 1023)))) + : (d += String.fromCharCode(g)); + } + return d; + } + function qa(a, b, c) { + void 0 === c && (c = 2147483647); + if (4 > c) return 0; + var d = b; + c = d + c - 4; + for (var g = 0; g < a.length; ++g) { + var h = a.charCodeAt(g); + if (55296 <= h && 57343 >= h) { + var m = a.charCodeAt(++g); + h = (65536 + ((h & 1023) << 10)) | (m & 1023); + } + H[b >> 2] = h; + b += 4; + if (b + 4 > c) break; + } + H[b >> 2] = 0; + return b - d; + } + function ra(a) { + for (var b = 0, c = 0; c < a.length; ++c) { + var d = a.charCodeAt(c); + 55296 <= d && 57343 >= d && ++c; + b += 4; + } + return b; + } + var I, J, E, G, F, H, K, sa, ta; + function ua(a) { + I = a; + f.HEAP8 = J = new Int8Array(a); + f.HEAP16 = G = new Int16Array(a); + f.HEAP32 = H = new Int32Array(a); + f.HEAPU8 = E = new Uint8Array(a); + f.HEAPU16 = F = new Uint16Array(a); + f.HEAPU32 = K = new Uint32Array(a); + f.HEAPF32 = sa = new Float32Array(a); + f.HEAPF64 = ta = new Float64Array(a); + } + var va = f.INITIAL_MEMORY || 16777216; + f.wasmMemory + ? (D = f.wasmMemory) + : (D = new WebAssembly.Memory({ initial: va / 65536, maximum: 32768 })); + D && (I = D.buffer); + va = I.byteLength; + ua(I); + var L, + wa = [], + xa = [], + ya = [], + za = []; + function Aa() { + var a = f.preRun.shift(); + wa.unshift(a); + } + var M = 0, + Ba = null, + N = null; + f.preloadedImages = {}; + f.preloadedAudios = {}; + function C(a) { + if (f.onAbort) f.onAbort(a); + z(a); + fa = !0; + a = new WebAssembly.RuntimeError( + 'abort(' + a + '). Build with -s ASSERTIONS=1 for more info.', + ); + ba(a); + throw a; + } + function Ca() { + var a = O; + return String.prototype.startsWith + ? a.startsWith('data:application/octet-stream;base64,') + : 0 === a.indexOf('data:application/octet-stream;base64,'); + } + var O = 'jxl_enc.wasm'; + if (!Ca()) { + var Da = O; + O = f.locateFile ? f.locateFile(Da, y) : y + Da; + } + function Ea() { + try { + if (A) return new Uint8Array(A); + if (da) return da(O); + throw 'both async and sync fetching of the wasm failed'; + } catch (a) { + C(a); + } + } + function Fa() { + return A || 'function' !== typeof fetch + ? Promise.resolve().then(Ea) + : fetch(O, { credentials: 'same-origin' }) + .then(function (a) { + if (!a.ok) throw "failed to load wasm binary file at '" + O + "'"; + return a.arrayBuffer(); + }) + .catch(function () { + return Ea(); + }); + } + function P(a) { + for (; 0 < a.length; ) { + var b = a.shift(); + if ('function' == typeof b) b(f); + else { + var c = b.fa; + 'number' === typeof c + ? void 0 === b.$ + ? L.get(c)() + : L.get(c)(b.$) + : c(void 0 === b.$ ? null : b.$); + } + } + } + function Ga(a) { + this.V = a - 16; + this.ra = function (b) { + H[(this.V + 8) >> 2] = b; + }; + this.oa = function (b) { + H[(this.V + 0) >> 2] = b; + }; + this.pa = function () { + H[(this.V + 4) >> 2] = 0; + }; + this.na = function () { + J[(this.V + 12) >> 0] = 0; + }; + this.qa = function () { + J[(this.V + 13) >> 0] = 0; + }; + this.ka = function (b, c) { + this.ra(b); + this.oa(c); + this.pa(); + this.na(); + this.qa(); + }; + } + function Q() { + return 0 < Q.ca; + } + var Ha = {}; + function Ia(a) { + for (; a.length; ) { + var b = a.pop(); + a.pop()(b); + } + } + function Ja(a) { + return this.fromWireType(K[a >> 2]); + } + var R = {}, + S = {}, + Ka = {}; + function La(a) { + if (void 0 === a) return '_unknown'; + a = a.replace(/[^a-zA-Z0-9_]/g, '$'); + var b = a.charCodeAt(0); + return 48 <= b && 57 >= b ? '_' + a : a; + } + function Ma(a, b) { + a = La(a); + return new Function( + 'body', + 'return function ' + + a + + '() {\n "use strict"; return body.apply(this, arguments);\n};\n', + )(b); + } + function Na(a) { + var b = Error, + c = Ma(a, function (d) { + this.name = a; + this.message = d; + d = Error(d).stack; + void 0 !== d && + (this.stack = + this.toString() + '\n' + d.replace(/^Error(:[^\n]*)?\n/, '')); + }); + c.prototype = Object.create(b.prototype); + c.prototype.constructor = c; + c.prototype.toString = function () { + return void 0 === this.message + ? this.name + : this.name + ': ' + this.message; + }; + return c; + } + var Oa = void 0; + function Pa(a, b, c) { + function d(k) { + k = c(k); + if (k.length !== a.length) + throw new Oa('Mismatched type converter count'); + for (var n = 0; n < a.length; ++n) T(a[n], k[n]); + } + a.forEach(function (k) { + Ka[k] = b; + }); + var g = Array(b.length), + h = [], + m = 0; + b.forEach(function (k, n) { + S.hasOwnProperty(k) + ? (g[n] = S[k]) + : (h.push(k), + R.hasOwnProperty(k) || (R[k] = []), + R[k].push(function () { + g[n] = S[k]; + ++m; + m === h.length && d(g); + })); + }); + 0 === h.length && d(g); + } + function Qa(a) { + switch (a) { + case 1: + return 0; + case 2: + return 1; + case 4: + return 2; + case 8: + return 3; + default: + throw new TypeError('Unknown type size: ' + a); + } + } + var Ra = void 0; + function U(a) { + for (var b = ''; E[a]; ) b += Ra[E[a++]]; + return b; + } + var Sa = void 0; + function V(a) { + throw new Sa(a); + } + function T(a, b, c) { + c = c || {}; + if (!('argPackAdvance' in b)) + throw new TypeError( + 'registerType registeredInstance requires argPackAdvance', + ); + var d = b.name; + a || V('type "' + d + '" must have a positive integer typeid pointer'); + if (S.hasOwnProperty(a)) { + if (c.ja) return; + V("Cannot register type '" + d + "' twice"); + } + S[a] = b; + delete Ka[a]; + R.hasOwnProperty(a) && + ((b = R[a]), + delete R[a], + b.forEach(function (g) { + g(); + })); + } + var Ta = [], + X = [ + {}, + { value: void 0 }, + { value: null }, + { value: !0 }, + { value: !1 }, + ]; + function Ua(a) { + 4 < a && 0 === --X[a].aa && ((X[a] = void 0), Ta.push(a)); + } + function Va(a) { + switch (a) { + case void 0: + return 1; + case null: + return 2; + case !0: + return 3; + case !1: + return 4; + default: + var b = Ta.length ? Ta.pop() : X.length; + X[b] = { aa: 1, value: a }; + return b; + } + } + function Wa(a) { + if (null === a) return 'null'; + var b = typeof a; + return 'object' === b || 'array' === b || 'function' === b + ? a.toString() + : '' + a; + } + function Xa(a, b) { + switch (b) { + case 2: + return function (c) { + return this.fromWireType(sa[c >> 2]); + }; + case 3: + return function (c) { + return this.fromWireType(ta[c >> 3]); + }; + default: + throw new TypeError('Unknown float type: ' + a); + } + } + function Ya(a) { + var b = Function; + if (!(b instanceof Function)) + throw new TypeError( + 'new_ called with constructor type ' + + typeof b + + ' which is not a function', + ); + var c = Ma(b.name || 'unknownFunctionName', function () {}); + c.prototype = b.prototype; + c = new c(); + a = b.apply(c, a); + return a instanceof Object ? a : c; + } + function Za(a, b) { + var c = f; + if (void 0 === c[a].S) { + var d = c[a]; + c[a] = function () { + c[a].S.hasOwnProperty(arguments.length) || + V( + "Function '" + + b + + "' called with an invalid number of arguments (" + + arguments.length + + ') - expects one of (' + + c[a].S + + ')!', + ); + return c[a].S[arguments.length].apply(this, arguments); + }; + c[a].S = []; + c[a].S[d.da] = d; + } + } + function $a(a, b, c) { + f.hasOwnProperty(a) + ? ((void 0 === c || (void 0 !== f[a].S && void 0 !== f[a].S[c])) && + V("Cannot register public name '" + a + "' twice"), + Za(a, a), + f.hasOwnProperty(c) && + V( + 'Cannot register multiple overloads of a function with the same number of arguments (' + + c + + ')!', + ), + (f[a].S[c] = b)) + : ((f[a] = b), void 0 !== c && (f[a].Aa = c)); + } + function ab(a, b) { + for (var c = [], d = 0; d < a; d++) c.push(H[(b >> 2) + d]); + return c; + } + function bb(a, b) { + 0 <= a.indexOf('j') || + C('Assertion failed: getDynCaller should only be called with i64 sigs'); + var c = []; + return function () { + c.length = arguments.length; + for (var d = 0; d < arguments.length; d++) c[d] = arguments[d]; + var g; + -1 != a.indexOf('j') + ? (g = + c && c.length + ? f['dynCall_' + a].apply(null, [b].concat(c)) + : f['dynCall_' + a].call(null, b)) + : (g = L.get(b).apply(null, c)); + return g; + }; + } + function Y(a, b) { + a = U(a); + var c = -1 != a.indexOf('j') ? bb(a, b) : L.get(b); + 'function' !== typeof c && + V('unknown function pointer with signature ' + a + ': ' + b); + return c; + } + var cb = void 0; + function db(a) { + a = eb(a); + var b = U(a); + Z(a); + return b; + } + function fb(a, b) { + function c(h) { + g[h] || S[h] || (Ka[h] ? Ka[h].forEach(c) : (d.push(h), (g[h] = !0))); + } + var d = [], + g = {}; + b.forEach(c); + throw new cb(a + ': ' + d.map(db).join([', '])); + } + function gb(a, b, c) { + switch (b) { + case 0: + return c + ? function (d) { + return J[d]; + } + : function (d) { + return E[d]; + }; + case 1: + return c + ? function (d) { + return G[d >> 1]; + } + : function (d) { + return F[d >> 1]; + }; + case 2: + return c + ? function (d) { + return H[d >> 2]; + } + : function (d) { + return K[d >> 2]; + }; + default: + throw new TypeError('Unknown integer type: ' + a); + } + } + var hb = {}; + function ib() { + return 'object' === typeof globalThis + ? globalThis + : Function('return this')(); + } + function jb(a, b) { + var c = S[a]; + void 0 === c && V(b + ' has unknown type ' + db(a)); + return c; + } + var kb = {}, + lb = {}; + function mb() { + if (!nb) { + var a = { + USER: 'web_user', + LOGNAME: 'web_user', + PATH: '/', + PWD: '/', + HOME: '/home/web_user', + LANG: + ( + ('object' === typeof navigator && + navigator.languages && + navigator.languages[0]) || + 'C' + ).replace('-', '_') + '.UTF-8', + _: ca || './this.program', + }, + b; + for (b in lb) a[b] = lb[b]; + var c = []; + for (b in a) c.push(b + '=' + a[b]); + nb = c; + } + return nb; + } + var nb, + ob = [null, [], []]; + function pb(a) { + return 0 === a % 4 && (0 !== a % 100 || 0 === a % 400); + } + function qb(a, b) { + for (var c = 0, d = 0; d <= b; c += a[d++]); + return c; + } + var rb = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], + sb = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + function tb(a, b) { + for (a = new Date(a.getTime()); 0 < b; ) { + var c = a.getMonth(), + d = (pb(a.getFullYear()) ? rb : sb)[c]; + if (b > d - a.getDate()) + (b -= d - a.getDate() + 1), + a.setDate(1), + 11 > c + ? a.setMonth(c + 1) + : (a.setMonth(0), a.setFullYear(a.getFullYear() + 1)); + else { + a.setDate(a.getDate() + b); + break; + } + } + return a; + } + function ub(a, b, c, d) { + function g(e, l, u) { + for (e = 'number' === typeof e ? e.toString() : e || ''; e.length < l; ) + e = u[0] + e; + return e; + } + function h(e, l) { + return g(e, l, '0'); + } + function m(e, l) { + function u(B) { + return 0 > B ? -1 : 0 < B ? 1 : 0; + } + var v; + 0 === (v = u(e.getFullYear() - l.getFullYear())) && + 0 === (v = u(e.getMonth() - l.getMonth())) && + (v = u(e.getDate() - l.getDate())); + return v; + } + function k(e) { + switch (e.getDay()) { + case 0: + return new Date(e.getFullYear() - 1, 11, 29); + case 1: + return e; + case 2: + return new Date(e.getFullYear(), 0, 3); + case 3: + return new Date(e.getFullYear(), 0, 2); + case 4: + return new Date(e.getFullYear(), 0, 1); + case 5: + return new Date(e.getFullYear() - 1, 11, 31); + case 6: + return new Date(e.getFullYear() - 1, 11, 30); + } + } + function n(e) { + e = tb(new Date(e.R + 1900, 0, 1), e.Z); + var l = new Date(e.getFullYear() + 1, 0, 4), + u = k(new Date(e.getFullYear(), 0, 4)); + l = k(l); + return 0 >= m(u, e) + ? 0 >= m(l, e) + ? e.getFullYear() + 1 + : e.getFullYear() + : e.getFullYear() - 1; + } + var p = H[(d + 40) >> 2]; + d = { + xa: H[d >> 2], + wa: H[(d + 4) >> 2], + X: H[(d + 8) >> 2], + W: H[(d + 12) >> 2], + U: H[(d + 16) >> 2], + R: H[(d + 20) >> 2], + Y: H[(d + 24) >> 2], + Z: H[(d + 28) >> 2], + Ba: H[(d + 32) >> 2], + va: H[(d + 36) >> 2], + ya: p ? ia(p) : '', + }; + c = ia(c); + p = { + '%c': '%a %b %d %H:%M:%S %Y', + '%D': '%m/%d/%y', + '%F': '%Y-%m-%d', + '%h': '%b', + '%r': '%I:%M:%S %p', + '%R': '%H:%M', + '%T': '%H:%M:%S', + '%x': '%m/%d/%y', + '%X': '%H:%M:%S', + '%Ec': '%c', + '%EC': '%C', + '%Ex': '%m/%d/%y', + '%EX': '%H:%M:%S', + '%Ey': '%y', + '%EY': '%Y', + '%Od': '%d', + '%Oe': '%e', + '%OH': '%H', + '%OI': '%I', + '%Om': '%m', + '%OM': '%M', + '%OS': '%S', + '%Ou': '%u', + '%OU': '%U', + '%OV': '%V', + '%Ow': '%w', + '%OW': '%W', + '%Oy': '%y', + }; + for (var q in p) c = c.replace(new RegExp(q, 'g'), p[q]); + var r = 'Sunday Monday Tuesday Wednesday Thursday Friday Saturday'.split( + ' ', + ), + x = 'January February March April May June July August September October November December'.split( + ' ', + ); + p = { + '%a': function (e) { + return r[e.Y].substring(0, 3); + }, + '%A': function (e) { + return r[e.Y]; + }, + '%b': function (e) { + return x[e.U].substring(0, 3); + }, + '%B': function (e) { + return x[e.U]; + }, + '%C': function (e) { + return h(((e.R + 1900) / 100) | 0, 2); + }, + '%d': function (e) { + return h(e.W, 2); + }, + '%e': function (e) { + return g(e.W, 2, ' '); + }, + '%g': function (e) { + return n(e).toString().substring(2); + }, + '%G': function (e) { + return n(e); + }, + '%H': function (e) { + return h(e.X, 2); + }, + '%I': function (e) { + e = e.X; + 0 == e ? (e = 12) : 12 < e && (e -= 12); + return h(e, 2); + }, + '%j': function (e) { + return h(e.W + qb(pb(e.R + 1900) ? rb : sb, e.U - 1), 3); + }, + '%m': function (e) { + return h(e.U + 1, 2); + }, + '%M': function (e) { + return h(e.wa, 2); + }, + '%n': function () { + return '\n'; + }, + '%p': function (e) { + return 0 <= e.X && 12 > e.X ? 'AM' : 'PM'; + }, + '%S': function (e) { + return h(e.xa, 2); + }, + '%t': function () { + return '\t'; + }, + '%u': function (e) { + return e.Y || 7; + }, + '%U': function (e) { + var l = new Date(e.R + 1900, 0, 1), + u = 0 === l.getDay() ? l : tb(l, 7 - l.getDay()); + e = new Date(e.R + 1900, e.U, e.W); + return 0 > m(u, e) + ? h( + Math.ceil( + (31 - + u.getDate() + + (qb(pb(e.getFullYear()) ? rb : sb, e.getMonth() - 1) - 31) + + e.getDate()) / + 7, + ), + 2, + ) + : 0 === m(u, l) + ? '01' + : '00'; + }, + '%V': function (e) { + var l = new Date(e.R + 1901, 0, 4), + u = k(new Date(e.R + 1900, 0, 4)); + l = k(l); + var v = tb(new Date(e.R + 1900, 0, 1), e.Z); + return 0 > m(v, u) + ? '53' + : 0 >= m(l, v) + ? '01' + : h( + Math.ceil( + (u.getFullYear() < e.R + 1900 + ? e.Z + 32 - u.getDate() + : e.Z + 1 - u.getDate()) / 7, + ), + 2, + ); + }, + '%w': function (e) { + return e.Y; + }, + '%W': function (e) { + var l = new Date(e.R, 0, 1), + u = + 1 === l.getDay() + ? l + : tb(l, 0 === l.getDay() ? 1 : 7 - l.getDay() + 1); + e = new Date(e.R + 1900, e.U, e.W); + return 0 > m(u, e) + ? h( + Math.ceil( + (31 - + u.getDate() + + (qb(pb(e.getFullYear()) ? rb : sb, e.getMonth() - 1) - 31) + + e.getDate()) / + 7, + ), + 2, + ) + : 0 === m(u, l) + ? '01' + : '00'; + }, + '%y': function (e) { + return (e.R + 1900).toString().substring(2); + }, + '%Y': function (e) { + return e.R + 1900; + }, + '%z': function (e) { + e = e.va; + var l = 0 <= e; + e = Math.abs(e) / 60; + return ( + (l ? '+' : '-') + + String('0000' + ((e / 60) * 100 + (e % 60))).slice(-4) + ); + }, + '%Z': function (e) { + return e.ya; + }, + '%%': function () { + return '%'; + }, + }; + for (q in p) + 0 <= c.indexOf(q) && (c = c.replace(new RegExp(q, 'g'), p[q](d))); + q = vb(c); + if (q.length > b) return 0; + J.set(q, a); + return q.length - 1; + } + Oa = f.InternalError = Na('InternalError'); + for (var wb = Array(256), xb = 0; 256 > xb; ++xb) + wb[xb] = String.fromCharCode(xb); + Ra = wb; + Sa = f.BindingError = Na('BindingError'); + f.count_emval_handles = function () { + for (var a = 0, b = 5; b < X.length; ++b) void 0 !== X[b] && ++a; + return a; + }; + f.get_first_emval = function () { + for (var a = 5; a < X.length; ++a) if (void 0 !== X[a]) return X[a]; + return null; + }; + cb = f.UnboundTypeError = Na('UnboundTypeError'); + function vb(a) { + var b = Array(ka(a) + 1); + ja(a, b, 0, b.length); + return b; + } + xa.push({ + fa: function () { + yb(); + }, + }); + var Ab = { + q: function (a) { + return zb(a + 16) + 16; + }, + D: function () {}, + p: function (a, b, c) { + new Ga(a).ka(b, c); + 'uncaught_exception' in Q ? Q.ca++ : (Q.ca = 1); + throw a; + }, + m: function (a) { + var b = Ha[a]; + delete Ha[a]; + var c = b.la, + d = b.ma, + g = b.ba, + h = g + .map(function (m) { + return m.ia; + }) + .concat( + g.map(function (m) { + return m.ta; + }), + ); + Pa([a], h, function (m) { + var k = {}; + g.forEach(function (n, p) { + var q = m[p], + r = n.ga, + x = n.ha, + e = m[p + g.length], + l = n.sa, + u = n.ua; + k[n.ea] = { + read: function (v) { + return q.fromWireType(r(x, v)); + }, + write: function (v, B) { + var W = []; + l(u, v, e.toWireType(W, B)); + Ia(W); + }, + }; + }); + return [ + { + name: b.name, + fromWireType: function (n) { + var p = {}, + q; + for (q in k) p[q] = k[q].read(n); + d(n); + return p; + }, + toWireType: function (n, p) { + for (var q in k) + if (!(q in p)) + throw new TypeError('Missing field: "' + q + '"'); + var r = c(); + for (q in k) k[q].write(r, p[q]); + null !== n && n.push(d, r); + return r; + }, + argPackAdvance: 8, + readValueFromPointer: Ja, + T: d, + }, + ]; + }); + }, + z: function (a, b, c, d, g) { + var h = Qa(c); + b = U(b); + T(a, { + name: b, + fromWireType: function (m) { + return !!m; + }, + toWireType: function (m, k) { + return k ? d : g; + }, + argPackAdvance: 8, + readValueFromPointer: function (m) { + if (1 === c) var k = J; + else if (2 === c) k = G; + else if (4 === c) k = H; + else throw new TypeError('Unknown boolean type size: ' + b); + return this.fromWireType(k[m >> h]); + }, + T: null, + }); + }, + y: function (a, b) { + b = U(b); + T(a, { + name: b, + fromWireType: function (c) { + var d = X[c].value; + Ua(c); + return d; + }, + toWireType: function (c, d) { + return Va(d); + }, + argPackAdvance: 8, + readValueFromPointer: Ja, + T: null, + }); + }, + j: function (a, b, c) { + c = Qa(c); + b = U(b); + T(a, { + name: b, + fromWireType: function (d) { + return d; + }, + toWireType: function (d, g) { + if ('number' !== typeof g && 'boolean' !== typeof g) + throw new TypeError( + 'Cannot convert "' + Wa(g) + '" to ' + this.name, + ); + return g; + }, + argPackAdvance: 8, + readValueFromPointer: Xa(b, c), + T: null, + }); + }, + l: function (a, b, c, d, g, h) { + var m = ab(b, c); + a = U(a); + g = Y(d, g); + $a( + a, + function () { + fb('Cannot call ' + a + ' due to unbound types', m); + }, + b - 1, + ); + Pa([], m, function (k) { + var n = a, + p = a; + k = [k[0], null].concat(k.slice(1)); + var q = g, + r = k.length; + 2 > r && + V( + "argTypes array size mismatch! Must at least get return value and 'this' types!", + ); + for (var x = null !== k[1] && !1, e = !1, l = 1; l < k.length; ++l) + if (null !== k[l] && void 0 === k[l].T) { + e = !0; + break; + } + var u = 'void' !== k[0].name, + v = '', + B = ''; + for (l = 0; l < r - 2; ++l) + (v += (0 !== l ? ', ' : '') + 'arg' + l), + (B += (0 !== l ? ', ' : '') + 'arg' + l + 'Wired'); + p = + 'return function ' + + La(p) + + '(' + + v + + ') {\nif (arguments.length !== ' + + (r - 2) + + ") {\nthrowBindingError('function " + + p + + " called with ' + arguments.length + ' arguments, expected " + + (r - 2) + + " args!');\n}\n"; + e && (p += 'var destructors = [];\n'); + var W = e ? 'destructors' : 'null'; + v = 'throwBindingError invoker fn runDestructors retType classParam'.split( + ' ', + ); + q = [V, q, h, Ia, k[0], k[1]]; + x && + (p += 'var thisWired = classParam.toWireType(' + W + ', this);\n'); + for (l = 0; l < r - 2; ++l) + (p += + 'var arg' + + l + + 'Wired = argType' + + l + + '.toWireType(' + + W + + ', arg' + + l + + '); // ' + + k[l + 2].name + + '\n'), + v.push('argType' + l), + q.push(k[l + 2]); + x && (B = 'thisWired' + (0 < B.length ? ', ' : '') + B); + p += + (u ? 'var rv = ' : '') + + 'invoker(fn' + + (0 < B.length ? ', ' : '') + + B + + ');\n'; + if (e) p += 'runDestructors(destructors);\n'; + else + for (l = x ? 1 : 2; l < k.length; ++l) + (r = 1 === l ? 'thisWired' : 'arg' + (l - 2) + 'Wired'), + null !== k[l].T && + ((p += r + '_dtor(' + r + '); // ' + k[l].name + '\n'), + v.push(r + '_dtor'), + q.push(k[l].T)); + u && (p += 'var ret = retType.fromWireType(rv);\nreturn ret;\n'); + v.push(p + '}\n'); + k = Ya(v).apply(null, q); + l = b - 1; + if (!f.hasOwnProperty(n)) + throw new Oa('Replacing nonexistant public symbol'); + void 0 !== f[n].S && void 0 !== l + ? (f[n].S[l] = k) + : ((f[n] = k), (f[n].da = l)); + return []; + }); + }, + d: function (a, b, c, d, g) { + function h(p) { + return p; + } + b = U(b); + -1 === g && (g = 4294967295); + var m = Qa(c); + if (0 === d) { + var k = 32 - 8 * c; + h = function (p) { + return (p << k) >>> k; + }; + } + var n = -1 != b.indexOf('unsigned'); + T(a, { + name: b, + fromWireType: h, + toWireType: function (p, q) { + if ('number' !== typeof q && 'boolean' !== typeof q) + throw new TypeError( + 'Cannot convert "' + Wa(q) + '" to ' + this.name, + ); + if (q < d || q > g) + throw new TypeError( + 'Passing a number "' + + Wa(q) + + '" from JS side to C/C++ side to an argument of type "' + + b + + '", which is outside the valid range [' + + d + + ', ' + + g + + ']!', + ); + return n ? q >>> 0 : q | 0; + }, + argPackAdvance: 8, + readValueFromPointer: gb(b, m, 0 !== d), + T: null, + }); + }, + c: function (a, b, c) { + function d(h) { + h >>= 2; + var m = K; + return new g(I, m[h + 1], m[h]); + } + var g = [ + Int8Array, + Uint8Array, + Int16Array, + Uint16Array, + Int32Array, + Uint32Array, + Float32Array, + Float64Array, + ][b]; + c = U(c); + T( + a, + { + name: c, + fromWireType: d, + argPackAdvance: 8, + readValueFromPointer: d, + }, + { ja: !0 }, + ); + }, + k: function (a, b) { + b = U(b); + var c = 'std::string' === b; + T(a, { + name: b, + fromWireType: function (d) { + var g = K[d >> 2]; + if (c) + for (var h = d + 4, m = 0; m <= g; ++m) { + var k = d + 4 + m; + if (m == g || 0 == E[k]) { + h = ia(h, k - h); + if (void 0 === n) var n = h; + else (n += String.fromCharCode(0)), (n += h); + h = k + 1; + } + } + else { + n = Array(g); + for (m = 0; m < g; ++m) n[m] = String.fromCharCode(E[d + 4 + m]); + n = n.join(''); + } + Z(d); + return n; + }, + toWireType: function (d, g) { + g instanceof ArrayBuffer && (g = new Uint8Array(g)); + var h = 'string' === typeof g; + h || + g instanceof Uint8Array || + g instanceof Uint8ClampedArray || + g instanceof Int8Array || + V('Cannot pass non-string to std::string'); + var m = (c && h + ? function () { + return ka(g); + } + : function () { + return g.length; + })(), + k = zb(4 + m + 1); + K[k >> 2] = m; + if (c && h) ja(g, E, k + 4, m + 1); + else if (h) + for (h = 0; h < m; ++h) { + var n = g.charCodeAt(h); + 255 < n && + (Z(k), + V('String has UTF-16 code units that do not fit in 8 bits')); + E[k + 4 + h] = n; + } + else for (h = 0; h < m; ++h) E[k + 4 + h] = g[h]; + null !== d && d.push(Z, k); + return k; + }, + argPackAdvance: 8, + readValueFromPointer: Ja, + T: function (d) { + Z(d); + }, + }); + }, + h: function (a, b, c) { + c = U(c); + if (2 === b) { + var d = ma; + var g = na; + var h = oa; + var m = function () { + return F; + }; + var k = 1; + } else + 4 === b && + ((d = pa), + (g = qa), + (h = ra), + (m = function () { + return K; + }), + (k = 2)); + T(a, { + name: c, + fromWireType: function (n) { + for (var p = K[n >> 2], q = m(), r, x = n + 4, e = 0; e <= p; ++e) { + var l = n + 4 + e * b; + if (e == p || 0 == q[l >> k]) + (x = d(x, l - x)), + void 0 === r + ? (r = x) + : ((r += String.fromCharCode(0)), (r += x)), + (x = l + b); + } + Z(n); + return r; + }, + toWireType: function (n, p) { + 'string' !== typeof p && + V('Cannot pass non-string to C++ string type ' + c); + var q = h(p), + r = zb(4 + q + b); + K[r >> 2] = q >> k; + g(p, r + 4, q + b); + null !== n && n.push(Z, r); + return r; + }, + argPackAdvance: 8, + readValueFromPointer: Ja, + T: function (n) { + Z(n); + }, + }); + }, + n: function (a, b, c, d, g, h) { + Ha[a] = { name: U(b), la: Y(c, d), ma: Y(g, h), ba: [] }; + }, + f: function (a, b, c, d, g, h, m, k, n, p) { + Ha[a].ba.push({ + ea: U(b), + ia: c, + ga: Y(d, g), + ha: h, + ta: m, + sa: Y(k, n), + ua: p, + }); + }, + A: function (a, b) { + b = U(b); + T(a, { + za: !0, + name: b, + argPackAdvance: 0, + fromWireType: function () {}, + toWireType: function () {}, + }); + }, + g: Ua, + C: function (a) { + if (0 === a) return Va(ib()); + var b = hb[a]; + a = void 0 === b ? U(a) : b; + return Va(ib()[a]); + }, + B: function (a) { + 4 < a && (X[a].aa += 1); + }, + o: function (a, b, c, d) { + a || V('Cannot use deleted val. handle = ' + a); + a = X[a].value; + var g = kb[b]; + if (!g) { + g = ''; + for (var h = 0; h < b; ++h) g += (0 !== h ? ', ' : '') + 'arg' + h; + var m = + 'return function emval_allocator_' + + b + + '(constructor, argTypes, args) {\n'; + for (h = 0; h < b; ++h) + m += + 'var argType' + + h + + " = requireRegisteredType(Module['HEAP32'][(argTypes >>> 2) + " + + h + + '], "parameter ' + + h + + '");\nvar arg' + + h + + ' = argType' + + h + + '.readValueFromPointer(args);\nargs += argType' + + h + + "['argPackAdvance'];\n"; + g = new Function( + 'requireRegisteredType', + 'Module', + '__emval_register', + m + + ('var obj = new constructor(' + + g + + ');\nreturn __emval_register(obj);\n}\n'), + )(jb, f, Va); + kb[b] = g; + } + return g(a, c, d); + }, + b: function () { + C(); + }, + t: function (a, b, c) { + E.copyWithin(a, b, b + c); + }, + e: function (a) { + a >>>= 0; + var b = E.length; + if (2147483648 < a) return !1; + for (var c = 1; 4 >= c; c *= 2) { + var d = b * (1 + 0.2 / c); + d = Math.min(d, a + 100663296); + d = Math.max(16777216, a, d); + 0 < d % 65536 && (d += 65536 - (d % 65536)); + a: { + try { + D.grow((Math.min(2147483648, d) - I.byteLength + 65535) >>> 16); + ua(D.buffer); + var g = 1; + break a; + } catch (h) {} + g = void 0; + } + if (g) return !0; + } + return !1; + }, + v: function (a, b) { + var c = 0; + mb().forEach(function (d, g) { + var h = b + c; + g = H[(a + 4 * g) >> 2] = h; + for (h = 0; h < d.length; ++h) J[g++ >> 0] = d.charCodeAt(h); + J[g >> 0] = 0; + c += d.length + 1; + }); + return 0; + }, + w: function (a, b) { + var c = mb(); + H[a >> 2] = c.length; + var d = 0; + c.forEach(function (g) { + d += g.length + 1; + }); + H[b >> 2] = d; + return 0; + }, + x: function () { + return 0; + }, + r: function () {}, + i: function (a, b, c, d) { + for (var g = 0, h = 0; h < c; h++) { + for ( + var m = H[(b + 8 * h) >> 2], k = H[(b + (8 * h + 4)) >> 2], n = 0; + n < k; + n++ + ) { + var p = E[m + n], + q = ob[a]; + if (0 === p || 10 === p) { + for (p = 0; q[p] && !(NaN <= p); ) ++p; + p = ha.decode( + q.subarray ? q.subarray(0, p) : new Uint8Array(q.slice(0, p)), + ); + (1 === a ? ea : z)(p); + q.length = 0; + } else q.push(p); + } + g += k; + } + H[d >> 2] = g; + return 0; + }, + a: D, + s: function () {}, + u: function (a, b, c, d) { + return ub(a, b, c, d); + }, + }; + (function () { + function a(g) { + f.asm = g.exports; + L = f.asm.E; + M--; + f.monitorRunDependencies && f.monitorRunDependencies(M); + 0 == M && + (null !== Ba && (clearInterval(Ba), (Ba = null)), + N && ((g = N), (N = null), g())); + } + function b(g) { + a(g.instance); + } + function c(g) { + return Fa() + .then(function (h) { + return WebAssembly.instantiate(h, d); + }) + .then(g, function (h) { + z('failed to asynchronously prepare wasm: ' + h); + C(h); + }); + } + var d = { a: Ab }; + M++; + f.monitorRunDependencies && f.monitorRunDependencies(M); + if (f.instantiateWasm) + try { + return f.instantiateWasm(d, a); + } catch (g) { + return ( + z('Module.instantiateWasm callback failed with error: ' + g), !1 + ); + } + (function () { + return A || + 'function' !== typeof WebAssembly.instantiateStreaming || + Ca() || + 'function' !== typeof fetch + ? c(b) + : fetch(O, { credentials: 'same-origin' }).then(function (g) { + return WebAssembly.instantiateStreaming(g, d).then(b, function ( + h, + ) { + z('wasm streaming compile failed: ' + h); + z('falling back to ArrayBuffer instantiation'); + return c(b); + }); + }); + })().catch(ba); + return {}; + })(); + var yb = (f.___wasm_call_ctors = function () { + return (yb = f.___wasm_call_ctors = f.asm.F).apply(null, arguments); + }), + zb = (f._malloc = function () { + return (zb = f._malloc = f.asm.G).apply(null, arguments); + }), + Z = (f._free = function () { + return (Z = f._free = f.asm.H).apply(null, arguments); + }), + eb = (f.___getTypeName = function () { + return (eb = f.___getTypeName = f.asm.I).apply(null, arguments); + }); + f.___embind_register_native_and_builtin_types = function () { + return (f.___embind_register_native_and_builtin_types = f.asm.J).apply( + null, + arguments, + ); + }; + f.dynCall_viijii = function () { + return (f.dynCall_viijii = f.asm.K).apply(null, arguments); + }; + f.dynCall_iiji = function () { + return (f.dynCall_iiji = f.asm.L).apply(null, arguments); + }; + f.dynCall_jiji = function () { + return (f.dynCall_jiji = f.asm.M).apply(null, arguments); + }; + f.dynCall_iiiiiijj = function () { + return (f.dynCall_iiiiiijj = f.asm.N).apply(null, arguments); + }; + f.dynCall_iiiiij = function () { + return (f.dynCall_iiiiij = f.asm.O).apply(null, arguments); + }; + f.dynCall_iiiiijj = function () { + return (f.dynCall_iiiiijj = f.asm.P).apply(null, arguments); + }; + var Bb; + N = function Cb() { + Bb || Db(); + Bb || (N = Cb); + }; + function Db() { + function a() { + if (!Bb && ((Bb = !0), (f.calledRun = !0), !fa)) { + P(xa); + P(ya); + aa(f); + if (f.onRuntimeInitialized) f.onRuntimeInitialized(); + if (f.postRun) + for ( + 'function' == typeof f.postRun && (f.postRun = [f.postRun]); + f.postRun.length; + + ) { + var b = f.postRun.shift(); + za.unshift(b); + } + P(za); + } + } + if (!(0 < M)) { + if (f.preRun) + for ( + 'function' == typeof f.preRun && (f.preRun = [f.preRun]); + f.preRun.length; + + ) + Aa(); + P(wa); + 0 < M || + (f.setStatus + ? (f.setStatus('Running...'), + setTimeout(function () { + setTimeout(function () { + f.setStatus(''); + }, 1); + a(); + }, 1)) + : a()); + } + } + f.run = Db; + if (f.preInit) + for ( + 'function' == typeof f.preInit && (f.preInit = [f.preInit]); + 0 < f.preInit.length; + + ) + f.preInit.pop()(); + noExitRuntime = !0; + Db(); + + return jxl_enc.ready; + }; +})(); +export default jxl_enc; diff --git a/codecs/jxl/enc/jxl_enc.wasm b/codecs/jxl/enc/jxl_enc.wasm new file mode 100755 index 00000000..393c086b Binary files /dev/null and b/codecs/jxl/enc/jxl_enc.wasm differ diff --git a/codecs/jxl/package.json b/codecs/jxl/package.json new file mode 100644 index 00000000..7503f466 --- /dev/null +++ b/codecs/jxl/package.json @@ -0,0 +1,6 @@ +{ + "name": "jxl", + "scripts": { + "build": "../build-cpp.sh" + } +} diff --git a/codecs/mozjpeg_enc/mozjpeg_enc.js b/codecs/mozjpeg_enc/mozjpeg_enc.js index cd4b0389..da8de588 100644 --- a/codecs/mozjpeg_enc/mozjpeg_enc.js +++ b/codecs/mozjpeg_enc/mozjpeg_enc.js @@ -4,82 +4,77 @@ var Module = (function () { return function (Module) { Module = Module || {}; - var g; - g || (g = typeof Module !== 'undefined' ? Module : {}); + var f; + f || (f = typeof Module !== 'undefined' ? Module : {}); var aa, ba; - g.ready = new Promise(function (a, b) { + f.ready = new Promise(function (a, b) { aa = a; ba = b; }); var r = {}, t; - for (t in g) g.hasOwnProperty(t) && (r[t] = g[t]); + for (t in f) f.hasOwnProperty(t) && (r[t] = f[t]); var ca = './this.program'; - function da(a, b) { + function ea(a, b) { throw b; } var u = '', - ea; + fa; u = self.location.href; _scriptDir && (u = _scriptDir); 0 !== u.indexOf('blob:') ? (u = u.substr(0, u.lastIndexOf('/') + 1)) : (u = ''); - ea = function (a) { + fa = function (a) { var b = new XMLHttpRequest(); b.open('GET', a, !1); b.responseType = 'arraybuffer'; b.send(null); return new Uint8Array(b.response); }; - var ha = g.print || console.log.bind(console), - v = g.printErr || console.warn.bind(console); - for (t in r) r.hasOwnProperty(t) && (g[t] = r[t]); + var ha = f.print || console.log.bind(console), + v = f.printErr || console.warn.bind(console); + for (t in r) r.hasOwnProperty(t) && (f[t] = r[t]); r = null; - g.thisProgram && (ca = g.thisProgram); - g.quit && (da = g.quit); + f.thisProgram && (ca = f.thisProgram); + f.quit && (ea = f.quit); var w; - g.wasmBinary && (w = g.wasmBinary); + f.wasmBinary && (w = f.wasmBinary); var noExitRuntime; - g.noExitRuntime && (noExitRuntime = g.noExitRuntime); + f.noExitRuntime && (noExitRuntime = f.noExitRuntime); 'object' !== typeof WebAssembly && A('no native wasm support detected'); var B, - C = new WebAssembly.Table({ - initial: 122, - maximum: 122, - element: 'anyfunc', - }), ia = !1, ja = new TextDecoder('utf8'); function ka(a, b, c) { - var d = D; + var d = C; if (0 < c) { c = b + c - 1; for (var e = 0; e < a.length; ++e) { - var f = a.charCodeAt(e); - if (55296 <= f && 57343 >= f) { + var g = a.charCodeAt(e); + if (55296 <= g && 57343 >= g) { var m = a.charCodeAt(++e); - f = (65536 + ((f & 1023) << 10)) | (m & 1023); + g = (65536 + ((g & 1023) << 10)) | (m & 1023); } - if (127 >= f) { + if (127 >= g) { if (b >= c) break; - d[b++] = f; + d[b++] = g; } else { - if (2047 >= f) { + if (2047 >= g) { if (b + 1 >= c) break; - d[b++] = 192 | (f >> 6); + d[b++] = 192 | (g >> 6); } else { - if (65535 >= f) { + if (65535 >= g) { if (b + 2 >= c) break; - d[b++] = 224 | (f >> 12); + d[b++] = 224 | (g >> 12); } else { if (b + 3 >= c) break; - d[b++] = 240 | (f >> 18); - d[b++] = 128 | ((f >> 12) & 63); + d[b++] = 240 | (g >> 18); + d[b++] = 128 | ((g >> 12) & 63); } - d[b++] = 128 | ((f >> 6) & 63); + d[b++] = 128 | ((g >> 6) & 63); } - d[b++] = 128 | (f & 63); + d[b++] = 128 | (g & 63); } } d[b] = 0; @@ -88,8 +83,8 @@ var Module = (function () { var la = new TextDecoder('utf-16le'); function ma(a, b) { var c = a >> 1; - for (b = c + b / 2; !(c >= b) && E[c]; ) ++c; - return la.decode(D.subarray(a, c << 1)); + for (b = c + b / 2; !(c >= b) && D[c]; ) ++c; + return la.decode(C.subarray(a, c << 1)); } function na(a, b, c) { void 0 === c && (c = 2147483647); @@ -97,8 +92,8 @@ var Module = (function () { c -= 2; var d = b; c = c < 2 * a.length ? c / 2 : a.length; - for (var e = 0; e < c; ++e) (G[b >> 1] = a.charCodeAt(e)), (b += 2); - G[b >> 1] = 0; + for (var e = 0; e < c; ++e) (E[b >> 1] = a.charCodeAt(e)), (b += 2); + E[b >> 1] = 0; return b - d; } function oa(a) { @@ -106,7 +101,7 @@ var Module = (function () { } function pa(a, b) { for (var c = 0, d = ''; !(c >= b / 4); ) { - var e = H[(a + 4 * c) >> 2]; + var e = G[(a + 4 * c) >> 2]; if (0 == e) break; ++c; 65536 <= e @@ -122,16 +117,16 @@ var Module = (function () { var d = b; c = d + c - 4; for (var e = 0; e < a.length; ++e) { - var f = a.charCodeAt(e); - if (55296 <= f && 57343 >= f) { + var g = a.charCodeAt(e); + if (55296 <= g && 57343 >= g) { var m = a.charCodeAt(++e); - f = (65536 + ((f & 1023) << 10)) | (m & 1023); + g = (65536 + ((g & 1023) << 10)) | (m & 1023); } - H[b >> 2] = f; + G[b >> 2] = g; b += 4; if (b + 4 > c) break; } - H[b >> 2] = 0; + G[b >> 2] = 0; return b - d; } function ra(a) { @@ -142,40 +137,41 @@ var Module = (function () { } return b; } - var I, J, D, G, E, H, K, sa, ta; + var H, I, C, E, D, G, J, sa, ta; function ua(a) { - I = a; - g.HEAP8 = J = new Int8Array(a); - g.HEAP16 = G = new Int16Array(a); - g.HEAP32 = H = new Int32Array(a); - g.HEAPU8 = D = new Uint8Array(a); - g.HEAPU16 = E = new Uint16Array(a); - g.HEAPU32 = K = new Uint32Array(a); - g.HEAPF32 = sa = new Float32Array(a); - g.HEAPF64 = ta = new Float64Array(a); + H = a; + f.HEAP8 = I = new Int8Array(a); + f.HEAP16 = E = new Int16Array(a); + f.HEAP32 = G = new Int32Array(a); + f.HEAPU8 = C = new Uint8Array(a); + f.HEAPU16 = D = new Uint16Array(a); + f.HEAPU32 = J = new Uint32Array(a); + f.HEAPF32 = sa = new Float32Array(a); + f.HEAPF64 = ta = new Float64Array(a); } - var va = g.INITIAL_MEMORY || 16777216; - g.wasmMemory - ? (B = g.wasmMemory) + var va = f.INITIAL_MEMORY || 16777216; + f.wasmMemory + ? (B = f.wasmMemory) : (B = new WebAssembly.Memory({ initial: va / 65536, maximum: 32768 })); - B && (I = B.buffer); - va = I.byteLength; - ua(I); - var wa = [], + B && (H = B.buffer); + va = H.byteLength; + ua(H); + var K, + wa = [], xa = [], ya = [], za = []; function Aa() { - var a = g.preRun.shift(); + var a = f.preRun.shift(); wa.unshift(a); } var L = 0, Ba = null, M = null; - g.preloadedImages = {}; - g.preloadedAudios = {}; + f.preloadedImages = {}; + f.preloadedAudios = {}; function A(a) { - if (g.onAbort) g.onAbort(a); + if (f.onAbort) f.onAbort(a); v(a); ia = !0; a = new WebAssembly.RuntimeError( @@ -193,12 +189,12 @@ var Module = (function () { var N = 'mozjpeg_enc.wasm'; if (!Ca()) { var Da = N; - N = g.locateFile ? g.locateFile(Da, u) : u + Da; + N = f.locateFile ? f.locateFile(Da, u) : u + Da; } function Ea() { try { if (w) return new Uint8Array(w); - if (ea) return ea(N); + if (fa) return fa(N); throw 'both async and sync fetching of the wasm failed'; } catch (a) { A(a); @@ -216,74 +212,41 @@ var Module = (function () { return Ea(); }); } - xa.push({ - V: function () { - Ga(); - }, - }); function O(a) { for (; 0 < a.length; ) { var b = a.shift(); - if ('function' == typeof b) b(g); + if ('function' == typeof b) b(f); else { - var c = b.V; + var c = b.R; 'number' === typeof c - ? void 0 === b.O - ? C.get(c)() - : C.get(c)(b.O) - : c(void 0 === b.O ? null : b.O); + ? void 0 === b.L + ? K.get(c)() + : K.get(c)(b.L) + : c(void 0 === b.L ? null : b.L); } } } - function Ha(a) { - this.N = a - 16; - this.ga = function (b) { - H[(this.N + 8) >> 2] = b; - }; - this.da = function (b) { - H[(this.N + 0) >> 2] = b; - }; - this.ea = function () { - H[(this.N + 4) >> 2] = 0; - }; - this.ca = function () { - J[(this.N + 12) >> 0] = 0; - }; - this.fa = function () { - J[(this.N + 13) >> 0] = 0; - }; - this.$ = function (b, c) { - this.ga(b); - this.da(c); - this.ea(); - this.ca(); - this.fa(); - }; - } - function P() { - return 0 < P.R; - } - var Q = {}; - function Ia(a) { + var P = {}; + function Ga(a) { for (; a.length; ) { var b = a.pop(); a.pop()(b); } } - function Ja(a) { - return this.fromWireType(K[a >> 2]); + function Q(a) { + return this.fromWireType(J[a >> 2]); } var R = {}, S = {}, - Ka = {}; - function La(a) { + Ha = {}; + function Ia(a) { if (void 0 === a) return '_unknown'; a = a.replace(/[^a-zA-Z0-9_]/g, '$'); var b = a.charCodeAt(0); return 48 <= b && 57 >= b ? '_' + a : a; } - function Ma(a, b) { - a = La(a); + function Ja(a, b) { + a = Ia(a); return new Function( 'body', 'return function ' + @@ -291,9 +254,9 @@ var Module = (function () { '() {\n "use strict"; return body.apply(this, arguments);\n};\n', )(b); } - function Na(a) { + function Ka(a) { var b = Error, - c = Ma(a, function (d) { + c = Ja(a, function (d) { this.name = a; this.message = d; d = Error(d).stack; @@ -310,34 +273,34 @@ var Module = (function () { }; return c; } - var Oa = void 0; - function Pa(a, b, c) { + var La = void 0; + function Ma(a, b, c) { function d(h) { h = c(h); if (h.length !== a.length) - throw new Oa('Mismatched type converter count'); + throw new La('Mismatched type converter count'); for (var n = 0; n < a.length; ++n) T(a[n], h[n]); } a.forEach(function (h) { - Ka[h] = b; + Ha[h] = b; }); var e = Array(b.length), - f = [], + g = [], m = 0; b.forEach(function (h, n) { S.hasOwnProperty(h) ? (e[n] = S[h]) - : (f.push(h), + : (g.push(h), R.hasOwnProperty(h) || (R[h] = []), R[h].push(function () { e[n] = S[h]; ++m; - m === f.length && d(e); + m === g.length && d(e); })); }); - 0 === f.length && d(e); + 0 === g.length && d(e); } - function Qa(a) { + function Na(a) { switch (a) { case 1: return 0; @@ -351,14 +314,14 @@ var Module = (function () { throw new TypeError('Unknown type size: ' + a); } } - var Ra = void 0; + var Oa = void 0; function U(a) { - for (var b = ''; D[a]; ) b += Ra[D[a++]]; + for (var b = ''; C[a]; ) b += Oa[C[a++]]; return b; } - var Sa = void 0; + var Pa = void 0; function W(a) { - throw new Sa(a); + throw new Pa(a); } function T(a, b, c) { c = c || {}; @@ -369,11 +332,11 @@ var Module = (function () { var d = b.name; a || W('type "' + d + '" must have a positive integer typeid pointer'); if (S.hasOwnProperty(a)) { - if (c.Z) return; + if (c.V) return; W("Cannot register type '" + d + "' twice"); } S[a] = b; - delete Ka[a]; + delete Ha[a]; R.hasOwnProperty(a) && ((b = R[a]), delete R[a], @@ -381,7 +344,7 @@ var Module = (function () { e(); })); } - var Ta = [], + var Qa = [], X = [ {}, { value: void 0 }, @@ -389,10 +352,10 @@ var Module = (function () { { value: !0 }, { value: !1 }, ]; - function Ua(a) { - 4 < a && 0 === --X[a].P && ((X[a] = void 0), Ta.push(a)); + function Ra(a) { + 4 < a && 0 === --X[a].M && ((X[a] = void 0), Qa.push(a)); } - function Va(a) { + function Sa(a) { switch (a) { case void 0: return 1; @@ -403,19 +366,19 @@ var Module = (function () { case !1: return 4; default: - var b = Ta.length ? Ta.pop() : X.length; - X[b] = { P: 1, value: a }; + var b = Qa.length ? Qa.pop() : X.length; + X[b] = { M: 1, value: a }; return b; } } - function Wa(a) { + function Ta(a) { if (null === a) return 'null'; var b = typeof a; return 'object' === b || 'array' === b || 'function' === b ? a.toString() : '' + a; } - function Xa(a, b) { + function Ua(a, b) { switch (b) { case 2: return function (c) { @@ -429,7 +392,7 @@ var Module = (function () { throw new TypeError('Unknown float type: ' + a); } } - function Ya(a) { + function Va(a) { var b = Function; if (!(b instanceof Function)) throw new TypeError( @@ -437,52 +400,52 @@ var Module = (function () { typeof b + ' which is not a function', ); - var c = Ma(b.name || 'unknownFunctionName', function () {}); + var c = Ja(b.name || 'unknownFunctionName', function () {}); c.prototype = b.prototype; c = new c(); a = b.apply(c, a); return a instanceof Object ? a : c; } - function Za(a, b) { - var c = g; - if (void 0 === c[a].L) { + function Wa(a, b) { + var c = f; + if (void 0 === c[a].J) { var d = c[a]; c[a] = function () { - c[a].L.hasOwnProperty(arguments.length) || + c[a].J.hasOwnProperty(arguments.length) || W( "Function '" + b + "' called with an invalid number of arguments (" + arguments.length + ') - expects one of (' + - c[a].L + + c[a].J + ')!', ); - return c[a].L[arguments.length].apply(this, arguments); + return c[a].J[arguments.length].apply(this, arguments); }; - c[a].L = []; - c[a].L[d.T] = d; + c[a].J = []; + c[a].J[d.O] = d; } } - function $a(a, b, c) { - g.hasOwnProperty(a) - ? ((void 0 === c || (void 0 !== g[a].L && void 0 !== g[a].L[c])) && + function Xa(a, b, c) { + f.hasOwnProperty(a) + ? ((void 0 === c || (void 0 !== f[a].J && void 0 !== f[a].J[c])) && W("Cannot register public name '" + a + "' twice"), - Za(a, a), - g.hasOwnProperty(c) && + Wa(a, a), + f.hasOwnProperty(c) && W( 'Cannot register multiple overloads of a function with the same number of arguments (' + c + ')!', ), - (g[a].L[c] = b)) - : ((g[a] = b), void 0 !== c && (g[a].la = c)); + (f[a].J[c] = b)) + : ((f[a] = b), void 0 !== c && (f[a].ba = c)); } - function ab(a, b) { - for (var c = [], d = 0; d < a; d++) c.push(H[(b >> 2) + d]); + function Ya(a, b) { + for (var c = [], d = 0; d < a; d++) c.push(G[(b >> 2) + d]); return c; } - function bb(a, b) { + function Za(a, b) { 0 <= a.indexOf('j') || A('Assertion failed: getDynCaller should only be called with i64 sigs'); var c = []; @@ -493,80 +456,80 @@ var Module = (function () { -1 != a.indexOf('j') ? (e = c && c.length - ? g['dynCall_' + a].apply(null, [b].concat(c)) - : g['dynCall_' + a].call(null, b)) - : (e = C.get(b).apply(null, c)); + ? f['dynCall_' + a].apply(null, [b].concat(c)) + : f['dynCall_' + a].call(null, b)) + : (e = K.get(b).apply(null, c)); return e; }; } function Y(a, b) { a = U(a); - var c = -1 != a.indexOf('j') ? bb(a, b) : C.get(b); + var c = -1 != a.indexOf('j') ? Za(a, b) : K.get(b); 'function' !== typeof c && W('unknown function pointer with signature ' + a + ': ' + b); return c; } - var cb = void 0; - function db(a) { - a = eb(a); + var $a = void 0; + function ab(a) { + a = bb(a); var b = U(a); Z(a); return b; } - function fb(a, b) { - function c(f) { - e[f] || S[f] || (Ka[f] ? Ka[f].forEach(c) : (d.push(f), (e[f] = !0))); + function cb(a, b) { + function c(g) { + e[g] || S[g] || (Ha[g] ? Ha[g].forEach(c) : (d.push(g), (e[g] = !0))); } var d = [], e = {}; b.forEach(c); - throw new cb(a + ': ' + d.map(db).join([', '])); + throw new $a(a + ': ' + d.map(ab).join([', '])); } - function gb(a, b, c) { + function db(a, b, c) { switch (b) { case 0: return c ? function (d) { - return J[d]; + return I[d]; } : function (d) { - return D[d]; + return C[d]; }; case 1: return c ? function (d) { - return G[d >> 1]; + return E[d >> 1]; } : function (d) { - return E[d >> 1]; + return D[d >> 1]; }; case 2: return c ? function (d) { - return H[d >> 2]; + return G[d >> 2]; } : function (d) { - return K[d >> 2]; + return J[d >> 2]; }; default: throw new TypeError('Unknown integer type: ' + a); } } - var hb = {}; - function ib() { + var eb = {}; + function fb() { return 'object' === typeof globalThis ? globalThis : Function('return this')(); } - function jb(a, b) { + function gb(a, b) { var c = S[a]; - void 0 === c && W(b + ' has unknown type ' + db(a)); + void 0 === c && W(b + ' has unknown type ' + ab(a)); return c; } - var kb = {}, - lb = {}; - function mb() { - if (!nb) { + var hb = {}, + ib = {}; + function jb() { + if (!kb) { var a = { USER: 'web_user', LOGNAME: 'web_user', @@ -583,72 +546,68 @@ var Module = (function () { _: ca || './this.program', }, b; - for (b in lb) a[b] = lb[b]; + for (b in ib) a[b] = ib[b]; var c = []; for (b in a) c.push(b + '=' + a[b]); - nb = c; + kb = c; } - return nb; + return kb; } - var nb, - ob = [null, [], []]; - Oa = g.InternalError = Na('InternalError'); - for (var pb = Array(256), qb = 0; 256 > qb; ++qb) - pb[qb] = String.fromCharCode(qb); - Ra = pb; - Sa = g.BindingError = Na('BindingError'); - g.count_emval_handles = function () { + var kb, + lb = [null, [], []]; + La = f.InternalError = Ka('InternalError'); + for (var mb = Array(256), nb = 0; 256 > nb; ++nb) + mb[nb] = String.fromCharCode(nb); + Oa = mb; + Pa = f.BindingError = Ka('BindingError'); + f.count_emval_handles = function () { for (var a = 0, b = 5; b < X.length; ++b) void 0 !== X[b] && ++a; return a; }; - g.get_first_emval = function () { + f.get_first_emval = function () { for (var a = 5; a < X.length; ++a) if (void 0 !== X[a]) return X[a]; return null; }; - cb = g.UnboundTypeError = Na('UnboundTypeError'); - var tb = { - l: function (a) { - return rb(a + 16) + 16; + $a = f.UnboundTypeError = Ka('UnboundTypeError'); + xa.push({ + R: function () { + ob(); }, - E: function () {}, - C: function (a, b, c) { - new Ha(a).$(b, c); - 'uncaught_exception' in P ? P.R++ : (P.R = 1); - throw a; - }, - b: C, - n: function (a) { - var b = Q[a]; - delete Q[a]; - var c = b.aa, - d = b.ba, - e = b.S, - f = e + }); + var rb = { + B: function () {}, + o: function (a) { + var b = P[a]; + delete P[a]; + var c = b.W, + d = b.X, + e = b.N, + g = e .map(function (m) { - return m.Y; + return m.U; }) .concat( e.map(function (m) { - return m.ia; + return m.Z; }), ); - Pa([a], f, function (m) { + Ma([a], g, function (m) { var h = {}; e.forEach(function (n, k) { var l = m[k], - q = n.W, - x = n.X, + q = n.S, + x = n.T, y = m[k + e.length], - p = n.ha, - fa = n.ja; - h[n.U] = { + p = n.Y, + da = n.$; + h[n.P] = { read: function (z) { return l.fromWireType(q(x, z)); }, write: function (z, F) { var V = []; - p(fa, z, y.toWireType(V, F)); - Ia(V); + p(da, z, y.toWireType(V, F)); + Ga(V); }, }; }); @@ -672,14 +631,14 @@ var Module = (function () { return q; }, argPackAdvance: 8, - readValueFromPointer: Ja, - M: d, + readValueFromPointer: Q, + K: d, }, ]; }); }, - z: function (a, b, c, d, e) { - var f = Qa(c); + y: function (a, b, c, d, e) { + var g = Na(c); b = U(b); T(a, { name: b, @@ -691,34 +650,34 @@ var Module = (function () { }, argPackAdvance: 8, readValueFromPointer: function (m) { - if (1 === c) var h = J; - else if (2 === c) h = G; - else if (4 === c) h = H; + if (1 === c) var h = I; + else if (2 === c) h = E; + else if (4 === c) h = G; else throw new TypeError('Unknown boolean type size: ' + b); - return this.fromWireType(h[m >> f]); + return this.fromWireType(h[m >> g]); }, - M: null, + K: null, }); }, - y: function (a, b) { + x: function (a, b) { b = U(b); T(a, { name: b, fromWireType: function (c) { var d = X[c].value; - Ua(c); + Ra(c); return d; }, toWireType: function (c, d) { - return Va(d); + return Sa(d); }, argPackAdvance: 8, - readValueFromPointer: Ja, - M: null, + readValueFromPointer: Q, + K: null, }); }, - j: function (a, b, c) { - c = Qa(c); + k: function (a, b, c) { + c = Na(c); b = U(b); T(a, { name: b, @@ -728,27 +687,27 @@ var Module = (function () { toWireType: function (d, e) { if ('number' !== typeof e && 'boolean' !== typeof e) throw new TypeError( - 'Cannot convert "' + Wa(e) + '" to ' + this.name, + 'Cannot convert "' + Ta(e) + '" to ' + this.name, ); return e; }, argPackAdvance: 8, - readValueFromPointer: Xa(b, c), - M: null, + readValueFromPointer: Ua(b, c), + K: null, }); }, - g: function (a, b, c, d, e, f) { - var m = ab(b, c); + g: function (a, b, c, d, e, g) { + var m = Ya(b, c); a = U(a); e = Y(d, e); - $a( + Xa( a, function () { - fb('Cannot call ' + a + ' due to unbound types', m); + cb('Cannot call ' + a + ' due to unbound types', m); }, b - 1, ); - Pa([], m, function (h) { + Ma([], m, function (h) { var n = a, k = a; h = [h[0], null].concat(h.slice(1)); @@ -759,11 +718,11 @@ var Module = (function () { "argTypes array size mismatch! Must at least get return value and 'this' types!", ); for (var x = null !== h[1] && !1, y = !1, p = 1; p < h.length; ++p) - if (null !== h[p] && void 0 === h[p].M) { + if (null !== h[p] && void 0 === h[p].K) { y = !0; break; } - var fa = 'void' !== h[0].name, + var da = 'void' !== h[0].name, z = '', F = ''; for (p = 0; p < q - 2; ++p) @@ -771,7 +730,7 @@ var Module = (function () { (F += (0 !== p ? ', ' : '') + 'arg' + p + 'Wired'); k = 'return function ' + - La(k) + + Ia(k) + '(' + z + ') {\nif (arguments.length !== ' + @@ -786,7 +745,7 @@ var Module = (function () { z = 'throwBindingError invoker fn runDestructors retType classParam'.split( ' ', ); - l = [W, l, f, Ia, h[0], h[1]]; + l = [W, l, g, Ga, h[0], h[1]]; x && (k += 'var thisWired = classParam.toWireType(' + V + ', this);\n'); for (p = 0; p < q - 2; ++p) @@ -806,7 +765,7 @@ var Module = (function () { l.push(h[p + 2]); x && (F = 'thisWired' + (0 < F.length ? ', ' : '') + F); k += - (fa ? 'var rv = ' : '') + + (da ? 'var rv = ' : '') + 'invoker(fn' + (0 < F.length ? ', ' : '') + F + @@ -815,48 +774,48 @@ var Module = (function () { else for (p = x ? 1 : 2; p < h.length; ++p) (q = 1 === p ? 'thisWired' : 'arg' + (p - 2) + 'Wired'), - null !== h[p].M && + null !== h[p].K && ((k += q + '_dtor(' + q + '); // ' + h[p].name + '\n'), z.push(q + '_dtor'), - l.push(h[p].M)); - fa && (k += 'var ret = retType.fromWireType(rv);\nreturn ret;\n'); + l.push(h[p].K)); + da && (k += 'var ret = retType.fromWireType(rv);\nreturn ret;\n'); z.push(k + '}\n'); - h = Ya(z).apply(null, l); + h = Va(z).apply(null, l); p = b - 1; - if (!g.hasOwnProperty(n)) - throw new Oa('Replacing nonexistant public symbol'); - void 0 !== g[n].L && void 0 !== p - ? (g[n].L[p] = h) - : ((g[n] = h), (g[n].T = p)); + if (!f.hasOwnProperty(n)) + throw new La('Replacing nonexistant public symbol'); + void 0 !== f[n].J && void 0 !== p + ? (f[n].J[p] = h) + : ((f[n] = h), (f[n].O = p)); return []; }); }, d: function (a, b, c, d, e) { - function f(k) { + function g(k) { return k; } b = U(b); -1 === e && (e = 4294967295); - var m = Qa(c); + var m = Na(c); if (0 === d) { var h = 32 - 8 * c; - f = function (k) { + g = function (k) { return (k << h) >>> h; }; } var n = -1 != b.indexOf('unsigned'); T(a, { name: b, - fromWireType: f, + fromWireType: g, toWireType: function (k, l) { if ('number' !== typeof l && 'boolean' !== typeof l) throw new TypeError( - 'Cannot convert "' + Wa(l) + '" to ' + this.name, + 'Cannot convert "' + Ta(l) + '" to ' + this.name, ); if (l < d || l > e) throw new TypeError( 'Passing a number "' + - Wa(l) + + Ta(l) + '" from JS side to C/C++ side to an argument of type "' + b + '", which is outside the valid range [' + @@ -868,15 +827,15 @@ var Module = (function () { return n ? l >>> 0 : l | 0; }, argPackAdvance: 8, - readValueFromPointer: gb(b, m, 0 !== d), - M: null, + readValueFromPointer: db(b, m, 0 !== d), + K: null, }); }, c: function (a, b, c) { - function d(f) { - f >>= 2; - var m = K; - return new e(I, m[f + 1], m[f]); + function d(g) { + g >>= 2; + var m = J; + return new e(H, m[g + 1], m[g]); } var e = [ Int8Array, @@ -897,32 +856,32 @@ var Module = (function () { argPackAdvance: 8, readValueFromPointer: d, }, - { Z: !0 }, + { V: !0 }, ); }, - k: function (a, b) { + l: function (a, b) { b = U(b); var c = 'std::string' === b; T(a, { name: b, fromWireType: function (d) { - var e = K[d >> 2]; + var e = J[d >> 2]; if (c) - for (var f = d + 4, m = 0; m <= e; ++m) { + for (var g = d + 4, m = 0; m <= e; ++m) { var h = d + 4 + m; - if (m == e || 0 == D[h]) { - if (f) { - for (var n = f + (h - f), k = f; !(k >= n) && D[k]; ) ++k; - f = ja.decode(D.subarray(f, k)); - } else f = ''; - if (void 0 === l) var l = f; - else (l += String.fromCharCode(0)), (l += f); - f = h + 1; + if (m == e || 0 == C[h]) { + if (g) { + for (var n = g + (h - g), k = g; !(k >= n) && C[k]; ) ++k; + g = ja.decode(C.subarray(g, k)); + } else g = ''; + if (void 0 === l) var l = g; + else (l += String.fromCharCode(0)), (l += g); + g = h + 1; } } else { l = Array(e); - for (m = 0; m < e; ++m) l[m] = String.fromCharCode(D[d + 4 + m]); + for (m = 0; m < e; ++m) l[m] = String.fromCharCode(C[d + 4 + m]); l = l.join(''); } Z(d); @@ -930,13 +889,13 @@ var Module = (function () { }, toWireType: function (d, e) { e instanceof ArrayBuffer && (e = new Uint8Array(e)); - var f = 'string' === typeof e; - f || + var g = 'string' === typeof e; + g || e instanceof Uint8Array || e instanceof Uint8ClampedArray || e instanceof Int8Array || W('Cannot pass non-string to std::string'); - var m = (c && f + var m = (c && g ? function () { for (var k = 0, l = 0; l < e.length; ++l) { var q = e.charCodeAt(l); @@ -954,24 +913,24 @@ var Module = (function () { : function () { return e.length; })(), - h = rb(4 + m + 1); - K[h >> 2] = m; - if (c && f) ka(e, h + 4, m + 1); - else if (f) - for (f = 0; f < m; ++f) { - var n = e.charCodeAt(f); + h = pb(4 + m + 1); + J[h >> 2] = m; + if (c && g) ka(e, h + 4, m + 1); + else if (g) + for (g = 0; g < m; ++g) { + var n = e.charCodeAt(g); 255 < n && (Z(h), W('String has UTF-16 code units that do not fit in 8 bits')); - D[h + 4 + f] = n; + C[h + 4 + g] = n; } - else for (f = 0; f < m; ++f) D[h + 4 + f] = e[f]; + else for (g = 0; g < m; ++g) C[h + 4 + g] = e[g]; null !== d && d.push(Z, h); return h; }, argPackAdvance: 8, - readValueFromPointer: Ja, - M: function (d) { + readValueFromPointer: Q, + K: function (d) { Z(d); }, }); @@ -981,24 +940,24 @@ var Module = (function () { if (2 === b) { var d = ma; var e = na; - var f = oa; + var g = oa; var m = function () { - return E; + return D; }; var h = 1; } else 4 === b && ((d = pa), (e = qa), - (f = ra), + (g = ra), (m = function () { - return K; + return J; }), (h = 2)); T(a, { name: c, fromWireType: function (n) { - for (var k = K[n >> 2], l = m(), q, x = n + 4, y = 0; y <= k; ++y) { + for (var k = J[n >> 2], l = m(), q, x = n + 4, y = 0; y <= k; ++y) { var p = n + 4 + y * b; if (y == k || 0 == l[p >> h]) (x = d(x, p - x)), @@ -1013,79 +972,79 @@ var Module = (function () { toWireType: function (n, k) { 'string' !== typeof k && W('Cannot pass non-string to C++ string type ' + c); - var l = f(k), - q = rb(4 + l + b); - K[q >> 2] = l >> h; + var l = g(k), + q = pb(4 + l + b); + J[q >> 2] = l >> h; e(k, q + 4, l + b); null !== n && n.push(Z, q); return q; }, argPackAdvance: 8, - readValueFromPointer: Ja, - M: function (n) { + readValueFromPointer: Q, + K: function (n) { Z(n); }, }); }, - o: function (a, b, c, d, e, f) { - Q[a] = { name: U(b), aa: Y(c, d), ba: Y(e, f), S: [] }; + p: function (a, b, c, d, e, g) { + P[a] = { name: U(b), W: Y(c, d), X: Y(e, g), N: [] }; }, - h: function (a, b, c, d, e, f, m, h, n, k) { - Q[a].S.push({ - U: U(b), - Y: c, - W: Y(d, e), - X: f, - ia: m, - ha: Y(h, n), - ja: k, + b: function (a, b, c, d, e, g, m, h, n, k) { + P[a].N.push({ + P: U(b), + U: c, + S: Y(d, e), + T: g, + Z: m, + Y: Y(h, n), + $: k, }); }, - A: function (a, b) { + z: function (a, b) { b = U(b); T(a, { - ka: !0, + aa: !0, name: b, argPackAdvance: 0, fromWireType: function () {}, toWireType: function () {}, }); }, - x: Ua, - D: function (a) { - if (0 === a) return Va(ib()); - var b = hb[a]; + i: Ra, + A: function (a) { + if (0 === a) return Sa(fb()); + var b = eb[a]; a = void 0 === b ? U(a) : b; - return Va(ib()[a]); + return Sa(fb()[a]); }, - m: function (a) { - 4 < a && (X[a].P += 1); + n: function (a) { + 4 < a && (X[a].M += 1); }, - p: function (a, b, c, d) { + q: function (a, b, c, d) { a || W('Cannot use deleted val. handle = ' + a); a = X[a].value; - var e = kb[b]; + var e = hb[b]; if (!e) { e = ''; - for (var f = 0; f < b; ++f) e += (0 !== f ? ', ' : '') + 'arg' + f; + for (var g = 0; g < b; ++g) e += (0 !== g ? ', ' : '') + 'arg' + g; var m = 'return function emval_allocator_' + b + '(constructor, argTypes, args) {\n'; - for (f = 0; f < b; ++f) + for (g = 0; g < b; ++g) m += 'var argType' + - f + + g + " = requireRegisteredType(Module['HEAP32'][(argTypes >>> 2) + " + - f + + g + '], "parameter ' + - f + + g + '");\nvar arg' + - f + + g + ' = argType' + - f + + g + '.readValueFromPointer(args);\nargs += argType' + - f + + g + "['argPackAdvance'];\n"; e = new Function( 'requireRegisteredType', @@ -1095,20 +1054,20 @@ var Module = (function () { ('var obj = new constructor(' + e + ');\nreturn __emval_register(obj);\n}\n'), - )(jb, g, Va); - kb[b] = e; + )(gb, f, Sa); + hb[b] = e; } return e(a, c, d); }, - t: function () { + h: function () { A(); }, - s: function (a, b, c) { - D.copyWithin(a, b, b + c); + t: function (a, b, c) { + C.copyWithin(a, b, b + c); }, e: function (a) { a >>>= 0; - var b = D.length; + var b = C.length; if (2147483648 < a) return !1; for (var c = 1; 4 >= c; c *= 2) { var d = b * (1 + 0.2 / c); @@ -1117,11 +1076,11 @@ var Module = (function () { 0 < d % 65536 && (d += 65536 - (d % 65536)); a: { try { - B.grow((Math.min(2147483648, d) - I.byteLength + 65535) >>> 16); + B.grow((Math.min(2147483648, d) - H.byteLength + 65535) >>> 16); ua(B.buffer); var e = 1; break a; - } catch (f) {} + } catch (g) {} e = void 0; } if (e) return !0; @@ -1130,45 +1089,45 @@ var Module = (function () { }, u: function (a, b) { var c = 0; - mb().forEach(function (d, e) { - var f = b + c; - e = H[(a + 4 * e) >> 2] = f; - for (f = 0; f < d.length; ++f) J[e++ >> 0] = d.charCodeAt(f); - J[e >> 0] = 0; + jb().forEach(function (d, e) { + var g = b + c; + e = G[(a + 4 * e) >> 2] = g; + for (g = 0; g < d.length; ++g) I[e++ >> 0] = d.charCodeAt(g); + I[e >> 0] = 0; c += d.length + 1; }); return 0; }, v: function (a, b) { - var c = mb(); - H[a >> 2] = c.length; + var c = jb(); + G[a >> 2] = c.length; var d = 0; c.forEach(function (e) { d += e.length + 1; }); - H[b >> 2] = d; + G[b >> 2] = d; return 0; }, - B: function (a) { + m: function (a) { if (!noExitRuntime) { - if (g.onExit) g.onExit(a); + if (f.onExit) f.onExit(a); ia = !0; } - da(a, new sb(a)); + ea(a, new qb(a)); }, w: function () { return 0; }, - q: function () {}, - i: function (a, b, c, d) { - for (var e = 0, f = 0; f < c; f++) { + r: function () {}, + j: function (a, b, c, d) { + for (var e = 0, g = 0; g < c; g++) { for ( - var m = H[(b + 8 * f) >> 2], h = H[(b + (8 * f + 4)) >> 2], n = 0; + var m = G[(b + 8 * g) >> 2], h = G[(b + (8 * g + 4)) >> 2], n = 0; n < h; n++ ) { - var k = D[m + n], - l = ob[a]; + var k = C[m + n], + l = lb[a]; if (0 === k || 10 === k) { for (k = 0; l[k] && !(NaN <= k); ) ++k; k = ja.decode( @@ -1180,17 +1139,18 @@ var Module = (function () { } e += h; } - H[d >> 2] = e; + G[d >> 2] = e; return 0; }, a: B, - r: function () {}, + s: function () {}, }; (function () { function a(e) { - g.asm = e.exports; + f.asm = e.exports; + K = f.asm.C; L--; - g.monitorRunDependencies && g.monitorRunDependencies(L); + f.monitorRunDependencies && f.monitorRunDependencies(L); 0 == L && (null !== Ba && (clearInterval(Ba), (Ba = null)), M && ((e = M), (M = null), e())); @@ -1200,124 +1160,124 @@ var Module = (function () { } function c(e) { return Fa() - .then(function (f) { - return WebAssembly.instantiate(f, d); + .then(function (g) { + return WebAssembly.instantiate(g, d); }) - .then(e, function (f) { - v('failed to asynchronously prepare wasm: ' + f); - A(f); + .then(e, function (g) { + v('failed to asynchronously prepare wasm: ' + g); + A(g); }); } - var d = { a: tb }; + var d = { a: rb }; L++; - g.monitorRunDependencies && g.monitorRunDependencies(L); - if (g.instantiateWasm) + f.monitorRunDependencies && f.monitorRunDependencies(L); + if (f.instantiateWasm) try { - return g.instantiateWasm(d, a); + return f.instantiateWasm(d, a); } catch (e) { return ( v('Module.instantiateWasm callback failed with error: ' + e), !1 ); } (function () { - if ( - w || + return w || 'function' !== typeof WebAssembly.instantiateStreaming || Ca() || 'function' !== typeof fetch - ) - return c(b); - fetch(N, { credentials: 'same-origin' }).then(function (e) { - return WebAssembly.instantiateStreaming(e, d).then(b, function (f) { - v('wasm streaming compile failed: ' + f); - v('falling back to ArrayBuffer instantiation'); - return c(b); - }); - }); - })(); + ? c(b) + : fetch(N, { credentials: 'same-origin' }).then(function (e) { + return WebAssembly.instantiateStreaming(e, d).then(b, function ( + g, + ) { + v('wasm streaming compile failed: ' + g); + v('falling back to ArrayBuffer instantiation'); + return c(b); + }); + }); + })().catch(ba); return {}; })(); - var Ga = (g.___wasm_call_ctors = function () { - return (Ga = g.___wasm_call_ctors = g.asm.F).apply(null, arguments); + var ob = (f.___wasm_call_ctors = function () { + return (ob = f.___wasm_call_ctors = f.asm.D).apply(null, arguments); }), - Z = (g._free = function () { - return (Z = g._free = g.asm.G).apply(null, arguments); + Z = (f._free = function () { + return (Z = f._free = f.asm.E).apply(null, arguments); }), - rb = (g._malloc = function () { - return (rb = g._malloc = g.asm.H).apply(null, arguments); + pb = (f._malloc = function () { + return (pb = f._malloc = f.asm.F).apply(null, arguments); }), - eb = (g.___getTypeName = function () { - return (eb = g.___getTypeName = g.asm.I).apply(null, arguments); + bb = (f.___getTypeName = function () { + return (bb = f.___getTypeName = f.asm.G).apply(null, arguments); }); - g.___embind_register_native_and_builtin_types = function () { - return (g.___embind_register_native_and_builtin_types = g.asm.J).apply( + f.___embind_register_native_and_builtin_types = function () { + return (f.___embind_register_native_and_builtin_types = f.asm.H).apply( null, arguments, ); }; - g.dynCall_jiji = function () { - return (g.dynCall_jiji = g.asm.K).apply(null, arguments); + f.dynCall_jiji = function () { + return (f.dynCall_jiji = f.asm.I).apply(null, arguments); }; - var ub; - function sb(a) { + var sb; + function qb(a) { this.name = 'ExitStatus'; this.message = 'Program terminated with exit(' + a + ')'; this.status = a; } - M = function vb() { - ub || wb(); - ub || (M = vb); + M = function tb() { + sb || ub(); + sb || (M = tb); }; - function wb() { + function ub() { function a() { - if (!ub && ((ub = !0), (g.calledRun = !0), !ia)) { + if (!sb && ((sb = !0), (f.calledRun = !0), !ia)) { O(xa); O(ya); - aa(g); - if (g.onRuntimeInitialized) g.onRuntimeInitialized(); - if (g.postRun) + aa(f); + if (f.onRuntimeInitialized) f.onRuntimeInitialized(); + if (f.postRun) for ( - 'function' == typeof g.postRun && (g.postRun = [g.postRun]); - g.postRun.length; + 'function' == typeof f.postRun && (f.postRun = [f.postRun]); + f.postRun.length; ) { - var b = g.postRun.shift(); + var b = f.postRun.shift(); za.unshift(b); } O(za); } } if (!(0 < L)) { - if (g.preRun) + if (f.preRun) for ( - 'function' == typeof g.preRun && (g.preRun = [g.preRun]); - g.preRun.length; + 'function' == typeof f.preRun && (f.preRun = [f.preRun]); + f.preRun.length; ) Aa(); O(wa); 0 < L || - (g.setStatus - ? (g.setStatus('Running...'), + (f.setStatus + ? (f.setStatus('Running...'), setTimeout(function () { setTimeout(function () { - g.setStatus(''); + f.setStatus(''); }, 1); a(); }, 1)) : a()); } } - g.run = wb; - if (g.preInit) + f.run = ub; + if (f.preInit) for ( - 'function' == typeof g.preInit && (g.preInit = [g.preInit]); - 0 < g.preInit.length; + 'function' == typeof f.preInit && (f.preInit = [f.preInit]); + 0 < f.preInit.length; ) - g.preInit.pop()(); + f.preInit.pop()(); noExitRuntime = !0; - wb(); + ub(); return Module.ready; }; diff --git a/codecs/mozjpeg_enc/mozjpeg_enc.wasm b/codecs/mozjpeg_enc/mozjpeg_enc.wasm old mode 100644 new mode 100755 index 4268cb9a..e8551346 Binary files a/codecs/mozjpeg_enc/mozjpeg_enc.wasm and b/codecs/mozjpeg_enc/mozjpeg_enc.wasm differ diff --git a/codecs/oxipng/Cargo.lock b/codecs/oxipng/Cargo.lock index 4d52d832..7f763f45 100644 --- a/codecs/oxipng/Cargo.lock +++ b/codecs/oxipng/Cargo.lock @@ -1,16 +1,22 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. [[package]] -name = "adler32" -version = "1.1.0" +name = "adler" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b077b825e468cc974f0020d4082ee6e03132512f207ef1a02fd5d00d1f32d" +checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" + +[[package]] +name = "adler32" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" [[package]] name = "autocfg" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" +checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "bit-vec" @@ -38,9 +44,9 @@ checksum = "2e8c087f005730276d1096a652e92a8bacee2e2472bcc9715a74d2bec38b5820" [[package]] name = "bytemuck" -version = "1.2.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37fa13df2292ecb479ec23aa06f4507928bef07839be9ef15281411076629431" +checksum = "41aa2ec95ca3b5c54cf73c91acf06d24f4495d5f1b1c12506ae3483d646177ac" [[package]] name = "byteorder" @@ -50,9 +56,9 @@ checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" [[package]] name = "cc" -version = "1.0.58" +version = "1.0.62" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a06fb2e53271d7c279ec1efea6ab691c35a2ae67ec0d91d7acec0caf13b518" +checksum = "f1770ced377336a88a67c473594ccc14eca6f4559217c34f64aac8f83d641b40" [[package]] name = "cfg-if" @@ -60,6 +66,12 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + [[package]] name = "cloudflare-zlib" version = "0.2.5" @@ -78,6 +90,18 @@ dependencies = [ "cc", ] +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "const_fn" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c478836e029dcef17fb47c89023448c64f781a046e0300e257ad8225ae59afab" + [[package]] name = "crc" version = "1.8.1" @@ -89,58 +113,57 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" +checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dca26ee1f8d361640700bde38b2c37d8c22b3ce2d360e1fc1c74ea4b0aa7d775" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285" +checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9" dependencies = [ + "cfg-if 1.0.0", "crossbeam-epoch", "crossbeam-utils", - "maybe-uninit", ] [[package]] name = "crossbeam-epoch" -version = "0.8.2" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" +checksum = "ec0f606a85340376eef0d6d8fec399e6d4a544d648386c6645eb6d0653b27d9f" dependencies = [ - "autocfg", - "cfg-if", + "cfg-if 1.0.0", + "const_fn", "crossbeam-utils", "lazy_static", - "maybe-uninit", "memoffset", "scopeguard", ] -[[package]] -name = "crossbeam-queue" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570" -dependencies = [ - "cfg-if", - "crossbeam-utils", - "maybe-uninit", -] - [[package]] name = "crossbeam-utils" -version = "0.7.2" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" +checksum = "ec91540d98355f690a86367e566ecad2e9e579f230230eb7c21398372be73ea5" dependencies = [ "autocfg", - "cfg-if", + "cfg-if 1.0.0", + "const_fn", "lazy_static", ] @@ -156,27 +179,34 @@ dependencies = [ [[package]] name = "either" -version = "1.5.3" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" +checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" + +[[package]] +name = "hashbrown" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" [[package]] name = "hermit-abi" -version = "0.1.15" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3deed196b6e7f9e44a2ae8d94225d80302d81208b1bb673fd21fe634645c85a9" +checksum = "5aca5565f760fb5b220e499d72710ed156fdb74e631659e99377d9ebfbd13ae8" dependencies = [ "libc", ] [[package]] name = "image" -version = "0.23.7" +version = "0.23.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2397fc43bd5648b7117aabb3c5e62d0e62c194826ec77b0b4d0c41e62744635" +checksum = "b4f0a8345b33b082aedec2f4d7d4a926b845cee184cbe78b703413066564431b" dependencies = [ "bytemuck", "byteorder", + "color_quant", "num-iter", "num-rational", "num-traits", @@ -185,11 +215,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.4.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c398b2b113b55809ceb9ee3e753fcbac793f1956663f3c36549c1346015c2afe" +checksum = "55e2e4c765aa53a0424761bf9f41aa7a6ac1efa87238f59560640e27fca028f2" dependencies = [ "autocfg", + "hashbrown", "rayon", ] @@ -210,39 +241,42 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.72" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9f8082297d534141b30c8d39e9b1773713ab50fdbe4ff30f750d063b3bfd701" +checksum = "4d58d1b70b004888f764dfbf6a26a3b0342a1632d33968e4a179d8011c760614" [[package]] -name = "libdeflater" -version = "0.2.0" +name = "libdeflate-sys" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66dca08b13369865b2f6dca1dd05f833985cbe6c12a676b04d55f78b85e80246" +checksum = "21e39efa87b84db3e13ff4e2dfac1e57220abcbd7fe8ec44d238f7f4f787cc1f" dependencies = [ "cc", ] [[package]] -name = "log" -version = "0.4.8" +name = "libdeflater" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" +checksum = "a4810980d791f26d470e2d7d91a3d4d22aa3a4b709fb7e9c5e43ee54f83a01f2" dependencies = [ - "cfg-if", + "libdeflate-sys", ] [[package]] -name = "maybe-uninit" -version = "2.0.0" +name = "log" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" +checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b" +dependencies = [ + "cfg-if 0.1.10", +] [[package]] name = "memoffset" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c198b026e1bbf08a937e94c6c60f9ec4a2267f5b0d2eec9c1b21b061ce2be55f" +checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" dependencies = [ "autocfg", ] @@ -257,10 +291,20 @@ dependencies = [ ] [[package]] -name = "num-integer" -version = "0.1.43" +name = "miniz_oxide" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d59457e662d541ba17869cf51cf177c0b5f0cbf476c66bdc90bf1edac4f875b" +checksum = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d" +dependencies = [ + "adler", + "autocfg", +] + +[[package]] +name = "num-integer" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" dependencies = [ "autocfg", "num-traits", @@ -268,9 +312,9 @@ dependencies = [ [[package]] name = "num-iter" -version = "0.1.41" +version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6e6b7c748f995c4c29c5f5ae0248536e04a5739927c74ec0fa564805094b9f" +checksum = "b2021c8337a54d21aca0d59a92577a029af9431cb59b909b03252b9c164fad59" dependencies = [ "autocfg", "num-integer", @@ -279,9 +323,9 @@ dependencies = [ [[package]] name = "num-rational" -version = "0.3.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5b4d7360f362cfb50dde8143501e6940b22f644be75a4cc90b2d81968908138" +checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" dependencies = [ "autocfg", "num-integer", @@ -290,9 +334,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac267bcc07f48ee5f8935ab0d24f316fb722d7a1292e2913f0cc196b29ffd611" +checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" dependencies = [ "autocfg", ] @@ -308,42 +352,59 @@ dependencies = [ ] [[package]] -name = "oxipng" -version = "3.0.0" +name = "once_cell" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5fd695858078338d73862ff3755f820eff0bf4f3304e4b52f22aba53463183a" +checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0" + +[[package]] +name = "oxipng" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea40b366cecfce76ee3b082e7e6567b82cdef75644a22442ca8584bc666ff4eb" dependencies = [ "bit-vec", "byteorder", "cloudflare-zlib", "crc", + "crossbeam-channel", "image", "indexmap", "itertools", "libdeflater", "log", - "miniz_oxide", + "miniz_oxide 0.4.3", + "rayon", "rgb", - "zopfli", + "rustc_version", +] + +[[package]] +name = "pest" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53" +dependencies = [ + "ucd-trie", ] [[package]] name = "png" -version = "0.16.6" +version = "0.16.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c150bf7479fafe3dd8740dbe48cc33b2a3efb7b0fe3483aced8bbc39f6d0238d" +checksum = "dfe7f9f1c730833200b134370e1d5098964231af8450bce9b78ee3ab5278b970" dependencies = [ "bitflags", "crc32fast", "deflate", - "miniz_oxide", + "miniz_oxide 0.3.7", ] [[package]] name = "proc-macro2" -version = "1.0.18" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "beae6331a816b1f65d04c45b078fd8e6c93e8071771f41b8163255bbd8d7c8fa" +checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" dependencies = [ "unicode-xid", ] @@ -359,9 +420,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.3.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f02856753d04e03e26929f820d0a0a337ebe71f849801eea335d464b349080" +checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674" dependencies = [ "autocfg", "crossbeam-deque", @@ -371,12 +432,12 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.7.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e92e15d89083484e11353891f1af602cc661426deb9564c298b270c726973280" +checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a" dependencies = [ + "crossbeam-channel", "crossbeam-deque", - "crossbeam-queue", "crossbeam-utils", "lazy_static", "num_cpus", @@ -384,33 +445,63 @@ dependencies = [ [[package]] name = "rgb" -version = "0.8.20" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ef54b45ae131327a88597e2463fee4098ad6c88ba7b6af4b3987db8aad4098" +checksum = "287f3c3f8236abb92d8b7e36797f19159df4b58f0a658cc3fb6dd3004b1f3bd3" dependencies = [ "bytemuck", ] +[[package]] +name = "rustc_version" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65c94201b44764d6d1f7e37c15a8289ed55e546c1762c7f1d57f616966e0c181" +dependencies = [ + "semver", +] + [[package]] name = "scopeguard" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver-parser" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ef146c2ad5e5f4b037cd6ce2ebb775401729b19a82040c1beac9d36c7d1428" +dependencies = [ + "pest", +] + [[package]] name = "squoosh-oxipng" version = "0.1.0" dependencies = [ + "crossbeam-channel", "log", + "once_cell", "oxipng", + "rayon", "wasm-bindgen", ] [[package]] name = "syn" -version = "1.0.34" +version = "1.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "936cae2873c940d92e697597c5eee105fb570cd5689c695806f672883653349b" +checksum = "cc371affeffc477f42a221a1e4297aedcea33d47d19b61455588bd9d8f6b19ac" dependencies = [ "proc-macro2", "quote", @@ -418,10 +509,10 @@ dependencies = [ ] [[package]] -name = "typed-arena" -version = "1.7.0" +name = "ucd-trie" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9b2228007eba4120145f785df0f6c92ea538f5a3635a612ecf4e334c8c1446d" +checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" [[package]] name = "unicode-xid" @@ -431,19 +522,19 @@ checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" [[package]] name = "wasm-bindgen" -version = "0.2.64" +version = "0.2.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a634620115e4a229108b71bde263bb4220c483b3f07f5ba514ee8d15064c4c2" +checksum = "1ac64ead5ea5f05873d7c12b545865ca2b8d28adfc50a49b84770a3a97265d42" dependencies = [ - "cfg-if", + "cfg-if 0.1.10", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.64" +version = "0.2.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e53963b583d18a5aa3aaae4b4c1cb535218246131ba22a71f05b518098571df" +checksum = "f22b422e2a757c35a73774860af8e112bff612ce6cb604224e8e47641a9e4f68" dependencies = [ "bumpalo", "lazy_static", @@ -456,9 +547,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.64" +version = "0.2.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fcfd5ef6eec85623b4c6e844293d4516470d8f19cd72d0d12246017eb9060b8" +checksum = "6b13312a745c08c469f0b292dd2fcd6411dba5f7160f593da6ef69b64e407038" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -466,9 +557,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.64" +version = "0.2.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9adff9ee0e94b926ca81b57f57f86d5545cdcb1d259e21ec9bdd95b901754c75" +checksum = "f249f06ef7ee334cc3b8ff031bfc11ec99d00f34d86da7498396dc1e3b1498fe" dependencies = [ "proc-macro2", "quote", @@ -479,18 +570,6 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.64" +version = "0.2.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7b90ea6c632dd06fd765d44542e234d5e63d9bb917ecd64d79778a13bd79ae" - -[[package]] -name = "zopfli" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4079b79464426ade2a1b0177fb0ce8396ba6b4084267407e333573c666073964" -dependencies = [ - "adler32", - "byteorder", - "crc", - "typed-arena", -] +checksum = "1d649a3145108d7d3fbcde896a468d1bd636791823c9921135218ad89be08307" diff --git a/codecs/oxipng/Cargo.toml b/codecs/oxipng/Cargo.toml index 86f1b609..73ef8261 100644 --- a/codecs/oxipng/Cargo.toml +++ b/codecs/oxipng/Cargo.toml @@ -5,14 +5,23 @@ authors = ["Ingvar Stepanyan "] edition = "2018" publish = false +[package.metadata.wasm-pack.profile.release] +wasm-opt = ["-O", "--no-validation"] + [lib] crate-type = ["cdylib"] [dependencies] -oxipng = { version = "3.0.0", default-features = false } -wasm-bindgen = "0.2.64" -log = { version = "0.4", features = ["release_max_level_off"] } +oxipng = { version = "4.0.0", default-features = false, features = ["libdeflater"] } +wasm-bindgen = "0.2.68" +log = { version = "0.4.11", features = ["release_max_level_off"] } +rayon = { version = "1.5.0", optional = true } +once_cell = { version = "1.5.2", optional = true } +crossbeam-channel = { version = "0.5.0", optional = true } [profile.release] lto = true opt-level = "s" + +[features] +parallel = ["oxipng/parallel", "rayon", "crossbeam-channel", "once_cell"] diff --git a/codecs/oxipng/Dockerfile b/codecs/oxipng/Dockerfile deleted file mode 100644 index 5448d170..00000000 --- a/codecs/oxipng/Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -FROM rust -RUN rustup target add wasm32-unknown-unknown -RUN curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh - -RUN mkdir /opt/wabt && \ - curl -L https://github.com/WebAssembly/wabt/releases/download/1.0.17/wabt-1.0.17-ubuntu.tar.gz | tar -xzf - -C /opt/wabt --strip 1 - -RUN mkdir /opt/wasi-sdk && \ - curl -L https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-11/wasi-sdk-11.0-linux.tar.gz | tar -xzf - -C /opt/wasi-sdk --strip 1 - -ENV PATH="/opt/wabt/bin:/opt/wasi-sdk/bin:${PATH}" -WORKDIR /src diff --git a/codecs/oxipng/build.sh b/codecs/oxipng/build.sh new file mode 100755 index 00000000..3f7568df --- /dev/null +++ b/codecs/oxipng/build.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +set -e + +rm -rf pkg,{-parallel} +wasm-pack build --target web +RUSTFLAGS='-C target-feature=+atomics,+bulk-memory' wasm-pack build -t web -d pkg-parallel -- -Z build-std=panic_abort,std --features=parallel +rm pkg{,-parallel}/.gitignore diff --git a/codecs/oxipng/package.json b/codecs/oxipng/package.json index 552448fd..6d7a7bad 100644 --- a/codecs/oxipng/package.json +++ b/codecs/oxipng/package.json @@ -1,6 +1,6 @@ { "name": "oxipng", "scripts": { - "build": "../build-rust.sh" + "build": "RUST_IMG=rustlang/rust:8bb115b1090d ../build-rust.sh ./build.sh" } } diff --git a/codecs/oxipng/pkg-parallel/README.md b/codecs/oxipng/pkg-parallel/README.md new file mode 100644 index 00000000..1381f3ed --- /dev/null +++ b/codecs/oxipng/pkg-parallel/README.md @@ -0,0 +1,5 @@ +# OxiPNG + +- Source: +- Version: v3.0.0 +- License: MIT diff --git a/codecs/oxipng/pkg-parallel/package.json b/codecs/oxipng/pkg-parallel/package.json new file mode 100644 index 00000000..33415cae --- /dev/null +++ b/codecs/oxipng/pkg-parallel/package.json @@ -0,0 +1,15 @@ +{ + "name": "squoosh-oxipng", + "collaborators": [ + "Ingvar Stepanyan " + ], + "version": "0.1.0", + "files": [ + "squoosh_oxipng_bg.wasm", + "squoosh_oxipng.js", + "squoosh_oxipng.d.ts" + ], + "module": "squoosh_oxipng.js", + "types": "squoosh_oxipng.d.ts", + "sideEffects": false +} diff --git a/codecs/oxipng/pkg-parallel/squoosh_oxipng.d.ts b/codecs/oxipng/pkg-parallel/squoosh_oxipng.d.ts new file mode 100644 index 00000000..e062e01a --- /dev/null +++ b/codecs/oxipng/pkg-parallel/squoosh_oxipng.d.ts @@ -0,0 +1,53 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * @param {Uint8Array} data + * @param {number} level + * @returns {Uint8Array} + */ +export function optimise(data: Uint8Array, level: number): Uint8Array; +/** + * @param {number} num + * @returns {any} + */ +export function worker_initializer(num: number): any; +/** + */ +export function start_main_thread(): void; +/** + */ +export function start_worker_thread(): void; + +export type InitInput = + | RequestInfo + | URL + | Response + | BufferSource + | WebAssembly.Module; + +export interface InitOutput { + readonly optimise: (a: number, b: number, c: number, d: number) => void; + readonly malloc: (a: number) => number; + readonly free: (a: number) => void; + readonly worker_initializer: (a: number) => number; + readonly start_main_thread: () => void; + readonly start_worker_thread: () => void; + readonly __wbindgen_export_0: WebAssembly.Memory; + readonly __wbindgen_malloc: (a: number) => number; + readonly __wbindgen_free: (a: number, b: number) => void; + readonly __wbindgen_start: () => void; +} + +/** + * If `module_or_path` is {RequestInfo} or {URL}, makes a request and + * for everything else, calls `WebAssembly.instantiate` directly. + * + * @param {InitInput | Promise} module_or_path + * @param {WebAssembly.Memory} maybe_memory + * + * @returns {Promise} + */ +export default function init( + module_or_path?: InitInput | Promise, + maybe_memory?: WebAssembly.Memory, +): Promise; diff --git a/codecs/oxipng/pkg-parallel/squoosh_oxipng.js b/codecs/oxipng/pkg-parallel/squoosh_oxipng.js new file mode 100644 index 00000000..63b7e03c --- /dev/null +++ b/codecs/oxipng/pkg-parallel/squoosh_oxipng.js @@ -0,0 +1,196 @@ +let wasm; +let memory; + +const heap = new Array(32).fill(undefined); + +heap.push(undefined, null, true, false); + +let heap_next = heap.length; + +function addHeapObject(obj) { + if (heap_next === heap.length) heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + + heap[idx] = obj; + return idx; +} + +let cachedTextDecoder = new TextDecoder('utf-8', { + ignoreBOM: true, + fatal: true, +}); + +cachedTextDecoder.decode(); + +let cachegetUint8Memory0 = null; +function getUint8Memory0() { + if ( + cachegetUint8Memory0 === null || + cachegetUint8Memory0.buffer !== wasm.__wbindgen_export_0.buffer + ) { + cachegetUint8Memory0 = new Uint8Array(wasm.__wbindgen_export_0.buffer); + } + return cachegetUint8Memory0; +} + +function getStringFromWasm0(ptr, len) { + return cachedTextDecoder.decode(getUint8Memory0().slice(ptr, ptr + len)); +} + +let WASM_VECTOR_LEN = 0; + +function passArray8ToWasm0(arg, malloc) { + const ptr = malloc(arg.length * 1); + getUint8Memory0().set(arg, ptr / 1); + WASM_VECTOR_LEN = arg.length; + return ptr; +} + +let cachegetInt32Memory0 = null; +function getInt32Memory0() { + if ( + cachegetInt32Memory0 === null || + cachegetInt32Memory0.buffer !== wasm.__wbindgen_export_0.buffer + ) { + cachegetInt32Memory0 = new Int32Array(wasm.__wbindgen_export_0.buffer); + } + return cachegetInt32Memory0; +} + +function getArrayU8FromWasm0(ptr, len) { + return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len); +} +/** + * @param {Uint8Array} data + * @param {number} level + * @returns {Uint8Array} + */ +export function optimise(data, level) { + try { + const retptr = wasm.__wbindgen_export_1.value - 16; + wasm.__wbindgen_export_1.value = retptr; + var ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_malloc); + var len0 = WASM_VECTOR_LEN; + wasm.optimise(retptr, ptr0, len0, level); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1); + return v1; + } finally { + wasm.__wbindgen_export_1.value += 16; + } +} + +function getObject(idx) { + return heap[idx]; +} + +function dropObject(idx) { + if (idx < 36) return; + heap[idx] = heap_next; + heap_next = idx; +} + +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; +} +/** + * @param {number} num + * @returns {any} + */ +export function worker_initializer(num) { + var ret = wasm.worker_initializer(num); + return takeObject(ret); +} + +/** + */ +export function start_main_thread() { + wasm.start_main_thread(); +} + +/** + */ +export function start_worker_thread() { + wasm.start_worker_thread(); +} + +async function load(module, imports, maybe_memory) { + if (typeof Response === 'function' && module instanceof Response) { + memory = imports.wbg.memory = new WebAssembly.Memory({ + initial: 17, + maximum: 16384, + shared: true, + }); + if (typeof WebAssembly.instantiateStreaming === 'function') { + try { + return await WebAssembly.instantiateStreaming(module, imports); + } catch (e) { + if (module.headers.get('Content-Type') != 'application/wasm') { + console.warn( + '`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n', + e, + ); + } else { + throw e; + } + } + } + + const bytes = await module.arrayBuffer(); + return await WebAssembly.instantiate(bytes, imports); + } else { + memory = imports.wbg.memory = maybe_memory; + const instance = await WebAssembly.instantiate(module, imports); + + if (instance instanceof WebAssembly.Instance) { + return { instance, module }; + } else { + return instance; + } + } +} + +async function init(input, maybe_memory) { + if (typeof input === 'undefined') { + input = import.meta.url.replace(/\.js$/, '_bg.wasm'); + } + const imports = {}; + imports.wbg = {}; + imports.wbg.__wbindgen_module = function () { + var ret = init.__wbindgen_wasm_module; + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_memory = function () { + var ret = wasm.__wbindgen_export_0; + return addHeapObject(ret); + }; + imports.wbg.__wbg_of_6510501edc06d65e = function (arg0, arg1) { + var ret = Array.of(takeObject(arg0), takeObject(arg1)); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_throw = function (arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); + }; + + if ( + typeof input === 'string' || + (typeof Request === 'function' && input instanceof Request) || + (typeof URL === 'function' && input instanceof URL) + ) { + input = fetch(input); + } + + const { instance, module } = await load(await input, imports, maybe_memory); + + wasm = instance.exports; + init.__wbindgen_wasm_module = module; + wasm.__wbindgen_start(); + return wasm; +} + +export default init; diff --git a/codecs/oxipng/pkg-parallel/squoosh_oxipng_bg.wasm b/codecs/oxipng/pkg-parallel/squoosh_oxipng_bg.wasm new file mode 100644 index 00000000..93eff79b Binary files /dev/null and b/codecs/oxipng/pkg-parallel/squoosh_oxipng_bg.wasm differ diff --git a/codecs/oxipng/pkg-parallel/squoosh_oxipng_bg.wasm.d.ts b/codecs/oxipng/pkg-parallel/squoosh_oxipng_bg.wasm.d.ts new file mode 100644 index 00000000..e4189249 --- /dev/null +++ b/codecs/oxipng/pkg-parallel/squoosh_oxipng_bg.wasm.d.ts @@ -0,0 +1,12 @@ +/* tslint:disable */ +/* eslint-disable */ +export function optimise(a: number, b: number, c: number, d: number): void; +export function malloc(a: number): number; +export function free(a: number): void; +export function worker_initializer(a: number): number; +export function start_main_thread(): void; +export function start_worker_thread(): void; +export const __wbindgen_export_0: WebAssembly.Memory; +export function __wbindgen_malloc(a: number): number; +export function __wbindgen_free(a: number, b: number): void; +export function __wbindgen_start(): void; diff --git a/codecs/oxipng/pkg/squoosh_oxipng.js b/codecs/oxipng/pkg/squoosh_oxipng.js index d55481cd..ca755b63 100644 --- a/codecs/oxipng/pkg/squoosh_oxipng.js +++ b/codecs/oxipng/pkg/squoosh_oxipng.js @@ -51,14 +51,20 @@ function getArrayU8FromWasm0(ptr, len) { * @returns {Uint8Array} */ export function optimise(data, level) { - var ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_malloc); - var len0 = WASM_VECTOR_LEN; - wasm.optimise(8, ptr0, len0, level); - var r0 = getInt32Memory0()[8 / 4 + 0]; - var r1 = getInt32Memory0()[8 / 4 + 1]; - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; + try { + const retptr = wasm.__wbindgen_export_0.value - 16; + wasm.__wbindgen_export_0.value = retptr; + var ptr0 = passArray8ToWasm0(data, wasm.__wbindgen_malloc); + var len0 = WASM_VECTOR_LEN; + wasm.optimise(retptr, ptr0, len0, level); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1); + return v1; + } finally { + wasm.__wbindgen_export_0.value += 16; + } } async function load(module, imports) { diff --git a/codecs/oxipng/pkg/squoosh_oxipng_bg.wasm b/codecs/oxipng/pkg/squoosh_oxipng_bg.wasm index 6e227f71..e18ca4fb 100644 Binary files a/codecs/oxipng/pkg/squoosh_oxipng_bg.wasm and b/codecs/oxipng/pkg/squoosh_oxipng_bg.wasm differ diff --git a/codecs/oxipng/pkg/squoosh_oxipng_bg.d.ts b/codecs/oxipng/pkg/squoosh_oxipng_bg.wasm.d.ts similarity index 100% rename from codecs/oxipng/pkg/squoosh_oxipng_bg.d.ts rename to codecs/oxipng/pkg/squoosh_oxipng_bg.wasm.d.ts diff --git a/codecs/oxipng/rust-toolchain b/codecs/oxipng/rust-toolchain new file mode 100644 index 00000000..bf867e0a --- /dev/null +++ b/codecs/oxipng/rust-toolchain @@ -0,0 +1 @@ +nightly diff --git a/codecs/oxipng/src/lib.rs b/codecs/oxipng/src/lib.rs index c4ead1d2..b47fc75f 100644 --- a/codecs/oxipng/src/lib.rs +++ b/codecs/oxipng/src/lib.rs @@ -1,9 +1,12 @@ -mod malloc_shim; - use wasm_bindgen::prelude::*; use oxipng::AlphaOptim; -#[wasm_bindgen(catch)] +mod malloc_shim; + +#[cfg(feature = "parallel")] +pub mod parallel; + +#[wasm_bindgen] pub fn optimise(data: &[u8], level: u8) -> Vec { let mut options = oxipng::Options::from_preset(level); options.alphas.insert(AlphaOptim::Black); diff --git a/codecs/oxipng/src/parallel.rs b/codecs/oxipng/src/parallel.rs new file mode 100644 index 00000000..e5ced704 --- /dev/null +++ b/codecs/oxipng/src/parallel.rs @@ -0,0 +1,61 @@ +use crossbeam_channel::{Sender, Receiver, bounded}; +use once_cell::sync::OnceCell; +use wasm_bindgen::prelude::*; +use wasm_bindgen::JsValue; + +#[wasm_bindgen] +extern "C" { + #[wasm_bindgen(js_namespace = Array, js_name = of)] + fn array_of_2(a: JsValue, b: JsValue) -> JsValue; +} + +// This is one of the parts that work around Chromium incorrectly implementing postMessage: +// https://bugs.chromium.org/p/chromium/issues/detail?id=1075645 +// +// rayon::ThreadPoolBuilder (used below) executes spawn handler to populate the worker pool, +// and then blocks the current thread until each worker unblocks its (opaque) lock. +// +// Normally, we could use postMessage directly inside the spawn handler to +// post module + memory + threadPtr to each worker, and the block the current thread. +// +// However, that bug means that postMessage is currently delayed until the next event loop, +// which will never spin since we block the current thread, and so the other workers will +// never be able to unblock us. +// +// To work around this problem, we: +// 1) Expose `worker_initializer` that returns module + memory pair (without threadPtr) +// that workers can be initialised with to become native threads. +// JavaScript can postMessage this pair in advance, and asynchronously wait for workers +// to acknowledge the receipt. +// 2) Create a global communication channel on the Rust side using crossbeam. +// It will be used to send threadPtr to the pre-initialised workers +// instead of postMessage. +// 3) Provide a separate `start_main_thread` that expects all workers to be ready, +// and just uses the provided channel to send `threadPtr`s using the +// shared memory and blocks the current thread until they're all grabbed. +// 4) Provide a `worker_initializer` that is expected to be invoked from various workers, +// reads one `threadPtr` from the shared channel and starts running it. +static CHANNEL: OnceCell<(Sender, Receiver)> = OnceCell::new(); + +#[wasm_bindgen] +pub fn worker_initializer(num: usize) -> JsValue { + CHANNEL.get_or_init(|| bounded(num)); + array_of_2(wasm_bindgen::module(), wasm_bindgen::memory()) +} + +#[wasm_bindgen] +pub fn start_main_thread() { + let (sender, _) = CHANNEL.get().unwrap(); + + rayon::ThreadPoolBuilder::new() + .num_threads(sender.capacity().unwrap()) + .spawn_handler(|thread| Ok(sender.send(thread).unwrap_throw())) + .build_global() + .unwrap_throw() +} + +#[wasm_bindgen] +pub fn start_worker_thread() { + let (_, receiver) = CHANNEL.get().unwrap(); + receiver.recv().unwrap_throw().run() +} diff --git a/codecs/resize/pkg/squoosh_resize_bg.wasm b/codecs/resize/pkg/squoosh_resize_bg.wasm index efa6811e..f0d8264f 100644 Binary files a/codecs/resize/pkg/squoosh_resize_bg.wasm and b/codecs/resize/pkg/squoosh_resize_bg.wasm differ diff --git a/codecs/rotate/rotate.wasm b/codecs/rotate/rotate.wasm index f5d66ec4..8c7122c9 100755 Binary files a/codecs/rotate/rotate.wasm and b/codecs/rotate/rotate.wasm differ diff --git a/codecs/rust.Dockerfile b/codecs/rust.Dockerfile index 41441879..d0f89433 100644 --- a/codecs/rust.Dockerfile +++ b/codecs/rust.Dockerfile @@ -1,9 +1,13 @@ -FROM emscripten/emsdk:1.39.19 AS wasm-tools +ARG RUST_IMG=rust:1.47 + +FROM emscripten/emsdk:2.0.8 AS wasm-tools WORKDIR /opt/wasm-tools RUN wget -qO- https://github.com/rustwasm/wasm-pack/releases/download/v0.9.1/wasm-pack-v0.9.1-x86_64-unknown-linux-musl.tar.gz | tar -xzf - --strip 1 -FROM rust:1.46.0-slim-buster AS rust +FROM $RUST_IMG AS rust +ARG RUST_IMG RUN rustup target add wasm32-unknown-unknown +RUN if [[ $RUST_IMG = rustlang/rust:* ]] ; then rustup component add rust-src ; fi COPY --from=wasm-tools /emsdk/upstream/bin/wasm-opt /emsdk/upstream/bin/clang /usr/local/bin/ COPY --from=wasm-tools /emsdk/upstream/lib/ /usr/local/lib/ COPY --from=wasm-tools /emsdk/upstream/emscripten/system/include/libc/ /wasm32/include/ diff --git a/codecs/webp/dec/example.html b/codecs/webp/dec/example.html index 08eedcd5..64eb175f 100644 --- a/codecs/webp/dec/example.html +++ b/codecs/webp/dec/example.html @@ -1,14 +1,12 @@ - - + diff --git a/codecs/webp/dec/webp_dec.js b/codecs/webp/dec/webp_dec.js index 367a36ec..4fe8fc48 100644 --- a/codecs/webp/dec/webp_dec.js +++ b/codecs/webp/dec/webp_dec.js @@ -6,46 +6,41 @@ var Module = (function () { var e; e || (e = typeof Module !== 'undefined' ? Module : {}); - var aa, ba; + var aa, r; e.ready = new Promise(function (a, b) { aa = a; - ba = b; + r = b; }); - var r = {}, - t; - for (t in e) e.hasOwnProperty(t) && (r[t] = e[t]); - var u = '', - ca; - u = self.location.href; - _scriptDir && (u = _scriptDir); - 0 !== u.indexOf('blob:') - ? (u = u.substr(0, u.lastIndexOf('/') + 1)) - : (u = ''); - ca = function (a) { + var t = {}, + u; + for (u in e) e.hasOwnProperty(u) && (t[u] = e[u]); + var v = '', + ba; + v = self.location.href; + _scriptDir && (v = _scriptDir); + 0 !== v.indexOf('blob:') + ? (v = v.substr(0, v.lastIndexOf('/') + 1)) + : (v = ''); + ba = function (a) { var b = new XMLHttpRequest(); b.open('GET', a, !1); b.responseType = 'arraybuffer'; b.send(null); return new Uint8Array(b.response); }; - var v = e.printErr || console.warn.bind(console); - for (t in r) r.hasOwnProperty(t) && (e[t] = r[t]); - r = null; - var w; - e.wasmBinary && (w = e.wasmBinary); + var x = e.printErr || console.warn.bind(console); + for (u in t) t.hasOwnProperty(u) && (e[u] = t[u]); + t = null; + var y; + e.wasmBinary && (y = e.wasmBinary); var noExitRuntime; e.noExitRuntime && (noExitRuntime = e.noExitRuntime); - 'object' !== typeof WebAssembly && y('no native wasm support detected'); - var z, - A = new WebAssembly.Table({ - initial: 130, - maximum: 130, - element: 'anyfunc', - }), - da = !1, - ea = new TextDecoder('utf8'); - function fa(a, b, c) { - var d = B; + 'object' !== typeof WebAssembly && z('no native wasm support detected'); + var A, + ca = !1, + da = new TextDecoder('utf8'); + function ea(a, b, c) { + var d = C; if (0 < c) { c = b + c - 1; for (var f = 0; f < a.length; ++f) { @@ -78,13 +73,13 @@ var Module = (function () { d[b] = 0; } } - var ha = new TextDecoder('utf-16le'); - function ia(a, b) { + var fa = new TextDecoder('utf-16le'); + function ha(a, b) { var c = a >> 1; for (b = c + b / 2; !(c >= b) && D[c]; ) ++c; - return ha.decode(B.subarray(a, c << 1)); + return fa.decode(C.subarray(a, c << 1)); } - function ja(a, b, c) { + function ia(a, b, c) { void 0 === c && (c = 2147483647); if (2 > c) return 0; c -= 2; @@ -94,10 +89,10 @@ var Module = (function () { E[b >> 1] = 0; return b - d; } - function ka(a) { + function ja(a) { return 2 * a.length; } - function la(a, b) { + function ka(a, b) { for (var c = 0, d = ''; !(c >= b / 4); ) { var f = F[(a + 4 * c) >> 2]; if (0 == f) break; @@ -109,7 +104,7 @@ var Module = (function () { } return d; } - function ma(a, b, c) { + function la(a, b, c) { void 0 === c && (c = 2147483647); if (4 > c) return 0; var d = b; @@ -127,7 +122,7 @@ var Module = (function () { F[b >> 2] = 0; return b - d; } - function na(a) { + function ma(a) { for (var b = 0, c = 0; c < a.length; ++c) { var d = a.charCodeAt(c); 55296 <= d && 57343 >= d && ++c; @@ -135,26 +130,27 @@ var Module = (function () { } return b; } - var G, H, B, E, D, F, J, oa, pa; + var G, na, C, E, D, F, H, oa, pa; function qa(a) { G = a; - e.HEAP8 = H = new Int8Array(a); + e.HEAP8 = na = new Int8Array(a); e.HEAP16 = E = new Int16Array(a); e.HEAP32 = F = new Int32Array(a); - e.HEAPU8 = B = new Uint8Array(a); + e.HEAPU8 = C = new Uint8Array(a); e.HEAPU16 = D = new Uint16Array(a); - e.HEAPU32 = J = new Uint32Array(a); + e.HEAPU32 = H = new Uint32Array(a); e.HEAPF32 = oa = new Float32Array(a); e.HEAPF64 = pa = new Float64Array(a); } var ra = e.INITIAL_MEMORY || 16777216; e.wasmMemory - ? (z = e.wasmMemory) - : (z = new WebAssembly.Memory({ initial: ra / 65536, maximum: 32768 })); - z && (G = z.buffer); + ? (A = e.wasmMemory) + : (A = new WebAssembly.Memory({ initial: ra / 65536, maximum: 32768 })); + A && (G = A.buffer); ra = G.byteLength; qa(G); - var sa = [], + var J, + sa = [], ta = [], ua = [], va = []; @@ -167,14 +163,14 @@ var Module = (function () { M = null; e.preloadedImages = {}; e.preloadedAudios = {}; - function y(a) { + function z(a) { if (e.onAbort) e.onAbort(a); - v(a); - da = !0; + x(a); + ca = !0; a = new WebAssembly.RuntimeError( 'abort(' + a + '). Build with -s ASSERTIONS=1 for more info.', ); - ba(a); + r(a); throw a; } function ya() { @@ -186,19 +182,19 @@ var Module = (function () { var N = 'webp_dec.wasm'; if (!ya()) { var za = N; - N = e.locateFile ? e.locateFile(za, u) : u + za; + N = e.locateFile ? e.locateFile(za, v) : v + za; } function Aa() { try { - if (w) return new Uint8Array(w); - if (ca) return ca(N); + if (y) return new Uint8Array(y); + if (ba) return ba(N); throw 'both async and sync fetching of the wasm failed'; } catch (a) { - y(a); + z(a); } } function Ba() { - return w || 'function' !== typeof fetch + return y || 'function' !== typeof fetch ? Promise.resolve().then(Aa) : fetch(N, { credentials: 'same-origin' }) .then(function (a) { @@ -209,54 +205,21 @@ var Module = (function () { return Aa(); }); } - ta.push({ - I: function () { - Ca(); - }, - }); function O(a) { for (; 0 < a.length; ) { var b = a.shift(); if ('function' == typeof b) b(e); else { - var c = b.I; + var c = b.G; 'number' === typeof c - ? void 0 === b.D - ? A.get(c)() - : A.get(c)(b.D) - : c(void 0 === b.D ? null : b.D); + ? void 0 === b.C + ? J.get(c)() + : J.get(c)(b.C) + : c(void 0 === b.C ? null : b.C); } } } - function Da(a) { - this.C = a - 16; - this.P = function (b) { - F[(this.C + 8) >> 2] = b; - }; - this.M = function (b) { - F[(this.C + 0) >> 2] = b; - }; - this.N = function () { - F[(this.C + 4) >> 2] = 0; - }; - this.L = function () { - H[(this.C + 12) >> 0] = 0; - }; - this.O = function () { - H[(this.C + 13) >> 0] = 0; - }; - this.K = function (b, c) { - this.P(b); - this.M(c); - this.N(); - this.L(); - this.O(); - }; - } - function P() { - return 0 < P.G; - } - function Ea(a) { + function Ca(a) { switch (a) { case 1: return 0; @@ -270,22 +233,22 @@ var Module = (function () { throw new TypeError('Unknown type size: ' + a); } } - var Fa = void 0; - function Q(a) { - for (var b = ''; B[a]; ) b += Fa[B[a++]]; + var Da = void 0; + function P(a) { + for (var b = ''; C[a]; ) b += Da[C[a++]]; return b; } - var R = {}, - S = {}, - T = {}; - function Ga(a) { + var Q = {}, + R = {}, + S = {}; + function Ea(a) { if (void 0 === a) return '_unknown'; a = a.replace(/[^a-zA-Z0-9_]/g, '$'); var b = a.charCodeAt(0); return 48 <= b && 57 >= b ? '_' + a : a; } - function Ha(a, b) { - a = Ga(a); + function Fa(a, b) { + a = Ea(a); return new Function( 'body', 'return function ' + @@ -293,9 +256,9 @@ var Module = (function () { '() {\n "use strict"; return body.apply(this, arguments);\n};\n', )(b); } - function Ia(a) { + function Ga(a) { var b = Error, - c = Ha(a, function (d) { + c = Fa(a, function (d) { this.name = a; this.message = d; d = Error(d).stack; @@ -312,71 +275,71 @@ var Module = (function () { }; return c; } - var Ja = void 0; - function U(a) { - throw new Ja(a); + var Ha = void 0; + function T(a) { + throw new Ha(a); } - var Ka = void 0; - function Na(a, b) { + var Ia = void 0; + function Ja(a, b) { function c(h) { h = b(h); if (h.length !== d.length) - throw new Ka('Mismatched type converter count'); - for (var p = 0; p < d.length; ++p) V(d[p], h[p]); + throw new Ia('Mismatched type converter count'); + for (var p = 0; p < d.length; ++p) U(d[p], h[p]); } var d = []; d.forEach(function (h) { - T[h] = a; + S[h] = a; }); var f = Array(a.length), g = [], k = 0; a.forEach(function (h, p) { - S.hasOwnProperty(h) - ? (f[p] = S[h]) + R.hasOwnProperty(h) + ? (f[p] = R[h]) : (g.push(h), - R.hasOwnProperty(h) || (R[h] = []), - R[h].push(function () { - f[p] = S[h]; + Q.hasOwnProperty(h) || (Q[h] = []), + Q[h].push(function () { + f[p] = R[h]; ++k; k === g.length && c(f); })); }); 0 === g.length && c(f); } - function V(a, b, c) { + function U(a, b, c) { c = c || {}; if (!('argPackAdvance' in b)) throw new TypeError( 'registerType registeredInstance requires argPackAdvance', ); var d = b.name; - a || U('type "' + d + '" must have a positive integer typeid pointer'); - if (S.hasOwnProperty(a)) { - if (c.J) return; - U("Cannot register type '" + d + "' twice"); + a || T('type "' + d + '" must have a positive integer typeid pointer'); + if (R.hasOwnProperty(a)) { + if (c.H) return; + T("Cannot register type '" + d + "' twice"); } - S[a] = b; - delete T[a]; - R.hasOwnProperty(a) && - ((b = R[a]), - delete R[a], + R[a] = b; + delete S[a]; + Q.hasOwnProperty(a) && + ((b = Q[a]), + delete Q[a], b.forEach(function (f) { f(); })); } - var Oa = [], - W = [ + var Ma = [], + V = [ {}, { value: void 0 }, { value: null }, { value: !0 }, { value: !1 }, ]; - function Pa(a) { - 4 < a && 0 === --W[a].F && ((W[a] = void 0), Oa.push(a)); + function Na(a) { + 4 < a && 0 === --V[a].D && ((V[a] = void 0), Ma.push(a)); } - function X(a) { + function W(a) { switch (a) { case void 0: return 1; @@ -387,22 +350,22 @@ var Module = (function () { case !1: return 4; default: - var b = Oa.length ? Oa.pop() : W.length; - W[b] = { F: 1, value: a }; + var b = Ma.length ? Ma.pop() : V.length; + V[b] = { D: 1, value: a }; return b; } } - function Qa(a) { - return this.fromWireType(J[a >> 2]); + function Oa(a) { + return this.fromWireType(H[a >> 2]); } - function Ra(a) { + function Pa(a) { if (null === a) return 'null'; var b = typeof a; return 'object' === b || 'array' === b || 'function' === b ? a.toString() : '' + a; } - function Sa(a, b) { + function Qa(a, b) { switch (b) { case 2: return function (c) { @@ -416,7 +379,7 @@ var Module = (function () { throw new TypeError('Unknown float type: ' + a); } } - function Ta(a) { + function Ra(a) { var b = Function; if (!(b instanceof Function)) throw new TypeError( @@ -424,25 +387,25 @@ var Module = (function () { typeof b + ' which is not a function', ); - var c = Ha(b.name || 'unknownFunctionName', function () {}); + var c = Fa(b.name || 'unknownFunctionName', function () {}); c.prototype = b.prototype; c = new c(); a = b.apply(c, a); return a instanceof Object ? a : c; } - function Ua(a) { + function Sa(a) { for (; a.length; ) { var b = a.pop(); a.pop()(b); } } - function Va(a, b) { + function Ta(a, b) { var c = e; if (void 0 === c[a].A) { var d = c[a]; c[a] = function () { c[a].A.hasOwnProperty(arguments.length) || - U( + T( "Function '" + b + "' called with an invalid number of arguments (" + @@ -454,30 +417,30 @@ var Module = (function () { return c[a].A[arguments.length].apply(this, arguments); }; c[a].A = []; - c[a].A[d.H] = d; + c[a].A[d.F] = d; } } - function Wa(a, b, c) { + function Ua(a, b, c) { e.hasOwnProperty(a) ? ((void 0 === c || (void 0 !== e[a].A && void 0 !== e[a].A[c])) && - U("Cannot register public name '" + a + "' twice"), - Va(a, a), + T("Cannot register public name '" + a + "' twice"), + Ta(a, a), e.hasOwnProperty(c) && - U( + T( 'Cannot register multiple overloads of a function with the same number of arguments (' + c + ')!', ), (e[a].A[c] = b)) - : ((e[a] = b), void 0 !== c && (e[a].S = c)); + : ((e[a] = b), void 0 !== c && (e[a].J = c)); } - function Xa(a, b) { + function Va(a, b) { for (var c = [], d = 0; d < a; d++) c.push(F[(b >> 2) + d]); return c; } - function Ya(a, b) { + function Wa(a, b) { 0 <= a.indexOf('j') || - y('Assertion failed: getDynCaller should only be called with i64 sigs'); + z('Assertion failed: getDynCaller should only be called with i64 sigs'); var c = []; return function () { c.length = arguments.length; @@ -488,42 +451,42 @@ var Module = (function () { c && c.length ? e['dynCall_' + a].apply(null, [b].concat(c)) : e['dynCall_' + a].call(null, b)) - : (f = A.get(b).apply(null, c)); + : (f = J.get(b).apply(null, c)); return f; }; } - function Za(a, b) { - a = Q(a); - var c = -1 != a.indexOf('j') ? Ya(a, b) : A.get(b); + function Xa(a, b) { + a = P(a); + var c = -1 != a.indexOf('j') ? Wa(a, b) : J.get(b); 'function' !== typeof c && - U('unknown function pointer with signature ' + a + ': ' + b); + T('unknown function pointer with signature ' + a + ': ' + b); return c; } - var $a = void 0; - function ab(a) { - a = bb(a); - var b = Q(a); - Y(a); + var Ya = void 0; + function Za(a) { + a = $a(a); + var b = P(a); + X(a); return b; } - function cb(a, b) { + function ab(a, b) { function c(g) { - f[g] || S[g] || (T[g] ? T[g].forEach(c) : (d.push(g), (f[g] = !0))); + f[g] || R[g] || (S[g] ? S[g].forEach(c) : (d.push(g), (f[g] = !0))); } var d = [], f = {}; b.forEach(c); - throw new $a(a + ': ' + d.map(ab).join([', '])); + throw new Ya(a + ': ' + d.map(Za).join([', '])); } - function db(a, b, c) { + function bb(a, b, c) { switch (b) { case 0: return c ? function (d) { - return H[d]; + return na[d]; } : function (d) { - return B[d]; + return C[d]; }; case 1: return c @@ -539,52 +502,48 @@ var Module = (function () { return F[d >> 2]; } : function (d) { - return J[d >> 2]; + return H[d >> 2]; }; default: throw new TypeError('Unknown integer type: ' + a); } } - var eb = {}; - function fb() { + var cb = {}; + function db() { return 'object' === typeof globalThis ? globalThis : Function('return this')(); } - function gb(a, b) { - var c = S[a]; - void 0 === c && U(b + ' has unknown type ' + ab(a)); + function eb(a, b) { + var c = R[a]; + void 0 === c && T(b + ' has unknown type ' + Za(a)); return c; } - for (var hb = {}, ib = Array(256), Z = 0; 256 > Z; ++Z) - ib[Z] = String.fromCharCode(Z); - Fa = ib; - Ja = e.BindingError = Ia('BindingError'); - Ka = e.InternalError = Ia('InternalError'); + for (var fb = {}, gb = Array(256), Y = 0; 256 > Y; ++Y) + gb[Y] = String.fromCharCode(Y); + Da = gb; + Ha = e.BindingError = Ga('BindingError'); + Ia = e.InternalError = Ga('InternalError'); e.count_emval_handles = function () { - for (var a = 0, b = 5; b < W.length; ++b) void 0 !== W[b] && ++a; + for (var a = 0, b = 5; b < V.length; ++b) void 0 !== V[b] && ++a; return a; }; e.get_first_emval = function () { - for (var a = 5; a < W.length; ++a) if (void 0 !== W[a]) return W[a]; + for (var a = 5; a < V.length; ++a) if (void 0 !== V[a]) return V[a]; return null; }; - $a = e.UnboundTypeError = Ia('UnboundTypeError'); - var kb = { - o: function (a) { - return jb(a + 16) + 16; + Ya = e.UnboundTypeError = Ga('UnboundTypeError'); + ta.push({ + G: function () { + hb(); }, - k: function () {}, - n: function (a, b, c) { - new Da(a).K(b, c); - 'uncaught_exception' in P ? P.G++ : (P.G = 1); - throw a; - }, - b: A, - l: function (a, b, c, d, f) { - var g = Ea(c); - b = Q(b); - V(a, { + }); + var jb = { + g: function () {}, + o: function (a, b, c, d, f) { + var g = Ca(c); + b = P(b); + U(a, { name: b, fromWireType: function (k) { return !!k; @@ -594,7 +553,7 @@ var Module = (function () { }, argPackAdvance: 8, readValueFromPointer: function (k) { - if (1 === c) var h = H; + if (1 === c) var h = na; else if (2 === c) h = E; else if (4 === c) h = F; else throw new TypeError('Unknown boolean type size: ' + b); @@ -603,27 +562,27 @@ var Module = (function () { B: null, }); }, - t: function (a, b) { - b = Q(b); - V(a, { + r: function (a, b) { + b = P(b); + U(a, { name: b, fromWireType: function (c) { - var d = W[c].value; - Pa(c); + var d = V[c].value; + Na(c); return d; }, toWireType: function (c, d) { - return X(d); + return W(d); }, argPackAdvance: 8, - readValueFromPointer: Qa, + readValueFromPointer: Oa, B: null, }); }, - i: function (a, b, c) { - c = Ea(c); - b = Q(b); - V(a, { + n: function (a, b, c) { + c = Ca(c); + b = P(b); + U(a, { name: b, fromWireType: function (d) { return d; @@ -631,42 +590,42 @@ var Module = (function () { toWireType: function (d, f) { if ('number' !== typeof f && 'boolean' !== typeof f) throw new TypeError( - 'Cannot convert "' + Ra(f) + '" to ' + this.name, + 'Cannot convert "' + Pa(f) + '" to ' + this.name, ); return f; }, argPackAdvance: 8, - readValueFromPointer: Sa(b, c), + readValueFromPointer: Qa(b, c), B: null, }); }, - g: function (a, b, c, d, f, g) { - var k = Xa(b, c); - a = Q(a); - f = Za(d, f); - Wa( + j: function (a, b, c, d, f, g) { + var k = Va(b, c); + a = P(a); + f = Xa(d, f); + Ua( a, function () { - cb('Cannot call ' + a + ' due to unbound types', k); + ab('Cannot call ' + a + ' due to unbound types', k); }, b - 1, ); - Na(k, function (h) { + Ja(k, function (h) { var p = a, m = a; h = [h[0], null].concat(h.slice(1)); var n = f, q = h.length; 2 > q && - U( + T( "argTypes array size mismatch! Must at least get return value and 'this' types!", ); - for (var x = null !== h[1] && !1, C = !1, l = 1; l < h.length; ++l) + for (var w = null !== h[1] && !1, B = !1, l = 1; l < h.length; ++l) if (null !== h[l] && void 0 === h[l].B) { - C = !0; + B = !0; break; } - var La = 'void' !== h[0].name, + var Ka = 'void' !== h[0].name, I = '', L = ''; for (l = 0; l < q - 2; ++l) @@ -674,7 +633,7 @@ var Module = (function () { (L += (0 !== l ? ', ' : '') + 'arg' + l + 'Wired'); m = 'return function ' + - Ga(m) + + Ea(m) + '(' + I + ') {\nif (arguments.length !== ' + @@ -684,14 +643,14 @@ var Module = (function () { " called with ' + arguments.length + ' arguments, expected " + (q - 2) + " args!');\n}\n"; - C && (m += 'var destructors = [];\n'); - var Ma = C ? 'destructors' : 'null'; + B && (m += 'var destructors = [];\n'); + var La = B ? 'destructors' : 'null'; I = 'throwBindingError invoker fn runDestructors retType classParam'.split( ' ', ); - n = [U, n, g, Ua, h[0], h[1]]; - x && - (m += 'var thisWired = classParam.toWireType(' + Ma + ', this);\n'); + n = [T, n, g, Sa, h[0], h[1]]; + w && + (m += 'var thisWired = classParam.toWireType(' + La + ', this);\n'); for (l = 0; l < q - 2; ++l) (m += 'var arg' + @@ -699,7 +658,7 @@ var Module = (function () { 'Wired = argType' + l + '.toWireType(' + - Ma + + La + ', arg' + l + '); // ' + @@ -707,40 +666,40 @@ var Module = (function () { '\n'), I.push('argType' + l), n.push(h[l + 2]); - x && (L = 'thisWired' + (0 < L.length ? ', ' : '') + L); + w && (L = 'thisWired' + (0 < L.length ? ', ' : '') + L); m += - (La ? 'var rv = ' : '') + + (Ka ? 'var rv = ' : '') + 'invoker(fn' + (0 < L.length ? ', ' : '') + L + ');\n'; - if (C) m += 'runDestructors(destructors);\n'; + if (B) m += 'runDestructors(destructors);\n'; else - for (l = x ? 1 : 2; l < h.length; ++l) + for (l = w ? 1 : 2; l < h.length; ++l) (q = 1 === l ? 'thisWired' : 'arg' + (l - 2) + 'Wired'), null !== h[l].B && ((m += q + '_dtor(' + q + '); // ' + h[l].name + '\n'), I.push(q + '_dtor'), n.push(h[l].B)); - La && (m += 'var ret = retType.fromWireType(rv);\nreturn ret;\n'); + Ka && (m += 'var ret = retType.fromWireType(rv);\nreturn ret;\n'); I.push(m + '}\n'); - h = Ta(I).apply(null, n); + h = Ra(I).apply(null, n); l = b - 1; if (!e.hasOwnProperty(p)) - throw new Ka('Replacing nonexistant public symbol'); + throw new Ia('Replacing nonexistant public symbol'); void 0 !== e[p].A && void 0 !== l ? (e[p].A[l] = h) - : ((e[p] = h), (e[p].H = l)); + : ((e[p] = h), (e[p].F = l)); return []; }); }, - d: function (a, b, c, d, f) { + c: function (a, b, c, d, f) { function g(m) { return m; } - b = Q(b); + b = P(b); -1 === f && (f = 4294967295); - var k = Ea(c); + var k = Ca(c); if (0 === d) { var h = 32 - 8 * c; g = function (m) { @@ -748,18 +707,18 @@ var Module = (function () { }; } var p = -1 != b.indexOf('unsigned'); - V(a, { + U(a, { name: b, fromWireType: g, toWireType: function (m, n) { if ('number' !== typeof n && 'boolean' !== typeof n) throw new TypeError( - 'Cannot convert "' + Ra(n) + '" to ' + this.name, + 'Cannot convert "' + Pa(n) + '" to ' + this.name, ); if (n < d || n > f) throw new TypeError( 'Passing a number "' + - Ra(n) + + Pa(n) + '" from JS side to C/C++ side to an argument of type "' + b + '", which is outside the valid range [' + @@ -771,14 +730,14 @@ var Module = (function () { return p ? n >>> 0 : n | 0; }, argPackAdvance: 8, - readValueFromPointer: db(b, k, 0 !== d), + readValueFromPointer: bb(b, k, 0 !== d), B: null, }); }, - c: function (a, b, c) { + b: function (a, b, c) { function d(g) { g >>= 2; - var k = J; + var k = H; return new f(G, k[g + 1], k[g]); } var f = [ @@ -791,8 +750,8 @@ var Module = (function () { Float32Array, Float64Array, ][b]; - c = Q(c); - V( + c = P(c); + U( a, { name: c, @@ -800,23 +759,23 @@ var Module = (function () { argPackAdvance: 8, readValueFromPointer: d, }, - { J: !0 }, + { H: !0 }, ); }, - j: function (a, b) { - b = Q(b); + i: function (a, b) { + b = P(b); var c = 'std::string' === b; - V(a, { + U(a, { name: b, fromWireType: function (d) { - var f = J[d >> 2]; + var f = H[d >> 2]; if (c) for (var g = d + 4, k = 0; k <= f; ++k) { var h = d + 4 + k; - if (k == f || 0 == B[h]) { + if (k == f || 0 == C[h]) { if (g) { - for (var p = g + (h - g), m = g; !(m >= p) && B[m]; ) ++m; - g = ea.decode(B.subarray(g, m)); + for (var p = g + (h - g), m = g; !(m >= p) && C[m]; ) ++m; + g = da.decode(C.subarray(g, m)); } else g = ''; if (void 0 === n) var n = g; else (n += String.fromCharCode(0)), (n += g); @@ -825,10 +784,10 @@ var Module = (function () { } else { n = Array(f); - for (k = 0; k < f; ++k) n[k] = String.fromCharCode(B[d + 4 + k]); + for (k = 0; k < f; ++k) n[k] = String.fromCharCode(C[d + 4 + k]); n = n.join(''); } - Y(d); + X(d); return n; }, toWireType: function (d, f) { @@ -838,7 +797,7 @@ var Module = (function () { f instanceof Uint8Array || f instanceof Uint8ClampedArray || f instanceof Int8Array || - U('Cannot pass non-string to std::string'); + T('Cannot pass non-string to std::string'); var k = (c && g ? function () { for (var m = 0, n = 0; n < f.length; ++n) { @@ -857,103 +816,103 @@ var Module = (function () { : function () { return f.length; })(), - h = jb(4 + k + 1); - J[h >> 2] = k; - if (c && g) fa(f, h + 4, k + 1); + h = ib(4 + k + 1); + H[h >> 2] = k; + if (c && g) ea(f, h + 4, k + 1); else if (g) for (g = 0; g < k; ++g) { var p = f.charCodeAt(g); 255 < p && - (Y(h), - U('String has UTF-16 code units that do not fit in 8 bits')); - B[h + 4 + g] = p; + (X(h), + T('String has UTF-16 code units that do not fit in 8 bits')); + C[h + 4 + g] = p; } - else for (g = 0; g < k; ++g) B[h + 4 + g] = f[g]; - null !== d && d.push(Y, h); + else for (g = 0; g < k; ++g) C[h + 4 + g] = f[g]; + null !== d && d.push(X, h); return h; }, argPackAdvance: 8, - readValueFromPointer: Qa, + readValueFromPointer: Oa, B: function (d) { - Y(d); + X(d); }, }); }, - f: function (a, b, c) { - c = Q(c); + h: function (a, b, c) { + c = P(c); if (2 === b) { - var d = ia; - var f = ja; - var g = ka; + var d = ha; + var f = ia; + var g = ja; var k = function () { return D; }; var h = 1; } else 4 === b && - ((d = la), - (f = ma), - (g = na), + ((d = ka), + (f = la), + (g = ma), (k = function () { - return J; + return H; }), (h = 2)); - V(a, { + U(a, { name: c, fromWireType: function (p) { - for (var m = J[p >> 2], n = k(), q, x = p + 4, C = 0; C <= m; ++C) { - var l = p + 4 + C * b; - if (C == m || 0 == n[l >> h]) - (x = d(x, l - x)), + for (var m = H[p >> 2], n = k(), q, w = p + 4, B = 0; B <= m; ++B) { + var l = p + 4 + B * b; + if (B == m || 0 == n[l >> h]) + (w = d(w, l - w)), void 0 === q - ? (q = x) - : ((q += String.fromCharCode(0)), (q += x)), - (x = l + b); + ? (q = w) + : ((q += String.fromCharCode(0)), (q += w)), + (w = l + b); } - Y(p); + X(p); return q; }, toWireType: function (p, m) { 'string' !== typeof m && - U('Cannot pass non-string to C++ string type ' + c); + T('Cannot pass non-string to C++ string type ' + c); var n = g(m), - q = jb(4 + n + b); - J[q >> 2] = n >> h; + q = ib(4 + n + b); + H[q >> 2] = n >> h; f(m, q + 4, n + b); - null !== p && p.push(Y, q); + null !== p && p.push(X, q); return q; }, argPackAdvance: 8, - readValueFromPointer: Qa, + readValueFromPointer: Oa, B: function (p) { - Y(p); + X(p); }, }); }, - m: function (a, b) { - b = Q(b); - V(a, { - R: !0, + p: function (a, b) { + b = P(b); + U(a, { + I: !0, name: b, argPackAdvance: 0, fromWireType: function () {}, toWireType: function () {}, }); }, - q: Pa, - u: function (a) { - if (0 === a) return X(fb()); - var b = eb[a]; - a = void 0 === b ? Q(a) : b; - return X(fb()[a]); + e: Na, + f: function (a) { + if (0 === a) return W(db()); + var b = cb[a]; + a = void 0 === b ? P(a) : b; + return W(db()[a]); }, - p: function (a) { - 4 < a && (W[a].F += 1); + k: function (a) { + 4 < a && (V[a].D += 1); }, - h: function (a, b, c, d) { - a || U('Cannot use deleted val. handle = ' + a); - a = W[a].value; - var f = hb[b]; + l: function (a, b, c, d) { + a || T('Cannot use deleted val. handle = ' + a); + a = V[a].value; + var f = fb[b]; if (!f) { f = ''; for (var g = 0; g < b; ++g) f += (0 !== g ? ', ' : '') + 'arg' + g; @@ -984,20 +943,20 @@ var Module = (function () { ('var obj = new constructor(' + f + ');\nreturn __emval_register(obj);\n}\n'), - )(gb, e, X); - hb[b] = f; + )(eb, e, W); + fb[b] = f; } return f(a, c, d); }, - s: function () { - y(); + m: function () { + z(); }, - r: function (a, b, c) { - B.copyWithin(a, b, b + c); + q: function (a, b, c) { + C.copyWithin(a, b, b + c); }, - e: function (a) { + d: function (a) { a >>>= 0; - var b = B.length; + var b = C.length; if (2147483648 < a) return !1; for (var c = 1; 4 >= c; c *= 2) { var d = b * (1 + 0.2 / c); @@ -1006,8 +965,8 @@ var Module = (function () { 0 < d % 65536 && (d += 65536 - (d % 65536)); a: { try { - z.grow((Math.min(2147483648, d) - G.byteLength + 65535) >>> 16); - qa(z.buffer); + A.grow((Math.min(2147483648, d) - G.byteLength + 65535) >>> 16); + qa(A.buffer); var f = 1; break a; } catch (g) {} @@ -1017,11 +976,12 @@ var Module = (function () { } return !1; }, - a: z, + a: A, }; (function () { function a(f) { e.asm = f.exports; + J = e.asm.s; K--; e.monitorRunDependencies && e.monitorRunDependencies(K); 0 == K && @@ -1037,11 +997,11 @@ var Module = (function () { return WebAssembly.instantiate(g, d); }) .then(f, function (g) { - v('failed to asynchronously prepare wasm: ' + g); - y(g); + x('failed to asynchronously prepare wasm: ' + g); + z(g); }); } - var d = { a: kb }; + var d = { a: jb }; K++; e.monitorRunDependencies && e.monitorRunDependencies(K); if (e.instantiateWasm) @@ -1049,53 +1009,53 @@ var Module = (function () { return e.instantiateWasm(d, a); } catch (f) { return ( - v('Module.instantiateWasm callback failed with error: ' + f), !1 + x('Module.instantiateWasm callback failed with error: ' + f), !1 ); } (function () { - if ( - w || + return y || 'function' !== typeof WebAssembly.instantiateStreaming || ya() || 'function' !== typeof fetch - ) - return c(b); - fetch(N, { credentials: 'same-origin' }).then(function (f) { - return WebAssembly.instantiateStreaming(f, d).then(b, function (g) { - v('wasm streaming compile failed: ' + g); - v('falling back to ArrayBuffer instantiation'); - return c(b); - }); - }); - })(); + ? c(b) + : fetch(N, { credentials: 'same-origin' }).then(function (f) { + return WebAssembly.instantiateStreaming(f, d).then(b, function ( + g, + ) { + x('wasm streaming compile failed: ' + g); + x('falling back to ArrayBuffer instantiation'); + return c(b); + }); + }); + })().catch(r); return {}; })(); - var Ca = (e.___wasm_call_ctors = function () { - return (Ca = e.___wasm_call_ctors = e.asm.v).apply(null, arguments); + var hb = (e.___wasm_call_ctors = function () { + return (hb = e.___wasm_call_ctors = e.asm.t).apply(null, arguments); }), - jb = (e._malloc = function () { - return (jb = e._malloc = e.asm.w).apply(null, arguments); + ib = (e._malloc = function () { + return (ib = e._malloc = e.asm.u).apply(null, arguments); }), - Y = (e._free = function () { - return (Y = e._free = e.asm.x).apply(null, arguments); + X = (e._free = function () { + return (X = e._free = e.asm.v).apply(null, arguments); }), - bb = (e.___getTypeName = function () { - return (bb = e.___getTypeName = e.asm.y).apply(null, arguments); + $a = (e.___getTypeName = function () { + return ($a = e.___getTypeName = e.asm.w).apply(null, arguments); }); e.___embind_register_native_and_builtin_types = function () { - return (e.___embind_register_native_and_builtin_types = e.asm.z).apply( + return (e.___embind_register_native_and_builtin_types = e.asm.x).apply( null, arguments, ); }; - var lb; - M = function mb() { - lb || nb(); - lb || (M = mb); + var Z; + M = function kb() { + Z || lb(); + Z || (M = kb); }; - function nb() { + function lb() { function a() { - if (!lb && ((lb = !0), (e.calledRun = !0), !da)) { + if (!Z && ((Z = !0), (e.calledRun = !0), !ca)) { O(ta); O(ua); aa(e); @@ -1133,7 +1093,7 @@ var Module = (function () { : a()); } } - e.run = nb; + e.run = lb; if (e.preInit) for ( 'function' == typeof e.preInit && (e.preInit = [e.preInit]); @@ -1142,7 +1102,7 @@ var Module = (function () { ) e.preInit.pop()(); noExitRuntime = !0; - nb(); + lb(); return Module.ready; }; diff --git a/codecs/webp/dec/webp_dec.wasm b/codecs/webp/dec/webp_dec.wasm old mode 100644 new mode 100755 index a4c3b684..8aec0c35 Binary files a/codecs/webp/dec/webp_dec.wasm and b/codecs/webp/dec/webp_dec.wasm differ diff --git a/codecs/webp/enc/example.html b/codecs/webp/enc/example.html index 722b3400..2b0c8c4a 100644 --- a/codecs/webp/enc/example.html +++ b/codecs/webp/enc/example.html @@ -1,12 +1,11 @@ - - + diff --git a/codecs/webp/enc/webp_enc.js b/codecs/webp/enc/webp_enc.js index 1e97e4b6..dbaa1762 100644 --- a/codecs/webp/enc/webp_enc.js +++ b/codecs/webp/enc/webp_enc.js @@ -31,21 +31,16 @@ var Module = (function () { var v = g.printErr || console.warn.bind(console); for (t in r) r.hasOwnProperty(t) && (g[t] = r[t]); r = null; - var x; - g.wasmBinary && (x = g.wasmBinary); + var z; + g.wasmBinary && (z = g.wasmBinary); var noExitRuntime; g.noExitRuntime && (noExitRuntime = g.noExitRuntime); 'object' !== typeof WebAssembly && A('no native wasm support detected'); var B, - C = new WebAssembly.Table({ - initial: 128, - maximum: 128, - element: 'anyfunc', - }), da = !1, - ea = new TextDecoder('utf8'); - function fa(a, b, c) { - var d = D; + fa = new TextDecoder('utf8'); + function ha(a, b, c) { + var d = C; if (0 < c) { c = b + c - 1; for (var e = 0; e < a.length; ++e) { @@ -81,8 +76,8 @@ var Module = (function () { var ia = new TextDecoder('utf-16le'); function ja(a, b) { var c = a >> 1; - for (b = c + b / 2; !(c >= b) && E[c]; ) ++c; - return ia.decode(D.subarray(a, c << 1)); + for (b = c + b / 2; !(c >= b) && D[c]; ) ++c; + return ia.decode(C.subarray(a, c << 1)); } function ka(a, b, c) { void 0 === c && (c = 2147483647); @@ -90,8 +85,8 @@ var Module = (function () { c -= 2; var d = b; c = c < 2 * a.length ? c / 2 : a.length; - for (var e = 0; e < c; ++e) (G[b >> 1] = a.charCodeAt(e)), (b += 2); - G[b >> 1] = 0; + for (var e = 0; e < c; ++e) (E[b >> 1] = a.charCodeAt(e)), (b += 2); + E[b >> 1] = 0; return b - d; } function la(a) { @@ -99,7 +94,7 @@ var Module = (function () { } function ma(a, b) { for (var c = 0, d = ''; !(c >= b / 4); ) { - var e = H[(a + 4 * c) >> 2]; + var e = G[(a + 4 * c) >> 2]; if (0 == e) break; ++c; 65536 <= e @@ -120,11 +115,11 @@ var Module = (function () { var k = a.charCodeAt(++e); f = (65536 + ((f & 1023) << 10)) | (k & 1023); } - H[b >> 2] = f; + G[b >> 2] = f; b += 4; if (b + 4 > c) break; } - H[b >> 2] = 0; + G[b >> 2] = 0; return b - d; } function oa(a) { @@ -135,15 +130,15 @@ var Module = (function () { } return b; } - var I, J, D, G, E, H, K, pa, qa; + var H, I, C, E, D, G, J, pa, qa; function ra(a) { - I = a; - g.HEAP8 = J = new Int8Array(a); - g.HEAP16 = G = new Int16Array(a); - g.HEAP32 = H = new Int32Array(a); - g.HEAPU8 = D = new Uint8Array(a); - g.HEAPU16 = E = new Uint16Array(a); - g.HEAPU32 = K = new Uint32Array(a); + H = a; + g.HEAP8 = I = new Int8Array(a); + g.HEAP16 = E = new Int16Array(a); + g.HEAP32 = G = new Int32Array(a); + g.HEAPU8 = C = new Uint8Array(a); + g.HEAPU16 = D = new Uint16Array(a); + g.HEAPU32 = J = new Uint32Array(a); g.HEAPF32 = pa = new Float32Array(a); g.HEAPF64 = qa = new Float64Array(a); } @@ -151,10 +146,11 @@ var Module = (function () { g.wasmMemory ? (B = g.wasmMemory) : (B = new WebAssembly.Memory({ initial: sa / 65536, maximum: 32768 })); - B && (I = B.buffer); - sa = I.byteLength; - ra(I); - var ta = [], + B && (H = B.buffer); + sa = H.byteLength; + ra(H); + var K, + ta = [], ua = [], va = [], wa = []; @@ -190,7 +186,7 @@ var Module = (function () { } function Ba() { try { - if (x) return new Uint8Array(x); + if (z) return new Uint8Array(z); if (ca) return ca(N); throw 'both async and sync fetching of the wasm failed'; } catch (a) { @@ -198,7 +194,7 @@ var Module = (function () { } } function Ca() { - return x || 'function' !== typeof fetch + return z || 'function' !== typeof fetch ? Promise.resolve().then(Ba) : fetch(N, { credentials: 'same-origin' }) .then(function (a) { @@ -209,74 +205,41 @@ var Module = (function () { return Ba(); }); } - ua.push({ - O: function () { - Da(); - }, - }); function O(a) { for (; 0 < a.length; ) { var b = a.shift(); if ('function' == typeof b) b(g); else { - var c = b.O; + var c = b.L; 'number' === typeof c - ? void 0 === b.I - ? C.get(c)() - : C.get(c)(b.I) - : c(void 0 === b.I ? null : b.I); + ? void 0 === b.G + ? K.get(c)() + : K.get(c)(b.G) + : c(void 0 === b.G ? null : b.G); } } } - function Ea(a) { - this.H = a - 16; - this.aa = function (b) { - H[(this.H + 8) >> 2] = b; - }; - this.Y = function (b) { - H[(this.H + 0) >> 2] = b; - }; - this.Z = function () { - H[(this.H + 4) >> 2] = 0; - }; - this.X = function () { - J[(this.H + 12) >> 0] = 0; - }; - this.$ = function () { - J[(this.H + 13) >> 0] = 0; - }; - this.U = function (b, c) { - this.aa(b); - this.Y(c); - this.Z(); - this.X(); - this.$(); - }; - } - function P() { - return 0 < P.K; - } - var Q = {}; - function Fa(a) { + var P = {}; + function Da(a) { for (; a.length; ) { var b = a.pop(); a.pop()(b); } } - function Ga(a) { - return this.fromWireType(K[a >> 2]); + function Q(a) { + return this.fromWireType(J[a >> 2]); } var R = {}, S = {}, - Ha = {}; - function Ia(a) { + Ea = {}; + function Fa(a) { if (void 0 === a) return '_unknown'; a = a.replace(/[^a-zA-Z0-9_]/g, '$'); var b = a.charCodeAt(0); return 48 <= b && 57 >= b ? '_' + a : a; } - function Ja(a, b) { - a = Ia(a); + function Ga(a, b) { + a = Fa(a); return new Function( 'body', 'return function ' + @@ -284,9 +247,9 @@ var Module = (function () { '() {\n "use strict"; return body.apply(this, arguments);\n};\n', )(b); } - function Ka(a) { + function Ha(a) { var b = Error, - c = Ja(a, function (d) { + c = Ga(a, function (d) { this.name = a; this.message = d; d = Error(d).stack; @@ -303,16 +266,16 @@ var Module = (function () { }; return c; } - var La = void 0; - function Ma(a, b, c) { + var Ia = void 0; + function Ja(a, b, c) { function d(h) { h = c(h); if (h.length !== a.length) - throw new La('Mismatched type converter count'); + throw new Ia('Mismatched type converter count'); for (var n = 0; n < a.length; ++n) T(a[n], h[n]); } a.forEach(function (h) { - Ha[h] = b; + Ea[h] = b; }); var e = Array(b.length), f = [], @@ -330,7 +293,7 @@ var Module = (function () { }); 0 === f.length && d(e); } - function Na(a) { + function Ka(a) { switch (a) { case 1: return 0; @@ -344,14 +307,14 @@ var Module = (function () { throw new TypeError('Unknown type size: ' + a); } } - var Oa = void 0; + var La = void 0; function U(a) { - for (var b = ''; D[a]; ) b += Oa[D[a++]]; + for (var b = ''; C[a]; ) b += La[C[a++]]; return b; } - var Pa = void 0; - function V(a) { - throw new Pa(a); + var Ma = void 0; + function W(a) { + throw new Ma(a); } function T(a, b, c) { c = c || {}; @@ -360,13 +323,13 @@ var Module = (function () { 'registerType registeredInstance requires argPackAdvance', ); var d = b.name; - a || V('type "' + d + '" must have a positive integer typeid pointer'); + a || W('type "' + d + '" must have a positive integer typeid pointer'); if (S.hasOwnProperty(a)) { - if (c.T) return; - V("Cannot register type '" + d + "' twice"); + if (c.P) return; + W("Cannot register type '" + d + "' twice"); } S[a] = b; - delete Ha[a]; + delete Ea[a]; R.hasOwnProperty(a) && ((b = R[a]), delete R[a], @@ -374,7 +337,7 @@ var Module = (function () { e(); })); } - var Qa = [], + var Na = [], X = [ {}, { value: void 0 }, @@ -382,10 +345,10 @@ var Module = (function () { { value: !0 }, { value: !1 }, ]; - function Ra(a) { - 4 < a && 0 === --X[a].J && ((X[a] = void 0), Qa.push(a)); + function Oa(a) { + 4 < a && 0 === --X[a].H && ((X[a] = void 0), Na.push(a)); } - function Sa(a) { + function Pa(a) { switch (a) { case void 0: return 1; @@ -396,83 +359,83 @@ var Module = (function () { case !1: return 4; default: - var b = Qa.length ? Qa.pop() : X.length; - X[b] = { J: 1, value: a }; + var b = Na.length ? Na.pop() : X.length; + X[b] = { H: 1, value: a }; return b; } } - function Ta(a, b) { + function Qa(a, b) { var c = g; - if (void 0 === c[a].G) { + if (void 0 === c[a].F) { var d = c[a]; c[a] = function () { - c[a].G.hasOwnProperty(arguments.length) || - V( + c[a].F.hasOwnProperty(arguments.length) || + W( "Function '" + b + "' called with an invalid number of arguments (" + arguments.length + ') - expects one of (' + - c[a].G + + c[a].F + ')!', ); - return c[a].G[arguments.length].apply(this, arguments); + return c[a].F[arguments.length].apply(this, arguments); }; - c[a].G = []; - c[a].G[d.M] = d; + c[a].F = []; + c[a].F[d.J] = d; } } - function Ua(a, b, c) { + function Ra(a, b, c) { g.hasOwnProperty(a) - ? ((void 0 === c || (void 0 !== g[a].G && void 0 !== g[a].G[c])) && - V("Cannot register public name '" + a + "' twice"), - Ta(a, a), + ? ((void 0 === c || (void 0 !== g[a].F && void 0 !== g[a].F[c])) && + W("Cannot register public name '" + a + "' twice"), + Qa(a, a), g.hasOwnProperty(c) && - V( + W( 'Cannot register multiple overloads of a function with the same number of arguments (' + c + ')!', ), - (g[a].G[c] = b)) - : ((g[a] = b), void 0 !== c && (g[a].fa = c)); + (g[a].F[c] = b)) + : ((g[a] = b), void 0 !== c && (g[a].X = c)); } - function Va(a, b, c) { + function Sa(a, b, c) { switch (b) { case 0: return function (d) { - return this.fromWireType((c ? J : D)[d]); + return this.fromWireType((c ? I : C)[d]); }; case 1: return function (d) { - return this.fromWireType((c ? G : E)[d >> 1]); + return this.fromWireType((c ? E : D)[d >> 1]); }; case 2: return function (d) { - return this.fromWireType((c ? H : K)[d >> 2]); + return this.fromWireType((c ? G : J)[d >> 2]); }; default: throw new TypeError('Unknown integer type: ' + a); } } - function Wa(a) { - a = Xa(a); + function Ta(a) { + a = Ua(a); var b = U(a); Y(a); return b; } - function Ya(a, b) { + function Va(a, b) { var c = S[a]; - void 0 === c && V(b + ' has unknown type ' + Wa(a)); + void 0 === c && W(b + ' has unknown type ' + Ta(a)); return c; } - function Za(a) { + function Wa(a) { if (null === a) return 'null'; var b = typeof a; return 'object' === b || 'array' === b || 'function' === b ? a.toString() : '' + a; } - function $a(a, b) { + function Xa(a, b) { switch (b) { case 2: return function (c) { @@ -486,7 +449,7 @@ var Module = (function () { throw new TypeError('Unknown float type: ' + a); } } - function ab(a) { + function Ya(a) { var b = Function; if (!(b instanceof Function)) throw new TypeError( @@ -494,17 +457,17 @@ var Module = (function () { typeof b + ' which is not a function', ); - var c = Ja(b.name || 'unknownFunctionName', function () {}); + var c = Ga(b.name || 'unknownFunctionName', function () {}); c.prototype = b.prototype; c = new c(); a = b.apply(c, a); return a instanceof Object ? a : c; } - function bb(a, b) { - for (var c = [], d = 0; d < a; d++) c.push(H[(b >> 2) + d]); + function Za(a, b) { + for (var c = [], d = 0; d < a; d++) c.push(G[(b >> 2) + d]); return c; } - function cb(a, b) { + function $a(a, b) { 0 <= a.indexOf('j') || A('Assertion failed: getDynCaller should only be called with i64 sigs'); var c = []; @@ -517,69 +480,69 @@ var Module = (function () { c && c.length ? g['dynCall_' + a].apply(null, [b].concat(c)) : g['dynCall_' + a].call(null, b)) - : (e = C.get(b).apply(null, c)); + : (e = K.get(b).apply(null, c)); return e; }; } function Z(a, b) { a = U(a); - var c = -1 != a.indexOf('j') ? cb(a, b) : C.get(b); + var c = -1 != a.indexOf('j') ? $a(a, b) : K.get(b); 'function' !== typeof c && - V('unknown function pointer with signature ' + a + ': ' + b); + W('unknown function pointer with signature ' + a + ': ' + b); return c; } - var db = void 0; - function eb(a, b) { + var ab = void 0; + function bb(a, b) { function c(f) { - e[f] || S[f] || (Ha[f] ? Ha[f].forEach(c) : (d.push(f), (e[f] = !0))); + e[f] || S[f] || (Ea[f] ? Ea[f].forEach(c) : (d.push(f), (e[f] = !0))); } var d = [], e = {}; b.forEach(c); - throw new db(a + ': ' + d.map(Wa).join([', '])); + throw new ab(a + ': ' + d.map(Ta).join([', '])); } - function fb(a, b, c) { + function cb(a, b, c) { switch (b) { case 0: return c ? function (d) { - return J[d]; + return I[d]; } : function (d) { - return D[d]; + return C[d]; }; case 1: return c ? function (d) { - return G[d >> 1]; + return E[d >> 1]; } : function (d) { - return E[d >> 1]; + return D[d >> 1]; }; case 2: return c ? function (d) { - return H[d >> 2]; + return G[d >> 2]; } : function (d) { - return K[d >> 2]; + return J[d >> 2]; }; default: throw new TypeError('Unknown integer type: ' + a); } } - var gb = {}; - function hb() { + var db = {}; + function eb() { return 'object' === typeof globalThis ? globalThis : Function('return this')(); } - var ib = {}; - La = g.InternalError = Ka('InternalError'); - for (var jb = Array(256), kb = 0; 256 > kb; ++kb) - jb[kb] = String.fromCharCode(kb); - Oa = jb; - Pa = g.BindingError = Ka('BindingError'); + var fb = {}; + Ia = g.InternalError = Ha('InternalError'); + for (var gb = Array(256), hb = 0; 256 > hb; ++hb) + gb[hb] = String.fromCharCode(hb); + La = gb; + Ma = g.BindingError = Ha('BindingError'); g.count_emval_handles = function () { for (var a = 0, b = 5; b < X.length; ++b) void 0 !== X[b] && ++a; return a; @@ -588,50 +551,46 @@ var Module = (function () { for (var a = 5; a < X.length; ++a) if (void 0 !== X[a]) return X[a]; return null; }; - db = g.UnboundTypeError = Ka('UnboundTypeError'); - var mb = { - l: function (a) { - return lb(a + 16) + 16; + ab = g.UnboundTypeError = Ha('UnboundTypeError'); + ua.push({ + L: function () { + ib(); }, - z: function () {}, - h: function (a, b, c) { - new Ea(a).U(b, c); - 'uncaught_exception' in P ? P.K++ : (P.K = 1); - throw a; - }, - b: C, + }); + var kb = { + w: function () {}, m: function (a) { - var b = Q[a]; - delete Q[a]; - var c = b.V, - d = b.W, - e = b.L, + var b = P[a]; + delete P[a]; + var c = b.R, + d = b.S, + e = b.I, f = e .map(function (k) { - return k.S; + return k.O; }) .concat( e.map(function (k) { - return k.ca; + return k.U; }), ); - Ma([a], f, function (k) { + Ja([a], f, function (k) { var h = {}; e.forEach(function (n, l) { var m = k[l], - q = n.P, - w = n.R, - y = k[l + e.length], - p = n.ba, - ha = n.da; - h[n.N] = { - read: function (z) { - return m.fromWireType(q(w, z)); + q = n.M, + w = n.N, + x = k[l + e.length], + p = n.T, + ea = n.V; + h[n.K] = { + read: function (y) { + return m.fromWireType(q(w, y)); }, - write: function (z, F) { - var W = []; - p(ha, z, y.toWireType(W, F)); - Fa(W); + write: function (y, F) { + var V = []; + p(ea, y, x.toWireType(V, F)); + Da(V); }, }; }); @@ -655,14 +614,14 @@ var Module = (function () { return q; }, argPackAdvance: 8, - readValueFromPointer: Ga, - F: d, + readValueFromPointer: Q, + D: d, }, ]; }); }, - w: function (a, b, c, d, e) { - var f = Na(c); + s: function (a, b, c, d, e) { + var f = Ka(c); b = U(b); T(a, { name: b, @@ -674,35 +633,35 @@ var Module = (function () { }, argPackAdvance: 8, readValueFromPointer: function (k) { - if (1 === c) var h = J; - else if (2 === c) h = G; - else if (4 === c) h = H; + if (1 === c) var h = I; + else if (2 === c) h = E; + else if (4 === c) h = G; else throw new TypeError('Unknown boolean type size: ' + b); return this.fromWireType(h[k >> f]); }, - F: null, + D: null, }); }, - v: function (a, b) { + r: function (a, b) { b = U(b); T(a, { name: b, fromWireType: function (c) { var d = X[c].value; - Ra(c); + Oa(c); return d; }, toWireType: function (c, d) { - return Sa(d); + return Pa(d); }, argPackAdvance: 8, - readValueFromPointer: Ga, - F: null, + readValueFromPointer: Q, + D: null, }); }, - p: function (a, b, c, d) { + o: function (a, b, c, d) { function e() {} - c = Na(c); + c = Ka(c); b = U(b); e.values = {}; T(a, { @@ -715,24 +674,24 @@ var Module = (function () { return k.value; }, argPackAdvance: 8, - readValueFromPointer: Va(b, c, d), - F: null, + readValueFromPointer: Sa(b, c, d), + D: null, }); - Ua(b, e); + Ra(b, e); }, - o: function (a, b, c) { - var d = Ya(a, 'enum'); + f: function (a, b, c) { + var d = Va(a, 'enum'); b = U(b); a = d.constructor; d = Object.create(d.constructor.prototype, { value: { value: c }, - constructor: { value: Ja(d.name + '_' + b, function () {}) }, + constructor: { value: Ga(d.name + '_' + b, function () {}) }, }); a.values[c] = d; a[b] = d; }, - i: function (a, b, c) { - c = Na(c); + k: function (a, b, c) { + c = Ka(c); b = U(b); T(a, { name: b, @@ -742,52 +701,52 @@ var Module = (function () { toWireType: function (d, e) { if ('number' !== typeof e && 'boolean' !== typeof e) throw new TypeError( - 'Cannot convert "' + Za(e) + '" to ' + this.name, + 'Cannot convert "' + Wa(e) + '" to ' + this.name, ); return e; }, argPackAdvance: 8, - readValueFromPointer: $a(b, c), - F: null, + readValueFromPointer: Xa(b, c), + D: null, }); }, - k: function (a, b, c, d, e, f) { - var k = bb(b, c); + i: function (a, b, c, d, e, f) { + var k = Za(b, c); a = U(a); e = Z(d, e); - Ua( + Ra( a, function () { - eb('Cannot call ' + a + ' due to unbound types', k); + bb('Cannot call ' + a + ' due to unbound types', k); }, b - 1, ); - Ma([], k, function (h) { + Ja([], k, function (h) { var n = a, l = a; h = [h[0], null].concat(h.slice(1)); var m = e, q = h.length; 2 > q && - V( + W( "argTypes array size mismatch! Must at least get return value and 'this' types!", ); - for (var w = null !== h[1] && !1, y = !1, p = 1; p < h.length; ++p) - if (null !== h[p] && void 0 === h[p].F) { - y = !0; + for (var w = null !== h[1] && !1, x = !1, p = 1; p < h.length; ++p) + if (null !== h[p] && void 0 === h[p].D) { + x = !0; break; } - var ha = 'void' !== h[0].name, - z = '', + var ea = 'void' !== h[0].name, + y = '', F = ''; for (p = 0; p < q - 2; ++p) - (z += (0 !== p ? ', ' : '') + 'arg' + p), + (y += (0 !== p ? ', ' : '') + 'arg' + p), (F += (0 !== p ? ', ' : '') + 'arg' + p + 'Wired'); l = 'return function ' + - Ia(l) + + Fa(l) + '(' + - z + + y + ') {\nif (arguments.length !== ' + (q - 2) + ") {\nthrowBindingError('function " + @@ -795,14 +754,14 @@ var Module = (function () { " called with ' + arguments.length + ' arguments, expected " + (q - 2) + " args!');\n}\n"; - y && (l += 'var destructors = [];\n'); - var W = y ? 'destructors' : 'null'; - z = 'throwBindingError invoker fn runDestructors retType classParam'.split( + x && (l += 'var destructors = [];\n'); + var V = x ? 'destructors' : 'null'; + y = 'throwBindingError invoker fn runDestructors retType classParam'.split( ' ', ); - m = [V, m, f, Fa, h[0], h[1]]; + m = [W, m, f, Da, h[0], h[1]]; w && - (l += 'var thisWired = classParam.toWireType(' + W + ', this);\n'); + (l += 'var thisWired = classParam.toWireType(' + V + ', this);\n'); for (p = 0; p < q - 2; ++p) (l += 'var arg' + @@ -810,38 +769,38 @@ var Module = (function () { 'Wired = argType' + p + '.toWireType(' + - W + + V + ', arg' + p + '); // ' + h[p + 2].name + '\n'), - z.push('argType' + p), + y.push('argType' + p), m.push(h[p + 2]); w && (F = 'thisWired' + (0 < F.length ? ', ' : '') + F); l += - (ha ? 'var rv = ' : '') + + (ea ? 'var rv = ' : '') + 'invoker(fn' + (0 < F.length ? ', ' : '') + F + ');\n'; - if (y) l += 'runDestructors(destructors);\n'; + if (x) l += 'runDestructors(destructors);\n'; else for (p = w ? 1 : 2; p < h.length; ++p) (q = 1 === p ? 'thisWired' : 'arg' + (p - 2) + 'Wired'), - null !== h[p].F && + null !== h[p].D && ((l += q + '_dtor(' + q + '); // ' + h[p].name + '\n'), - z.push(q + '_dtor'), - m.push(h[p].F)); - ha && (l += 'var ret = retType.fromWireType(rv);\nreturn ret;\n'); - z.push(l + '}\n'); - h = ab(z).apply(null, m); + y.push(q + '_dtor'), + m.push(h[p].D)); + ea && (l += 'var ret = retType.fromWireType(rv);\nreturn ret;\n'); + y.push(l + '}\n'); + h = Ya(y).apply(null, m); p = b - 1; if (!g.hasOwnProperty(n)) - throw new La('Replacing nonexistant public symbol'); - void 0 !== g[n].G && void 0 !== p - ? (g[n].G[p] = h) - : ((g[n] = h), (g[n].M = p)); + throw new Ia('Replacing nonexistant public symbol'); + void 0 !== g[n].F && void 0 !== p + ? (g[n].F[p] = h) + : ((g[n] = h), (g[n].J = p)); return []; }); }, @@ -851,7 +810,7 @@ var Module = (function () { } b = U(b); -1 === e && (e = 4294967295); - var k = Na(c); + var k = Ka(c); if (0 === d) { var h = 32 - 8 * c; f = function (l) { @@ -865,12 +824,12 @@ var Module = (function () { toWireType: function (l, m) { if ('number' !== typeof m && 'boolean' !== typeof m) throw new TypeError( - 'Cannot convert "' + Za(m) + '" to ' + this.name, + 'Cannot convert "' + Wa(m) + '" to ' + this.name, ); if (m < d || m > e) throw new TypeError( 'Passing a number "' + - Za(m) + + Wa(m) + '" from JS side to C/C++ side to an argument of type "' + b + '", which is outside the valid range [' + @@ -882,15 +841,15 @@ var Module = (function () { return n ? m >>> 0 : m | 0; }, argPackAdvance: 8, - readValueFromPointer: fb(b, k, 0 !== d), - F: null, + readValueFromPointer: cb(b, k, 0 !== d), + D: null, }); }, c: function (a, b, c) { function d(f) { f >>= 2; - var k = K; - return new e(I, k[f + 1], k[f]); + var k = J; + return new e(H, k[f + 1], k[f]); } var e = [ Int8Array, @@ -911,23 +870,23 @@ var Module = (function () { argPackAdvance: 8, readValueFromPointer: d, }, - { T: !0 }, + { P: !0 }, ); }, - j: function (a, b) { + l: function (a, b) { b = U(b); var c = 'std::string' === b; T(a, { name: b, fromWireType: function (d) { - var e = K[d >> 2]; + var e = J[d >> 2]; if (c) for (var f = d + 4, k = 0; k <= e; ++k) { var h = d + 4 + k; - if (k == e || 0 == D[h]) { + if (k == e || 0 == C[h]) { if (f) { - for (var n = f + (h - f), l = f; !(l >= n) && D[l]; ) ++l; - f = ea.decode(D.subarray(f, l)); + for (var n = f + (h - f), l = f; !(l >= n) && C[l]; ) ++l; + f = fa.decode(C.subarray(f, l)); } else f = ''; if (void 0 === m) var m = f; else (m += String.fromCharCode(0)), (m += f); @@ -936,7 +895,7 @@ var Module = (function () { } else { m = Array(e); - for (k = 0; k < e; ++k) m[k] = String.fromCharCode(D[d + 4 + k]); + for (k = 0; k < e; ++k) m[k] = String.fromCharCode(C[d + 4 + k]); m = m.join(''); } Y(d); @@ -949,7 +908,7 @@ var Module = (function () { e instanceof Uint8Array || e instanceof Uint8ClampedArray || e instanceof Int8Array || - V('Cannot pass non-string to std::string'); + W('Cannot pass non-string to std::string'); var k = (c && f ? function () { for (var l = 0, m = 0; m < e.length; ++m) { @@ -968,36 +927,36 @@ var Module = (function () { : function () { return e.length; })(), - h = lb(4 + k + 1); - K[h >> 2] = k; - if (c && f) fa(e, h + 4, k + 1); + h = jb(4 + k + 1); + J[h >> 2] = k; + if (c && f) ha(e, h + 4, k + 1); else if (f) for (f = 0; f < k; ++f) { var n = e.charCodeAt(f); 255 < n && (Y(h), - V('String has UTF-16 code units that do not fit in 8 bits')); - D[h + 4 + f] = n; + W('String has UTF-16 code units that do not fit in 8 bits')); + C[h + 4 + f] = n; } - else for (f = 0; f < k; ++f) D[h + 4 + f] = e[f]; + else for (f = 0; f < k; ++f) C[h + 4 + f] = e[f]; null !== d && d.push(Y, h); return h; }, argPackAdvance: 8, - readValueFromPointer: Ga, - F: function (d) { + readValueFromPointer: Q, + D: function (d) { Y(d); }, }); }, - f: function (a, b, c) { + h: function (a, b, c) { c = U(c); if (2 === b) { var d = ja; var e = ka; var f = la; var k = function () { - return E; + return D; }; var h = 1; } else @@ -1006,15 +965,15 @@ var Module = (function () { (e = na), (f = oa), (k = function () { - return K; + return J; }), (h = 2)); T(a, { name: c, fromWireType: function (n) { - for (var l = K[n >> 2], m = k(), q, w = n + 4, y = 0; y <= l; ++y) { - var p = n + 4 + y * b; - if (y == l || 0 == m[p >> h]) + for (var l = J[n >> 2], m = k(), q, w = n + 4, x = 0; x <= l; ++x) { + var p = n + 4 + x * b; + if (x == l || 0 == m[p >> h]) (w = d(w, p - w)), void 0 === q ? (q = w) @@ -1026,59 +985,59 @@ var Module = (function () { }, toWireType: function (n, l) { 'string' !== typeof l && - V('Cannot pass non-string to C++ string type ' + c); + W('Cannot pass non-string to C++ string type ' + c); var m = f(l), - q = lb(4 + m + b); - K[q >> 2] = m >> h; + q = jb(4 + m + b); + J[q >> 2] = m >> h; e(l, q + 4, m + b); null !== n && n.push(Y, q); return q; }, argPackAdvance: 8, - readValueFromPointer: Ga, - F: function (n) { + readValueFromPointer: Q, + D: function (n) { Y(n); }, }); }, n: function (a, b, c, d, e, f) { - Q[a] = { name: U(b), V: Z(c, d), W: Z(e, f), L: [] }; + P[a] = { name: U(b), R: Z(c, d), S: Z(e, f), I: [] }; }, - g: function (a, b, c, d, e, f, k, h, n, l) { - Q[a].L.push({ - N: U(b), - S: c, - P: Z(d, e), - R: f, - ca: k, - ba: Z(h, n), - da: l, + b: function (a, b, c, d, e, f, k, h, n, l) { + P[a].I.push({ + K: U(b), + O: c, + M: Z(d, e), + N: f, + U: k, + T: Z(h, n), + V: l, }); }, - x: function (a, b) { + t: function (a, b) { b = U(b); T(a, { - ea: !0, + W: !0, name: b, argPackAdvance: 0, fromWireType: function () {}, toWireType: function () {}, }); }, - r: Ra, - s: function (a) { - if (0 === a) return Sa(hb()); - var b = gb[a]; + g: Oa, + v: function (a) { + if (0 === a) return Pa(eb()); + var b = db[a]; a = void 0 === b ? U(a) : b; - return Sa(hb()[a]); + return Pa(eb()[a]); }, - y: function (a) { - 4 < a && (X[a].J += 1); + u: function (a) { + 4 < a && (X[a].H += 1); }, - q: function (a, b, c, d) { - a || V('Cannot use deleted val. handle = ' + a); + p: function (a, b, c, d) { + a || W('Cannot use deleted val. handle = ' + a); a = X[a].value; - var e = ib[b]; + var e = fb[b]; if (!e) { e = ''; for (var f = 0; f < b; ++f) e += (0 !== f ? ', ' : '') + 'arg' + f; @@ -1109,20 +1068,20 @@ var Module = (function () { ('var obj = new constructor(' + e + ');\nreturn __emval_register(obj);\n}\n'), - )(Ya, g, Sa); - ib[b] = e; + )(Va, g, Pa); + fb[b] = e; } return e(a, c, d); }, - u: function () { + j: function () { A(); }, - t: function (a, b, c) { - D.copyWithin(a, b, b + c); + q: function (a, b, c) { + C.copyWithin(a, b, b + c); }, e: function (a) { a >>>= 0; - var b = D.length; + var b = C.length; if (2147483648 < a) return !1; for (var c = 1; 4 >= c; c *= 2) { var d = b * (1 + 0.2 / c); @@ -1131,7 +1090,7 @@ var Module = (function () { 0 < d % 65536 && (d += 65536 - (d % 65536)); a: { try { - B.grow((Math.min(2147483648, d) - I.byteLength + 65535) >>> 16); + B.grow((Math.min(2147483648, d) - H.byteLength + 65535) >>> 16); ra(B.buffer); var e = 1; break a; @@ -1147,6 +1106,7 @@ var Module = (function () { (function () { function a(e) { g.asm = e.exports; + K = g.asm.x; L--; g.monitorRunDependencies && g.monitorRunDependencies(L); 0 == L && @@ -1166,7 +1126,7 @@ var Module = (function () { A(f); }); } - var d = { a: mb }; + var d = { a: kb }; L++; g.monitorRunDependencies && g.monitorRunDependencies(L); if (g.instantiateWasm) @@ -1178,49 +1138,49 @@ var Module = (function () { ); } (function () { - if ( - x || + return z || 'function' !== typeof WebAssembly.instantiateStreaming || za() || 'function' !== typeof fetch - ) - return c(b); - fetch(N, { credentials: 'same-origin' }).then(function (e) { - return WebAssembly.instantiateStreaming(e, d).then(b, function (f) { - v('wasm streaming compile failed: ' + f); - v('falling back to ArrayBuffer instantiation'); - return c(b); - }); - }); - })(); + ? c(b) + : fetch(N, { credentials: 'same-origin' }).then(function (e) { + return WebAssembly.instantiateStreaming(e, d).then(b, function ( + f, + ) { + v('wasm streaming compile failed: ' + f); + v('falling back to ArrayBuffer instantiation'); + return c(b); + }); + }); + })().catch(ba); return {}; })(); - var Da = (g.___wasm_call_ctors = function () { - return (Da = g.___wasm_call_ctors = g.asm.A).apply(null, arguments); + var ib = (g.___wasm_call_ctors = function () { + return (ib = g.___wasm_call_ctors = g.asm.y).apply(null, arguments); }), - lb = (g._malloc = function () { - return (lb = g._malloc = g.asm.B).apply(null, arguments); + jb = (g._malloc = function () { + return (jb = g._malloc = g.asm.z).apply(null, arguments); }), Y = (g._free = function () { - return (Y = g._free = g.asm.C).apply(null, arguments); + return (Y = g._free = g.asm.A).apply(null, arguments); }), - Xa = (g.___getTypeName = function () { - return (Xa = g.___getTypeName = g.asm.D).apply(null, arguments); + Ua = (g.___getTypeName = function () { + return (Ua = g.___getTypeName = g.asm.B).apply(null, arguments); }); g.___embind_register_native_and_builtin_types = function () { - return (g.___embind_register_native_and_builtin_types = g.asm.E).apply( + return (g.___embind_register_native_and_builtin_types = g.asm.C).apply( null, arguments, ); }; - var nb; - M = function ob() { - nb || pb(); - nb || (M = ob); + var lb; + M = function mb() { + lb || nb(); + lb || (M = mb); }; - function pb() { + function nb() { function a() { - if (!nb && ((nb = !0), (g.calledRun = !0), !da)) { + if (!lb && ((lb = !0), (g.calledRun = !0), !da)) { O(ua); O(va); aa(g); @@ -1258,7 +1218,7 @@ var Module = (function () { : a()); } } - g.run = pb; + g.run = nb; if (g.preInit) for ( 'function' == typeof g.preInit && (g.preInit = [g.preInit]); @@ -1267,7 +1227,7 @@ var Module = (function () { ) g.preInit.pop()(); noExitRuntime = !0; - pb(); + nb(); return Module.ready; }; diff --git a/codecs/webp/enc/webp_enc.wasm b/codecs/webp/enc/webp_enc.wasm old mode 100644 new mode 100755 index 0512d71d..463df0c5 Binary files a/codecs/webp/enc/webp_enc.wasm and b/codecs/webp/enc/webp_enc.wasm differ diff --git a/codecs/wp2/Makefile b/codecs/wp2/Makefile new file mode 100644 index 00000000..06013b62 --- /dev/null +++ b/codecs/wp2/Makefile @@ -0,0 +1,50 @@ +CODEC_URL = https://chromium.googlesource.com/codecs/libwebp2/+archive/c90b5b476004c9a98731ae1c175cebab5de50fbf.tar.gz +CODEC_DIR = node_modules/wp2 +CODEC_BUILD_DIR := $(CODEC_DIR)/.build +CODEC_OUT := $(CODEC_BUILD_DIR)/libwebp2.a + +OUT_JS = enc/wp2_enc.js dec/wp2_dec.js +OUT_WASM = $(OUT_JS:.js=.wasm) + +.PHONY: all clean + +all: $(OUT_JS) + +%.js: %.cpp $(CODEC_OUT) + $(CXX) \ + -I $(CODEC_DIR) \ + ${CXXFLAGS} \ + ${LDFLAGS} \ + --bind \ + --closure 1 \ + -s ALLOW_MEMORY_GROWTH=1 \ + -s MODULARIZE=1 \ + -s TEXTDECODER=2 \ + -s ENVIRONMENT='worker' \ + -s EXPORT_ES6=1 \ + -s EXPORT_NAME="$(basename $(@F))" \ + -o $@ \ + $+ + +$(CODEC_OUT): $(CODEC_BUILD_DIR)/Makefile + cd $(CODEC_BUILD_DIR) && \ + $(MAKE) + +$(CODEC_BUILD_DIR)/Makefile: $(CODEC_DIR)/CMakeLists.txt + mkdir -p $(CODEC_BUILD_DIR) + cd $(CODEC_BUILD_DIR) && \ + emcmake cmake \ + -DWP2_ENABLE_SIMD=0 \ + -DWP2_BUILD_TESTS=0 \ + -DWP2_ENABLE_TESTS=0 \ + -DWP2_BUILD_EXAMPLES=0 \ + -DWP2_BUILD_EXTRAS=0 \ + ../ + +$(CODEC_DIR)/CMakeLists.txt: + mkdir -p $(CODEC_DIR) + curl -sL $(CODEC_URL) | tar xz -C $(CODEC_DIR) + +clean: + $(RM) $(OUT_JS) $(OUT_WASM) + $(MAKE) -C $(CODEC_BUILD_DIR) clean diff --git a/codecs/wp2/dec/README.md b/codecs/wp2/dec/README.md new file mode 100644 index 00000000..4ebef7e7 --- /dev/null +++ b/codecs/wp2/dec/README.md @@ -0,0 +1,17 @@ +# WebP2 decoder + +- Source: + +## Dependencies + +- Docker + +## Example + +N/A + +## API + +### `ImageData decode(uint8_t* image_buffer, int image_width, int image_height)` + +Decodes the given WebP2 buffer into raw RGBA represented as an `ImageData`. diff --git a/codecs/wp2/dec/wp2_dec.cpp b/codecs/wp2/dec/wp2_dec.cpp new file mode 100644 index 00000000..5ee45156 --- /dev/null +++ b/codecs/wp2/dec/wp2_dec.cpp @@ -0,0 +1,24 @@ +#include +#include +#include +#include "src/wp2/decode.h" + +using namespace emscripten; + +thread_local const val Uint8ClampedArray = val::global("Uint8ClampedArray"); +thread_local const val ImageData = val::global("ImageData"); + +val decode(std::string image_in) { + WP2::ArgbBuffer buffer(WP2_rgbA_32); + WP2Status status = WP2::Decode(image_in, &buffer); + if (status != WP2_STATUS_OK) { + return val::null(); + } + return ImageData.new_( + Uint8ClampedArray.new_(typed_memory_view(buffer.stride * buffer.height, buffer.GetRow8(0))), + buffer.width, buffer.height); +} + +EMSCRIPTEN_BINDINGS(my_module) { + function("decode", &decode); +} diff --git a/codecs/wp2/dec/wp2_dec.d.ts b/codecs/wp2/dec/wp2_dec.d.ts new file mode 100644 index 00000000..ddd6aece --- /dev/null +++ b/codecs/wp2/dec/wp2_dec.d.ts @@ -0,0 +1,7 @@ +export interface WP2Module extends EmscriptenWasm.Module { + decode(data: BufferSource): ImageData | null; +} + +declare var moduleFactory: EmscriptenWasm.ModuleFactory; + +export default moduleFactory; diff --git a/codecs/wp2/dec/wp2_dec.js b/codecs/wp2/dec/wp2_dec.js new file mode 100644 index 00000000..4695b44a --- /dev/null +++ b/codecs/wp2/dec/wp2_dec.js @@ -0,0 +1,1185 @@ +var wp2_dec = (function () { + var _scriptDir = import.meta.url; + + return function (wp2_dec) { + wp2_dec = wp2_dec || {}; + + var e; + e || (e = typeof wp2_dec !== 'undefined' ? wp2_dec : {}); + var aa, ba; + e.ready = new Promise(function (a, b) { + aa = a; + ba = b; + }); + var r = {}, + t; + for (t in e) e.hasOwnProperty(t) && (r[t] = e[t]); + var u = '', + ca; + u = self.location.href; + _scriptDir && (u = _scriptDir); + 0 !== u.indexOf('blob:') + ? (u = u.substr(0, u.lastIndexOf('/') + 1)) + : (u = ''); + ca = function (a) { + var b = new XMLHttpRequest(); + b.open('GET', a, !1); + b.responseType = 'arraybuffer'; + b.send(null); + return new Uint8Array(b.response); + }; + var da = e.print || console.log.bind(console), + v = e.printErr || console.warn.bind(console); + for (t in r) r.hasOwnProperty(t) && (e[t] = r[t]); + r = null; + var w; + e.wasmBinary && (w = e.wasmBinary); + var noExitRuntime; + e.noExitRuntime && (noExitRuntime = e.noExitRuntime); + 'object' !== typeof WebAssembly && y('no native wasm support detected'); + var z, + ea = !1, + fa = new TextDecoder('utf8'); + function ha(a, b, c) { + var d = A; + if (0 < c) { + c = b + c - 1; + for (var f = 0; f < a.length; ++f) { + var g = a.charCodeAt(f); + if (55296 <= g && 57343 >= g) { + var l = a.charCodeAt(++f); + g = (65536 + ((g & 1023) << 10)) | (l & 1023); + } + if (127 >= g) { + if (b >= c) break; + d[b++] = g; + } else { + if (2047 >= g) { + if (b + 1 >= c) break; + d[b++] = 192 | (g >> 6); + } else { + if (65535 >= g) { + if (b + 2 >= c) break; + d[b++] = 224 | (g >> 12); + } else { + if (b + 3 >= c) break; + d[b++] = 240 | (g >> 18); + d[b++] = 128 | ((g >> 12) & 63); + } + d[b++] = 128 | ((g >> 6) & 63); + } + d[b++] = 128 | (g & 63); + } + } + d[b] = 0; + } + } + var ia = new TextDecoder('utf-16le'); + function ja(a, b) { + var c = a >> 1; + for (b = c + b / 2; !(c >= b) && B[c]; ) ++c; + return ia.decode(A.subarray(a, c << 1)); + } + function ka(a, b, c) { + void 0 === c && (c = 2147483647); + if (2 > c) return 0; + c -= 2; + var d = b; + c = c < 2 * a.length ? c / 2 : a.length; + for (var f = 0; f < c; ++f) (D[b >> 1] = a.charCodeAt(f)), (b += 2); + D[b >> 1] = 0; + return b - d; + } + function la(a) { + return 2 * a.length; + } + function ma(a, b) { + for (var c = 0, d = ''; !(c >= b / 4); ) { + var f = E[(a + 4 * c) >> 2]; + if (0 == f) break; + ++c; + 65536 <= f + ? ((f -= 65536), + (d += String.fromCharCode(55296 | (f >> 10), 56320 | (f & 1023)))) + : (d += String.fromCharCode(f)); + } + return d; + } + function na(a, b, c) { + void 0 === c && (c = 2147483647); + if (4 > c) return 0; + var d = b; + c = d + c - 4; + for (var f = 0; f < a.length; ++f) { + var g = a.charCodeAt(f); + if (55296 <= g && 57343 >= g) { + var l = a.charCodeAt(++f); + g = (65536 + ((g & 1023) << 10)) | (l & 1023); + } + E[b >> 2] = g; + b += 4; + if (b + 4 > c) break; + } + E[b >> 2] = 0; + return b - d; + } + function oa(a) { + for (var b = 0, c = 0; c < a.length; ++c) { + var d = a.charCodeAt(c); + 55296 <= d && 57343 >= d && ++c; + b += 4; + } + return b; + } + var F, G, A, D, B, E, H, pa, qa; + function ra(a) { + F = a; + e.HEAP8 = G = new Int8Array(a); + e.HEAP16 = D = new Int16Array(a); + e.HEAP32 = E = new Int32Array(a); + e.HEAPU8 = A = new Uint8Array(a); + e.HEAPU16 = B = new Uint16Array(a); + e.HEAPU32 = H = new Uint32Array(a); + e.HEAPF32 = pa = new Float32Array(a); + e.HEAPF64 = qa = new Float64Array(a); + } + var sa = e.INITIAL_MEMORY || 16777216; + e.wasmMemory + ? (z = e.wasmMemory) + : (z = new WebAssembly.Memory({ initial: sa / 65536, maximum: 32768 })); + z && (F = z.buffer); + sa = F.byteLength; + ra(F); + var J, + ta = [], + ua = [], + va = [], + wa = []; + function xa() { + var a = e.preRun.shift(); + ta.unshift(a); + } + var K = 0, + ya = null, + L = null; + e.preloadedImages = {}; + e.preloadedAudios = {}; + function y(a) { + if (e.onAbort) e.onAbort(a); + v(a); + ea = !0; + a = new WebAssembly.RuntimeError( + 'abort(' + a + '). Build with -s ASSERTIONS=1 for more info.', + ); + ba(a); + throw a; + } + function za() { + var a = N; + return String.prototype.startsWith + ? a.startsWith('data:application/octet-stream;base64,') + : 0 === a.indexOf('data:application/octet-stream;base64,'); + } + var N = 'wp2_dec.wasm'; + if (!za()) { + var Aa = N; + N = e.locateFile ? e.locateFile(Aa, u) : u + Aa; + } + function Ba() { + try { + if (w) return new Uint8Array(w); + if (ca) return ca(N); + throw 'both async and sync fetching of the wasm failed'; + } catch (a) { + y(a); + } + } + function Ca() { + return w || 'function' !== typeof fetch + ? Promise.resolve().then(Ba) + : fetch(N, { credentials: 'same-origin' }) + .then(function (a) { + if (!a.ok) throw "failed to load wasm binary file at '" + N + "'"; + return a.arrayBuffer(); + }) + .catch(function () { + return Ba(); + }); + } + function O(a) { + for (; 0 < a.length; ) { + var b = a.shift(); + if ('function' == typeof b) b(e); + else { + var c = b.P; + 'number' === typeof c + ? void 0 === b.L + ? J.get(c)() + : J.get(c)(b.L) + : c(void 0 === b.L ? null : b.L); + } + } + } + function Da(a) { + this.K = a - 16; + this.X = function (b) { + E[(this.K + 8) >> 2] = b; + }; + this.U = function (b) { + E[(this.K + 0) >> 2] = b; + }; + this.V = function () { + E[(this.K + 4) >> 2] = 0; + }; + this.T = function () { + G[(this.K + 12) >> 0] = 0; + }; + this.W = function () { + G[(this.K + 13) >> 0] = 0; + }; + this.S = function (b, c) { + this.X(b); + this.U(c); + this.V(); + this.T(); + this.W(); + }; + } + function P() { + return 0 < P.N; + } + function Ea(a) { + switch (a) { + case 1: + return 0; + case 2: + return 1; + case 4: + return 2; + case 8: + return 3; + default: + throw new TypeError('Unknown type size: ' + a); + } + } + var Fa = void 0; + function Q(a) { + for (var b = ''; A[a]; ) b += Fa[A[a++]]; + return b; + } + var R = {}, + S = {}, + T = {}; + function Ga(a) { + if (void 0 === a) return '_unknown'; + a = a.replace(/[^a-zA-Z0-9_]/g, '$'); + var b = a.charCodeAt(0); + return 48 <= b && 57 >= b ? '_' + a : a; + } + function Ha(a, b) { + a = Ga(a); + return new Function( + 'body', + 'return function ' + + a + + '() {\n "use strict"; return body.apply(this, arguments);\n};\n', + )(b); + } + function Ia(a) { + var b = Error, + c = Ha(a, function (d) { + this.name = a; + this.message = d; + d = Error(d).stack; + void 0 !== d && + (this.stack = + this.toString() + '\n' + d.replace(/^Error(:[^\n]*)?\n/, '')); + }); + c.prototype = Object.create(b.prototype); + c.prototype.constructor = c; + c.prototype.toString = function () { + return void 0 === this.message + ? this.name + : this.name + ': ' + this.message; + }; + return c; + } + var Ja = void 0; + function U(a) { + throw new Ja(a); + } + var Ka = void 0; + function La(a, b) { + function c(h) { + h = b(h); + if (h.length !== d.length) + throw new Ka('Mismatched type converter count'); + for (var p = 0; p < d.length; ++p) V(d[p], h[p]); + } + var d = []; + d.forEach(function (h) { + T[h] = a; + }); + var f = Array(a.length), + g = [], + l = 0; + a.forEach(function (h, p) { + S.hasOwnProperty(h) + ? (f[p] = S[h]) + : (g.push(h), + R.hasOwnProperty(h) || (R[h] = []), + R[h].push(function () { + f[p] = S[h]; + ++l; + l === g.length && c(f); + })); + }); + 0 === g.length && c(f); + } + function V(a, b, c) { + c = c || {}; + if (!('argPackAdvance' in b)) + throw new TypeError( + 'registerType registeredInstance requires argPackAdvance', + ); + var d = b.name; + a || U('type "' + d + '" must have a positive integer typeid pointer'); + if (S.hasOwnProperty(a)) { + if (c.R) return; + U("Cannot register type '" + d + "' twice"); + } + S[a] = b; + delete T[a]; + R.hasOwnProperty(a) && + ((b = R[a]), + delete R[a], + b.forEach(function (f) { + f(); + })); + } + var Oa = [], + W = [ + {}, + { value: void 0 }, + { value: null }, + { value: !0 }, + { value: !1 }, + ]; + function Pa(a) { + 4 < a && 0 === --W[a].M && ((W[a] = void 0), Oa.push(a)); + } + function X(a) { + switch (a) { + case void 0: + return 1; + case null: + return 2; + case !0: + return 3; + case !1: + return 4; + default: + var b = Oa.length ? Oa.pop() : W.length; + W[b] = { M: 1, value: a }; + return b; + } + } + function Qa(a) { + return this.fromWireType(H[a >> 2]); + } + function Ra(a) { + if (null === a) return 'null'; + var b = typeof a; + return 'object' === b || 'array' === b || 'function' === b + ? a.toString() + : '' + a; + } + function Sa(a, b) { + switch (b) { + case 2: + return function (c) { + return this.fromWireType(pa[c >> 2]); + }; + case 3: + return function (c) { + return this.fromWireType(qa[c >> 3]); + }; + default: + throw new TypeError('Unknown float type: ' + a); + } + } + function Ta(a) { + var b = Function; + if (!(b instanceof Function)) + throw new TypeError( + 'new_ called with constructor type ' + + typeof b + + ' which is not a function', + ); + var c = Ha(b.name || 'unknownFunctionName', function () {}); + c.prototype = b.prototype; + c = new c(); + a = b.apply(c, a); + return a instanceof Object ? a : c; + } + function Ua(a) { + for (; a.length; ) { + var b = a.pop(); + a.pop()(b); + } + } + function Va(a, b) { + var c = e; + if (void 0 === c[a].I) { + var d = c[a]; + c[a] = function () { + c[a].I.hasOwnProperty(arguments.length) || + U( + "Function '" + + b + + "' called with an invalid number of arguments (" + + arguments.length + + ') - expects one of (' + + c[a].I + + ')!', + ); + return c[a].I[arguments.length].apply(this, arguments); + }; + c[a].I = []; + c[a].I[d.O] = d; + } + } + function Wa(a, b, c) { + e.hasOwnProperty(a) + ? ((void 0 === c || (void 0 !== e[a].I && void 0 !== e[a].I[c])) && + U("Cannot register public name '" + a + "' twice"), + Va(a, a), + e.hasOwnProperty(c) && + U( + 'Cannot register multiple overloads of a function with the same number of arguments (' + + c + + ')!', + ), + (e[a].I[c] = b)) + : ((e[a] = b), void 0 !== c && (e[a].Z = c)); + } + function Xa(a, b) { + for (var c = [], d = 0; d < a; d++) c.push(E[(b >> 2) + d]); + return c; + } + function Ya(a, b) { + 0 <= a.indexOf('j') || + y('Assertion failed: getDynCaller should only be called with i64 sigs'); + var c = []; + return function () { + c.length = arguments.length; + for (var d = 0; d < arguments.length; d++) c[d] = arguments[d]; + var f; + -1 != a.indexOf('j') + ? (f = + c && c.length + ? e['dynCall_' + a].apply(null, [b].concat(c)) + : e['dynCall_' + a].call(null, b)) + : (f = J.get(b).apply(null, c)); + return f; + }; + } + function Za(a, b) { + a = Q(a); + var c = -1 != a.indexOf('j') ? Ya(a, b) : J.get(b); + 'function' !== typeof c && + U('unknown function pointer with signature ' + a + ': ' + b); + return c; + } + var $a = void 0; + function ab(a) { + a = bb(a); + var b = Q(a); + Y(a); + return b; + } + function cb(a, b) { + function c(g) { + f[g] || S[g] || (T[g] ? T[g].forEach(c) : (d.push(g), (f[g] = !0))); + } + var d = [], + f = {}; + b.forEach(c); + throw new $a(a + ': ' + d.map(ab).join([', '])); + } + function db(a, b, c) { + switch (b) { + case 0: + return c + ? function (d) { + return G[d]; + } + : function (d) { + return A[d]; + }; + case 1: + return c + ? function (d) { + return D[d >> 1]; + } + : function (d) { + return B[d >> 1]; + }; + case 2: + return c + ? function (d) { + return E[d >> 2]; + } + : function (d) { + return H[d >> 2]; + }; + default: + throw new TypeError('Unknown integer type: ' + a); + } + } + var eb = {}; + function fb() { + return 'object' === typeof globalThis + ? globalThis + : Function('return this')(); + } + function gb(a, b) { + var c = S[a]; + void 0 === c && U(b + ' has unknown type ' + ab(a)); + return c; + } + for (var hb = {}, ib = [null, [], []], jb = Array(256), Z = 0; 256 > Z; ++Z) + jb[Z] = String.fromCharCode(Z); + Fa = jb; + Ja = e.BindingError = Ia('BindingError'); + Ka = e.InternalError = Ia('InternalError'); + e.count_emval_handles = function () { + for (var a = 0, b = 5; b < W.length; ++b) void 0 !== W[b] && ++a; + return a; + }; + e.get_first_emval = function () { + for (var a = 5; a < W.length; ++a) if (void 0 !== W[a]) return W[a]; + return null; + }; + $a = e.UnboundTypeError = Ia('UnboundTypeError'); + ua.push({ + P: function () { + kb(); + }, + }); + var mb = { + s: function (a) { + return lb(a + 16) + 16; + }, + g: function () {}, + r: function (a, b, c) { + new Da(a).S(b, c); + 'uncaught_exception' in P ? P.N++ : (P.N = 1); + throw a; + }, + x: function (a, b, c, d, f) { + var g = Ea(c); + b = Q(b); + V(a, { + name: b, + fromWireType: function (l) { + return !!l; + }, + toWireType: function (l, h) { + return h ? d : f; + }, + argPackAdvance: 8, + readValueFromPointer: function (l) { + if (1 === c) var h = G; + else if (2 === c) h = D; + else if (4 === c) h = E; + else throw new TypeError('Unknown boolean type size: ' + b); + return this.fromWireType(h[l >> g]); + }, + J: null, + }); + }, + w: function (a, b) { + b = Q(b); + V(a, { + name: b, + fromWireType: function (c) { + var d = W[c].value; + Pa(c); + return d; + }, + toWireType: function (c, d) { + return X(d); + }, + argPackAdvance: 8, + readValueFromPointer: Qa, + J: null, + }); + }, + m: function (a, b, c) { + c = Ea(c); + b = Q(b); + V(a, { + name: b, + fromWireType: function (d) { + return d; + }, + toWireType: function (d, f) { + if ('number' !== typeof f && 'boolean' !== typeof f) + throw new TypeError( + 'Cannot convert "' + Ra(f) + '" to ' + this.name, + ); + return f; + }, + argPackAdvance: 8, + readValueFromPointer: Sa(b, c), + J: null, + }); + }, + t: function (a, b, c, d, f, g) { + var l = Xa(b, c); + a = Q(a); + f = Za(d, f); + Wa( + a, + function () { + cb('Cannot call ' + a + ' due to unbound types', l); + }, + b - 1, + ); + La(l, function (h) { + var p = a, + k = a; + h = [h[0], null].concat(h.slice(1)); + var m = f, + q = h.length; + 2 > q && + U( + "argTypes array size mismatch! Must at least get return value and 'this' types!", + ); + for (var x = null !== h[1] && !1, C = !1, n = 1; n < h.length; ++n) + if (null !== h[n] && void 0 === h[n].J) { + C = !0; + break; + } + var Ma = 'void' !== h[0].name, + I = '', + M = ''; + for (n = 0; n < q - 2; ++n) + (I += (0 !== n ? ', ' : '') + 'arg' + n), + (M += (0 !== n ? ', ' : '') + 'arg' + n + 'Wired'); + k = + 'return function ' + + Ga(k) + + '(' + + I + + ') {\nif (arguments.length !== ' + + (q - 2) + + ") {\nthrowBindingError('function " + + k + + " called with ' + arguments.length + ' arguments, expected " + + (q - 2) + + " args!');\n}\n"; + C && (k += 'var destructors = [];\n'); + var Na = C ? 'destructors' : 'null'; + I = 'throwBindingError invoker fn runDestructors retType classParam'.split( + ' ', + ); + m = [U, m, g, Ua, h[0], h[1]]; + x && + (k += 'var thisWired = classParam.toWireType(' + Na + ', this);\n'); + for (n = 0; n < q - 2; ++n) + (k += + 'var arg' + + n + + 'Wired = argType' + + n + + '.toWireType(' + + Na + + ', arg' + + n + + '); // ' + + h[n + 2].name + + '\n'), + I.push('argType' + n), + m.push(h[n + 2]); + x && (M = 'thisWired' + (0 < M.length ? ', ' : '') + M); + k += + (Ma ? 'var rv = ' : '') + + 'invoker(fn' + + (0 < M.length ? ', ' : '') + + M + + ');\n'; + if (C) k += 'runDestructors(destructors);\n'; + else + for (n = x ? 1 : 2; n < h.length; ++n) + (q = 1 === n ? 'thisWired' : 'arg' + (n - 2) + 'Wired'), + null !== h[n].J && + ((k += q + '_dtor(' + q + '); // ' + h[n].name + '\n'), + I.push(q + '_dtor'), + m.push(h[n].J)); + Ma && (k += 'var ret = retType.fromWireType(rv);\nreturn ret;\n'); + I.push(k + '}\n'); + h = Ta(I).apply(null, m); + n = b - 1; + if (!e.hasOwnProperty(p)) + throw new Ka('Replacing nonexistant public symbol'); + void 0 !== e[p].I && void 0 !== n + ? (e[p].I[n] = h) + : ((e[p] = h), (e[p].O = n)); + return []; + }); + }, + c: function (a, b, c, d, f) { + function g(k) { + return k; + } + b = Q(b); + -1 === f && (f = 4294967295); + var l = Ea(c); + if (0 === d) { + var h = 32 - 8 * c; + g = function (k) { + return (k << h) >>> h; + }; + } + var p = -1 != b.indexOf('unsigned'); + V(a, { + name: b, + fromWireType: g, + toWireType: function (k, m) { + if ('number' !== typeof m && 'boolean' !== typeof m) + throw new TypeError( + 'Cannot convert "' + Ra(m) + '" to ' + this.name, + ); + if (m < d || m > f) + throw new TypeError( + 'Passing a number "' + + Ra(m) + + '" from JS side to C/C++ side to an argument of type "' + + b + + '", which is outside the valid range [' + + d + + ', ' + + f + + ']!', + ); + return p ? m >>> 0 : m | 0; + }, + argPackAdvance: 8, + readValueFromPointer: db(b, l, 0 !== d), + J: null, + }); + }, + b: function (a, b, c) { + function d(g) { + g >>= 2; + var l = H; + return new f(F, l[g + 1], l[g]); + } + var f = [ + Int8Array, + Uint8Array, + Int16Array, + Uint16Array, + Int32Array, + Uint32Array, + Float32Array, + Float64Array, + ][b]; + c = Q(c); + V( + a, + { + name: c, + fromWireType: d, + argPackAdvance: 8, + readValueFromPointer: d, + }, + { R: !0 }, + ); + }, + n: function (a, b) { + b = Q(b); + var c = 'std::string' === b; + V(a, { + name: b, + fromWireType: function (d) { + var f = H[d >> 2]; + if (c) + for (var g = d + 4, l = 0; l <= f; ++l) { + var h = d + 4 + l; + if (l == f || 0 == A[h]) { + if (g) { + for (var p = g + (h - g), k = g; !(k >= p) && A[k]; ) ++k; + g = fa.decode(A.subarray(g, k)); + } else g = ''; + if (void 0 === m) var m = g; + else (m += String.fromCharCode(0)), (m += g); + g = h + 1; + } + } + else { + m = Array(f); + for (l = 0; l < f; ++l) m[l] = String.fromCharCode(A[d + 4 + l]); + m = m.join(''); + } + Y(d); + return m; + }, + toWireType: function (d, f) { + f instanceof ArrayBuffer && (f = new Uint8Array(f)); + var g = 'string' === typeof f; + g || + f instanceof Uint8Array || + f instanceof Uint8ClampedArray || + f instanceof Int8Array || + U('Cannot pass non-string to std::string'); + var l = (c && g + ? function () { + for (var k = 0, m = 0; m < f.length; ++m) { + var q = f.charCodeAt(m); + 55296 <= q && + 57343 >= q && + (q = + (65536 + ((q & 1023) << 10)) | + (f.charCodeAt(++m) & 1023)); + 127 >= q + ? ++k + : (k = 2047 >= q ? k + 2 : 65535 >= q ? k + 3 : k + 4); + } + return k; + } + : function () { + return f.length; + })(), + h = lb(4 + l + 1); + H[h >> 2] = l; + if (c && g) ha(f, h + 4, l + 1); + else if (g) + for (g = 0; g < l; ++g) { + var p = f.charCodeAt(g); + 255 < p && + (Y(h), + U('String has UTF-16 code units that do not fit in 8 bits')); + A[h + 4 + g] = p; + } + else for (g = 0; g < l; ++g) A[h + 4 + g] = f[g]; + null !== d && d.push(Y, h); + return h; + }, + argPackAdvance: 8, + readValueFromPointer: Qa, + J: function (d) { + Y(d); + }, + }); + }, + h: function (a, b, c) { + c = Q(c); + if (2 === b) { + var d = ja; + var f = ka; + var g = la; + var l = function () { + return B; + }; + var h = 1; + } else + 4 === b && + ((d = ma), + (f = na), + (g = oa), + (l = function () { + return H; + }), + (h = 2)); + V(a, { + name: c, + fromWireType: function (p) { + for (var k = H[p >> 2], m = l(), q, x = p + 4, C = 0; C <= k; ++C) { + var n = p + 4 + C * b; + if (C == k || 0 == m[n >> h]) + (x = d(x, n - x)), + void 0 === q + ? (q = x) + : ((q += String.fromCharCode(0)), (q += x)), + (x = n + b); + } + Y(p); + return q; + }, + toWireType: function (p, k) { + 'string' !== typeof k && + U('Cannot pass non-string to C++ string type ' + c); + var m = g(k), + q = lb(4 + m + b); + H[q >> 2] = m >> h; + f(k, q + 4, m + b); + null !== p && p.push(Y, q); + return q; + }, + argPackAdvance: 8, + readValueFromPointer: Qa, + J: function (p) { + Y(p); + }, + }); + }, + y: function (a, b) { + b = Q(b); + V(a, { + Y: !0, + name: b, + argPackAdvance: 0, + fromWireType: function () {}, + toWireType: function () {}, + }); + }, + e: Pa, + f: function (a) { + if (0 === a) return X(fb()); + var b = eb[a]; + a = void 0 === b ? Q(a) : b; + return X(fb()[a]); + }, + i: function (a) { + 4 < a && (W[a].M += 1); + }, + j: function (a, b, c, d) { + a || U('Cannot use deleted val. handle = ' + a); + a = W[a].value; + var f = hb[b]; + if (!f) { + f = ''; + for (var g = 0; g < b; ++g) f += (0 !== g ? ', ' : '') + 'arg' + g; + var l = + 'return function emval_allocator_' + + b + + '(constructor, argTypes, args) {\n'; + for (g = 0; g < b; ++g) + l += + 'var argType' + + g + + " = requireRegisteredType(Module['HEAP32'][(argTypes >>> 2) + " + + g + + '], "parameter ' + + g + + '");\nvar arg' + + g + + ' = argType' + + g + + '.readValueFromPointer(args);\nargs += argType' + + g + + "['argPackAdvance'];\n"; + f = new Function( + 'requireRegisteredType', + 'Module', + '__emval_register', + l + + ('var obj = new constructor(' + + f + + ');\nreturn __emval_register(obj);\n}\n'), + )(gb, e, X); + hb[b] = f; + } + return f(a, c, d); + }, + k: function () { + y(); + }, + v: function (a, b, c) { + A.copyWithin(a, b, b + c); + }, + d: function (a) { + a >>>= 0; + var b = A.length; + if (2147483648 < a) return !1; + for (var c = 1; 4 >= c; c *= 2) { + var d = b * (1 + 0.2 / c); + d = Math.min(d, a + 100663296); + d = Math.max(16777216, a, d); + 0 < d % 65536 && (d += 65536 - (d % 65536)); + a: { + try { + z.grow((Math.min(2147483648, d) - F.byteLength + 65535) >>> 16); + ra(z.buffer); + var f = 1; + break a; + } catch (g) {} + f = void 0; + } + if (f) return !0; + } + return !1; + }, + l: function (a, b, c, d) { + for (var f = 0, g = 0; g < c; g++) { + for ( + var l = E[(b + 8 * g) >> 2], h = E[(b + (8 * g + 4)) >> 2], p = 0; + p < h; + p++ + ) { + var k = A[l + p], + m = ib[a]; + if (0 === k || 10 === k) { + for (k = 0; m[k] && !(NaN <= k); ) ++k; + k = fa.decode( + m.subarray ? m.subarray(0, k) : new Uint8Array(m.slice(0, k)), + ); + (1 === a ? da : v)(k); + m.length = 0; + } else m.push(k); + } + f += h; + } + E[d >> 2] = f; + return 0; + }, + a: z, + o: function () { + return 0; + }, + q: function () { + return 0; + }, + p: function () {}, + A: function () { + return 6; + }, + z: function () {}, + u: function () {}, + }; + (function () { + function a(f) { + e.asm = f.exports; + J = e.asm.B; + K--; + e.monitorRunDependencies && e.monitorRunDependencies(K); + 0 == K && + (null !== ya && (clearInterval(ya), (ya = null)), + L && ((f = L), (L = null), f())); + } + function b(f) { + a(f.instance); + } + function c(f) { + return Ca() + .then(function (g) { + return WebAssembly.instantiate(g, d); + }) + .then(f, function (g) { + v('failed to asynchronously prepare wasm: ' + g); + y(g); + }); + } + var d = { a: mb }; + K++; + e.monitorRunDependencies && e.monitorRunDependencies(K); + if (e.instantiateWasm) + try { + return e.instantiateWasm(d, a); + } catch (f) { + return ( + v('Module.instantiateWasm callback failed with error: ' + f), !1 + ); + } + (function () { + return w || + 'function' !== typeof WebAssembly.instantiateStreaming || + za() || + 'function' !== typeof fetch + ? c(b) + : fetch(N, { credentials: 'same-origin' }).then(function (f) { + return WebAssembly.instantiateStreaming(f, d).then(b, function ( + g, + ) { + v('wasm streaming compile failed: ' + g); + v('falling back to ArrayBuffer instantiation'); + return c(b); + }); + }); + })().catch(ba); + return {}; + })(); + var kb = (e.___wasm_call_ctors = function () { + return (kb = e.___wasm_call_ctors = e.asm.C).apply(null, arguments); + }), + lb = (e._malloc = function () { + return (lb = e._malloc = e.asm.D).apply(null, arguments); + }), + Y = (e._free = function () { + return (Y = e._free = e.asm.E).apply(null, arguments); + }), + bb = (e.___getTypeName = function () { + return (bb = e.___getTypeName = e.asm.F).apply(null, arguments); + }); + e.___embind_register_native_and_builtin_types = function () { + return (e.___embind_register_native_and_builtin_types = e.asm.G).apply( + null, + arguments, + ); + }; + e.dynCall_jiji = function () { + return (e.dynCall_jiji = e.asm.H).apply(null, arguments); + }; + var nb; + L = function ob() { + nb || pb(); + nb || (L = ob); + }; + function pb() { + function a() { + if (!nb && ((nb = !0), (e.calledRun = !0), !ea)) { + O(ua); + O(va); + aa(e); + if (e.onRuntimeInitialized) e.onRuntimeInitialized(); + if (e.postRun) + for ( + 'function' == typeof e.postRun && (e.postRun = [e.postRun]); + e.postRun.length; + + ) { + var b = e.postRun.shift(); + wa.unshift(b); + } + O(wa); + } + } + if (!(0 < K)) { + if (e.preRun) + for ( + 'function' == typeof e.preRun && (e.preRun = [e.preRun]); + e.preRun.length; + + ) + xa(); + O(ta); + 0 < K || + (e.setStatus + ? (e.setStatus('Running...'), + setTimeout(function () { + setTimeout(function () { + e.setStatus(''); + }, 1); + a(); + }, 1)) + : a()); + } + } + e.run = pb; + if (e.preInit) + for ( + 'function' == typeof e.preInit && (e.preInit = [e.preInit]); + 0 < e.preInit.length; + + ) + e.preInit.pop()(); + noExitRuntime = !0; + pb(); + + return wp2_dec.ready; + }; +})(); +export default wp2_dec; diff --git a/codecs/wp2/dec/wp2_dec.wasm b/codecs/wp2/dec/wp2_dec.wasm new file mode 100755 index 00000000..b3e471ab Binary files /dev/null and b/codecs/wp2/dec/wp2_dec.wasm differ diff --git a/codecs/wp2/enc/README.md b/codecs/wp2/enc/README.md new file mode 100644 index 00000000..82a5469c --- /dev/null +++ b/codecs/wp2/enc/README.md @@ -0,0 +1,17 @@ +# WebP2 encoder + +- Source: + +## Dependencies + +- Docker + +## Example + +N/A + +## API + +### `UInt8Array encode(uint8_t* image_buffer, int image_width, int image_height, WP2::EncoderConfig config)` + +Encodes the given image with given dimension to WebP2. diff --git a/codecs/wp2/enc/wp2_enc.cpp b/codecs/wp2/enc/wp2_enc.cpp new file mode 100644 index 00000000..3066101b --- /dev/null +++ b/codecs/wp2/enc/wp2_enc.cpp @@ -0,0 +1,38 @@ +#include +#include +#include +#include "src/wp2/encode.h" + +using namespace emscripten; + +thread_local const val Uint8Array = val::global("Uint8Array"); + +val encode(std::string image_in, int image_width, int image_height, WP2::EncoderConfig config) { + uint8_t* image_buffer = (uint8_t*)image_in.c_str(); + WP2::ArgbBuffer src = WP2::ArgbBuffer(); + WP2Status status = + src.Import(WP2_rgbA_32, // Format. WP2_RGBA_32 is the same but NOT premultiplied alpha + image_width, image_height, image_buffer, 4 * image_width); + if (status != WP2_STATUS_OK) { + return val::null(); + } + + WP2::MemoryWriter memory_writer; + status = WP2::Encode(src, &memory_writer, config); + if (status != WP2_STATUS_OK) { + return val::null(); + } + + return Uint8Array.new_(typed_memory_view(memory_writer.size_, memory_writer.mem_)); +} + +EMSCRIPTEN_BINDINGS(my_module) { + value_object("WP2EncoderConfig") + .field("quality", &WP2::EncoderConfig::quality) + .field("alpha_quality", &WP2::EncoderConfig::alpha_quality) + .field("speed", &WP2::EncoderConfig::speed) + .field("pass", &WP2::EncoderConfig::pass) + .field("sns", &WP2::EncoderConfig::sns); + + function("encode", &encode); +} diff --git a/codecs/wp2/enc/wp2_enc.d.ts b/codecs/wp2/enc/wp2_enc.d.ts new file mode 100644 index 00000000..8e9fef9e --- /dev/null +++ b/codecs/wp2/enc/wp2_enc.d.ts @@ -0,0 +1,20 @@ +export interface EncodeOptions { + quality: number; + alpha_quality: number; + speed: number; + pass: number; + sns: number; +} + +export interface WP2Module extends EmscriptenWasm.Module { + encode( + data: BufferSource, + width: number, + height: number, + options: EncodeOptions, + ): Uint8Array | null; +} + +declare var moduleFactory: EmscriptenWasm.ModuleFactory; + +export default moduleFactory; diff --git a/codecs/wp2/enc/wp2_enc.js b/codecs/wp2/enc/wp2_enc.js new file mode 100644 index 00000000..ba9f9140 --- /dev/null +++ b/codecs/wp2/enc/wp2_enc.js @@ -0,0 +1,1277 @@ +var wp2_enc = (function () { + var _scriptDir = import.meta.url; + + return function (wp2_enc) { + wp2_enc = wp2_enc || {}; + + var f; + f || (f = typeof wp2_enc !== 'undefined' ? wp2_enc : {}); + var aa, ba; + f.ready = new Promise(function (a, b) { + aa = a; + ba = b; + }); + var r = {}, + t; + for (t in f) f.hasOwnProperty(t) && (r[t] = f[t]); + var u = '', + ca; + u = self.location.href; + _scriptDir && (u = _scriptDir); + 0 !== u.indexOf('blob:') + ? (u = u.substr(0, u.lastIndexOf('/') + 1)) + : (u = ''); + ca = function (a) { + var b = new XMLHttpRequest(); + b.open('GET', a, !1); + b.responseType = 'arraybuffer'; + b.send(null); + return new Uint8Array(b.response); + }; + var da = f.print || console.log.bind(console), + v = f.printErr || console.warn.bind(console); + for (t in r) r.hasOwnProperty(t) && (f[t] = r[t]); + r = null; + var w; + f.wasmBinary && (w = f.wasmBinary); + var noExitRuntime; + f.noExitRuntime && (noExitRuntime = f.noExitRuntime); + 'object' !== typeof WebAssembly && A('no native wasm support detected'); + var B, + ea = !1, + fa = new TextDecoder('utf8'); + function C(a, b) { + if (!a) return ''; + b = a + b; + for (var c = a; !(c >= b) && D[c]; ) ++c; + return fa.decode(D.subarray(a, c)); + } + function ia(a, b, c) { + var d = D; + if (0 < c) { + c = b + c - 1; + for (var e = 0; e < a.length; ++e) { + var g = a.charCodeAt(e); + if (55296 <= g && 57343 >= g) { + var m = a.charCodeAt(++e); + g = (65536 + ((g & 1023) << 10)) | (m & 1023); + } + if (127 >= g) { + if (b >= c) break; + d[b++] = g; + } else { + if (2047 >= g) { + if (b + 1 >= c) break; + d[b++] = 192 | (g >> 6); + } else { + if (65535 >= g) { + if (b + 2 >= c) break; + d[b++] = 224 | (g >> 12); + } else { + if (b + 3 >= c) break; + d[b++] = 240 | (g >> 18); + d[b++] = 128 | ((g >> 12) & 63); + } + d[b++] = 128 | ((g >> 6) & 63); + } + d[b++] = 128 | (g & 63); + } + } + d[b] = 0; + } + } + var ja = new TextDecoder('utf-16le'); + function ka(a, b) { + var c = a >> 1; + for (b = c + b / 2; !(c >= b) && E[c]; ) ++c; + return ja.decode(D.subarray(a, c << 1)); + } + function la(a, b, c) { + void 0 === c && (c = 2147483647); + if (2 > c) return 0; + c -= 2; + var d = b; + c = c < 2 * a.length ? c / 2 : a.length; + for (var e = 0; e < c; ++e) (G[b >> 1] = a.charCodeAt(e)), (b += 2); + G[b >> 1] = 0; + return b - d; + } + function ma(a) { + return 2 * a.length; + } + function na(a, b) { + for (var c = 0, d = ''; !(c >= b / 4); ) { + var e = H[(a + 4 * c) >> 2]; + if (0 == e) break; + ++c; + 65536 <= e + ? ((e -= 65536), + (d += String.fromCharCode(55296 | (e >> 10), 56320 | (e & 1023)))) + : (d += String.fromCharCode(e)); + } + return d; + } + function oa(a, b, c) { + void 0 === c && (c = 2147483647); + if (4 > c) return 0; + var d = b; + c = d + c - 4; + for (var e = 0; e < a.length; ++e) { + var g = a.charCodeAt(e); + if (55296 <= g && 57343 >= g) { + var m = a.charCodeAt(++e); + g = (65536 + ((g & 1023) << 10)) | (m & 1023); + } + H[b >> 2] = g; + b += 4; + if (b + 4 > c) break; + } + H[b >> 2] = 0; + return b - d; + } + function pa(a) { + for (var b = 0, c = 0; c < a.length; ++c) { + var d = a.charCodeAt(c); + 55296 <= d && 57343 >= d && ++c; + b += 4; + } + return b; + } + var I, J, D, G, E, H, K, qa, ra; + function sa(a) { + I = a; + f.HEAP8 = J = new Int8Array(a); + f.HEAP16 = G = new Int16Array(a); + f.HEAP32 = H = new Int32Array(a); + f.HEAPU8 = D = new Uint8Array(a); + f.HEAPU16 = E = new Uint16Array(a); + f.HEAPU32 = K = new Uint32Array(a); + f.HEAPF32 = qa = new Float32Array(a); + f.HEAPF64 = ra = new Float64Array(a); + } + var ta = f.INITIAL_MEMORY || 16777216; + f.wasmMemory + ? (B = f.wasmMemory) + : (B = new WebAssembly.Memory({ initial: ta / 65536, maximum: 32768 })); + B && (I = B.buffer); + ta = I.byteLength; + sa(I); + var L, + ua = [], + va = [], + wa = [], + xa = []; + function ya() { + var a = f.preRun.shift(); + ua.unshift(a); + } + var M = 0, + za = null, + N = null; + f.preloadedImages = {}; + f.preloadedAudios = {}; + function A(a) { + if (f.onAbort) f.onAbort(a); + v(a); + ea = !0; + a = new WebAssembly.RuntimeError( + 'abort(' + a + '). Build with -s ASSERTIONS=1 for more info.', + ); + ba(a); + throw a; + } + function Aa() { + var a = O; + return String.prototype.startsWith + ? a.startsWith('data:application/octet-stream;base64,') + : 0 === a.indexOf('data:application/octet-stream;base64,'); + } + var O = 'wp2_enc.wasm'; + if (!Aa()) { + var Ba = O; + O = f.locateFile ? f.locateFile(Ba, u) : u + Ba; + } + function Ca() { + try { + if (w) return new Uint8Array(w); + if (ca) return ca(O); + throw 'both async and sync fetching of the wasm failed'; + } catch (a) { + A(a); + } + } + function Da() { + return w || 'function' !== typeof fetch + ? Promise.resolve().then(Ca) + : fetch(O, { credentials: 'same-origin' }) + .then(function (a) { + if (!a.ok) throw "failed to load wasm binary file at '" + O + "'"; + return a.arrayBuffer(); + }) + .catch(function () { + return Ca(); + }); + } + function P(a) { + for (; 0 < a.length; ) { + var b = a.shift(); + if ('function' == typeof b) b(f); + else { + var c = b.Y; + 'number' === typeof c + ? void 0 === b.S + ? L.get(c)() + : L.get(c)(b.S) + : c(void 0 === b.S ? null : b.S); + } + } + } + function Ea(a) { + this.R = a - 16; + this.ja = function (b) { + H[(this.R + 8) >> 2] = b; + }; + this.ga = function (b) { + H[(this.R + 0) >> 2] = b; + }; + this.ha = function () { + H[(this.R + 4) >> 2] = 0; + }; + this.fa = function () { + J[(this.R + 12) >> 0] = 0; + }; + this.ia = function () { + J[(this.R + 13) >> 0] = 0; + }; + this.ca = function (b, c) { + this.ja(b); + this.ga(c); + this.ha(); + this.fa(); + this.ia(); + }; + } + function Q() { + return 0 < Q.V; + } + var Fa = {}; + function Ga(a) { + for (; a.length; ) { + var b = a.pop(); + a.pop()(b); + } + } + function Ha(a) { + return this.fromWireType(K[a >> 2]); + } + var R = {}, + S = {}, + Ia = {}; + function Ja(a) { + if (void 0 === a) return '_unknown'; + a = a.replace(/[^a-zA-Z0-9_]/g, '$'); + var b = a.charCodeAt(0); + return 48 <= b && 57 >= b ? '_' + a : a; + } + function Ka(a, b) { + a = Ja(a); + return new Function( + 'body', + 'return function ' + + a + + '() {\n "use strict"; return body.apply(this, arguments);\n};\n', + )(b); + } + function La(a) { + var b = Error, + c = Ka(a, function (d) { + this.name = a; + this.message = d; + d = Error(d).stack; + void 0 !== d && + (this.stack = + this.toString() + '\n' + d.replace(/^Error(:[^\n]*)?\n/, '')); + }); + c.prototype = Object.create(b.prototype); + c.prototype.constructor = c; + c.prototype.toString = function () { + return void 0 === this.message + ? this.name + : this.name + ': ' + this.message; + }; + return c; + } + var Ma = void 0; + function Na(a, b, c) { + function d(h) { + h = c(h); + if (h.length !== a.length) + throw new Ma('Mismatched type converter count'); + for (var k = 0; k < a.length; ++k) T(a[k], h[k]); + } + a.forEach(function (h) { + Ia[h] = b; + }); + var e = Array(b.length), + g = [], + m = 0; + b.forEach(function (h, k) { + S.hasOwnProperty(h) + ? (e[k] = S[h]) + : (g.push(h), + R.hasOwnProperty(h) || (R[h] = []), + R[h].push(function () { + e[k] = S[h]; + ++m; + m === g.length && d(e); + })); + }); + 0 === g.length && d(e); + } + function Oa(a) { + switch (a) { + case 1: + return 0; + case 2: + return 1; + case 4: + return 2; + case 8: + return 3; + default: + throw new TypeError('Unknown type size: ' + a); + } + } + var Pa = void 0; + function U(a) { + for (var b = ''; D[a]; ) b += Pa[D[a++]]; + return b; + } + var Qa = void 0; + function W(a) { + throw new Qa(a); + } + function T(a, b, c) { + c = c || {}; + if (!('argPackAdvance' in b)) + throw new TypeError( + 'registerType registeredInstance requires argPackAdvance', + ); + var d = b.name; + a || W('type "' + d + '" must have a positive integer typeid pointer'); + if (S.hasOwnProperty(a)) { + if (c.ba) return; + W("Cannot register type '" + d + "' twice"); + } + S[a] = b; + delete Ia[a]; + R.hasOwnProperty(a) && + ((b = R[a]), + delete R[a], + b.forEach(function (e) { + e(); + })); + } + var Ra = [], + X = [ + {}, + { value: void 0 }, + { value: null }, + { value: !0 }, + { value: !1 }, + ]; + function Sa(a) { + 4 < a && 0 === --X[a].T && ((X[a] = void 0), Ra.push(a)); + } + function Ta(a) { + switch (a) { + case void 0: + return 1; + case null: + return 2; + case !0: + return 3; + case !1: + return 4; + default: + var b = Ra.length ? Ra.pop() : X.length; + X[b] = { T: 1, value: a }; + return b; + } + } + function Ua(a) { + if (null === a) return 'null'; + var b = typeof a; + return 'object' === b || 'array' === b || 'function' === b + ? a.toString() + : '' + a; + } + function Va(a, b) { + switch (b) { + case 2: + return function (c) { + return this.fromWireType(qa[c >> 2]); + }; + case 3: + return function (c) { + return this.fromWireType(ra[c >> 3]); + }; + default: + throw new TypeError('Unknown float type: ' + a); + } + } + function Wa(a) { + var b = Function; + if (!(b instanceof Function)) + throw new TypeError( + 'new_ called with constructor type ' + + typeof b + + ' which is not a function', + ); + var c = Ka(b.name || 'unknownFunctionName', function () {}); + c.prototype = b.prototype; + c = new c(); + a = b.apply(c, a); + return a instanceof Object ? a : c; + } + function Xa(a, b) { + var c = f; + if (void 0 === c[a].O) { + var d = c[a]; + c[a] = function () { + c[a].O.hasOwnProperty(arguments.length) || + W( + "Function '" + + b + + "' called with an invalid number of arguments (" + + arguments.length + + ') - expects one of (' + + c[a].O + + ')!', + ); + return c[a].O[arguments.length].apply(this, arguments); + }; + c[a].O = []; + c[a].O[d.W] = d; + } + } + function Ya(a, b, c) { + f.hasOwnProperty(a) + ? ((void 0 === c || (void 0 !== f[a].O && void 0 !== f[a].O[c])) && + W("Cannot register public name '" + a + "' twice"), + Xa(a, a), + f.hasOwnProperty(c) && + W( + 'Cannot register multiple overloads of a function with the same number of arguments (' + + c + + ')!', + ), + (f[a].O[c] = b)) + : ((f[a] = b), void 0 !== c && (f[a].oa = c)); + } + function Za(a, b) { + for (var c = [], d = 0; d < a; d++) c.push(H[(b >> 2) + d]); + return c; + } + function $a(a, b) { + 0 <= a.indexOf('j') || + A('Assertion failed: getDynCaller should only be called with i64 sigs'); + var c = []; + return function () { + c.length = arguments.length; + for (var d = 0; d < arguments.length; d++) c[d] = arguments[d]; + var e; + -1 != a.indexOf('j') + ? (e = + c && c.length + ? f['dynCall_' + a].apply(null, [b].concat(c)) + : f['dynCall_' + a].call(null, b)) + : (e = L.get(b).apply(null, c)); + return e; + }; + } + function Y(a, b) { + a = U(a); + var c = -1 != a.indexOf('j') ? $a(a, b) : L.get(b); + 'function' !== typeof c && + W('unknown function pointer with signature ' + a + ': ' + b); + return c; + } + var ab = void 0; + function bb(a) { + a = cb(a); + var b = U(a); + Z(a); + return b; + } + function db(a, b) { + function c(g) { + e[g] || S[g] || (Ia[g] ? Ia[g].forEach(c) : (d.push(g), (e[g] = !0))); + } + var d = [], + e = {}; + b.forEach(c); + throw new ab(a + ': ' + d.map(bb).join([', '])); + } + function eb(a, b, c) { + switch (b) { + case 0: + return c + ? function (d) { + return J[d]; + } + : function (d) { + return D[d]; + }; + case 1: + return c + ? function (d) { + return G[d >> 1]; + } + : function (d) { + return E[d >> 1]; + }; + case 2: + return c + ? function (d) { + return H[d >> 2]; + } + : function (d) { + return K[d >> 2]; + }; + default: + throw new TypeError('Unknown integer type: ' + a); + } + } + var fb = {}; + function gb() { + return 'object' === typeof globalThis + ? globalThis + : Function('return this')(); + } + function hb(a, b) { + var c = S[a]; + void 0 === c && W(b + ' has unknown type ' + bb(a)); + return c; + } + var ib = {}, + jb = [null, [], []]; + Ma = f.InternalError = La('InternalError'); + for (var kb = Array(256), lb = 0; 256 > lb; ++lb) + kb[lb] = String.fromCharCode(lb); + Pa = kb; + Qa = f.BindingError = La('BindingError'); + f.count_emval_handles = function () { + for (var a = 0, b = 5; b < X.length; ++b) void 0 !== X[b] && ++a; + return a; + }; + f.get_first_emval = function () { + for (var a = 5; a < X.length; ++a) if (void 0 !== X[a]) return X[a]; + return null; + }; + ab = f.UnboundTypeError = La('UnboundTypeError'); + va.push({ + Y: function () { + mb(); + }, + }); + var ob = { + p: function (a, b, c, d) { + A( + 'Assertion failed: ' + + C(a) + + ', at: ' + + [b ? C(b) : 'unknown filename', c, d ? C(d) : 'unknown function'], + ); + }, + A: function (a) { + return nb(a + 16) + 16; + }, + G: function () {}, + z: function (a, b, c) { + new Ea(a).ca(b, c); + 'uncaught_exception' in Q ? Q.V++ : (Q.V = 1); + throw a; + }, + o: function (a) { + var b = Fa[a]; + delete Fa[a]; + var c = b.da, + d = b.ea, + e = b.U, + g = e + .map(function (m) { + return m.aa; + }) + .concat( + e.map(function (m) { + return m.la; + }), + ); + Na([a], g, function (m) { + var h = {}; + e.forEach(function (k, l) { + var n = m[l], + q = k.Z, + x = k.$, + y = m[l + e.length], + p = k.ka, + ha = k.ma; + h[k.X] = { + read: function (z) { + return n.fromWireType(q(x, z)); + }, + write: function (z, F) { + var V = []; + p(ha, z, y.toWireType(V, F)); + Ga(V); + }, + }; + }); + return [ + { + name: b.name, + fromWireType: function (k) { + var l = {}, + n; + for (n in h) l[n] = h[n].read(k); + d(k); + return l; + }, + toWireType: function (k, l) { + for (var n in h) + if (!(n in l)) + throw new TypeError('Missing field: "' + n + '"'); + var q = c(); + for (n in h) h[n].write(q, l[n]); + null !== k && k.push(d, q); + return q; + }, + argPackAdvance: 8, + readValueFromPointer: Ha, + P: d, + }, + ]; + }); + }, + x: function (a, b, c, d, e) { + var g = Oa(c); + b = U(b); + T(a, { + name: b, + fromWireType: function (m) { + return !!m; + }, + toWireType: function (m, h) { + return h ? d : e; + }, + argPackAdvance: 8, + readValueFromPointer: function (m) { + if (1 === c) var h = J; + else if (2 === c) h = G; + else if (4 === c) h = H; + else throw new TypeError('Unknown boolean type size: ' + b); + return this.fromWireType(h[m >> g]); + }, + P: null, + }); + }, + w: function (a, b) { + b = U(b); + T(a, { + name: b, + fromWireType: function (c) { + var d = X[c].value; + Sa(c); + return d; + }, + toWireType: function (c, d) { + return Ta(d); + }, + argPackAdvance: 8, + readValueFromPointer: Ha, + P: null, + }); + }, + i: function (a, b, c) { + c = Oa(c); + b = U(b); + T(a, { + name: b, + fromWireType: function (d) { + return d; + }, + toWireType: function (d, e) { + if ('number' !== typeof e && 'boolean' !== typeof e) + throw new TypeError( + 'Cannot convert "' + Ua(e) + '" to ' + this.name, + ); + return e; + }, + argPackAdvance: 8, + readValueFromPointer: Va(b, c), + P: null, + }); + }, + n: function (a, b, c, d, e, g) { + var m = Za(b, c); + a = U(a); + e = Y(d, e); + Ya( + a, + function () { + db('Cannot call ' + a + ' due to unbound types', m); + }, + b - 1, + ); + Na([], m, function (h) { + var k = a, + l = a; + h = [h[0], null].concat(h.slice(1)); + var n = e, + q = h.length; + 2 > q && + W( + "argTypes array size mismatch! Must at least get return value and 'this' types!", + ); + for (var x = null !== h[1] && !1, y = !1, p = 1; p < h.length; ++p) + if (null !== h[p] && void 0 === h[p].P) { + y = !0; + break; + } + var ha = 'void' !== h[0].name, + z = '', + F = ''; + for (p = 0; p < q - 2; ++p) + (z += (0 !== p ? ', ' : '') + 'arg' + p), + (F += (0 !== p ? ', ' : '') + 'arg' + p + 'Wired'); + l = + 'return function ' + + Ja(l) + + '(' + + z + + ') {\nif (arguments.length !== ' + + (q - 2) + + ") {\nthrowBindingError('function " + + l + + " called with ' + arguments.length + ' arguments, expected " + + (q - 2) + + " args!');\n}\n"; + y && (l += 'var destructors = [];\n'); + var V = y ? 'destructors' : 'null'; + z = 'throwBindingError invoker fn runDestructors retType classParam'.split( + ' ', + ); + n = [W, n, g, Ga, h[0], h[1]]; + x && + (l += 'var thisWired = classParam.toWireType(' + V + ', this);\n'); + for (p = 0; p < q - 2; ++p) + (l += + 'var arg' + + p + + 'Wired = argType' + + p + + '.toWireType(' + + V + + ', arg' + + p + + '); // ' + + h[p + 2].name + + '\n'), + z.push('argType' + p), + n.push(h[p + 2]); + x && (F = 'thisWired' + (0 < F.length ? ', ' : '') + F); + l += + (ha ? 'var rv = ' : '') + + 'invoker(fn' + + (0 < F.length ? ', ' : '') + + F + + ');\n'; + if (y) l += 'runDestructors(destructors);\n'; + else + for (p = x ? 1 : 2; p < h.length; ++p) + (q = 1 === p ? 'thisWired' : 'arg' + (p - 2) + 'Wired'), + null !== h[p].P && + ((l += q + '_dtor(' + q + '); // ' + h[p].name + '\n'), + z.push(q + '_dtor'), + n.push(h[p].P)); + ha && (l += 'var ret = retType.fromWireType(rv);\nreturn ret;\n'); + z.push(l + '}\n'); + h = Wa(z).apply(null, n); + p = b - 1; + if (!f.hasOwnProperty(k)) + throw new Ma('Replacing nonexistant public symbol'); + void 0 !== f[k].O && void 0 !== p + ? (f[k].O[p] = h) + : ((f[k] = h), (f[k].W = p)); + return []; + }); + }, + c: function (a, b, c, d, e) { + function g(l) { + return l; + } + b = U(b); + -1 === e && (e = 4294967295); + var m = Oa(c); + if (0 === d) { + var h = 32 - 8 * c; + g = function (l) { + return (l << h) >>> h; + }; + } + var k = -1 != b.indexOf('unsigned'); + T(a, { + name: b, + fromWireType: g, + toWireType: function (l, n) { + if ('number' !== typeof n && 'boolean' !== typeof n) + throw new TypeError( + 'Cannot convert "' + Ua(n) + '" to ' + this.name, + ); + if (n < d || n > e) + throw new TypeError( + 'Passing a number "' + + Ua(n) + + '" from JS side to C/C++ side to an argument of type "' + + b + + '", which is outside the valid range [' + + d + + ', ' + + e + + ']!', + ); + return k ? n >>> 0 : n | 0; + }, + argPackAdvance: 8, + readValueFromPointer: eb(b, m, 0 !== d), + P: null, + }); + }, + b: function (a, b, c) { + function d(g) { + g >>= 2; + var m = K; + return new e(I, m[g + 1], m[g]); + } + var e = [ + Int8Array, + Uint8Array, + Int16Array, + Uint16Array, + Int32Array, + Uint32Array, + Float32Array, + Float64Array, + ][b]; + c = U(c); + T( + a, + { + name: c, + fromWireType: d, + argPackAdvance: 8, + readValueFromPointer: d, + }, + { ba: !0 }, + ); + }, + k: function (a, b) { + b = U(b); + var c = 'std::string' === b; + T(a, { + name: b, + fromWireType: function (d) { + var e = K[d >> 2]; + if (c) + for (var g = d + 4, m = 0; m <= e; ++m) { + var h = d + 4 + m; + if (m == e || 0 == D[h]) { + g = C(g, h - g); + if (void 0 === k) var k = g; + else (k += String.fromCharCode(0)), (k += g); + g = h + 1; + } + } + else { + k = Array(e); + for (m = 0; m < e; ++m) k[m] = String.fromCharCode(D[d + 4 + m]); + k = k.join(''); + } + Z(d); + return k; + }, + toWireType: function (d, e) { + e instanceof ArrayBuffer && (e = new Uint8Array(e)); + var g = 'string' === typeof e; + g || + e instanceof Uint8Array || + e instanceof Uint8ClampedArray || + e instanceof Int8Array || + W('Cannot pass non-string to std::string'); + var m = (c && g + ? function () { + for (var l = 0, n = 0; n < e.length; ++n) { + var q = e.charCodeAt(n); + 55296 <= q && + 57343 >= q && + (q = + (65536 + ((q & 1023) << 10)) | + (e.charCodeAt(++n) & 1023)); + 127 >= q + ? ++l + : (l = 2047 >= q ? l + 2 : 65535 >= q ? l + 3 : l + 4); + } + return l; + } + : function () { + return e.length; + })(), + h = nb(4 + m + 1); + K[h >> 2] = m; + if (c && g) ia(e, h + 4, m + 1); + else if (g) + for (g = 0; g < m; ++g) { + var k = e.charCodeAt(g); + 255 < k && + (Z(h), + W('String has UTF-16 code units that do not fit in 8 bits')); + D[h + 4 + g] = k; + } + else for (g = 0; g < m; ++g) D[h + 4 + g] = e[g]; + null !== d && d.push(Z, h); + return h; + }, + argPackAdvance: 8, + readValueFromPointer: Ha, + P: function (d) { + Z(d); + }, + }); + }, + f: function (a, b, c) { + c = U(c); + if (2 === b) { + var d = ka; + var e = la; + var g = ma; + var m = function () { + return E; + }; + var h = 1; + } else + 4 === b && + ((d = na), + (e = oa), + (g = pa), + (m = function () { + return K; + }), + (h = 2)); + T(a, { + name: c, + fromWireType: function (k) { + for (var l = K[k >> 2], n = m(), q, x = k + 4, y = 0; y <= l; ++y) { + var p = k + 4 + y * b; + if (y == l || 0 == n[p >> h]) + (x = d(x, p - x)), + void 0 === q + ? (q = x) + : ((q += String.fromCharCode(0)), (q += x)), + (x = p + b); + } + Z(k); + return q; + }, + toWireType: function (k, l) { + 'string' !== typeof l && + W('Cannot pass non-string to C++ string type ' + c); + var n = g(l), + q = nb(4 + n + b); + K[q >> 2] = n >> h; + e(l, q + 4, n + b); + null !== k && k.push(Z, q); + return q; + }, + argPackAdvance: 8, + readValueFromPointer: Ha, + P: function (k) { + Z(k); + }, + }); + }, + q: function (a, b, c, d, e, g) { + Fa[a] = { name: U(b), da: Y(c, d), ea: Y(e, g), U: [] }; + }, + e: function (a, b, c, d, e, g, m, h, k, l) { + Fa[a].U.push({ + X: U(b), + aa: c, + Z: Y(d, e), + $: g, + la: m, + ka: Y(h, k), + ma: l, + }); + }, + y: function (a, b) { + b = U(b); + T(a, { + na: !0, + name: b, + argPackAdvance: 0, + fromWireType: function () {}, + toWireType: function () {}, + }); + }, + j: Sa, + F: function (a) { + if (0 === a) return Ta(gb()); + var b = fb[a]; + a = void 0 === b ? U(a) : b; + return Ta(gb()[a]); + }, + m: function (a) { + 4 < a && (X[a].T += 1); + }, + t: function (a, b, c, d) { + a || W('Cannot use deleted val. handle = ' + a); + a = X[a].value; + var e = ib[b]; + if (!e) { + e = ''; + for (var g = 0; g < b; ++g) e += (0 !== g ? ', ' : '') + 'arg' + g; + var m = + 'return function emval_allocator_' + + b + + '(constructor, argTypes, args) {\n'; + for (g = 0; g < b; ++g) + m += + 'var argType' + + g + + " = requireRegisteredType(Module['HEAP32'][(argTypes >>> 2) + " + + g + + '], "parameter ' + + g + + '");\nvar arg' + + g + + ' = argType' + + g + + '.readValueFromPointer(args);\nargs += argType' + + g + + "['argPackAdvance'];\n"; + e = new Function( + 'requireRegisteredType', + 'Module', + '__emval_register', + m + + ('var obj = new constructor(' + + e + + ');\nreturn __emval_register(obj);\n}\n'), + )(hb, f, Ta); + ib[b] = e; + } + return e(a, c, d); + }, + g: function () { + A(); + }, + u: function (a, b, c) { + D.copyWithin(a, b, b + c); + }, + d: function (a) { + a >>>= 0; + var b = D.length; + if (2147483648 < a) return !1; + for (var c = 1; 4 >= c; c *= 2) { + var d = b * (1 + 0.2 / c); + d = Math.min(d, a + 100663296); + d = Math.max(16777216, a, d); + 0 < d % 65536 && (d += 65536 - (d % 65536)); + a: { + try { + B.grow((Math.min(2147483648, d) - I.byteLength + 65535) >>> 16); + sa(B.buffer); + var e = 1; + break a; + } catch (g) {} + e = void 0; + } + if (e) return !0; + } + return !1; + }, + v: function () { + return 0; + }, + r: function () {}, + h: function (a, b, c, d) { + for (var e = 0, g = 0; g < c; g++) { + for ( + var m = H[(b + 8 * g) >> 2], h = H[(b + (8 * g + 4)) >> 2], k = 0; + k < h; + k++ + ) { + var l = D[m + k], + n = jb[a]; + if (0 === l || 10 === l) { + for (l = 0; n[l] && !(NaN <= l); ) ++l; + l = fa.decode( + n.subarray ? n.subarray(0, l) : new Uint8Array(n.slice(0, l)), + ); + (1 === a ? da : v)(l); + n.length = 0; + } else n.push(l); + } + e += h; + } + H[d >> 2] = e; + return 0; + }, + a: B, + l: function () { + return 0; + }, + E: function () { + return 0; + }, + D: function () {}, + C: function () { + return 6; + }, + B: function () {}, + s: function () {}, + }; + (function () { + function a(e) { + f.asm = e.exports; + L = f.asm.H; + M--; + f.monitorRunDependencies && f.monitorRunDependencies(M); + 0 == M && + (null !== za && (clearInterval(za), (za = null)), + N && ((e = N), (N = null), e())); + } + function b(e) { + a(e.instance); + } + function c(e) { + return Da() + .then(function (g) { + return WebAssembly.instantiate(g, d); + }) + .then(e, function (g) { + v('failed to asynchronously prepare wasm: ' + g); + A(g); + }); + } + var d = { a: ob }; + M++; + f.monitorRunDependencies && f.monitorRunDependencies(M); + if (f.instantiateWasm) + try { + return f.instantiateWasm(d, a); + } catch (e) { + return ( + v('Module.instantiateWasm callback failed with error: ' + e), !1 + ); + } + (function () { + return w || + 'function' !== typeof WebAssembly.instantiateStreaming || + Aa() || + 'function' !== typeof fetch + ? c(b) + : fetch(O, { credentials: 'same-origin' }).then(function (e) { + return WebAssembly.instantiateStreaming(e, d).then(b, function ( + g, + ) { + v('wasm streaming compile failed: ' + g); + v('falling back to ArrayBuffer instantiation'); + return c(b); + }); + }); + })().catch(ba); + return {}; + })(); + var mb = (f.___wasm_call_ctors = function () { + return (mb = f.___wasm_call_ctors = f.asm.I).apply(null, arguments); + }), + nb = (f._malloc = function () { + return (nb = f._malloc = f.asm.J).apply(null, arguments); + }), + Z = (f._free = function () { + return (Z = f._free = f.asm.K).apply(null, arguments); + }), + cb = (f.___getTypeName = function () { + return (cb = f.___getTypeName = f.asm.L).apply(null, arguments); + }); + f.___embind_register_native_and_builtin_types = function () { + return (f.___embind_register_native_and_builtin_types = f.asm.M).apply( + null, + arguments, + ); + }; + f.dynCall_jiji = function () { + return (f.dynCall_jiji = f.asm.N).apply(null, arguments); + }; + var pb; + N = function qb() { + pb || rb(); + pb || (N = qb); + }; + function rb() { + function a() { + if (!pb && ((pb = !0), (f.calledRun = !0), !ea)) { + P(va); + P(wa); + aa(f); + if (f.onRuntimeInitialized) f.onRuntimeInitialized(); + if (f.postRun) + for ( + 'function' == typeof f.postRun && (f.postRun = [f.postRun]); + f.postRun.length; + + ) { + var b = f.postRun.shift(); + xa.unshift(b); + } + P(xa); + } + } + if (!(0 < M)) { + if (f.preRun) + for ( + 'function' == typeof f.preRun && (f.preRun = [f.preRun]); + f.preRun.length; + + ) + ya(); + P(ua); + 0 < M || + (f.setStatus + ? (f.setStatus('Running...'), + setTimeout(function () { + setTimeout(function () { + f.setStatus(''); + }, 1); + a(); + }, 1)) + : a()); + } + } + f.run = rb; + if (f.preInit) + for ( + 'function' == typeof f.preInit && (f.preInit = [f.preInit]); + 0 < f.preInit.length; + + ) + f.preInit.pop()(); + noExitRuntime = !0; + rb(); + + return wp2_enc.ready; + }; +})(); +export default wp2_enc; diff --git a/codecs/wp2/enc/wp2_enc.wasm b/codecs/wp2/enc/wp2_enc.wasm new file mode 100755 index 00000000..0157b60f Binary files /dev/null and b/codecs/wp2/enc/wp2_enc.wasm differ diff --git a/codecs/wp2/package.json b/codecs/wp2/package.json new file mode 100644 index 00000000..acc575b2 --- /dev/null +++ b/codecs/wp2/package.json @@ -0,0 +1,6 @@ +{ + "name": "wp2", + "scripts": { + "build": "../build-cpp.sh" + } +} diff --git a/emscripten-types.d.ts b/emscripten-types.d.ts index 7b4a504d..9f94d16d 100644 --- a/emscripten-types.d.ts +++ b/emscripten-types.d.ts @@ -10,6 +10,7 @@ declare namespace EmscriptenWasm { // Options object for modularized Emscripten files. Shoe-horned by @surma. // FIXME: This an incomplete definition! interface ModuleOpts { + mainScriptUrlOrBlob?: string; noInitialRun?: boolean; locateFile?: (url: string) => string; onRuntimeInitialized?: () => void; diff --git a/lib/css-plugin.js b/lib/css-plugin.js index 71df654c..7bee09b2 100644 --- a/lib/css-plugin.js +++ b/lib/css-plugin.js @@ -13,7 +13,12 @@ import { promises as fsp, readFileSync } from 'fs'; import { createHash } from 'crypto'; import { promisify } from 'util'; -import { parse as parsePath, resolve as resolvePath, dirname } from 'path'; +import { + parse as parsePath, + resolve as resolvePath, + dirname, + normalize as nomalizePath, +} from 'path'; import postcss from 'postcss'; import postCSSNested from 'postcss-nested'; @@ -55,10 +60,15 @@ export default function (resolveFileUrl) { hashToId = new Map(); pathToResult = new Map(); - const cssPaths = await globP('src/**/*.css', { - nodir: true, - absolute: true, - }); + const cssPaths = ( + await globP('src/**/*.css', { + nodir: true, + absolute: true, + }) + ).map((cssPath) => + // glob() returns windows paths with a forward slash. Normalise it: + nomalizePath(cssPath), + ); await Promise.all( cssPaths.map(async (path) => { @@ -73,6 +83,7 @@ export default function (resolveFileUrl) { getJSON(_, json) { moduleJSON = json; }, + root: '', }), postCSSUrl({ url: ({ relativePath, url }) => { @@ -146,7 +157,7 @@ export default function (resolveFileUrl) { async load(id) { if (id === appendCssModule) return appendCssSource; if (id.startsWith(sourcePrefix)) { - const path = id.slice(sourcePrefix.length); + const path = nomalizePath(id.slice(sourcePrefix.length)); if (!pathToResult.has(path)) { throw Error(`Cannot find ${path} in pathToResult`); diff --git a/lib/feature-plugin.js b/lib/feature-plugin.js index 0886c732..ee20fa57 100644 --- a/lib/feature-plugin.js +++ b/lib/feature-plugin.js @@ -12,9 +12,9 @@ */ import { promisify } from 'util'; import * as path from 'path'; -import { promises as fsp } from 'fs'; - +import { posix } from 'path'; import glob from 'glob'; +import { promises as fsp } from 'fs'; const globP = promisify(glob); const autoGenComment = @@ -33,7 +33,7 @@ export default function () { const workerBasePath = path.join(process.cwd(), 'src', 'features-worker'); const featuresWorkerTsNames = workerImports.map((tsImport) => [ - path.relative(workerBasePath, tsImport), + path.relative(workerBasePath, tsImport).split(path.sep).join(posix.sep), path.basename(tsImport), ]); @@ -78,7 +78,10 @@ export default function () { ); const featuresWorkerBridgeTsNames = workerImports.map((tsImport) => [ - path.relative(workerBridgeBasePath, tsImport), + path + .relative(workerBridgeBasePath, tsImport) + .split(path.sep) + .join(posix.sep), path.basename(tsImport), ]); @@ -165,7 +168,10 @@ export default function () { previousJoinedMetas = joinedMetas; const getTsName = (tsImport) => [ - path.relative(featureMetaBasePath, tsImport), + path + .relative(featureMetaBasePath, tsImport) + .split(path.sep) + .join(posix.sep), path.basename(tsImport.slice(0, -'/shared/meta'.length)), ]; diff --git a/lib/initial-css-plugin.js b/lib/initial-css-plugin.js index f9b2e3d8..c01b8f65 100644 --- a/lib/initial-css-plugin.js +++ b/lib/initial-css-plugin.js @@ -13,6 +13,7 @@ import { promisify } from 'util'; import path from 'path'; +import { posix } from 'path'; import glob from 'glob'; const globP = promisify(glob); @@ -36,9 +37,9 @@ export default function initialCssPlugin() { // Sort the matches so the parentmost items appear first. // This is a bit of a hack, but it means the util stuff appears in the cascade first. const sortedMatches = matches - .map((match) => match.split(path.sep)) + .map((match) => path.normalize(match).split(path.sep)) .sort((a, b) => a.length - b.length) - .map((match) => path.join(...match)); + .map((match) => posix.join(...match)); const imports = sortedMatches .map((id, i) => `import css${i} from 'css:${id}';\n`) diff --git a/lib/omt.ejs b/lib/omt.ejs index f52bc72d..2f2741ed 100644 --- a/lib/omt.ejs +++ b/lib/omt.ejs @@ -15,7 +15,12 @@ if (!self.<%- amdFunctionName %>) { const singleRequire = async name => { if (name === 'require') return require; - let url = name.slice(1) + '.js'; + let url; + if (name.startsWith(location.origin)) { + url = name.slice(location.origin.length); + } else { + url = name.slice(1) + '.js'; + } if (!url.startsWith('/c/')) { url = '/c' + url; } @@ -77,7 +82,7 @@ if (!self.<%- amdFunctionName %>) { }) ).then(deps => { const facValue = factory(...deps); - if(!exports.default) { + if (!exports.default) { exports.default = facValue; } return exports; diff --git a/lib/simple-ts.js b/lib/simple-ts.js index e5589698..758e0e3a 100644 --- a/lib/simple-ts.js +++ b/lib/simple-ts.js @@ -17,9 +17,12 @@ import { promisify } from 'util'; import * as ts from 'typescript'; import glob from 'glob'; +import { sync as whichSync } from 'which'; const globP = promisify(glob); +const tscPath = whichSync('tsc'); + const extRe = /\.tsx?$/; function loadConfig(mainPath) { @@ -59,7 +62,7 @@ export default function simpleTS(mainPath, { noBuild, watch } = {}) { } tsBuildDone = Promise.resolve().then(async () => { await new Promise((resolve) => { - const proc = spawn('tsc', args, { + const proc = spawn(tscPath, args, { stdio: 'inherit', }); @@ -75,7 +78,7 @@ export default function simpleTS(mainPath, { noBuild, watch } = {}) { if (watch) { tsBuildDone.then(() => { - spawn('tsc', [...args, '--watch', '--preserveWatchOutput'], { + spawn(tscPath, [...args, '--watch', '--preserveWatchOutput'], { stdio: 'inherit', }); }); @@ -124,6 +127,15 @@ export default function simpleTS(mainPath, { noBuild, watch } = {}) { relative(process.cwd(), id), ).replace(extRe, '.js'); + console.log( + `simple-ts mapping`, + id, + 'to', + newId, + 'with outDir', + config.options.outDir, + ); + return fsp.readFile(newId, { encoding: 'utf8' }); }, }; diff --git a/package-lock.json b/package-lock.json index 69b28c09..10e3b58a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,8 +1,8274 @@ { "name": "squoosh", "version": "2.0.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "version": "2.0.0", + "license": "apache-2.0", + "dependencies": { + "wasm-feature-detect": "^1.2.9" + }, + "devDependencies": { + "@rollup/plugin-commonjs": "^15.1.0", + "@rollup/plugin-node-resolve": "^9.0.0", + "@rollup/plugin-replace": "^2.3.4", + "@surma/rollup-plugin-off-main-thread": "^1.4.2", + "@types/node": "^14.14.7", + "comlink": "^4.3.0", + "cssnano": "^4.1.10", + "del": "^5.1.0", + "file-drop-element": "^1.0.1", + "husky": "^4.3.0", + "idb-keyval": "^3.2.0", + "linkstate": "^2.0.0", + "lint-staged": "^10.5.1", + "lodash.camelcase": "^4.3.0", + "mime-types": "^2.1.27", + "pointer-tracker": "^2.4.0", + "postcss": "^7.0.35", + "postcss-modules": "^3.2.2", + "postcss-nested": "^4.2.3", + "postcss-simple-vars": "^5.0.2", + "postcss-url": "^8.0.0", + "preact": "^10.5.5", + "preact-render-to-string": "^5.1.11", + "prettier": "^2.1.2", + "pretty-bytes": "^5.4.1", + "rollup": "^2.33.1", + "rollup-plugin-terser": "^7.0.2", + "serve": "^11.3.2", + "typescript": "^4.0.5", + "which": "^2.0.2" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "node_modules/@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-15.1.0.tgz", + "integrity": "sha512-xCQqz4z/o0h2syQ7d9LskIMvBSH4PX5PjYdpSSvgS+pQik3WahkQVNWg3D8XJeYjZoVWnIUQYDghuEMRGrmQYQ==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/estree-walker": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.1.tgz", + "integrity": "sha512-tF0hv+Yi2Ot1cwj9eYHtxC0jB9bmjacjQs6ZBTj82H8JwUywFuc+7E83NWfNMwHXZc11mjfFcVXPe9gEP4B8dg==", + "dev": true + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-9.0.0.tgz", + "integrity": "sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.17.0" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.3.4.tgz", + "integrity": "sha512-waBhMzyAtjCL1GwZes2jaE9MjuQ/DQF2BatH3fRivUF3z0JBFrU0U6iBNC/4WR+2rLKhaAhPWDNPYp4mI6RqdQ==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@surma/rollup-plugin-off-main-thread": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz", + "integrity": "sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A==", + "dev": true, + "dependencies": { + "ejs": "^2.6.1", + "magic-string": "^0.25.0" + } + }, + "node_modules/@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, + "node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "dev": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "14.14.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.7.tgz", + "integrity": "sha512-Zw1vhUSQZYw+7u5dAwNbIA9TuTotpzY/OF7sJM9FqPOF3SPjKnxrjoTktXDZgUjybf4cWVBP7O8wvKdSaGHweg==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "node_modules/@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", + "dev": true + }, + "node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@zeit/schemas": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.6.0.tgz", + "integrity": "sha512-uUrgZ8AxS+Lio0fZKAipJjAh415JyrOZowliZAzmnJSsf7piVL5w+G0+gFJ0KSu3QRhvui/7zuvpLz03YjXAhg==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "node_modules/alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "node_modules/ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "dev": true, + "dependencies": { + "string-width": "^2.0.0" + } + }, + "node_modules/ansi-align/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-align/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-align/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "dependencies": { + "type-fest": "^0.11.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "dependencies": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/arch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.2.tgz", + "integrity": "sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ==", + "dev": true + }, + "node_modules/arg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-2.0.0.tgz", + "integrity": "sha512-XxNTUzKnz1ctK3ZIcI2XUPlD96wbHP2nGqkPKpvk/HNRlPveYrXIVSTk9m3LcqOgDPg3B1nMvdV/K8wZd7PG4w==", + "dev": true + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "node_modules/boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "dev": true, + "dependencies": { + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/boxen/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/boxen/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/boxen/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/boxen/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/boxen/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/boxen/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/boxen/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/boxen/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/boxen/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/boxen/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.0.tgz", + "integrity": "sha512-pUsXKAF2lVwhmtpeA3LJrZ76jXuusrNyhduuQs7CDFf9foT4Y38aQOserd2lMe5DSSrjf3fx34oHwryuvxAUgQ==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001111", + "electron-to-chromium": "^1.3.523", + "escalade": "^3.0.2", + "node-releases": "^1.1.60" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "node_modules/builtin-modules": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", + "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "dependencies": { + "callsites": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-callsite/node_modules/callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "dependencies": { + "caller-callsite": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001116", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001116.tgz", + "integrity": "sha512-f2lcYnmAI5Mst9+g0nkMIznFGsArRmZ0qU+dnq8l91hymdc2J3SFbiPhOJEeDqC1vtE8nc1qNQyklzB8veJefQ==", + "dev": true + }, + "node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clipboardy": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.3.tgz", + "integrity": "sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA==", + "dev": true, + "dependencies": { + "arch": "^2.1.0", + "execa": "^0.8.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/clipboardy/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/clipboardy/node_modules/execa": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", + "dev": true, + "dependencies": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/clipboardy/node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/clipboardy/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clipboardy/node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/clipboardy/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/clipboardy/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clipboardy/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clipboardy/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "dependencies": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/coa/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/coa/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/coa/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/coa/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/coa/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/coa/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", + "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "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, + "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 + }, + "node_modules/color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "dev": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/color/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/comlink": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.3.0.tgz", + "integrity": "sha512-mu4KKKNuW8TvkfpW/H88HBPeILubBS6T94BdD1VWBXNXfiyqVtwUCVNO1GeNOBTsIswzsMjWlycYr+77F5b84g==", + "dev": true + }, + "node_modules/commander": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.0.tgz", + "integrity": "sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "node_modules/compare-versions": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", + "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", + "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.14", + "debug": "2.6.9", + "on-headers": "~1.0.1", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "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, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "dependencies": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + }, + "engines": { + "node": ">4" + } + }, + "node_modules/css-declaration-sorter/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/css-declaration-sorter/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/css-declaration-sorter/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/css-declaration-sorter/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/css-declaration-sorter/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/css-declaration-sorter/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/css-declaration-sorter/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/css-declaration-sorter/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "node_modules/css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "node_modules/css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.3.0.tgz", + "integrity": "sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "dev": true, + "dependencies": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "dev": true, + "dependencies": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-preset-default/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano-preset-default/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano-preset-default/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano-preset-default/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/cssnano-preset-default/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/cssnano-preset-default/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano-preset-default/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/cssnano-preset-default/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-raw-cache/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano-util-raw-cache/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano-util-raw-cache/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano-util-raw-cache/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/cssnano-util-raw-cache/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/cssnano-util-raw-cache/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano-util-raw-cache/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/cssnano-util-raw-cache/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/cssnano/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/cssnano/node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "dependencies": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano/node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/cssnano/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/csso": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", + "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", + "dev": true, + "dependencies": { + "css-tree": "1.0.0-alpha.39" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "1.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", + "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.6", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", + "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==", + "dev": true + }, + "node_modules/cuint": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=", + "dev": true + }, + "node_modules/debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/del": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/del/-/del-5.1.0.tgz", + "integrity": "sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==", + "dev": true, + "dependencies": { + "globby": "^10.0.1", + "graceful-fs": "^4.2.2", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.1", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/dom-serializer/node_modules/domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", + "dev": true + }, + "node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dot-prop/node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", + "dev": true, + "hasInstallScript": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.3.538", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.538.tgz", + "integrity": "sha512-rlyYXLlOoZkJuvY4AJXUpP7CHRVtwZz311HPVoEO1UHo/kqDCsP1pNas0A9paZuPEiYGdLwrjllF2hs69NEaTw==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/entities": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", + "dev": true + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "dev": true, + "dependencies": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escalade": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz", + "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", + "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8" + } + }, + "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 + }, + "node_modules/fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=", + "dev": true, + "dependencies": { + "punycode": "^1.3.2" + } + }, + "node_modules/fast-url-parser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "node_modules/fastq": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", + "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/file-drop-element": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/file-drop-element/-/file-drop-element-1.0.1.tgz", + "integrity": "sha512-na2cwntTVgMsR+BZ2YBr/XQk941DKDw2LJKbV7g6TRdGBQ3rx8V53oEviG8zPWoBOySwK9w/SlZ/gb/F/48I8A==", + "dev": true + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-versions": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz", + "integrity": "sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==", + "dev": true, + "dependencies": { + "semver-regex": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/generic-names": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-2.0.1.tgz", + "integrity": "sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ==", + "dev": true, + "dependencies": { + "loader-utils": "^1.1.0" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "dev": true + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "dev": true, + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true + }, + "node_modules/hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "node_modules/hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "node_modules/html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "dev": true + }, + "node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/husky": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/husky/-/husky-4.3.0.tgz", + "integrity": "sha512-tTMeLCLqSBqnflBZnlVDhpaIMucSGaYyX6855jM4AguGeWCeSzNdb1mfyWduTZ3pe3SJVvVWGL0jO1iKZVPfTA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "chalk": "^4.0.0", + "ci-info": "^2.0.0", + "compare-versions": "^3.6.0", + "cosmiconfig": "^7.0.0", + "find-versions": "^3.2.0", + "opencollective-postinstall": "^2.0.2", + "pkg-dir": "^4.2.0", + "please-upgrade-node": "^3.2.0", + "slash": "^3.0.0", + "which-pm-runs": "^1.0.0" + }, + "bin": { + "husky-run": "bin/run.js", + "husky-upgrade": "lib/upgrader/bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "node_modules/icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "dev": true, + "dependencies": { + "postcss": "^7.0.14" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/icss-utils/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/icss-utils/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/icss-utils/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/icss-utils/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/icss-utils/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/icss-utils/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/icss-utils/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/icss-utils/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/idb-keyval": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-3.2.0.tgz", + "integrity": "sha512-slx8Q6oywCCSfKgPgL0sEsXtPVnSbTLWpyiDcu6msHOyKOLari1TD1qocXVCft80umnkk3/Qqh3lwoFt8T/BPQ==", + "dev": true + }, + "node_modules/ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "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==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-callable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "dependencies": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "node_modules/is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", + "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "dev": true, + "dependencies": { + "html-comment-regex": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/jest-worker": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.3.0.tgz", + "integrity": "sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "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 + }, + "node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "node_modules/linkstate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/linkstate/-/linkstate-2.0.0.tgz", + "integrity": "sha512-ti9WqRjpLqUd8wv4vUDjeqMeAObSieeEJA7QHpUKTDr75gkuWTsgm4+Tngg/3uTogSz68hJ/c+676rLfSgqHUg==", + "dev": true, + "dependencies": { + "esm": "^3.2.25" + } + }, + "node_modules/lint-staged": { + "version": "10.5.1", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.5.1.tgz", + "integrity": "sha512-fTkTGFtwFIJJzn/PbUO3RXyEBHIhbfYBE7+rJyLcOXabViaO/h6OslgeK6zpeUtzkDrzkgyAYDTLAwx6JzDTHw==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "cli-truncate": "^2.1.0", + "commander": "^6.2.0", + "cosmiconfig": "^7.0.0", + "debug": "^4.2.0", + "dedent": "^0.7.0", + "enquirer": "^2.3.6", + "execa": "^4.1.0", + "listr2": "^3.2.2", + "log-symbols": "^4.0.0", + "micromatch": "^4.0.2", + "normalize-path": "^3.0.0", + "please-upgrade-node": "^3.2.0", + "string-argv": "0.3.1", + "stringify-object": "^3.3.0" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + } + }, + "node_modules/listr2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.2.2.tgz", + "integrity": "sha512-AajqcZEUikF2ioph6PfH3dIuxJclhr3i3kHgTOP0xeXdWQohrvJAAmqVcV43/GI987HFY/vzT73jYXoa4esDHg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "cli-truncate": "^2.1.0", + "figures": "^3.2.0", + "indent-string": "^4.0.0", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rxjs": "^6.6.3", + "through": "^2.3.8" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/listr2/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mime": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "dev": true, + "dependencies": { + "mime-db": "1.44.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "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 + }, + "node_modules/negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-releases": { + "version": "1.1.60", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.60.tgz", + "integrity": "sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "node_modules/object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/opencollective-postinstall": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", + "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", + "dev": true, + "bin": { + "opencollective-postinstall": "index.js" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", + "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "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": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", + "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, + "dependencies": { + "semver-compare": "^1.0.0" + } + }, + "node_modules/pointer-tracker": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/pointer-tracker/-/pointer-tracker-2.4.0.tgz", + "integrity": "sha512-pWI2tpaM/XNtc9mUTv42Rmjf6mkHvE8LT5DDEq0G7baPNhxNM9E3CepubPplSoSLk9E5bwQrAMyDcPVmJyTW4g==", + "dev": true + }, + "node_modules/postcss": { + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-calc": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.3.tgz", + "integrity": "sha512-IB/EAEmZhIMEIhG7Ov4x+l47UaXOS1n2f4FBUk/aKllQhtSCxWhTzn0nJgkqN7fo/jcWySvWTSB6Syk9L+31bA==", + "dev": true, + "dependencies": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "node_modules/postcss-calc/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-calc/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-calc/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-calc/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-calc/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-calc/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-calc/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-calc/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-colormin/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-colormin/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-colormin/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-colormin/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-colormin/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-colormin/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-colormin/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-colormin/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-colormin/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-convert-values/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-convert-values/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-convert-values/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-convert-values/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-convert-values/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-convert-values/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-convert-values/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-convert-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-convert-values/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-comments/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-discard-comments/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-discard-comments/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-discard-comments/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-discard-comments/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-discard-comments/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-discard-comments/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-discard-comments/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-duplicates/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-discard-duplicates/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-discard-duplicates/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-discard-duplicates/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-discard-duplicates/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-discard-duplicates/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-discard-duplicates/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-discard-duplicates/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-empty/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-discard-empty/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-discard-empty/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-discard-empty/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-discard-empty/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-discard-empty/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-discard-empty/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-discard-empty/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-discard-overridden/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-discard-overridden/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-discard-overridden/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-discard-overridden/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-discard-overridden/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-discard-overridden/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-discard-overridden/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-discard-overridden/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "dependencies": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-merge-longhand/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-merge-longhand/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-merge-longhand/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-merge-longhand/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-merge-longhand/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-merge-longhand/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-merge-longhand/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-merge-longhand/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-merge-longhand/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-merge-rules/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-merge-rules/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-merge-rules/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-merge-rules/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-merge-rules/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-merge-rules/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-merge-rules/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss-merge-rules/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-font-values/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-minify-font-values/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-minify-font-values/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-minify-font-values/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-minify-font-values/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-minify-font-values/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-minify-font-values/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-minify-font-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-minify-font-values/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-gradients/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-minify-gradients/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-minify-gradients/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-minify-gradients/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-minify-gradients/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-minify-gradients/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-minify-gradients/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-minify-gradients/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-minify-gradients/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-params/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-minify-params/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-minify-params/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-minify-params/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-minify-params/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-minify-params/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-minify-params/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-minify-params/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-minify-params/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-minify-selectors/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-minify-selectors/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-minify-selectors/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-minify-selectors/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-minify-selectors/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-minify-selectors/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-minify-selectors/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss-minify-selectors/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-modules": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-3.2.2.tgz", + "integrity": "sha512-JQ8IAqHELxC0N6tyCg2UF40pACY5oiL6UpiqqcIFRWqgDYO8B0jnxzoQ0EOpPrWXvcpu6BSbQU/3vSiq7w8Nhw==", + "dev": true, + "dependencies": { + "generic-names": "^2.0.1", + "icss-replace-symbols": "^1.1.0", + "lodash.camelcase": "^4.3.0", + "postcss": "^7.0.32", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "string-hash": "^1.1.1" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "dev": true, + "dependencies": { + "postcss": "^7.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss-modules-extract-imports/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-extract-imports/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-extract-imports/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-extract-imports/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-modules-extract-imports/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-modules-extract-imports/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-extract-imports/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-modules-extract-imports/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", + "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", + "dev": true, + "dependencies": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.32", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-modules-local-by-default/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-modules-local-by-default/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-modules-scope": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", + "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", + "dev": true, + "dependencies": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss-modules-scope/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-scope/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-scope/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-scope/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-modules-scope/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-modules-scope/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-scope/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-modules-scope/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "dev": true, + "dependencies": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, + "node_modules/postcss-modules-values/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-values/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-values/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-values/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-modules-values/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-modules-values/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules-values/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-modules-values/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-modules/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-modules/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-modules/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-modules/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-modules/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-nested": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-4.2.3.tgz", + "integrity": "sha512-rOv0W1HquRCamWy2kFl3QazJMMe1ku6rCFoAAH+9AcxdbpDeBr6k968MLWuLjvjMcGEip01ak09hKOEgpK9hvw==", + "dev": true, + "dependencies": { + "postcss": "^7.0.32", + "postcss-selector-parser": "^6.0.2" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-charset/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-charset/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-charset/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-charset/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-normalize-charset/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-normalize-charset/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-charset/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-normalize-charset/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-display-values/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-display-values/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-display-values/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-display-values/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-normalize-display-values/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-normalize-display-values/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-display-values/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-normalize-display-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-display-values/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-positions/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-positions/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-positions/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-positions/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-normalize-positions/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-normalize-positions/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-positions/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-normalize-positions/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-positions/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-repeat-style/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-repeat-style/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-repeat-style/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-repeat-style/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-normalize-repeat-style/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-normalize-repeat-style/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-repeat-style/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-normalize-repeat-style/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-repeat-style/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "dependencies": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-string/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-string/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-string/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-string/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-normalize-string/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-normalize-string/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-string/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-normalize-string/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-string/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-timing-functions/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-timing-functions/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-timing-functions/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-timing-functions/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-normalize-timing-functions/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-normalize-timing-functions/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-timing-functions/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-normalize-timing-functions/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-timing-functions/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-unicode/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-unicode/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-unicode/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-unicode/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-normalize-unicode/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-normalize-unicode/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-unicode/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-normalize-unicode/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-unicode/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "dependencies": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-url/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-url/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-url/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-url/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-normalize-url/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-normalize-url/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-url/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-normalize-url/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-url/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-normalize-whitespace/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-whitespace/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-whitespace/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-whitespace/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-normalize-whitespace/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-normalize-whitespace/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-normalize-whitespace/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-normalize-whitespace/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-normalize-whitespace/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-ordered-values/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-ordered-values/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-ordered-values/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-ordered-values/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-ordered-values/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-ordered-values/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-ordered-values/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-ordered-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-ordered-values/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-reduce-initial/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-reduce-initial/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-reduce-initial/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-reduce-initial/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-reduce-initial/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-reduce-initial/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-reduce-initial/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-reduce-initial/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-reduce-transforms/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-reduce-transforms/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-reduce-transforms/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-reduce-transforms/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-reduce-transforms/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-reduce-transforms/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-reduce-transforms/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-reduce-transforms/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-reduce-transforms/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-simple-vars": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-simple-vars/-/postcss-simple-vars-5.0.2.tgz", + "integrity": "sha512-xWIufxBoINJv6JiLb7jl5oElgp+6puJwvT5zZHliUSydoLz4DADRB3NDDsYgfKVwojn4TDLiseoC65MuS8oGGg==", + "dev": true, + "dependencies": { + "postcss": "^7.0.14" + } + }, + "node_modules/postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "dev": true, + "dependencies": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-svgo/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-svgo/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-svgo/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-svgo/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/postcss-svgo/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-unique-selectors/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-unique-selectors/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-unique-selectors/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-unique-selectors/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-unique-selectors/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-unique-selectors/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-unique-selectors/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-unique-selectors/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-url": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-8.0.0.tgz", + "integrity": "sha512-E2cbOQ5aii2zNHh8F6fk1cxls7QVFZjLPSrqvmiza8OuXLzIpErij8BDS5Y3STPfJgpIMNCPEr8JlKQWEoozUw==", + "dev": true, + "dependencies": { + "mime": "^2.3.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.0", + "postcss": "^7.0.2", + "xxhashjs": "^0.2.1" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-url/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-url/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-url/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-url/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss-url/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss-url/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-url/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-url/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "dev": true + }, + "node_modules/postcss/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/postcss/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/postcss/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/preact": { + "version": "10.5.5", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.5.5.tgz", + "integrity": "sha512-5ONLNH1SXMzzbQoExZX4TELemNt+TEDb622xXFNfZngjjM9qtrzseJt+EfiUu4TZ6EJ95X5sE1ES4yqHFSIdhg==", + "dev": true + }, + "node_modules/preact-render-to-string": { + "version": "5.1.11", + "resolved": "https://registry.npmjs.org/preact-render-to-string/-/preact-render-to-string-5.1.11.tgz", + "integrity": "sha512-8DXkx8WzeUexYyh9ZjlBSsqcJVOndidw10t1MK1gLx6at4QxQE3RfqaObPgy5WOnw2piyh9kanNB7w7+dmaq4g==", + "dev": true, + "dependencies": { + "pretty-format": "^3.8.0" + } + }, + "node_modules/prettier": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.1.2.tgz", + "integrity": "sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/pretty-bytes": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.4.1.tgz", + "integrity": "sha512-s1Iam6Gwz3JI5Hweaz4GoCD1WUNUIyzePFy5+Js2hjwGVt2Z79wNN+ZKOZ2vB6C+Xs6njyB84Z1IthQg8d9LxA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pretty-format": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-3.8.0.tgz", + "integrity": "sha1-v77VbV6ad2ZF9LH/eqGjrE+jw4U=", + "dev": true + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true, + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/registry-auth-token": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", + "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", + "dev": true, + "dependencies": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "dependencies": { + "rc": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + } + }, + "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, + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "node_modules/rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/rollup": { + "version": "2.33.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.33.1.tgz", + "integrity": "sha512-uY4O/IoL9oNW8MMcbA5hcOaz6tZTMIh7qJHx/tzIJm+n1wLoY38BLn6fuy7DhR57oNFLMbDQtDeJoFURt5933w==", + "dev": true, + "dependencies": { + "fsevents": "~2.1.2" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.1.2" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + } + }, + "node_modules/run-parallel": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", + "dev": true + }, + "node_modules/rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "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==", + "dev": true + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "dev": true + }, + "node_modules/semver-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz", + "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/serve/-/serve-11.3.2.tgz", + "integrity": "sha512-yKWQfI3xbj/f7X1lTBg91fXBP0FqjJ4TEi+ilES5yzH0iKJpN5LjNb1YzIfQg9Rqn4ECUS2SOf2+Kmepogoa5w==", + "dev": true, + "dependencies": { + "@zeit/schemas": "2.6.0", + "ajv": "6.5.3", + "arg": "2.0.0", + "boxen": "1.3.0", + "chalk": "2.4.1", + "clipboardy": "1.2.3", + "compression": "1.7.3", + "serve-handler": "6.1.3", + "update-check": "1.5.2" + }, + "bin": { + "serve": "bin/serve.js" + } + }, + "node_modules/serve-handler": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.3.tgz", + "integrity": "sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w==", + "dev": true, + "dependencies": { + "bytes": "3.0.0", + "content-disposition": "0.5.2", + "fast-url-parser": "1.1.3", + "mime-types": "2.1.18", + "minimatch": "3.0.4", + "path-is-inside": "1.0.2", + "path-to-regexp": "2.2.1", + "range-parser": "1.2.0" + } + }, + "node_modules/serve-handler/node_modules/mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-handler/node_modules/mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dev": true, + "dependencies": { + "mime-db": "~1.33.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/serve/node_modules/chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/serve/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/serve/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/serve/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/serve/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "node_modules/string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "dev": true, + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", + "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=", + "dev": true + }, + "node_modules/string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/stylehacks/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/stylehacks/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/stylehacks/node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/stylehacks/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/stylehacks/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/stylehacks/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/stylehacks/node_modules/postcss": { + "version": "7.0.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz", + "integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/stylehacks/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylehacks/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/svgo/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/svgo/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/svgo/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/svgo/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/svgo/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/svgo/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "dev": true, + "dependencies": { + "execa": "^0.7.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/term-size/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/term-size/node_modules/execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "dependencies": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/term-size/node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/term-size/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/term-size/node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/term-size/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/term-size/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/term-size/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/term-size/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/terser": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.1.tgz", + "integrity": "sha512-yD80f4hdwCWTH5mojzxe1q8bN1oJbsK/vfJGLcPZM/fl+/jItIVNKhFIHqqR71OipFWMLgj3Kc+GIp6CeIqfnA==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "node_modules/timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/typescript": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.5.tgz", + "integrity": "sha512-ywmr/VrTVCmNTJ6iV2LwIrfG1P+lv6luD8sUJs+2eI9NLGigaN+nUQc13iHqisq7bra9lnmUSYqbJvegraBOPQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "node_modules/uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "node_modules/unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, + "node_modules/update-check": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.2.tgz", + "integrity": "sha512-1TrmYLuLj/5ZovwUS7fFd1jMH3NnFDN1y1A8dboedIDt7zs/zJMo6TwwlhYKkSeEwzleeiSBV5/3c9ufAQWDaQ==", + "dev": true, + "dependencies": { + "registry-auth-token": "3.3.2", + "registry-url": "3.1.0" + } + }, + "node_modules/uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true + }, + "node_modules/wasm-feature-detect": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/wasm-feature-detect/-/wasm-feature-detect-1.2.9.tgz", + "integrity": "sha512-2E9/gtLVLpv2wnZDyYv8WY2dR9gHbmyv5uhZsnOcMSzqc78aGZpKQORPNcnrPwAU23nFUo7GAwKuoTAWRgsJ7Q==" + }, + "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, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-pm-runs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", + "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", + "dev": true + }, + "node_modules/widest-line": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", + "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", + "dev": true, + "dependencies": { + "string-width": "^2.1.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/widest-line/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/widest-line/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/widest-line/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/widest-line/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/xxhashjs": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz", + "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==", + "dev": true, + "dependencies": { + "cuint": "^0.2.2" + } + }, + "node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "node_modules/yaml": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", + "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", + "dev": true, + "engines": { + "node": ">= 6" + } + } + }, "dependencies": { "@babel/code-frame": { "version": "7.10.4", @@ -6736,6 +15002,11 @@ "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", "dev": true }, + "wasm-feature-detect": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/wasm-feature-detect/-/wasm-feature-detect-1.2.9.tgz", + "integrity": "sha512-2E9/gtLVLpv2wnZDyYv8WY2dR9gHbmyv5uhZsnOcMSzqc78aGZpKQORPNcnrPwAU23nFUo7GAwKuoTAWRgsJ7Q==" + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index 1583238e..c0628a4a 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,8 @@ "rollup": "^2.33.1", "rollup-plugin-terser": "^7.0.2", "serve": "^11.3.2", - "typescript": "^4.0.5" + "typescript": "^4.0.5", + "which": "^2.0.2" }, "husky": { "hooks": { @@ -49,5 +50,8 @@ "*.{js,css,json,md,ts,tsx}": [ "prettier --write" ] + }, + "dependencies": { + "wasm-feature-detect": "^1.2.9" } } diff --git a/rollup.config.js b/rollup.config.js index 47d060ee..29ccc638 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -107,6 +107,7 @@ export default async function ({ watch }) { { resolveFileUrl, resolveImportMeta }, clientBundlePlugin( { + external: ['worker_threads'], plugins: [ { resolveFileUrl, resolveImportMeta }, OMT({ loader: await omtLoaderPromise }), @@ -115,7 +116,7 @@ export default async function ({ watch }) { commonjs(), resolve(), replace({ __PRERENDER__: false, __PRODUCTION__: isProduction }), - terser({ module: true }), + isProduction ? terser({ module: true }) : {}, ], preserveEntrySignatures: false, }, @@ -124,6 +125,9 @@ export default async function ({ watch }) { format: 'amd', chunkFileNames: jsFileName, entryFileNames: jsFileName, + // This is needed because emscripten's workers use 'this', so they trigger all kinds of interop things, + // such as double-wrapping objects in { default }. + interop: false, }, resolveFileUrl, ), diff --git a/src/client/lazy-app/Compress/Options/index.tsx b/src/client/lazy-app/Compress/Options/index.tsx index 7457524c..ede3b056 100644 --- a/src/client/lazy-app/Compress/Options/index.tsx +++ b/src/client/lazy-app/Compress/Options/index.tsx @@ -156,11 +156,11 @@ export default class Options extends Component {
{supportedEncoderMap ? (